7 #include "FFTWWrapper.h"
10 namespace isce3 {
namespace fft {
namespace detail {
12 template<
int Sign,
typename T>
16 static_assert( Sign == FFTW_FORWARD || Sign == FFTW_BACKWARD,
"" );
17 static_assert( std::is_same<T, float>::value || std::is_same<T, double>::value,
"" );
25 unsigned flags = FFTW_MEASURE,
26 int threads = getMaxThreads());
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;
112 int product(
const int (&arr)[N]);
116 #define ISCE_FFT_DETAIL_FFTPLANBASE_ICC
117 #include "FFTPlanBase.icc"
118 #undef ISCE_FFT_DETAIL_FFTPLANBASE_ICC
Definition: FFTWWrapper.h:8
Definition: FFTPlanBase.h:13