Next: , Previous: Calling FFTW from Legacy Fortran, Up: Calling FFTW from Legacy Fortran

8.1 Fortran-interface routines

Nearly all of the FFTW functions have Fortran-callable equivalents. The name of the legacy Fortran routine is the same as that of the corresponding C routine, but with the ‘fftw_’ prefix replaced by ‘dfftw_’.1 The single and long-double precision versions use ‘sfftw_’ and ‘lfftw_’, respectively, instead of ‘fftwf_’ and ‘fftwl_’; quadruple precision (real*16) is available on some systems as ‘fftwq_’ (see Precision). (Note that long double on x86 hardware is usually at most 80-bit extended precision, not quadruple precision.)

For the most part, all of the arguments to the functions are the same, with the following exceptions:

In general, you should take care to use Fortran data types that correspond to (i.e. are the same size as) the C types used by FFTW. In practice, this correspondence is usually straightforward (i.e. integer corresponds to int, real corresponds to float, etcetera). The native Fortran double/single-precision complex type should be compatible with fftw_complex/fftwf_complex. Such simple correspondences are assumed in the examples below.


[1] Technically, Fortran 77 identifiers are not allowed to have more than 6 characters, nor may they contain underscores. Any compiler that enforces this limitation doesn't deserve to link to FFTW.

[2] The reason for this is that some Fortran implementations seem to have trouble with C function return values, and vice versa.