cannam@167: cannam@167: cannam@167: cannam@167: cannam@167:
cannam@167:cannam@167: Next: Guru Real-to-real Transforms, Previous: Guru Complex DFTs, Up: Guru Interface [Contents][Index]
cannam@167:fftw_plan fftw_plan_guru_dft_r2c( cannam@167: int rank, const fftw_iodim *dims, cannam@167: int howmany_rank, const fftw_iodim *howmany_dims, cannam@167: double *in, fftw_complex *out, cannam@167: unsigned flags); cannam@167: cannam@167: fftw_plan fftw_plan_guru_split_dft_r2c( cannam@167: int rank, const fftw_iodim *dims, cannam@167: int howmany_rank, const fftw_iodim *howmany_dims, cannam@167: double *in, double *ro, double *io, cannam@167: unsigned flags); cannam@167: cannam@167: fftw_plan fftw_plan_guru_dft_c2r( cannam@167: int rank, const fftw_iodim *dims, cannam@167: int howmany_rank, const fftw_iodim *howmany_dims, cannam@167: fftw_complex *in, double *out, cannam@167: unsigned flags); cannam@167: cannam@167: fftw_plan fftw_plan_guru_split_dft_c2r( cannam@167: int rank, const fftw_iodim *dims, cannam@167: int howmany_rank, const fftw_iodim *howmany_dims, cannam@167: double *ri, double *ii, double *out, cannam@167: unsigned flags); cannam@167:
Plan a real-input (r2c) or real-output (c2r), multi-dimensional DFT with
cannam@167: transform dimensions given by (rank
, dims
) over a
cannam@167: multi-dimensional vector (loop) of dimensions (howmany_rank
,
cannam@167: howmany_dims
). dims
and howmany_dims
should point
cannam@167: to fftw_iodim
arrays of length rank
and
cannam@167: howmany_rank
, respectively. As for the basic and advanced
cannam@167: interfaces, an r2c transform is FFTW_FORWARD
and a c2r transform
cannam@167: is FFTW_BACKWARD
.
cannam@167:
The last dimension of dims
is interpreted specially:
cannam@167: that dimension of the real array has size dims[rank-1].n
, but
cannam@167: that dimension of the complex array has size dims[rank-1].n/2+1
cannam@167: (division rounded down). The strides, on the other hand, are taken to
cannam@167: be exactly as specified. It is up to the user to specify the strides
cannam@167: appropriately for the peculiar dimensions of the data, and we do not
cannam@167: guarantee that the planner will succeed (return non-NULL
) for
cannam@167: any dimensions other than those described in Real-data DFT Array Format and generalized in Advanced Real-data DFTs. (That is,
cannam@167: for an in-place transform, each individual dimension should be able to
cannam@167: operate in place.)
cannam@167:
cannam@167:
in
and out
point to the input and output arrays for r2c
cannam@167: and c2r transforms, respectively. For split arrays, ri
and
cannam@167: ii
point to the real and imaginary input arrays for a c2r
cannam@167: transform, and ro
and io
point to the real and imaginary
cannam@167: output arrays for an r2c transform. in
and ro
or
cannam@167: ri
and out
may be the same, indicating an in-place
cannam@167: transform. (In-place transforms where in
and io
or
cannam@167: ii
and out
are the same are not currently supported.)
cannam@167:
flags
is a bitwise OR (‘|’) of zero or more planner flags,
cannam@167: as defined in Planner Flags.
cannam@167:
In-place transforms of rank greater than 1 are currently only
cannam@167: supported for interleaved arrays. For split arrays, the planner will
cannam@167: return NULL
.
cannam@167:
cannam@167:
cannam@167: Next: Guru Real-to-real Transforms, Previous: Guru Complex DFTs, Up: Guru Interface [Contents][Index]
cannam@167: