FFTPACK5
Fast Fourier Transform
FFTPACK5
is a FORTRAN77 library which
computes the Fast Fourier Transform,
by Paul Swarztrauber and Dick Valent;
Note: An apparent indexing problem in the 2D complex codes
CFFT2B/CFFT2F/CFFT2I and ZFFT2B/ZFFT2F/ZFFT2I was reported to
the authors on 10 May 2010. A fix has been promised.
Special features include:
-
real or complex data can be handled;
-
separate routines for forward analysis (data => Fourier coefficients)
and backward analysis (Fourier coefficients => data);
-
sine and cosine transform routines;
-
quarter wave sine and cosine transform routines;
-
the amount of data is NOT required to be a power of 2.
Routines in the library come in groups of three:
-
an initialization routine;
-
the forward computational routine (data to FFT coefficients);
-
the backward computational routine (FFT coefficients to data).
The following table shows how the names of the routines in each group:
Initialization | Forward | Backward | Purpose |
CFFT1I | CFFT1F | CFFT1B | FFT for complex 1D data |
CFFT2I | CFFT2F | CFFT2B | FFT for complex 2D data |
CFFTMI | CFFTMF | CFFTMB | FFT for complex multi-D data |
COSQ1I | COSQ1F | COSQ1B | Even function 1D quarter-cosine FFT |
COSQMI | COSQMF | COSQMB | Even function 1D quarter-cosine FFT |
COST1I | COST1F | COST1B | Even function 1D cosine FFT |
COSTMI | COSTMF | COSTMB | Even function 1D cosine FFT |
RFFT1I | RFFT1F | RFFT1B | FFT for real 1D data |
RFFT2I | RFFT2F | RFFT2B | FFT for real 2D data |
RFFTMI | RFFTMF | RFFTMB | FFT for real multi-D data |
SINQ1I | SINQ1F | SINQ1B | Even function 1D quarter-sine FFT |
SINQMI | SINQMF | SINQMB | Even function 1D quarter-sine FFT |
SINT1I | SINT1F | SINT1B | Even function 1D sine FFT |
SINTMI | SINTMF | SINTMB | Even function 1D sine FFT |
Licensing:
Licensed under the GNU General Public License (GPL).
Copyright (C) 1995-2004, Scientific Computing Division,
University Corporation for Atmospheric Research.
Languages:
FFTPACK5 is available in
a FORTRAN77 version and
a FORTRAN90 version.
Related Programs:
FFTPACK5.1,
a FORTRAN77 library which
implements the Fast Fourier Transform
by Swarztrauber and Valent;
FFTW3,
FORTRAN77 programs which
illustrate the use of the FFTW3 library for Fast Fourier Transforms,
by Matteo Frigo and Steven Johnson.
SFTPACK,
a FORTRAN77 library which
implements the "slow" Fourier transform, intended as a teaching
tool and comparison with the fast Fourier transform.
WALSH,
a FORTRAN77 library which
implements versions of the Walsh and Haar transforms.
WAVELET,
a FORTRAN77 library which
does some simple calculations with wavelet transforms;
XERROR,
a FORTRAN77 library which
is used for error reporting by FFTPACK5.
Author:
The original Fortran77 version of this code was written by Dick Valent and
Paul Swarztrauber, of the National Center for Atmospheric Research (NCAR).
Reference:
-
William Briggs, Van Emden Henson,
The DFT: An Owner's Manual for the Discrete Fourier Transform,
SIAM, 1995,
ISBN13: 978-0-898713-42-8,
LC: QA403.5.B75.
-
Elbert Brigham,
The Fast Fourier Transform and Its Applications,
Prentice-Hall, 1988,
ISBN: 0133075052,
LC: QA403.B74.
-
Bill Buzbee,
The SLATEC Common Math Library,
in Sources and Development of Mathematical Software,
edited by Wayne Cowell,
Prentice-Hall, 1984,
ISBN: 0-13-823501-5,
LC: QA76.95.S68.
-
Eleanor Chu, Alan George,
Inside the FFT Black Box,
CRC Press,
ISBN: 0849302706,
LC: QA403.5C5.
-
David Kahaner, Cleve Moler, Steven Nash,
Numerical Methods and Software,
Prentice Hall, 1989,
ISBN: 0-13-627258-4,
LC: TA345.K34.
-
Paul Swarztrauber,
Symmetric FFT's,
Mathematics of Computation,
Volume 47, Number 175, July 1986, pages 323-346.
-
Paul Swarztrauber,
Vectorizing the Fast Fourier Transforms,
in Parallel Computations,
edited by Garry Rodrigue,
Academic Press, 1982,
ISBN: 0125921012,
LC: QA76.6.P348.
-
Paul Swarztrauber,
Fast Fourier Transform Algorithms for Vector Computers,
Parallel Computing,
Volume 1, Number 1, August 1984, pages 45-63.
-
FFTPACK 5.0 Reference manual
-
http://www.cisl.ucar.edu/css/software/fftpack5
the home page for the original FORTRAN77 version of FFTPACK5.
Source Code:
Examples and Tests:
A discrepancy seems to have shown up in the COST1* routines.
Calling COST1F followed by COST1B does not reproduce the original
data. This discrepancy disappears if double precision is used.
A discrepancy seems to have shown up in the SINT1* routines.
Calling SINT1F followed by SINT1B does not reproduce the original
data. This discrepancy disappears if double precision is used.
List of Routines:
-
CFFT1B: complex backward fast Fourier transform, 1D.
-
CFFT1F: complex forward fast Fourier transform, 1D.
-
CFFT1I: initialization for CFFT1B and CFFT1F.
-
CFFT2B: complex backward fast Fourier transform, 2D.
-
CFFT2F: complex forward fast Fourier transform, 2D.
-
CFFT2I: initialization for CFFT2B and CFFT2F.
-
CFFTMB: complex backward fast Fourier transform, 1D, multiple vectors.
-
CFFTMF: complex forward fast Fourier transform, 1D, multiple vectors.
-
CFFTMI: initialization for CFFTMB and CFFTMF.
-
COSQ1B: complex backward cosine quarter wave transform, 1D.
-
COSQ1F: complex forward cosine quarter wave transform, 1D.
-
COSQ1I: initialization for COSQ1B and COSQ1F.
-
COSQMB: complex backward cosine quarter wave transform, multiple vectors.
-
COSQMF: complex forward cosine quarter wave transform, multiple vectors.
-
COSQMI: initialization for COSQMB and COSQMF.
-
COST1B: complex backward cosine transform, 1D.
-
COST1F: complex forward cosine transform, 1D.
-
COST1I: initialization for COST1B and COST1F.
-
COSTMB: complex backward cosine transform, multiple vectors.
-
COSTMF: complex forward cosine transform, multiple vectors.
-
COSTMI: initialization for COSTMB and COSTMF.
-
FACTOR determines the factors of an integer.
-
RFFT1B: real backward fast Fourier transform, 1D.
-
RFFT1F: real forward fast Fourier transform, 1D.
-
RFFT1I: initialization for RFFT1B and RFFT1F.
-
RFFT2B: real backward fast Fourier transform, 2D.
-
RFFT2F: real forward fast Fourier transform, 2D.
-
RFFT2I: initialization for RFFT2B and RFFT2F.
-
RFFTMB: real backward fast Fourier transform, 1D, multiple vectors.
-
RFFTMF: real forward fast Fourier transform, 1D, multiple vectors.
-
RFFTMI: initialization for RFFTMB and RFFTMF.
-
SINQ1B: complex backward sine quarter wave transform, 1D.
-
SINQ1F: complex forward sine quarter wave transform, 1D.
-
SINQ1I: initialization for SINQ1B and SINQ1F.
-
SINQMB: complex backward sine quarter wave transform, multiple vectors.
-
SINQMF: complex forward sine quarter wave transform, multiple vectors.
-
SINQMI: initialization for SINQMB and SINQMF.
-
SINT1B: complex backward sine transform, 1D.
-
SINT1F: complex forward sine transform, 1D.
-
SINT1I: initialization for SINT1B and SINT1F.
-
SINTMB: complex backward sine transform, multiple vectors.
-
SINTMF: complex forward sine transform, multiple vectors.
-
SINTMI: initialization for SINTMB and SINTMF.
-
TABLES computes trigonometric tables needed by the FFT routines.
-
XERCON checks INC, JUMP, N and LOT for consistency.
-
XERFFT is an error handler for the FFTPACK routines.
You can go up one level to
the FORTRAN77 source codes.
Last revised on 28 November 2005.