d@0: d@0:
d@0:d@0: d@0: Next: Planner Flags, d@0: Previous: Basic Interface, d@0: Up: Basic Interface d@0:
fftw_plan fftw_plan_dft_1d(int n, d@0: fftw_complex *in, fftw_complex *out, d@0: int sign, unsigned flags); d@0: fftw_plan fftw_plan_dft_2d(int n0, int n1, d@0: fftw_complex *in, fftw_complex *out, d@0: int sign, unsigned flags); d@0: fftw_plan fftw_plan_dft_3d(int n0, int n1, int n2, d@0: fftw_complex *in, fftw_complex *out, d@0: int sign, unsigned flags); d@0: fftw_plan fftw_plan_dft(int rank, const int *n, d@0: fftw_complex *in, fftw_complex *out, d@0: int sign, unsigned flags); d@0:d@0:
d@0: Plan a complex input/output discrete Fourier transform (DFT) in zero or
d@0: more dimensions, returning an fftw_plan
(see Using Plans).
d@0:
d@0:
Once you have created a plan for a certain transform type and d@0: parameters, then creating another plan of the same type and parameters, d@0: but for different arrays, is fast and shares constant data with the d@0: first plan (if it still exists). d@0: d@0:
The planner returns NULL
if the plan cannot be created. A
d@0: non-NULL
plan is always returned by the basic interface unless
d@0: you are using a customized FFTW configuration supporting a restricted
d@0: set of transforms.
d@0:
d@0:
rank
is the dimensionality of the transform (it should be the
d@0: size of the array *n
), and can be any non-negative integer. The
d@0: `_1d', `_2d', and `_3d' planners correspond to a
d@0: rank
of 1
, 2
, and 3
, respectively. A
d@0: rank
of zero is equivalent to a transform of size 1, i.e. a copy
d@0: of one number from input to output.
d@0:
d@0: n
, or n0
/n1
/n2
, or n[rank]
,
d@0: respectively, gives the size of the transform dimensions. They can be
d@0: any positive integer.
d@0:
d@0: n0
x n1
; or n0
x n1
x n2
; or
d@0: n[0]
x n[1]
x ... x n[rank-1]
.
d@0: See Multi-dimensional Array Format.
d@0: performance even for prime sizes). It is possible to customize FFTW d@0: for different array sizes; see Installation and Customization. d@0: Transforms whose sizes are powers of 2 are especially fast. d@0:
in
and out
point to the input and output arrays of the
d@0: transform, which may be the same (yielding an in-place transform).
d@0: These arrays are overwritten during planning, unless
d@0: FFTW_ESTIMATE
is used in the flags. (The arrays need not be
d@0: initialized, but they must be allocated.)
d@0:
d@0: If in == out
, the transform is in-place and the input
d@0: array is overwritten. If in != out
, the two arrays must
d@0: not overlap (but FFTW does not check for this condition).
d@0:
d@0:
sign
is the sign of the exponent in the formula that defines the
d@0: Fourier transform. It can be -1 (= FFTW_FORWARD
) or
d@0: +1 (= FFTW_BACKWARD
).
d@0:
d@0: flags
is a bitwise OR (`|') of zero or more planner flags,
d@0: as defined in Planner Flags.
d@0:
d@0: FFTW computes an unnormalized transform: computing a forward followed by d@0: a backward transform (or vice versa) will result in the original data d@0: multiplied by the size of the transform (the product of the dimensions). d@0: For more information, see What FFTW Really Computes. d@0: d@0: d@0: d@0: