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