Subscribe to the fftw-announce mailing list on Google Groups to receive an email when FFTW is updated in the future. Alternatively, you can use the web feed or mailing list on freecode.com.
You can contact the FFTW authors at fftw@fftw.org.
Version 3.3.10 is the latest stable release of FFTW, and full source code is found here:
See the release notes to find out what's new.
Be sure to look at the installation section of the manual.
FFTW is distributed under the GNU GPL; see the License and Copyright section of the FFTW manual for more information.
FFTW 2.1.5 is the stable release of FFTW2, last updated in 1999. FFTW 2.1.5 is obsolete, but because its API is incompatible with that of version 3.x, we continue to distribute it for those users who require backwards compatibility.
In order to perform runtime self-optimization, FFTW needs a high-precision timer to measure the cost of different code choices, and we now use the hardware cycle counter available in most modern CPUs. We support the cycle counter for x86 (Pentium and later), IA-64 (Itanium), x86-64, PowerPC, Alpha, PA-RISC, MIPS, s390, and other processors under a variety of compilers.
If you are interested in using a cycle counter in your own code, you can download FFTW's cycle-counter header by itself:
To use it, #include "cycle.h"
, call the
ticks t = getticks()
function before and after the code you want to
time, and call the elapsed(t1,t2)
function to get
the elapsed time as a double-precision number. (The elapsed time is
in arbitrary units, not seconds or anything like that...it's intended
for performance comparisons on a given machine only.)
(In order to use some of the OS-dependent timer routines like
Solaris' gethrtime
, you need to paste the autoconf snippet from
the top of cycle.h
into your configure.ac
file and #include "config.h"
before cycle.h
, or define
the relevant macros manually if you are not using autoconf.)
These are files and notes to help you install FFTW on particular platforms. (Note that the installation notes below were sent in by users, and have not been tested by us.)
If you had to modify the Makefile
or anything else in the
standard FFTW distribution to get it to run on your machine, let us know so that we can
make your modifications available to others.
FFTW is designed to be called directly from C and C++, of course, and also includes wrapper functions allowing you to call it from Fortran. Several of our users have contributed code to make it easier to call FFTW from other languages as well:
Let us know if you want to contribute something for your favorite
language, and we will be happy to link to you. In general, we
recommend translating the API into the format most natural for your
language; you may even want to call some internal FFTW functions...see
the api/
directory in the FFTW 3.0.1 package for examples.
Many programs use FFTW; let us point out a few free ones to get you started, although this list is pretty out of date and very incomplete these days.
The GNU Radio
project is using FFTW to implement a software-defined radio. There is
a GIMP plugin called GFourier that uses FFTW to
compute Fourier transforms of images, as well as a Linux program
called gstring for
guitar tuning, a synthesis program called ARSS, and a GNOME panel
plugin called VSA for
real-time audio spectrum display and filtering. StarCrash is a
smoothed-particle hydrodynamics code for gravitational simulations
that calls the MPI FFTW routines from Fortran. GNU Octave is a Matlab-like program
that uses FFTW for its fft()
routines (like Matlab
itself). XMDS is an extensible
simulator for partial differential equations.