1#ifndef ISCE_FFT_DETAIL_FFTPLANBASE_ICC
2#error "FFTPlanBase.icc is an implementation detail of FFTPlanBase.h"
5#include <isce3/except/Error.h>
7namespace isce3 {
namespace fft {
namespace detail {
9template<
int Sign,
typename T>
11FFTPlanBase<Sign, T>::FFTPlanBase()
13 _plan(std::make_shared<fftw_plan_t>())
16template<
int Sign,
typename T>
18FFTPlanBase<Sign, T>::FFTPlanBase(std::complex<T> * out,
25 FFTPlanBase(out, in, &n, &n, 1, n, &n, 1, n, batch, flags, 1, Sign, threads)
28template<
int Sign,
typename T>
31FFTPlanBase<Sign, T>::FFTPlanBase(std::complex<T> * out,
38 FFTPlanBase(out, in, n, n, 1, product(n), n, 1, product(n), batch, flags, Rank, Sign, threads)
41template<
int Sign,
typename T>
43FFTPlanBase<Sign, T>::FFTPlanBase(std::complex<T> * out,
53 FFTPlanBase(out, in, &n, &nembed, stride, dist, &nembed, stride, dist, batch, flags, 1, Sign, threads)
56template<
int Sign,
typename T>
59FFTPlanBase<Sign, T>::FFTPlanBase(std::complex<T> * out,
62 const int (&nembed)[Rank],
69 FFTPlanBase(out, in, n, nembed, stride, dist, nembed, stride, dist, batch, flags, Rank, Sign, threads)
72template<
int Sign,
typename T>
74FFTPlanBase<Sign, T>::FFTPlanBase(std::complex<T> * out,
87 FFTPlanBase(out, in, &n, &inembed, istride, idist, &onembed, ostride, odist, batch, flags, 1, Sign, threads)
90template<
int Sign,
typename T>
93FFTPlanBase<Sign, T>::FFTPlanBase(std::complex<T> * out,
96 const int (&inembed)[Rank],
99 const int (&onembed)[Rank],
106 FFTPlanBase(out, in, n, inembed, istride, idist, onembed, ostride, odist, batch, flags, Rank, Sign, threads)
109template<
int Sign,
typename T>
111void FFTPlanBase<Sign, T>::execute()
const
116template<
int Sign,
typename T>
117template<
typename U,
typename V>
118FFTPlanBase<Sign, T>::FFTPlanBase(U * out,
134 _plan = std::shared_ptr<fftw_plan_t>(
new fftw_plan_t,
135 [](fftw_plan_t * plan)
noexcept {
141 *_plan = initPlan(rank, n, batch, in, inembed, istride, idist, out, onembed, ostride, odist, sign, flags, threads);
145 throw isce3::except::RuntimeError(ISCE_SRCINFO(),
"FFT plan creation failed");
151int product(
const int (&arr)[N])
154 for (
auto x : arr) { prod *= x; }
base interpolator is an abstract base class
Definition BinarySearchFunc.cpp:5