General Purpose 2D,3D FFT (Fast Fourier Transform) Package Files alloc.c : 2D-array Allocation alloc.h : 2D-array Allocation fft4f2d.c : 2D FFT Package in C - Version I (radix 4, 2) fft4f2d.f : 2D FFT Package in Fortran - Version I (radix 4, 2) fftsg.c : 1D FFT Package in C - Fast Version (Split-Radix) fftsg.f : 1D FFT Package in Fortran - Fast Version (Split-Radix) fftsg2d.c : 2D FFT Package in C - Version II (Split-Radix) fftsg2d.f : 2D FFT Package in Fortran - Version II (Split-Radix) fftsg3d.c : 3D FFT Package in C - Version II (Split-Radix) fftsg3d.f : 3D FFT Package in Fortran - Version II (Split-Radix) shrtdct.c : 8x8, 16x16 DCT Package sample2d/ Makefile : for gcc, cc Makefile.f77: for Fortran Makefile.pth: Pthread version fft4f2dt.c : Test Program for "fft4f2d.c" fft4f2dt.f : Test Program for "fft4f2d.f" fftsg2dt.c : Test Program for "fftsg2d.c" fftsg2dt.f : Test Program for "fftsg2d.f" fftsg3dt.c : Test Program for "fftsg3d.c" fftsg3dt.f : Test Program for "fftsg3d.f" shrtdctt.c : Test Program for "shrtdct.c" Difference of Files C and Fortran versions are equal and the same routines are in each version. ---- Difference between "fft4f2d.*" and "fftsg2d.*" ---- "fft4f2d.*" are optimized for the old machines that don't have the large size CPU cache. "fftsg2d.*", "fftsg3d.*" use 1D FFT routines in "fftsg.*". "fftsg2d.*", "fftsg3d.*" are optimized for the machines that have the multi-level (L1,L2,etc) cache. Routines in the Package in fft4f2d.*, fftsg2d.* cdft2d: 2-dim Complex Discrete Fourier Transform rdft2d: 2-dim Real Discrete Fourier Transform ddct2d: 2-dim Discrete Cosine Transform ddst2d: 2-dim Discrete Sine Transform rdft2dsort: rdft2d input/output ordering (fftsg2d.*) in fftsg3d.* cdft3d: 3-dim Complex Discrete Fourier Transform rdft3d: 3-dim Real Discrete Fourier Transform ddct3d: 3-dim Discrete Cosine Transform ddst3d: 3-dim Discrete Sine Transform rdft3dsort: rdft3d input/output ordering in fftsg.* cdft: 1-dim Complex Discrete Fourier Transform rdft: 1-dim Real Discrete Fourier Transform ddct: 1-dim Discrete Cosine Transform ddst: 1-dim Discrete Sine Transform dfct: 1-dim Real Symmetric DFT dfst: 1-dim Real Anti-symmetric DFT (these routines are called by fftsg2d.*, fftsg3d.*) in shrtdct.c ddct8x8s : Normalized 8x8 DCT ddct16x16s: Normalized 16x16 DCT (faster than ddct2d()) Usage Brief explanations are in block comments of each packages. The examples are given in the test programs. Copyright Copyright(C) 1997,2001 Takuya OOURA (email: ooura@kurims.kyoto-u.ac.jp). You may use, copy, modify this code for any purpose and without fee. You may distribute this ORIGINAL package. History ... Nov. 2001 : Add 3D-FFT routines Dec. 2006 : Fix a documentation bug in "fftsg3d.*" Dec. 2006 : Fix a minor bug in "fftsg.f"