30 lines
834 B
C
30 lines
834 B
C
|
// 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
|