d@0: d@0: d@0: Advanced Real-data DFTs - FFTW 3.2.1 d@0: d@0: d@0: d@0: d@0: d@0: d@0: d@0: d@0: d@0: d@0: d@0: d@0: d@0:
d@0:

d@0: d@0: d@0: Next: , d@0: Previous: Advanced Complex DFTs, d@0: Up: Advanced Interface d@0:


d@0:
d@0: d@0:

4.4.2 Advanced Real-data DFTs

d@0: d@0:
     fftw_plan fftw_plan_many_dft_r2c(int rank, const int *n, int howmany,
d@0:                                       double *in, const int *inembed,
d@0:                                       int istride, int idist,
d@0:                                       fftw_complex *out, const int *onembed,
d@0:                                       int ostride, int odist,
d@0:                                       unsigned flags);
d@0:      fftw_plan fftw_plan_many_dft_c2r(int rank, const int *n, int howmany,
d@0:                                       fftw_complex *in, const int *inembed,
d@0:                                       int istride, int idist,
d@0:                                       double *out, const int *onembed,
d@0:                                       int ostride, int odist,
d@0:                                       unsigned flags);
d@0: 
d@0:

d@0: Like fftw_plan_many_dft, these two functions add howmany, d@0: nembed, stride, and dist parameters to the d@0: fftw_plan_dft_r2c and fftw_plan_dft_c2r functions, but d@0: otherwise behave the same as the basic interface. d@0: d@0:

The interpretation of howmany, stride, and dist are d@0: the same as for fftw_plan_many_dft, above. Note that the d@0: stride and dist for the real array are in units of d@0: double, and for the complex array are in units of d@0: fftw_complex. d@0: d@0:

If an nembed parameter is NULL, it is interpreted as what d@0: it would be in the basic interface, as described in Real-data DFT Array Format. That is, for the complex array the size is assumed to be d@0: the same as n, but with the last dimension cut roughly in half. d@0: For the real array, the size is assumed to be n if the transform d@0: is out-of-place, or n with the last dimension “padded” if the d@0: transform is in-place. d@0: d@0:

If an nembed parameter is non-NULL, it is interpreted as d@0: the physical size of the corresponding array, in row-major order, just d@0: as for fftw_plan_many_dft. In this case, each dimension of d@0: nembed should be >= what it would be in the basic d@0: interface (e.g. the halved or padded n). d@0: d@0:

Arrays n, inembed, and onembed are not used after d@0: this function returns. You can safely free or reuse them. d@0: d@0: d@0: d@0: