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:

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


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


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.


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. FFTPACK 5.0 Reference manual
  10. 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:

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

Last revised on 28 November 2005.