28 #ifndef SCIMATH_FFTW_H
29 #define SCIMATH_FFTW_H
31 #include <casacore/casa/aips.h>
32 #include <casacore/casa/Arrays/IPosition.h>
77 void r2c(
const IPosition &size,
float *in, std::complex<float> *out) ;
78 void r2c(
const IPosition &size,
double *in, std::complex<double> *out) ;
79 void c2r(
const IPosition &size, std::complex<float> *in,
float *out);
80 void c2r(
const IPosition &size, std::complex<double> *in,
double *out);
81 void c2c(
const IPosition &size, std::complex<float> *in,
bool forward);
82 void c2c(
const IPosition &size, std::complex<double> *in,
bool forward);
std::unique_ptr< FFTWPlan > _plan
std::unique_ptr< FFTWPlanf > _planf
void Execute(float *in, float *out)
Perform the FFT associated with this plan with the given in data, and store it in the given out data.
std::unique_ptr< FFTWPlan > itsPlanR2C
void plan_c2r(const IPosition &size, std::complex< double > *in, double *out)
std::unique_ptr< FFTWPlanf > itsPlanC2CBf
void plan_c2c_backward(const IPosition &size, std::complex< double > *in)
std::unique_ptr< FFTWPlanf > itsPlanR2Rf
void plan_c2c_forward(const IPosition &size, std::complex< float > *in)
std::unique_ptr< FFTWPlan > itsPlanC2CB
void r2c(const IPosition &size, double *in, std::complex< double > *out)
void c2c(const IPosition &size, std::complex< float > *in, bool forward)
void c2c(const IPosition &size, std::complex< double > *in, bool forward)
std::unique_ptr< FFTWPlan > itsPlanR2R
void plan_r2c(const IPosition &size, float *in, std::complex< float > *out)
overloaded interface to fftw[f]_plan...
void plan_c2c_forward(const IPosition &size, std::complex< double > *in)
void r2c(const IPosition &size, float *in, std::complex< float > *out)
TODO These overloads do not use their parameters at all.
void plan_r2c(const IPosition &size, double *in, std::complex< double > *out)
std::unique_ptr< FFTWPlan > itsPlanC2R
void plan_c2c_backward(const IPosition &size, std::complex< float > *in)
void plan_c2r(const IPosition &size, std::complex< float > *in, float *out)
std::unique_ptr< FFTWPlanf > itsPlanR2Cf
static Plan plan_redft00(const IPosition &size, float *in, float *out)
static std::mutex theirMutex
only once per process, not once per object
std::unique_ptr< FFTWPlan > itsPlanC2CF
std::unique_ptr< FFTWPlanf > itsPlanC2Rf
void c2r(const IPosition &size, std::complex< double > *in, double *out)
void c2r(const IPosition &size, std::complex< float > *in, float *out)
std::unique_ptr< FFTWPlanf > itsPlanC2CFf
static void initialize_fftw()
static bool is_initialized_fftw
this file contains all the compiler specific defines
Define real & complex conjugation for non-complex types and put comparisons into std namespace.