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