26 return const_cast<T*
>(
p);
30 fftw_complex *
fftw_cast(
const std::complex<double> *
p)
32 return const_cast<fftw_complex*
>(
reinterpret_cast<const fftw_complex*
>(
p) );
36 fftwf_complex *
fftw_cast(
const std::complex<float> *
p)
38 return const_cast<fftwf_complex*
>(
reinterpret_cast<const fftwf_complex*
>(
p) );
42 fftwl_complex *
fftw_cast(
const std::complex<long double> *
p)
44 return const_cast<fftwl_complex*
>(
reinterpret_cast<const fftwl_complex*
>(
p) );
61 if (m_plan==
NULL) m_plan = fftwf_plan_dft_1d(nfft,src,dst, FFTW_FORWARD, FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
62 fftwf_execute_dft( m_plan, src,dst);
66 if (m_plan==
NULL) m_plan = fftwf_plan_dft_1d(nfft,src,dst, FFTW_BACKWARD , FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
67 fftwf_execute_dft( m_plan, src,dst);
71 if (m_plan==
NULL) m_plan = fftwf_plan_dft_r2c_1d(nfft,src,dst,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
72 fftwf_execute_dft_r2c( m_plan,src,dst);
77 m_plan = fftwf_plan_dft_c2r_1d(nfft,src,dst,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
78 fftwf_execute_dft_c2r( m_plan, src,dst);
83 if (m_plan==
NULL) m_plan = fftwf_plan_dft_2d(n0,
n1,src,dst,FFTW_FORWARD,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
84 fftwf_execute_dft( m_plan, src,dst);
88 if (m_plan==
NULL) m_plan = fftwf_plan_dft_2d(n0,
n1,src,dst,FFTW_BACKWARD,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
89 fftwf_execute_dft( m_plan, src,dst);
104 if (m_plan==
NULL) m_plan = fftw_plan_dft_1d(nfft,src,dst, FFTW_FORWARD, FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
105 fftw_execute_dft( m_plan, src,dst);
109 if (m_plan==
NULL) m_plan = fftw_plan_dft_1d(nfft,src,dst, FFTW_BACKWARD , FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
110 fftw_execute_dft( m_plan, src,dst);
114 if (m_plan==
NULL) m_plan = fftw_plan_dft_r2c_1d(nfft,src,dst,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
115 fftw_execute_dft_r2c( m_plan,src,dst);
120 m_plan = fftw_plan_dft_c2r_1d(nfft,src,dst,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
121 fftw_execute_dft_c2r( m_plan, src,dst);
125 if (m_plan==
NULL) m_plan = fftw_plan_dft_2d(n0,
n1,src,dst,FFTW_FORWARD,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
126 fftw_execute_dft( m_plan, src,dst);
130 if (m_plan==
NULL) m_plan = fftw_plan_dft_2d(n0,
n1,src,dst,FFTW_BACKWARD,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
131 fftw_execute_dft( m_plan, src,dst);
145 if (m_plan==
NULL) m_plan = fftwl_plan_dft_1d(nfft,src,dst, FFTW_FORWARD, FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
146 fftwl_execute_dft( m_plan, src,dst);
150 if (m_plan==
NULL) m_plan = fftwl_plan_dft_1d(nfft,src,dst, FFTW_BACKWARD , FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
151 fftwl_execute_dft( m_plan, src,dst);
155 if (m_plan==
NULL) m_plan = fftwl_plan_dft_r2c_1d(nfft,src,dst,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
156 fftwl_execute_dft_r2c( m_plan,src,dst);
161 m_plan = fftwl_plan_dft_c2r_1d(nfft,src,dst,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
162 fftwl_execute_dft_c2r( m_plan, src,dst);
166 if (m_plan==
NULL) m_plan = fftwl_plan_dft_2d(n0,
n1,src,dst,FFTW_FORWARD,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
167 fftwl_execute_dft( m_plan, src,dst);
171 if (m_plan==
NULL) m_plan = fftwl_plan_dft_2d(n0,
n1,src,dst,FFTW_BACKWARD,FFTW_ESTIMATE|FFTW_PRESERVE_INPUT);
172 fftwl_execute_dft( m_plan, src,dst);
176 template <
typename _Scalar>
244 bool aligned = ( (
reinterpret_cast<size_t>(src)&15) | (
reinterpret_cast<size_t>(dst)&15) ) == 0;
253 bool aligned = ( (
reinterpret_cast<size_t>(src)&15) | (
reinterpret_cast<size_t>(dst)&15) ) == 0;