SFTPACK
"Slow" Fourier Transforms
SFTPACK
is a FORTRAN90 library which
carries out some "slow" Fourier transforms, that is, Fourier
transforms without the techniques that allow for very fast
computation.
The intention is to make the underlying calculation clear,
and to provide a simple check and comparison of timing and usage
for the fast calculations.
The fast Fourier transform is a highly efficient procedure. However,
the coding of the algorithm, and the conventions for indexing, ordering,
and normalization, can make it quite difficult to understand what is
being done, or even to see how to use the software correctly. This
means that a coding error or mistaken use can be undetected.
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the GNU LGPL license.
Languages:
SFTPACK is available in
a C version and
a C++ version and
a FORTRAN90 version and
a MATLAB version and
a Python version.
Related Data and Programs:
C4LIB,
a FORTRAN90 library which
implements certain elementary functions for single precision complex variables;
C8LIB,
a FORTRAN90 library which
implements certain elementary functions for double precision complex variables;
COSINE_TRANSFORM,
a FORTRAN90 library which
demonstrates some simple properties of the discrete cosine transform (DCT).
FFT_OPENMP,
a FORTRAN90 program which
demonstrates the computation of a Fast Fourier Transform
in parallel, using OpenMP.
FFT_SERIAL,
a FORTRAN90 program which
demonstrates the computation of a Fast Fourier Transform,
and is intended as a starting point for implementing an OpenMP parallel version.
FFTPACK5,
a FORTRAN90 library which
implements the Fast Fourier Transform.
FFTPACK5.1,
a FORTRAN90 library which
implements the Fast Fourier Transform
by Paul Swarztrauber and Dick Valent;
HAAR,
a FORTRAN90 library which
computes the Haar transform of data.
SINE_TRANSFORM,
a FORTRAN90 library which
demonstrates some simple properties of the discrete sine transform.
WAVELET,
a FORTRAN90 library which
does some simple wavelet calculations;
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.
-
Ralph Hartley,
A More Symmetrical Fourier Analysis Applied to Transmission
Problems,
Proceedings of the Institute of Radio Engineers,
Volume 30, 1942, pages 144-150.
Source Code:
Examples and Tests:
List of Routines:
-
C4MAT_PRINT_SOME prints some of a C4MAT.
-
C4MAT_SFTB computes a "slow" backward Fourier transform of a C4MAT.
-
C4MAT_SFTF computes a "slow" forward Fourier transform of a C4MAT.
-
C4MAT_UNIFORM_01 returns a unit pseudorandom C4MAT.
-
C8MAT_PRINT_SOME prints some of a C8MAT.
-
C8MAT_SFTB computes a "slow" backward Fourier transform of a C8MAT.
-
C8MAT_SFTF computes a "slow" forward Fourier transform of a C8MAT.
-
C8MAT_UNIFORM_01 returns a unit pseudorandom C8MAT.
-
C4VEC_PRINT_PART prints "part" of a C4VEC.
-
C4VEC_SFTB computes a "slow" backward Fourier transform of a C4VEC.
-
C4VEC_SFTF computes a "slow" forward Fourier transform of a C4VEC.
-
C4VEC_UNIFORM_01 returns a unit pseudorandom C4VEC.
-
C8VEC_PRINT_PART prints "part" of a C8VEC.
-
C8VEC_SFTB computes a "slow" backward Fourier transform of a C8VEC.
-
C8VEC_SFTF computes a "slow" forward Fourier transform of a C8VEC.
-
C8VEC_UNIFORM_01 returns a unit pseudorandom C8VEC.
-
R4VEC_PRINT_PART prints "part" of an R4VEC.
-
R4VEC_SCT computes a "slow" cosine transform of an R4VEC.
-
R4VEC_SFTB computes a "slow" backward Fourier transform of an R4VEC.
-
R4VEC_SFTF computes a "slow" forward Fourier transform of an R4VEC.
-
R4VEC_SHT computes a "slow" Hartley transform of an R4VEC.
-
R4VEC_SQCTB computes a "slow" quarter cosine transform backward of an R4VEC.
-
R4VEC_SQCTF computes a "slow" quarter cosine transform forward of an R4VEC.
-
R4VEC_SQSTB computes a "slow" quarter sine transform backward of an R4VEC.
-
R4VEC_SQSTF computes a "slow" quarter sine transform forward of an R4VEC.
-
R4VEC_SST computes a "slow" sine transform of an R4VEC.
-
R4VEC_UNIFORM returns a scaled pseudorandom R4VEC.
-
R8VEC_PRINT_PART prints "part" of an R8VEC.
-
R8VEC_SCT computes a "slow" cosine transform of an R8VEC.
-
R8VEC_SFTB computes a "slow" backward Fourier transform of an R8VEC.
-
R8VEC_SFTF computes a "slow" forward Fourier transform of an R8VEC.
-
R8VEC_SHT computes a "slow" Hartley transform of an R8VEC.
-
R8VEC_SQCTB computes a "slow" quarter cosine transform backward of an R8VEC.
-
R8VEC_SQCTF computes a "slow" quarter cosine transform forward of an R8VEC.
-
R8VEC_SQSTB computes a "slow" quarter sine transform backward of an R8VEC.
-
R8VEC_SQSTF computes a "slow" quarter sine transform forward of an R8VEC.
-
R8VEC_SST computes a "slow" sine transform of an R8VEC.
-
R8VEC_UNIFORM returns a scaled pseudorandom R8VEC.
-
TIMESTAMP prints the current YMDHMS date as a time stamp.
You can go up one level to
the FORTRAN90 source codes.
Last revised on 22 June 2010.