#### 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 corrsponding 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`.)