blob: 7cc4dfa0f9cfa685ee36696c2a35a5cfa28d26c3 [file] [log] [blame]
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"