FFTW is a fast C FFT library.
FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST). We believe that FFTW, which is free software, should become the FFT library of choice for most applications.
Our benchmarks, performed on on a variety of platforms, show that FFTW's performance is typically superior to that of other publicly available FFT software, and is even competitive with vendor-tuned codes. In contrast to vendor-tuned codes, however, FFTW's performance is portable: the same program will perform well on most architectures without modification.
Hence the name, "FFTW," which stands for the somewhat whimsical title of "Fastest Fourier Transform in the West."
The FFTW package was developed at MIT by Matteo Frigo and Steven G. Johnson. Server co-location is thanks to the Joannopoulos Ab-Initio Physics group.
Here are some key features of "FFTW":
· Speed. (Supports SSE/SSE2/3dNow!/Altivec, new in version 3.0.)
· Both one-dimensional and multi-dimensional transforms.
· Arbitrary-size transforms. (Sizes with small prime factors are best, but FFTW uses O(N log N) algorithms even for prime sizes.)
· Fast transforms of purely real input or output data.
· Transforms of real even/odd data: the discrete cosine transform (DCT) and the discrete sine transform (DST), types I-IV. (New in version 3.0.)
· Efficient handling of multiple, strided transforms. (This lets you do things like transform multiple arrays at once, transform one dimension of a multi-dimensional array, or transform one field of a multi-component array.)
· Parallel transforms: parallelized code for platforms with Cilk or for SMP machines with some flavor of threads (e.g. POSIX). An MPI version for distributed-memory transforms is also available, currently only as part of FFTW 2.1.5.
· Portable to any platform with a C compiler. Documentation in HTML and other formats.
· Both C and Fortran interfaces.
· Free software, released under the GNU General Public License (GPL, see FFTW license). (Non-free licenses may also be purchased from MIT, for users who do not want their programs protected by the GPL. Contact us for details.) (Also see the FAQ.)
What's New in This Release: [ read full changelog ]
· Fix deadlock bug in MPI transforms (thanks to Michael Pippig for the bug report and patch, and to Graham Dennis for the bug report).
· Use 128-bit ARM NEON instructions instead of 64-bit instructions. This change appears to speed up even ARM processors with a 64-bit NEON pipe.
· Speed improvements for single-precision AVX.
· Speed up planner on machines without "official" cycle counters, such as ARM.