30 #ifndef PLANCK_FFTPACK_SUPPORT_H 31 #define PLANCK_FFTPACK_SUPPORT_H 44 cfft () : n(0), plan(0) {}
46 : n(size_), plan(make_complex_plan(size_)) {}
47 cfft (
const cfft &orig)
48 : n(orig.n), plan(copy_complex_plan(orig.plan)) {}
50 {
if (plan!=0) kill_complex_plan (plan); }
51 cfft &operator=(
const cfft &orig)
55 if (plan!=0) kill_complex_plan (plan);
57 plan = copy_complex_plan(orig.plan);
61 void Set (
tsize size_)
64 if (plan!=0) kill_complex_plan (plan);
66 plan=make_complex_plan(size_);
72 void forward (
double *data)
73 { complex_plan_forward(plan,data); }
74 void backward (
double *data)
75 { complex_plan_backward(plan,data); }
76 void forward (dcomplex *data)
77 { complex_plan_forward(plan,reinterpret_cast<double *>(data)); }
78 void backward (dcomplex *data)
79 { complex_plan_backward(plan,reinterpret_cast<double *>(data)); }
81 { forward(reinterpret_cast<double *>(&data[0])); }
83 { backward(reinterpret_cast<double *>(&data[0])); }
93 rfft () : n(0), plan(0) {}
94 rfft (
const rfft &orig)
95 : n(orig.n), plan(copy_real_plan(orig.plan)) {}
97 : n(size_), plan(make_real_plan(size_)) {}
99 {
if (plan!=0) kill_real_plan (plan); }
100 rfft &operator=(
const rfft &orig)
104 if (plan!=0) kill_real_plan (plan);
106 plan = copy_real_plan(orig.plan);
110 void Set (
tsize size_)
112 if (n==size_)
return;
113 if (plan!=0) kill_real_plan (plan);
115 plan=make_real_plan(size_);
121 void forward_fftpack (
double *data)
122 { real_plan_forward_fftpack(plan,data); }
123 void backward_fftpack (
double *data)
124 { real_plan_backward_fftpack(plan,data); }
126 { forward_fftpack(&(data[0])); }
128 { backward_fftpack(&(data[0])); }
130 { real_plan_forward_c(plan,reinterpret_cast<double *>(&data[0])); }
132 { real_plan_backward_c(plan,reinterpret_cast<double *>(&data[0])); }