27#ifndef math_templateCufft_hpp
28#define math_templateCufft_hpp
31#include <cuda_runtime.h>
39template <
typename inputT,
typename outputT>
40cufftResult cufftPlan2d( cufftHandle *plan,
int nx,
int ny );
43cufftResult cufftPlan2d<std::complex<float>, std::complex<float>>( cufftHandle *plan,
int nx,
int ny );
46cufftResult cufftPlan2d<cuComplex, cuComplex>( cufftHandle *plan,
int nx,
int ny );
49cufftResult cufftPlan2d<std::complex<double>, std::complex<double>>( cufftHandle *plan,
int nx,
int ny );
52cufftResult cufftPlan2d<cuDoubleComplex, cuDoubleComplex>( cufftHandle *plan,
int nx,
int ny );
54template <
typename inputT,
typename outputT>
55cufftResult cufftExec( cufftHandle plan, inputT *idata, inputT *odata,
int direction );
58cufftResult cufftExec<std::complex<float>, std::complex<float>>( cufftHandle plan,
59 std::complex<float> *idata,
60 std::complex<float> *odata,
64cufftResult cufftExec<cuComplex, cuComplex>( cufftHandle plan, cuComplex *idata, cuComplex *odata,
int direction );
67cufftResult cufftExec<std::complex<double>, std::complex<double>>( cufftHandle plan,
68 std::complex<double> *idata,
69 std::complex<double> *odata,
73cufftResult cufftExec<cuDoubleComplex, cuDoubleComplex>( cufftHandle plan,
74 cuDoubleComplex *idata,
75 cuDoubleComplex *odata,