| 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" |
| |