Fast Fourier Transform

FFTPACK5.1 is a FORTRAN77 library which computes the Fast Fourier Transform, by Paul Swarztrauber and Dick Valent;

Special features include:

Routines in the library come in groups of three:

The following table shows how the names of the routines in each group:
CFFT1ICFFT1FCFFT1BFFT for complex 1D data
CFFT2ICFFT2FCFFT2BFFT for complex 2D data
CFFTMICFFTMFCFFTMBFFT for complex multi-D data
COSQ1ICOSQ1FCOSQ1BEven function 1D quarter-cosine FFT
COSQMICOSQMFCOSQMBEven function 1D quarter-cosine FFT
COST1ICOST1FCOST1BEven function 1D cosine FFT
RFFT1IRFFT1FRFFT1BFFT for real 1D data
RFFT2IRFFT2FRFFT2BFFT for real 2D data
SINQ1ISINQ1FSINQ1BEven function 1D quarter-sine FFT
SINQMISINQMFSINQMBEven function 1D quarter-sine FFT
SINT1ISINT1FSINT1BEven 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:

  1. 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.)).
  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.
  3. 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.


Licensed under the GNU General Public License (GPL).
Copyright (C) 1995-2004, Scientific Computing Division,
University Corporation for Atmospheric Research.


FFTPACK5.1 is available in a FORTRAN77 version and a FORTRAN90 version.

Related Programs:

FFTPACK5, a FORTRAN77 library which implements the Fast Fourier Transform.

FFTW3, FORTRAN77 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 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.

XERROR, a FORTRAN77 library which is used for error reporting.


The original Fortran77 version of this code was written by Dick Valent and Paul Swarztrauber, of the National Center for Atmospheric Research (NCAR).


  1. 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.
  2. Elbert Brigham,
    The Fast Fourier Transform and Its Applications,
    Prentice-Hall, 1988,
    ISBN: 0133075052,
    LC: QA403.B74.
  3. 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.
  4. Eleanor Chu, Alan George,
    Inside the FFT Black Box,
    CRC Press,
    ISBN: 0849302706,
    LC: QA403.5C5.
  5. David Kahaner, Cleve Moler, Steven Nash,
    Numerical Methods and Software,
    Prentice Hall, 1989,
    ISBN: 0-13-627258-4,
    LC: TA345.K34.
  6. Paul Swarztrauber,
    Symmetric FFT's,
    Mathematics of Computation,
    Volume 47, Number 175, July 1986, pages 323-346.
  7. Paul Swarztrauber,
    Vectorizing the Fast Fourier Transforms,
    in Parallel Computations,
    edited by Garry Rodrigue,
    Academic Press, 1982,
    ISBN: 0125921012,
    LC: QA76.6.P348.
  8. Paul Swarztrauber,
    Fast Fourier Transform Algorithms for Vector Computers,
    Parallel Computing,
    Volume 1, Number 1, August 1984, pages 45-63.
  9. fftpack5.1_reference.html, the FFTPACK5.1 online reference.
  10. fftpack5.1_readme.txt, the FFTPACK5.1 "readme" file.
  11. Makefile, the FFTPACK5.1 makefile.

Source Code:

Examples and Tests:

List of Routines:

You can go up one level to the FORTRAN77 source codes.

Last revised on 29 March 2011.