Initial import
git-svn-id: http://moon:8086/svn/software/trunk/libsrc/radio@1 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
// --------------------------------------------------------------
|
||||
#ifndef CPX_H
|
||||
#define CPX_H
|
||||
|
||||
#include "radio_types.h"
|
||||
// --------------------------------------------------------------
|
||||
// Types
|
||||
// --------------------------------------------------------------
|
||||
typedef struct _cpx_t
|
||||
{
|
||||
radio_float_t imag, real;
|
||||
|
||||
} cpx_t;
|
||||
|
||||
typedef struct _cpx_arr_t
|
||||
{
|
||||
uint32_t size;
|
||||
radio_float_t *imag, *real;
|
||||
|
||||
} cpx_arr_t;
|
||||
|
||||
// --------------------------------------------------------------
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// --------------------------------------------------------------
|
||||
// Complex Functions
|
||||
// --------------------------------------------------------------
|
||||
// Scalar
|
||||
cpx_t CpxConjS(cpx_t v1);
|
||||
cpx_t CpxAddS(cpx_t v1, cpx_t v2);
|
||||
cpx_t CpxSubS(cpx_t v1, cpx_t v2);
|
||||
cpx_t CpxMulS(cpx_t v1, cpx_t v2);
|
||||
cpx_t CpxScaleRealS(cpx_t v1, radio_float_t v2);
|
||||
cpx_t CpxScaleComplexS(cpx_t x, cpx_t gain);
|
||||
cpx_t CpxFromReal(radio_float_t v1);
|
||||
cpx_t Cpx(radio_float_t real, radio_float_t imag);
|
||||
cpx_t CpxMinS(cpx_t x1, cpx_t x2);
|
||||
cpx_t CpxMaxS(cpx_t x1, cpx_t x2);
|
||||
radio_float_t CpxMagS(cpx_t v1);
|
||||
radio_float_t CpxPhiS(cpx_t v1);
|
||||
radio_float_t cpxPowerDB(cpx_t v1, radio_float_t preScale);
|
||||
|
||||
// Vector
|
||||
void CpxCopy(cpx_t *pSrc, cpx_t *pDst, uint32_t len);
|
||||
void CpxConj(cpx_t *pSrcDst, uint32_t len);
|
||||
void CpxAdd(cpx_t *pSrc, cpx_t *pSrcDst, uint32_t len);
|
||||
void CpxSub(cpx_t *pSrc, cpx_t *pSrcDst, uint32_t len);
|
||||
void CpxMul(cpx_t *pSrc1, cpx_t *pSrc2, cpx_t *pDst, uint32_t len);
|
||||
void CpxScale(cpx_t *pSrc1, cpx_t src2, cpx_t *pDst, uint32_t len);
|
||||
cpx_t CpxMulAdd(cpx_t sum, cpx_t *pSrc1, cpx_t *pSrc2, uint32_t len);
|
||||
cpx_t CpxMulRealAdd(cpx_t sum, cpx_t *pSrc1, radio_float_t *pSrc2, uint32_t len);
|
||||
radio_float_t CpxMag(cpx_t *pSrc);
|
||||
radio_float_t CpxPhi(cpx_t *pSrc);
|
||||
|
||||
cpx_t csum(cpx_t *pSrc, int len);
|
||||
cpx_t cmean(cpx_t *pSrc, int len);
|
||||
|
||||
// --------------------------------------------------------------
|
||||
#define _cpxMulB4_blockSize 4
|
||||
#define _cpxMulB1_blockSize 1
|
||||
void _cpxMulB4
|
||||
(
|
||||
radio_float_t pV1_real[_cpxMulB4_blockSize], radio_float_t pV1_imag[_cpxMulB4_blockSize],
|
||||
radio_float_t pV2_real[_cpxMulB4_blockSize], radio_float_t pV2_imag[_cpxMulB4_blockSize],
|
||||
radio_float_t pRes_real[_cpxMulB4_blockSize], radio_float_t pRes_imag[_cpxMulB4_blockSize]
|
||||
);
|
||||
void _cpxMulB1
|
||||
(
|
||||
radio_float_t *pV1_real, radio_float_t *pV1_imag,
|
||||
radio_float_t *pV2_real, radio_float_t *pV2_imag,
|
||||
radio_float_t *pRes_real, radio_float_t *pRes_imag
|
||||
);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif // __cplusplus
|
||||
|
||||
// --------------------------------------------------------------
|
||||
#endif // CPX_H
|
||||
Reference in New Issue
Block a user