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