26 #ifndef LIBRARIES_RECONSTRUCTION_FFTWT_H_ 27 #define LIBRARIES_RECONSTRUCTION_FFTWT_H_ 41 struct plan<float>{
typedef fftwf_plan
type; };
43 struct plan<double>{
typedef fftw_plan
type; };
50 fftwf_init_threads();}
54 fftw_cleanup_threads();
55 fftwf_cleanup_threads();
72 std::complex<T>* fft(T *inOut);
73 std::complex<T>* fft(
const T *
in, std::complex<T> *out);
75 T* ifft(std::complex<T> *inOut);
76 T* ifft(
const std::complex<T> *in, T *out);
79 static std::complex<T>* fft(
const P plan,
80 const T *in, std::complex<T> *out);
82 static std::complex<T>* fft(
const P plan,
85 static std::complex<T>*
fft(
void *plan,
86 const T *in, std::complex<T> *out) {
87 return fft(cast(plan), in, out);
89 static std::complex<T>*
fft(
void *plan, T *inOut) {
90 return fft(cast(plan), inOut);
94 static T* ifft(
const P plan,
95 std::complex<T> *in, T *out);
97 static T* ifft(
const P plan,
98 std::complex<T> *inOut);
101 std::complex<T> *in, T *out) {
102 return ifft(cast(plan), in, out);
105 std::complex<T> *inOut) {
106 return ifft(cast(plan), inOut);
109 static const fftw_plan createPlan(
112 bool isDataAligned=
false);
113 static const fftwf_plan createPlan(
116 bool isDataAligned=
false);
119 static void release(P plan);
121 static void release(
void *plan);
124 static void release(D *alignedData);
125 static void* allocateAligned(
size_t bytes);
128 static void *m_mockOut;
133 std::complex<T> *m_FD;
139 template<
typename U,
typename F>
141 int threads,
bool isDataAligned);
147 void release(T *SD, std::complex<T> *FD);
static std::complex< T > * fft(void *plan, T *inOut)
static T * ifft(void *plan, std::complex< T > *inOut)
static T * ifft(void *plan, std::complex< T > *in, T *out)
static std::complex< T > * fft(void *plan, const T *in, std::complex< T > *out)
check(nparam, nf, nfsr, &Linfty, nineq, nineqn, neq, neqn, ncsrl, ncsrn, mode, &modem, eps, bgbnd, param)