18#ifndef itkFFTWCommonExtended_h
19#define itkFFTWCommonExtended_h
21#if defined(ITK_USE_FFTWF) || defined(ITK_USE_FFTWD)
22# if defined(ITK_USE_CUFFTW)
44template <
typename TPixel>
54#if defined(ITK_USE_FFTWF)
68# ifndef ITK_USE_CUFFTW
70 fftwf_plan_with_nthreads(threads);
74 PlanType plan = fftwf_plan_dft_c2r_1d(n, in, out, flags);
80# ifndef ITK_USE_CUFFTW
82 fftwf_plan_with_nthreads(threads);
86 PlanType plan = fftwf_plan_dft_c2r_2d(nx, ny, in, out, flags);
92# ifndef ITK_USE_CUFFTW
94 fftwf_plan_with_nthreads(threads);
98 PlanType plan = fftwf_plan_dft_c2r_3d(nx, ny, nz, in, out, flags);
104# ifndef ITK_USE_CUFFTW
106 fftwf_plan_with_nthreads(threads);
110 PlanType plan = fftwf_plan_dft_c2r(rank, n, in, out, flags);
117# ifndef ITK_USE_CUFFTW
119 fftwf_plan_with_nthreads(threads);
123 PlanType plan = fftwf_plan_dft_r2c_1d(n, in, out, flags);
129# ifndef ITK_USE_CUFFTW
131 fftwf_plan_with_nthreads(threads);
135 PlanType plan = fftwf_plan_dft_r2c_2d(nx, ny, in, out, flags);
141# ifndef ITK_USE_CUFFTW
143 fftwf_plan_with_nthreads(threads);
147 PlanType plan = fftwf_plan_dft_r2c_3d(nx, ny, nz, in, out, flags);
153# ifndef ITK_USE_CUFFTW
155 fftwf_plan_with_nthreads(threads);
159 PlanType plan = fftwf_plan_dft_r2c(rank, n, in, out, flags);
165# ifndef ITK_USE_CUFFTW
167 fftwf_plan_with_nthreads(threads);
171 PlanType plan = fftwf_plan_dft_1d(n, in, out, sign, flags);
184 fftwf_destroy_plan(p);
191#if defined(ITK_USE_FFTWD)
204# ifndef ITK_USE_CUFFTW
206 fftw_plan_with_nthreads(threads);
210 PlanType plan = fftw_plan_dft_c2r_1d(n, in, out, flags);
216# ifndef ITK_USE_CUFFTW
218 fftw_plan_with_nthreads(threads);
222 PlanType plan = fftw_plan_dft_c2r_2d(nx, ny, in, out, flags);
228# ifndef ITK_USE_CUFFTW
230 fftw_plan_with_nthreads(threads);
234 PlanType plan = fftw_plan_dft_c2r_3d(nx, ny, nz, in, out, flags);
240# ifndef ITK_USE_CUFFTW
242 fftw_plan_with_nthreads(threads);
246 PlanType plan = fftw_plan_dft_c2r(rank, n, in, out, flags);
253# ifndef ITK_USE_CUFFTW
255 fftw_plan_with_nthreads(threads);
259 PlanType plan = fftw_plan_dft_r2c_1d(n, in, out, flags);
266# ifndef ITK_USE_CUFFTW
268 fftw_plan_with_nthreads(threads);
272 PlanType plan = fftw_plan_dft_r2c_2d(nx, ny, in, out, flags);
279# ifndef ITK_USE_CUFFTW
281 fftw_plan_with_nthreads(threads);
285 PlanType plan = fftw_plan_dft_r2c_3d(nx, ny, nz, in, out, flags);
292# ifndef ITK_USE_CUFFTW
294 fftw_plan_with_nthreads(threads);
298 PlanType plan = fftw_plan_dft_r2c(rank, n, in, out, flags);
304# ifndef ITK_USE_CUFFTW
306 fftw_plan_with_nthreads(threads);
310 PlanType plan = fftw_plan_dft_1d(n, in, out, sign, flags);
322 fftw_destroy_plan(p);
static std::mutex & GetLockMutex()
static PlanType Plan_dft_c2r_2d(int nx, int ny, ComplexType *in, PixelType *out, unsigned int flags, int threads=1)
static void Execute(PlanType p)
static PlanType Plan_dft_c2r(int rank, const int *n, ComplexType *in, PixelType *out, unsigned int flags, int threads=1)
static PlanType Plan_dft_r2c_3d(int nx, int ny, int nz, PixelType *in, ComplexType *out, unsigned int flags, int threads=1)
static PlanType Plan_dft_c2r_1d(int n, ComplexType *in, PixelType *out, unsigned int flags, int threads=1)
static PlanType Plan_dft_r2c(int rank, const int *n, PixelType *in, ComplexType *out, unsigned int flags, int threads=1)
static PlanType Plan_dft_1d(const int n, ComplexType *in, ComplexType *out, int sign, unsigned int flags, int threads=1)
static void DestroyPlan(PlanType p)
static PlanType Plan_dft_r2c_2d(int nx, int ny, PixelType *in, ComplexType *out, unsigned int flags, int threads=1)
static PlanType Plan_dft_r2c_1d(int n, PixelType *in, ComplexType *out, unsigned int flags, int threads=1)
static PlanType Plan_dft_c2r_3d(int nx, int ny, int nz, ComplexType *in, PixelType *out, unsigned int flags, int threads=1)
static void Execute(PlanType p)
fftwf_complex ComplexType
static PlanType Plan_dft_1d(const int n, ComplexType *in, ComplexType *out, int sign, unsigned int flags, int threads=1)
static PlanType Plan_dft_r2c(int rank, const int *n, PixelType *in, ComplexType *out, unsigned int flags, int threads=1)
static void DestroyPlan(PlanType p)
static PlanType Plan_dft_c2r_2d(int nx, int ny, ComplexType *in, PixelType *out, unsigned int flags, int threads=1)
static PlanType Plan_dft_c2r_1d(int n, ComplexType *in, PixelType *out, unsigned int flags, int threads=1)
static PlanType Plan_dft_r2c_2d(int nx, int ny, PixelType *in, ComplexType *out, unsigned int flags, int threads=1)
static PlanType Plan_dft_c2r_3d(int nx, int ny, int nz, ComplexType *in, PixelType *out, unsigned int flags, int threads=1)
static PlanType Plan_dft_r2c_1d(int n, PixelType *in, ComplexType *out, unsigned int flags, int threads=1)
static PlanType Plan_dft_r2c_3d(int nx, int ny, int nz, PixelType *in, ComplexType *out, unsigned int flags, int threads=1)
static PlanType Plan_dft_c2r(int rank, const int *n, ComplexType *in, PixelType *out, unsigned int flags, int threads=1)
~ComplexToComplexProxy()=default
ComplexToComplexProxy()=default
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....