4 Diana::QFFTWRealComplexPlan::QFFTWRealComplexPlan(Diana::QVector &realData,Diana::QVectorC &complexData,
QFFT::FFTDirection direction)
5 : fSize(realData.Size()),
6 fRealData(realData.fData,realData.fSize,realData.fStride),
7 fComplexData((gsl_complex *)complexData.fData,complexData.fSize,complexData.fStride)
22 Diana::QFFTWRealComplexPlan::QFFTWRealComplexPlan(Diana::QVector &realComplexData,
QFFT::FFTDirection direction)
23 : fSize(realComplexData.Size()),
24 fRealData(realComplexData.fData,realComplexData.fSize,realComplexData.fStride),
25 fComplexData((gsl_complex *)realComplexData.fData,realComplexData.fSize,realComplexData.fStride)
40 Diana::QFFTWRealComplexPlan::~QFFTWRealComplexPlan() {
42 fftw_destroy_plan(fFFTPlan);
46 void Diana::QFFTWRealComplexPlan::Execute() {
48 fftw_execute(fFFTPlan);
52 Diana::QFFTWRealComplexPlan Diana::QFFTWRealComplexPlan::CreateForwardPlan(Diana::QVector &realData,Diana::QVectorC &complexData) {
56 Diana::QFFTWRealComplexPlan Diana::QFFTWRealComplexPlan::CreateBackwardPlan(Diana::QVectorC &complexData,Diana::QVector &realData) {
69 if(fComplexData.Size() < fRealData.Size()/2+1)
73 fFFTPlan = fftw_plan_many_dft_r2c(1,&fSize,1,fRealData.fData,NULL,fRealData.fStride,0,
74 (fftw_complex *)fComplexData.fData,NULL,fComplexData.fStride,0,
77 fFFTPlan = fftw_plan_many_dft_c2r(1,&fSize,1,(fftw_complex *)fComplexData.fData,NULL,fComplexData.fStride,0,
78 fRealData.fData,NULL,fRealData.fStride,0,
82 "Package mathtools not compiled with FFTW3 support!");
error class with error type and description
Interface to FFTW's FFT plans.