mgcpp
A C++ Math Library Based on CUDA
cufft_fft.hpp
Go to the documentation of this file.
1 
2 // Copyright RedPortal, mujjingun 2017 - 2018.
3 // Distributed under the Boost Software License, Version 1.0.
4 // (See accompanying file LICENSE or copy at
5 // http://www.boost.org/LICENSE_1_0.txt)
6 
7 #ifndef _MGCPP_CUDA_LIBS_FFT_HPP_
8 #define _MGCPP_CUDA_LIBS_FFT_HPP_
9 
10 #include <mgcpp/global/complex.hpp>
11 
12 #include <mgcpp/system/outcome.hpp>
13 
14 #include <cufft.h>
15 
16 namespace mgcpp {
17 namespace cufft {
26 outcome::result<void> rfft(size_t n, float const* x, cuComplex* result);
27 
36 outcome::result<void> rfft(size_t n, double const* x, cuDoubleComplex* result);
37 
45 outcome::result<void> irfft(size_t n, cuComplex const* x, float* result);
46 
54 outcome::result<void> irfft(size_t n, cuDoubleComplex const* x, double* result);
55 
56 enum class fft_direction {
58  forward = CUFFT_FORWARD,
59 
61  inverse = CUFFT_INVERSE
62 };
63 
74  cuComplex const* x,
75  cuComplex* result,
76  fft_direction direction);
77 
88  cuDoubleComplex const* x,
89  cuDoubleComplex* result,
90  fft_direction direction);
91 
102  size_t m,
103  float const* x,
104  cuComplex* result);
105 
116  size_t m,
117  double const* x,
118  cuDoubleComplex* result);
119 
128  size_t m,
129  cuComplex const* x,
130  float* result);
131 
140  size_t m,
141  cuDoubleComplex const* x,
142  double* result);
143 
155  size_t m,
156  cuComplex const* x,
157  cuComplex* result,
158  fft_direction direction);
159 
171  size_t m,
172  cuDoubleComplex const* x,
173  cuDoubleComplex* result,
174  fft_direction direction);
175 } // namespace cufft
176 } // namespace mgcpp
177 
178 #endif
Definition: adapter_base.hpp:12
outcome::result< void > cfft(size_t n, cuComplex const *x, cuComplex *result, fft_direction direction)
outcome::result< void > rfft(size_t n, float const *x, cuComplex *result)
outcome::result< void > irfft(size_t n, cuComplex const *x, float *result)
outcome::result< void > irfft2(size_t n, size_t m, cuComplex const *x, float *result)
Forward FFT (time domain -> frequency domain representation)
fft_direction
Definition: cufft_fft.hpp:56
BOOST_OUTCOME_V2_NAMESPACE::std_result< R > result
Definition: outcome.hpp:8
Inverse FFT (frequency domain -> time domain representation)
outcome::result< void > cfft2(size_t n, size_t m, cuComplex const *x, cuComplex *result, fft_direction direction)
outcome::result< void > rfft2(size_t n, size_t m, float const *x, cuComplex *result)