00001 00002 00003 00004 #ifndef _AFLIBFFT_H 00005 #define _AFLIBFFT_H 00006 00007 #include "aflib.h" 00008 00009 00010 typedef struct { 00011 double re, im; 00012 } COMPLEX; 00013 00022 class aflibFFT { 00023 00024 public: 00025 00026 aflibFFT(); 00027 00028 ~aflibFFT(); 00029 00030 void 00031 fft_double ( 00032 unsigned NumSamples, 00033 int InverseTransform, 00034 const double *RealIn, 00035 const double *ImagIn, 00036 double *RealOut, 00037 double *ImagOut ); 00038 00039 private: 00040 00041 unsigned int Nfactors; 00042 COMPLEX *W_factors; 00043 00044 int 00045 fft ( 00046 COMPLEX *in, 00047 unsigned n, 00048 COMPLEX *out); 00049 00050 int 00051 rft ( 00052 COMPLEX *in, 00053 unsigned n, 00054 COMPLEX *out); 00055 00056 void 00057 Fourier ( 00058 COMPLEX *in, 00059 unsigned n, 00060 COMPLEX *out); 00061 00062 unsigned 00063 radix (unsigned n); 00064 00065 void 00066 split ( 00067 register COMPLEX *in, 00068 register unsigned r, 00069 register unsigned m, 00070 register COMPLEX *out); 00071 00072 void 00073 join ( 00074 register COMPLEX *in, 00075 register unsigned m, 00076 register unsigned n, 00077 register COMPLEX *out); 00078 00079 int 00080 W_init(unsigned n); 00081 00082 }; 00083 00084 00085 #endif