Real-to-Real Transform Kinds (FFTW 3.3.11)

#### 4.3.6 Real-to-Real Transform Kinds ¶

FFTW currently supports 11 different r2r transform kinds, specified by one of the constants below. For the precise definitions of these transforms, see What FFTW Really Computes. For a more colloquial introduction to these transform kinds, see More DFTs of Real Data.

For dimension of size `n`, there is a corresponding “logical” dimension `N` that determines the normalization (and the optimal factorization); the formula for `N` is given for each kind below. Also, with each transform kind is listed its corresponding inverse transform. FFTW computes unnormalized transforms: a transform followed by its inverse will result in the original data multiplied by `N` (or the product of the `N`’s for each dimension, in multi-dimensions).

- `FFTW_R2HC` computes a real-input DFT with output in “halfcomplex” format, i.e. real and imaginary parts for a transform of size `n` stored as:

  r0, r1, r2, ..., rn/2, i(n+1)/2-1, ..., i2, i1

  (Logical `N=n`, inverse is `FFTW_HC2R`.)
- `FFTW_HC2R` computes the reverse of `FFTW_R2HC`, above. (Logical `N=n`, inverse is `FFTW_R2HC`.)
- `FFTW_DHT` computes a discrete Hartley transform. (Logical `N=n`, inverse is `FFTW_DHT`.)
- `FFTW_REDFT00` computes an REDFT00 transform, i.e. a DCT-I. (Logical `N=2*(n-1)`, inverse is `FFTW_REDFT00`.)
- `FFTW_REDFT10` computes an REDFT10 transform, i.e. a DCT-II (sometimes called “the” DCT). (Logical `N=2*n`, inverse is `FFTW_REDFT01`.)
- `FFTW_REDFT01` computes an REDFT01 transform, i.e. a DCT-III (sometimes called “the” IDCT, being the inverse of DCT-II). (Logical `N=2*n`, inverse is `FFTW_REDFT=10`.)
- `FFTW_REDFT11` computes an REDFT11 transform, i.e. a DCT-IV. (Logical `N=2*n`, inverse is `FFTW_REDFT11`.)
- `FFTW_RODFT00` computes an RODFT00 transform, i.e. a DST-I. (Logical `N=2*(n+1)`, inverse is `FFTW_RODFT00`.)
- `FFTW_RODFT10` computes an RODFT10 transform, i.e. a DST-II. (Logical `N=2*n`, inverse is `FFTW_RODFT01`.)
- `FFTW_RODFT01` computes an RODFT01 transform, i.e. a DST-III. (Logical `N=2*n`, inverse is `FFTW_RODFT=10`.)
- `FFTW_RODFT11` computes an RODFT11 transform, i.e. a DST-IV. (Logical `N=2*n`, inverse is `FFTW_RODFT11`.)