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