// fft.h - declaration of class // of fast Fourier transform - FFT // #ifndef _FFT_H_ #define _FFT_H_ // Include Complex numbers header #include "config.h" #include "complex.h" class IFFT { static constexpr unsigned int M = FFTORDER, N = 1u << FFTORDER; public: explicit IFFT () noexcept; bool Forward (complex * const Data) const; bool Inverse (complex * const Data) const; void Precompute (); protected: void Rearrange (complex * const Data) const; void Perform (complex * const Data, const bool Inverse = false) const; void PrecomputeOrder (); void PrecomputeOnes (); private: const unsigned short * const reverse; const complex * const ones; }; extern void CopyToComplex (complex * dst, const unsigned short * src, const unsigned len); #endif