1 #ifndef __realfftf_h
2 #define __realfftf_h
3 
4 #include "MemoryX.h"
5 
6 using fft_type = float;
7 struct FFTParam {
8    ArrayOf<int> BitReversed;
9    ArrayOf<fft_type> SinTable;
10    size_t Points;
11 #ifdef EXPERIMENTAL_EQ_SSE_THREADED
12    int pow2Bits;
13 #endif
14 };
15 
16 struct MATH_API FFTDeleter{
17    void operator () (FFTParam *p) const;
18 };
19 
20 using HFFT = std::unique_ptr<
21    FFTParam, FFTDeleter
22 >;
23 
24 MATH_API HFFT GetFFT(size_t);
25 MATH_API void RealFFTf(fft_type *, const FFTParam *);
26 MATH_API void InverseRealFFTf(fft_type *, const FFTParam *);
27 MATH_API void ReorderToTime(const FFTParam *hFFT, const fft_type *buffer, fft_type *TimeOut);
28 MATH_API void ReorderToFreq(const FFTParam *hFFT, const fft_type *buffer,
29 		   fft_type *RealOut, fft_type *ImagOut);
30 
31 #endif
32 
33