fftpack51


fftpack51, a Fortran90 code which computes the Fast Fourier Transform, using double precision arithmetic, by Paul Swarztrauber and Dick Valent;

Special features include:

Routines in the code come in groups of three:

The following table shows how the names of the routines in each group:
InitializationForwardBackwardPurpose
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
COSTMICOSTMFCOSTMBEven function 1D cosine FFT
RFFT1IRFFT1FRFFT1BFFT for real 1D data
RFFT2IRFFT2FRFFT2BFFT for real 2D data
RFFTMIRFFTMFRFFTMBFFT for real multi-D data
SINQ1ISINQ1FSINQ1BEven function 1D quarter-sine FFT
SINQMISINQMFSINQMBEven function 1D quarter-sine FFT
SINT1ISINT1FSINT1BEven function 1D sine FFT
SINTMISINTMFSINTMBEven 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.

Licensing:

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

Languages:

fftpack51 is available in a Fortran90 version.

Related codes:

fftpack5, a Fortran90 code which implements the Fast Fourier Transform.

fftpack51_test

fftw_test, Fortran90 codes which illustrate the use of the FFTW code for Fast Fourier Transforms, by Matteo Frigo and Steven Johnson.

sftpack, a Fortran90 code which implements the "slow" Fourier transform, intended as a teaching tool and comparison with the fast Fourier transform.

walsh_transform, a Fortran90 code which implements versions of the Walsh and Haar transforms.

xerror, a Fortran90 code 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:

  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 code,
    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.

Source Code:


Last revised on 04 August 2022.