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