// 3D single-precission real-to-complex FFT plan. func newFFT3DC2R(Nx, Ny, Nz int, stream cu.Stream) fft3DC2RPlan { handle := cufft.Plan3d(Nx, Ny, Nz, cufft.C2R) handle.SetCompatibilityMode(cufft.COMPATIBILITY_NATIVE) handle.SetStream(stream) return fft3DC2RPlan{fftplan{handle, 0}, size3D{Nx, Ny, Nz}} }
// 3D single-precission real-to-complex FFT plan. func FFT3DD2Z(Nx, Ny, Nz int) FFT3DD2ZPlan { handle := cufft.Plan3d(Nx, Ny, Nz, cufft.D2Z) handle.SetCompatibilityMode(cufft.COMPATIBILITY_NATIVE) return FFT3DD2ZPlan{fftplan{handle, 0}, size3D{Nx, Ny, Nz}} }