16 static_assert( Sign == FFTW_FORWARD || Sign == FFTW_BACKWARD,
"" );
17 static_assert( std::is_same<T, float>::value || std::is_same<T, double>::value,
"" );
21 FFTPlanBase(std::complex<T> * out,
25 unsigned flags = FFTW_MEASURE,
26 int threads = getMaxThreads());
29 FFTPlanBase(std::complex<T> * out,
33 unsigned flags = FFTW_MEASURE,
34 int threads = getMaxThreads());
36 FFTPlanBase(std::complex<T> * out,
43 unsigned flags = FFTW_MEASURE,
44 int threads = getMaxThreads());
47 FFTPlanBase(std::complex<T> * out,
50 const int (&nembed)[Rank],
54 unsigned flags = FFTW_MEASURE,
55 int threads = getMaxThreads());
57 FFTPlanBase(std::complex<T> * out,
67 unsigned flags = FFTW_MEASURE,
68 int threads = getMaxThreads());
71 FFTPlanBase(std::complex<T> * out,
74 const int (&inembed)[Rank],
77 const int (&onembed)[Rank],
81 unsigned flags = FFTW_MEASURE,
82 int threads = getMaxThreads());
84 explicit operator bool()
const {
return *_plan; }
92 template<
typename U,
typename V>
108 std::shared_ptr<fftw_plan_t> _plan;