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