# Fourier Transforms

This package extends the functionality provided by AbstractFFTs. To learn more about those functions, consult that package's documentation.

The following functions are unique to this package.

`FFTW.r2r`

— Function`r2r(A, kind [, dims])`

Performs a multidimensional real-input/real-output (r2r) transform of type `kind`

of the array `A`

, as defined in the FFTW manual. `kind`

specifies either a discrete cosine transform of various types (`FFTW.REDFT00`

, `FFTW.REDFT01`

, `FFTW.REDFT10`

, or `FFTW.REDFT11`

), a discrete sine transform of various types (`FFTW.RODFT00`

, `FFTW.RODFT01`

, `FFTW.RODFT10`

, or `FFTW.RODFT11`

), a real-input DFT with halfcomplex-format output (`FFTW.R2HC`

and its inverse `FFTW.HC2R`

), or a discrete Hartley transform (`FFTW.DHT`

). The `kind`

argument may be an array or tuple in order to specify different transform types along the different dimensions of `A`

; `kind[end]`

is used for any unspecified dimensions. See the FFTW manual for precise definitions of these transform types, at http://www.fftw.org/doc.

The optional `dims`

argument specifies an iterable subset of dimensions (e.g. an integer, range, tuple, or array) to transform along. `kind[i]`

is then the transform type for `dims[i]`

, with `kind[end]`

being used for `i > length(kind)`

.

See also `plan_r2r`

to pre-plan optimized r2r transforms.

`FFTW.r2r!`

— Function`r2r!(A, kind [, dims])`

Same as `r2r`

, but operates in-place on `A`

, which must be an array of real or complex floating-point numbers.

`FFTW.plan_r2r`

— Function`FFTW.plan_r2r!`

— Function`FFTW.dct`

— Function`dct(A [, dims])`

Performs a multidimensional type-II discrete cosine transform (DCT) of the array `A`

, using the unitary normalization of the DCT. The optional `dims`

argument specifies an iterable subset of dimensions (e.g. an integer, range, tuple, or array) to transform along. Most efficient if the size of `A`

along the transformed dimensions is a product of small primes; see `nextprod`

. See also `plan_dct`

for even greater efficiency.

`FFTW.idct`

— Function`idct(A [, dims])`

Computes the multidimensional inverse discrete cosine transform (DCT) of the array `A`

(technically, a type-III DCT with the unitary normalization). The optional `dims`

argument specifies an iterable subset of dimensions (e.g. an integer, range, tuple, or array) to transform along. Most efficient if the size of `A`

along the transformed dimensions is a product of small primes; see `nextprod`

. See also `plan_idct`

for even greater efficiency.

`FFTW.dct!`

— Function`dct!(A [, dims])`

Same as `dct`

, except that it operates in-place on `A`

, which must be an array of real or complex floating-point values.

`FFTW.idct!`

— Function`idct!(A [, dims])`

Same as `idct`

, but operates in-place on `A`

.

`FFTW.plan_dct`

— Function`FFTW.plan_idct`

— Function`FFTW.plan_dct!`

— Function`plan_dct!(A [, dims [, flags [, timelimit [, num_threads]]]])`

Same as `plan_dct`

, but operates in-place on `A`

.

`FFTW.plan_idct!`

— Function`plan_idct!(A [, dims [, flags [, timelimit [, num_threads]]]])`

Same as `plan_idct`

, but operates in-place on `A`

.