 |
Ginkgo
Generated from pipelines/2897303314 branch based on develop. Ginkgo version 2.0.0
A numerical linear algebra library targeting many-core architectures
|
5 #ifndef GKO_PUBLIC_CORE_MATRIX_FFT_HPP_
6 #define GKO_PUBLIC_CORE_MATRIX_FFT_HPP_
9 #include <ginkgo/core/base/array.hpp>
10 #include <ginkgo/core/base/lin_op.hpp>
57 using value_type = std::complex<double>;
58 using index_type =
int64;
61 std::unique_ptr<LinOp>
transpose()
const override;
78 dim<1> get_fft_size()
const;
80 bool is_inverse()
const;
89 static std::unique_ptr<Fft>
create(std::shared_ptr<const Executor> exec);
100 static std::unique_ptr<Fft>
create(std::shared_ptr<const Executor> exec,
105 Fft(std::shared_ptr<const Executor> exec,
size_type size = 0,
108 void apply_impl(
const LinOp* b,
LinOp* x)
const override;
111 LinOp* x)
const override;
161 using value_type = std::complex<double>;
162 using index_type =
int64;
165 std::unique_ptr<LinOp>
transpose()
const override;
182 dim<2> get_fft_size()
const;
184 bool is_inverse()
const;
193 static std::unique_ptr<Fft2>
create(std::shared_ptr<const Executor> exec);
203 static std::unique_ptr<Fft2>
create(std::shared_ptr<const Executor> exec,
216 static std::unique_ptr<Fft2>
create(std::shared_ptr<const Executor> exec,
221 Fft2(std::shared_ptr<const Executor> exec,
size_type size1 = 0,
224 void apply_impl(
const LinOp* b,
LinOp* x)
const override;
227 LinOp* x)
const override;
280 using value_type = std::complex<double>;
281 using index_type =
int64;
284 std::unique_ptr<LinOp>
transpose()
const override;
301 dim<3> get_fft_size()
const;
303 bool is_inverse()
const;
312 static std::unique_ptr<Fft3>
create(std::shared_ptr<const Executor> exec);
322 static std::unique_ptr<Fft3>
create(std::shared_ptr<const Executor> exec,
336 static std::unique_ptr<Fft3>
create(std::shared_ptr<const Executor> exec,
341 Fft3(std::shared_ptr<const Executor> exec,
size_type size1 = 0,
344 void apply_impl(
const LinOp* b,
LinOp* x)
const override;
347 LinOp* x)
const override;
360 #endif // GKO_PUBLIC_CORE_MATRIX_FFT_HPP_
Definition: lin_op.hpp:117
static std::unique_ptr< Fft2 > create(std::shared_ptr< const Executor > exec)
Creates an empty Fourier matrix.
std::unique_ptr< LinOp > transpose() const override
Returns a LinOp representing the transpose of the Transposable object.
Linear operators which support transposition should implement the Transposable interface.
Definition: lin_op.hpp:392
static std::unique_ptr< Fft3 > create(std::shared_ptr< const Executor > exec)
Creates an empty Fourier matrix.
std::size_t size_type
Integral type used for allocation quantities.
Definition: types.hpp:101
std::unique_ptr< LinOp > transpose() const override
Returns a LinOp representing the transpose of the Transposable object.
This LinOp implements a 3D Fourier matrix using the FFT algorithm.
Definition: fft.hpp:267
The Ginkgo namespace.
Definition: abstract_factory.hpp:19
std::unique_ptr< LinOp > conj_transpose() const override
Returns a LinOp representing the conjugate transpose of the Transposable object.
void write(matrix_data< std::complex< float >, int32 > &data) const override
Writes a matrix to a matrix_data structure.
A type representing the dimensions of a multidimensional object.
Definition: dim.hpp:25
This structure is used as an intermediate data type to store a sparse matrix.
Definition: matrix_data.hpp:126
void write(matrix_data< std::complex< float >, int32 > &data) const override
Writes a matrix to a matrix_data structure.
void write(matrix_data< std::complex< float >, int32 > &data) const override
Writes a matrix to a matrix_data structure.
The permutation will be inverted before being applied.
std::unique_ptr< LinOp > transpose() const override
Returns a LinOp representing the transpose of the Transposable object.
A LinOp implementing this interface can write its data to a matrix_data structure.
Definition: lin_op.hpp:619
std::unique_ptr< LinOp > conj_transpose() const override
Returns a LinOp representing the conjugate transpose of the Transposable object.
static std::unique_ptr< Fft > create(std::shared_ptr< const Executor > exec)
Creates an empty Fourier matrix.
std::unique_ptr< LinOp > conj_transpose() const override
Returns a LinOp representing the conjugate transpose of the Transposable object.
This mixin is used to enable a default Cloneable::clone() implementation and similar for objects that...
Definition: polymorphic_object.hpp:376
std::int64_t int64
64-bit signed integral type.
Definition: types.hpp:124
std::int32_t int32
32-bit signed integral type.
Definition: types.hpp:118
This LinOp implements a 1D Fourier matrix using the FFT algorithm.
Definition: fft.hpp:44
This LinOp implements a 2D Fourier matrix using the FFT algorithm.
Definition: fft.hpp:148