123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- #ifndef cmComplexTypes_h
- #define cmComplexTypes_h
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- #include <complex.h>
- #include <fftw3.h>
-
- //( { file_desc: "Constants and functions used for working with complex values." kw:[base math] }
-
- #if CM_FLOAT_SMP == 1
-
- #define cmCabsS cabsf
- #define cmCatanS catanf
- #define cmCrealS crealf
- #define cmCimagS cimagf
- #define cmCargS cargf
- #define cmCconjS conjf
-
- #define cmFftPlanAllocS fftwf_plan_dft_r2c_1d
- #define cmFft1dPlanAllocS fftwf_plan_dft_1d
- #define cmIFftPlanAllocS fftwf_plan_dft_c2r_1d
- #define cmFftPlanFreeS fftwf_destroy_plan
- #define cmFftMallocS fftwf_malloc
- #define cmFftFreeMemS fftwf_free
- #define cmFftExecuteS fftwf_execute
-
- typedef fftwf_plan cmFftPlanS_t;
-
- #else
-
- #define cmCabsS cabs
- #define cmCatanS catan
- #define cmCrealS creal
- #define cmCimagS cimag
- #define cmCargS carg
- #define cmCconjS conj
-
- #define cmFftPlanAllocS fftw_plan_dft_r2c_1d
- #define cmFft1dPlanAllocS fftw_plan_dft_1d
- #define cmIFftPlanAllocS fftw_plan_dft_c2r_1d
- #define cmFftPlanFreeS fftw_destroy_plan
- #define cmFftMallocS fftw_malloc
- #define cmFftFreeMemS fftw_free
- #define cmFftExecuteS fftw_execute
-
- typedef fftw_plan cmFftPlanS_t;
-
- #endif
-
- //-----------------------------------------------------------------
- //-----------------------------------------------------------------
- //-----------------------------------------------------------------
-
- #if CM_FLOAT_REAL == 1
-
- #define cmCabsR cabsf
- #define cmCatanR catanf
- #define cmCrealR crealf
- #define cmCimagR cimagf
- #define cmCargR cargf
- #define cmCconjR conjf
-
- #define cmFftPlanAllocR fftwf_plan_dft_r2c_1d
- #define cmFft1dPlanAllocR fftwf_plan_dft_1d
- #define cmIFftPlanAllocR fftwf_plan_dft_c2r_1d
- #define cmFftPlanFreeR fftwf_destroy_plan
- #define cmFftMallocR fftwf_malloc
- #define cmFftFreeMemR fftwf_free
- #define cmFftExecuteR fftwf_execute
-
- typedef fftwf_plan cmFftPlanR_t;
-
- #else
-
- #define cmCabsR cabs
- #define cmCatanR catan
- #define cmCrealR creal
- #define cmCimagR cimag
- #define cmCargR carg
- #define cmCconjR conj
-
- #define cmFftPlanAllocR fftw_plan_dft_r2c_1d
- #define cmFft1dPlanAllocR fftw_plan_dft_1d
- #define cmIFftPlanAllocR fftw_plan_dft_c2r_1d
- #define cmFftPlanFreeR fftw_destroy_plan
- #define cmFftMallocR fftw_malloc
- #define cmFftFreeMemR fftw_free
- #define cmFftExecuteR fftw_execute
-
- typedef fftw_plan cmFftPlanR_t;
-
- #endif
-
- void cmVOCR_MultVVV( cmComplexR_t* y, const cmComplexS_t* x0, const cmComplexR_t* x1, unsigned n );
- void cmVOCR_MultVFV( cmComplexR_t* y, const float* x, unsigned n );
- void cmVOCR_DivVFV( cmComplexR_t* y, const float_t* x, unsigned n );
- void cmVOCR_Abs( cmSample_t* y, const cmComplexR_t* x, unsigned n );
- void cmVOCR_MultVS( cmComplexR_t* y, cmReal_t v, unsigned n );
- void cmVOCR_DivVS( cmComplexR_t* y, cmReal_t v, unsigned n );
-
- //)
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif
|