cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: FFTW 3.3.8: Advanced Real-data DFTs cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: cannam@167:
cannam@167:

cannam@167: Next: , Previous: , Up: Advanced Interface   [Contents][Index]

cannam@167:
cannam@167:
cannam@167: cannam@167:

4.4.2 Advanced Real-data DFTs

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

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

cannam@167:

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

cannam@167:

If an nembed parameter is NULL, it is interpreted as what cannam@167: 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 cannam@167: the same as n, but with the last dimension cut roughly in half. cannam@167: For the real array, the size is assumed to be n if the transform cannam@167: is out-of-place, or n with the last dimension “padded” if the cannam@167: transform is in-place. cannam@167:

cannam@167:

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

cannam@167:

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

cannam@167:
cannam@167:
cannam@167:

cannam@167: Next: , Previous: , Up: Advanced Interface   [Contents][Index]

cannam@167:
cannam@167: cannam@167: cannam@167: cannam@167: cannam@167: