libcm is a C development framework with an emphasis on audio signal processing applications.
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

cmComplexTypes.h 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. //| Copyright: (C) 2009-2020 Kevin Larke <contact AT larke DOT org>
  2. //| License: GNU GPL version 3.0 or above. See the accompanying LICENSE file.
  3. #ifndef cmComplexTypes_h
  4. #define cmComplexTypes_h
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. #include <complex.h>
  9. #include <fftw3.h>
  10. //( { file_desc: "Constants and functions used for working with complex values." kw:[base math] }
  11. #if CM_FLOAT_SMP == 1
  12. #define cmCabsS cabsf
  13. #define cmCatanS catanf
  14. #define cmCrealS crealf
  15. #define cmCimagS cimagf
  16. #define cmCargS cargf
  17. #define cmCconjS conjf
  18. #define cmFftPlanAllocS fftwf_plan_dft_r2c_1d
  19. #define cmFft1dPlanAllocS fftwf_plan_dft_1d
  20. #define cmIFftPlanAllocS fftwf_plan_dft_c2r_1d
  21. #define cmFftPlanFreeS fftwf_destroy_plan
  22. #define cmFftMallocS fftwf_malloc
  23. #define cmFftFreeMemS fftwf_free
  24. #define cmFftExecuteS fftwf_execute
  25. typedef fftwf_plan cmFftPlanS_t;
  26. #else
  27. #define cmCabsS cabs
  28. #define cmCatanS catan
  29. #define cmCrealS creal
  30. #define cmCimagS cimag
  31. #define cmCargS carg
  32. #define cmCconjS conj
  33. #define cmFftPlanAllocS fftw_plan_dft_r2c_1d
  34. #define cmFft1dPlanAllocS fftw_plan_dft_1d
  35. #define cmIFftPlanAllocS fftw_plan_dft_c2r_1d
  36. #define cmFftPlanFreeS fftw_destroy_plan
  37. #define cmFftMallocS fftw_malloc
  38. #define cmFftFreeMemS fftw_free
  39. #define cmFftExecuteS fftw_execute
  40. typedef fftw_plan cmFftPlanS_t;
  41. #endif
  42. //-----------------------------------------------------------------
  43. //-----------------------------------------------------------------
  44. //-----------------------------------------------------------------
  45. #if CM_FLOAT_REAL == 1
  46. #define cmCabsR cabsf
  47. #define cmCatanR catanf
  48. #define cmCrealR crealf
  49. #define cmCimagR cimagf
  50. #define cmCargR cargf
  51. #define cmCconjR conjf
  52. #define cmFftPlanAllocR fftwf_plan_dft_r2c_1d
  53. #define cmFft1dPlanAllocR fftwf_plan_dft_1d
  54. #define cmIFftPlanAllocR fftwf_plan_dft_c2r_1d
  55. #define cmFftPlanFreeR fftwf_destroy_plan
  56. #define cmFftMallocR fftwf_malloc
  57. #define cmFftFreeMemR fftwf_free
  58. #define cmFftExecuteR fftwf_execute
  59. typedef fftwf_plan cmFftPlanR_t;
  60. #else
  61. #define cmCabsR cabs
  62. #define cmCatanR catan
  63. #define cmCrealR creal
  64. #define cmCimagR cimag
  65. #define cmCargR carg
  66. #define cmCconjR conj
  67. #define cmFftPlanAllocR fftw_plan_dft_r2c_1d
  68. #define cmFft1dPlanAllocR fftw_plan_dft_1d
  69. #define cmIFftPlanAllocR fftw_plan_dft_c2r_1d
  70. #define cmFftPlanFreeR fftw_destroy_plan
  71. #define cmFftMallocR fftw_malloc
  72. #define cmFftFreeMemR fftw_free
  73. #define cmFftExecuteR fftw_execute
  74. typedef fftw_plan cmFftPlanR_t;
  75. #endif
  76. void cmVOCR_MultVVV( cmComplexR_t* y, const cmComplexS_t* x0, const cmComplexR_t* x1, unsigned n );
  77. void cmVOCR_MultVFV( cmComplexR_t* y, const float* x, unsigned n );
  78. void cmVOCR_DivVFV( cmComplexR_t* y, const float_t* x, unsigned n );
  79. void cmVOCR_Abs( cmSample_t* y, const cmComplexR_t* x, unsigned n );
  80. void cmVOCR_MultVS( cmComplexR_t* y, cmReal_t v, unsigned n );
  81. void cmVOCR_DivVS( cmComplexR_t* y, cmReal_t v, unsigned n );
  82. //)
  83. #ifdef __cplusplus
  84. }
  85. #endif
  86. #endif