// FFT #pragma once #include #include namespace RIT { class FFT { private: int mSize; std::vector order; std::vector> expLUT; bool mFlagHalfOnly; public: FFT(int size, bool halfOnly = false); std::vector> operator()(const std::vector> &v); FFT& SetHalfOnly(bool enable); private: int bitreverse(int i); void reorder(const std::vector>& src, std::vector>& dst); void fft_recursive(std::vector>::iterator X, int N); void fft_half(std::vector>::iterator X, int N); }; // class FFT std::vector magnitudes(std::vector>& v); } // namespace RIT