# FFTW

## For version 2.1.3, 7 November 1999

### (1)

The output for the multi-dimensional rfftw is a more-conventional array of `fftw_complex` values, but the format here permitted us greater efficiency in one dimension.

### (2)

The basic problem is the resolution of the clock: FFTW needs to run for a certain time for the clock to be reliable.

### (3)

`fftwnd` actually may use some temporary storage (hidden in the plan), but this storage space is only the size of the largest dimension of the array, rather than being as big as the entire array. (Unless you use `fftwnd` to perform one-dimensional transforms, in which case the temporary storage required for in-place transforms is as big as the entire array.)

### (4)

The etymologically-correct spelling would be `frftw_`, but it is hard to remember.

### (5)

There is one exception: when performing one-dimensional in-place transforms, the `out` parameter is always ignored by the multi-threaded routines, instead of being used as a workspace if it is non-`NULL` as in the uniprocessor routines. The multi-threaded routines always allocate their own workspace (the size of which depends upon the number of threads).

### (6)

The 1D transforms require much more communication. All the communication in our FFT routines takes the form of an all-to-all communication: the multi-dimensional transforms require two all-to-all communications (or one, if you use `FFTW_TRANSPOSED_ORDER`), while the one-dimensional transforms require three (or two, if you use scrambled input or output).

### (7)

An FFT is particularly hard on communications systems, as it requires an all-to-all communication, which is more or less the worst possible case.

### (8)

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.

### (9)

Each version of `cc` seems to have its own magic incantation to get the fastest code most of the time--you'd think that people would have agreed upon some convention, e.g. "`-Omax`", by now.

This document was generated on 7 November 1999 using the texi2html translator version 1.52. (properly hacked by athena@theory.lcs.mit.edu)