Previous: , Up: Calling FFTW from Legacy Fortran   [Contents][Index]


8.5 Wisdom of Fortran?

In this section, we discuss how one can import/export FFTW wisdom (saved plans) to/from a Fortran program; we assume that the reader is already familiar with wisdom, as described in Words of Wisdom—Saving Plans.

The basic problem is that is difficult to (portably) pass files and strings between Fortran and C, so we cannot provide a direct Fortran equivalent to the fftw_export_wisdom_to_file, etcetera, functions. Fortran interfaces are provided for the functions that do not take file/string arguments, however: dfftw_import_system_wisdom, dfftw_import_wisdom, dfftw_export_wisdom, and dfftw_forget_wisdom.

So, for example, to import the system-wide wisdom, you would do:

        integer isuccess
        call dfftw_import_system_wisdom(isuccess)

As usual, the C return value is turned into a first parameter; isuccess is non-zero on success and zero on failure (e.g. if there is no system wisdom installed).

If you want to import/export wisdom from/to an arbitrary file or elsewhere, you can employ the generic dfftw_import_wisdom and dfftw_export_wisdom functions, for which you must supply a subroutine to read/write one character at a time. The FFTW package contains an example file doc/f77_wisdom.f demonstrating how to implement import_wisdom_from_file and export_wisdom_to_file subroutines in this way. (These routines cannot be compiled into the FFTW library itself, lest all FFTW-using programs be required to link with the Fortran I/O library.)