Computing the Multi-dimensional Transform
-----------------------------------------
#include <fftw.h>
void fftwnd(fftwnd_plan plan, int howmany,
fftw_complex *in, int istride, int idist,
fftw_complex *out, int ostride, int odist);
void fftwnd_one(fftwnd_plan p, fftw_complex *in,
fftw_complex *out);
The function `fftwnd' computes one or more multi-dimensional Fourier
Transforms, using a plan created by `fftwnd_create_plan' (Note:Plan
Creation for Multi-dimensional Transforms.). (Note
that the plan determines the rank and dimensions of the array to be
transformed.) The function `fftwnd_one' provides a simplified
interface for the common case of single input array of stride 1.
Arguments
.........
* `plan' is the plan created by `fftwnd_create_plan'. (Note:Plan
Creation for Multi-dimensional Transforms.).
In the case of two and three-dimensional transforms, it could also
have been created by `fftw2d_create_plan' or `fftw3d_create_plan',
respectively.
* `howmany' is the number of multi-dimensional transforms `fftwnd'
will compute.
* `in', `istride' and `idist' describe the input array(s). There
are `howmany' multi-dimensional input arrays; the first one is
pointed to by `in', the second one is pointed to by `in + idist',
and so on, up to `in + (howmany - 1) * idist'. Each
multi-dimensional input array consists of complex numbers (Note:Data Types.), stored in row-major format (Note:Multi-dimensional Array Format.), which are not necessarily
contiguous in memory. Specifically, `in[0]' is the first element
of the first array, `in[istride]' is the second element of the
first array, and so on. In general, the `i'-th element of the
`j'-th input array will be in position `in[i * istride + j *
idist]'. Note that, here, `i' refers to an index into the
row-major format for the multi-dimensional array, rather than an
index in any particular dimension.
- *In-place transforms*: For plans created with the
`FFTW_IN_PLACE' option, the transform is computed
in-place--the output is returned in the `in' array, using the
same strides, etcetera, as were used in the input.
* `out', `ostride' and `odist' describe the output array(s). The
format is the same as for the input array.
- *In-place transforms*: These parameters are ignored for plans
created with the `FFTW_IN_PLACE' option.
The function `fftwnd_one' transforms a single, contiguous input
array to a contiguous output array. By definition, the call
fftwnd_one(plan, in, out)
is equivalent to
fftwnd(plan, 1, in, 1, 1, out, 1, 1)