FFTPACK5.1
Fast Fourier Transform
FFTPACK5.1
is a FORTRAN90 library which
computes the Fast Fourier Transform,
by Paul Swarztrauber and Dick Valent;
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 |
Bugfixes from FFTPACK 5.0 to FFTPACK 5.1
The functionality of FFTPACK 5.1 is identical with the previous version 5.0.
The following bugfixes have been applied:
-
Corrected index error for high-level routines [CR]FFT[12][BFI] requiring
WSAVE array, and all dependent routines to which LWSAVE is passed.
Namely, in LWSAV = L + LOG(REAL(INT(L))) + 4 definitions, the summand term
LOG(REAL(INT(L))) has been corrected to LOG(REAL(INT(L)/LOG(2.)).
-
Corrected index error in routime C1FM1F at label 56, where array offset
was declared 1 that should have been 2. This resulted in C1FFTF transforms
of length N calculated incorrectly, where N is any prime .GT. 5, or N=7*M,
M .GE. 6.
-
Corrected RFFT2x routines by rewriting them. The backward transform
followed by forward now returns identity. Input argument LENSAV must be
be at least
L + 3*M + INT(LOG(REAL(L))/LOG(2.)) + 2*INT(LOG(REAL(M))/LOG(2.)) +12.
Previously, the required value was smaller.
Licensing:
Licensed under the GNU General Public License (GPL).
Copyright (C) 1995-2004, Scientific Computing Division,
University Corporation for Atmospheric Research.
Languages:
FFTPACK5.1 is available in
a FORTRAN90 version.
Related Programs:
FFTPACK5,
a FORTRAN90 library which
implements the Fast Fourier Transform.
FFTPACK5.1D,
a FORTRAN90 library which
implements the Fast Fourier Transform
using double precision arithmetic,
by Paul Swarztrauber and Dick Valent;
FFTW3,
FORTRAN90 programs which
illustrate the use of the FFTW3 library for Fast Fourier Transforms,
by Matteo Frigo and Steven Johnson.
GSL,
a C++ library which
embodies the "GNU Scientific Library", and includes FFT routines.
SFTPACK,
a FORTRAN90 library which
implements the "slow" Fourier transform, intended as a teaching
tool and comparison with the fast Fourier transform.
SINE_TRANSFORM,
a FORTRAN90 library which
demonstrates some simple properties of the discrete sine transform.
WALSH,
a FORTRAN90 library which
implements versions of the Walsh and Haar transforms.
XERROR,
a FORTRAN90 library which
is used for error reporting.
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.
Source Code:
Examples and Tests:
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 FORTRAN90 source codes.
Last revised on 31 July 2011.