Chris@42: Chris@42: Chris@42: Chris@42: Chris@42:
Chris@42:Chris@42: Next: Real-to-Real Transform Kinds, Previous: Real-data DFT Array Format, Up: Basic Interface [Contents][Index]
Chris@42:fftw_plan fftw_plan_r2r_1d(int n, double *in, double *out, Chris@42: fftw_r2r_kind kind, unsigned flags); Chris@42: fftw_plan fftw_plan_r2r_2d(int n0, int n1, double *in, double *out, Chris@42: fftw_r2r_kind kind0, fftw_r2r_kind kind1, Chris@42: unsigned flags); Chris@42: fftw_plan fftw_plan_r2r_3d(int n0, int n1, int n2, Chris@42: double *in, double *out, Chris@42: fftw_r2r_kind kind0, Chris@42: fftw_r2r_kind kind1, Chris@42: fftw_r2r_kind kind2, Chris@42: unsigned flags); Chris@42: fftw_plan fftw_plan_r2r(int rank, const int *n, double *in, double *out, Chris@42: const fftw_r2r_kind *kind, unsigned flags); Chris@42:
Plan a real input/output (r2r) transform of various kinds in zero or
Chris@42: more dimensions, returning an fftw_plan (see Using Plans).
Chris@42: 
Once you have created a plan for a certain transform type and Chris@42: parameters, then creating another plan of the same type and parameters, Chris@42: but for different arrays, is fast and shares constant data with the Chris@42: first plan (if it still exists). Chris@42:
Chris@42:The planner returns NULL if the plan cannot be created.  A
Chris@42: non-NULL plan is always returned by the basic interface unless
Chris@42: you are using a customized FFTW configuration supporting a restricted
Chris@42: set of transforms, or for size-1 FFTW_REDFT00 kinds (which are
Chris@42: not defined).
Chris@42: 
Chris@42: 
rank is the dimensionality of the transform (it should be the
Chris@42: size of the arrays *n and *kind), and can be any
Chris@42: non-negative integer.  The ‘_1d’, ‘_2d’, and ‘_3d’
Chris@42: planners correspond to a rank of 1, 2, and
Chris@42: 3, respectively.  A rank of zero is equivalent to a copy
Chris@42: of one number from input to output.
Chris@42: 
Chris@42: n, or n0/n1/n2, or n[rank],
Chris@42: respectively, gives the (physical) size of the transform dimensions.
Chris@42: They can be any positive integer.
Chris@42:  
Chris@42: n0 x n1; or n0 x n1 x n2; or
Chris@42: n[0] x n[1] x ... x n[rank-1].
Chris@42: See Multi-dimensional Array Format.
Chris@42: REDFT00 or RODFT00 transform kind in a dimension of
Chris@42: size n, it is n-1 or n+1, respectively, that
Chris@42: should be factorizable in the above form.
Chris@42: in and out point to the input and output arrays of the
Chris@42: transform, which may be the same (yielding an in-place transform).
Chris@42: 
Chris@42: These arrays are overwritten during planning, unless
Chris@42: FFTW_ESTIMATE is used in the flags.  (The arrays need not be
Chris@42: initialized, but they must be allocated.)
Chris@42: 
Chris@42: kind, or kind0/kind1/kind2, or
Chris@42: kind[rank], is the kind of r2r transform used for the
Chris@42: corresponding dimension.  The valid kind constants are described in
Chris@42: Real-to-Real Transform Kinds.  In a multi-dimensional transform,
Chris@42: what is computed is the separable product formed by taking each
Chris@42: transform kind along the corresponding dimension, one dimension after
Chris@42: another.
Chris@42: 
Chris@42: flags is a bitwise OR (‘|’) of zero or more planner flags,
Chris@42: as defined in Planner Flags.
Chris@42: 
Chris@42: Chris@42: Next: Real-to-Real Transform Kinds, Previous: Real-data DFT Array Format, Up: Basic Interface [Contents][Index]
Chris@42: