General Purpose FFT (Fast Fourier/Cosine/Sine Transform) Package Description: A package to calculate Discrete Fourier/Cosine/Sine Transforms of 1-dimensional sequences of length 2^N. Files: fft4g.c : FFT Package in C - Fast Version I (radix 4,2) fft4g.f : FFT Package in Fortran - Fast Version I (radix 4,2) fft4g_h.c : FFT Package in C - Simple Version I (radix 4,2) fft8g.c : FFT Package in C - Fast Version II (radix 8,4,2) fft8g.f : FFT Package in Fortran - Fast Version II (radix 8,4,2) fft8g_h.c : FFT Package in C - Simple Version II (radix 8,4,2) fftsg.c : FFT Package in C - Fast Version III (Split-Radix) fftsg.f : FFT Package in Fortran - Fast Version III (Split-Radix) fftsg_h.c : FFT Package in C - Simple Version III (Split-Radix) readme.txt : Readme File sample1/ : Test Directory Makefile : for gcc, cc Makefile.f77: for Fortran testxg.c : Test Program for "fft*g.c" testxg.f : Test Program for "fft*g.f" testxg_h.c : Test Program for "fft*g_h.c" sample2/ : Benchmark Directory Makefile : for gcc, cc Makefile.pth: POSIX Thread version pi_fft.c : PI(= 3.1415926535897932384626...) Calculation Program for a Benchmark Test for "fft*g.c" Difference of the Files: C and Fortran versions are equal and the same routines are in each version. "fft4g*.*" are optimized for most machines. "fft8g*.*" are fast on the UltraSPARC. "fftsg*.*" are optimized for the machines that have the multi-level (L1,L2,etc) cache. The simple versions "fft*g_h.c" use no work area, but the fast versions "fft*g.*" use work areas. The fast versions "fft*g.*" have the same specification. Routines in the Package: cdft: Complex Discrete Fourier Transform rdft: Real Discrete Fourier Transform ddct: Discrete Cosine Transform ddst: Discrete Sine Transform dfct: Cosine Transform of RDFT (Real Symmetric DFT) dfst: Sine Transform of RDFT (Real Anti-symmetric DFT) Usage: Please refer to the comments in the "fft**.*" file which you want to use. Brief explanations are in the block comments of each package. The examples are also given in the test programs. Method: -------- cdft -------- fft4g*.*, fft8g*.*: A method of in-place, radix 2^M, Sande-Tukey (decimation in frequency). Index of the butterfly loop is in bit reverse order to keep continuous memory access. fftsg*.*: A method of in-place, Split-Radix, recursive fast algorithm. -------- rdft -------- A method with a following butterfly operation appended to "cdft". In forward transform : A[k] = sum_j=0^n-1 a[j]*W(n)^(j*k), 0<=k<=n/2, W(n) = exp(2*pi*i/n), this routine makes an array x[] : x[j] = a[2*j] + i*a[2*j+1], 0<=j