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