 |
Ginkgo
Generated from pipelines/2662685947 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>
58 using value_type = std::complex<double>;
59 using index_type =
int64;
62 std::unique_ptr<LinOp>
transpose()
const override;
74 dim<1> get_fft_size()
const;
76 bool is_inverse()
const;
85 static std::unique_ptr<Fft>
create(std::shared_ptr<const Executor> exec);
95 static std::unique_ptr<Fft>
create(std::shared_ptr<const Executor> exec,
100 Fft(std::shared_ptr<const Executor> exec,
size_type size = 0,
103 void apply_impl(
const LinOp* b,
LinOp* x)
const override;
106 LinOp* x)
const override;
157 using value_type = std::complex<double>;
158 using index_type =
int64;
161 std::unique_ptr<LinOp>
transpose()
const override;
173 dim<2> get_fft_size()
const;
175 bool is_inverse()
const;
184 static std::unique_ptr<Fft2>
create(std::shared_ptr<const Executor> exec);
193 static std::unique_ptr<Fft2>
create(std::shared_ptr<const Executor> exec,
205 static std::unique_ptr<Fft2>
create(std::shared_ptr<const Executor> exec,
210 Fft2(std::shared_ptr<const Executor> exec,
size_type size1 = 0,
213 void apply_impl(
const LinOp* b,
LinOp* x)
const override;
216 LinOp* x)
const override;
270 using value_type = std::complex<double>;
271 using index_type =
int64;
274 std::unique_ptr<LinOp>
transpose()
const override;
286 dim<3> get_fft_size()
const;
288 bool is_inverse()
const;
297 static std::unique_ptr<Fft3>
create(std::shared_ptr<const Executor> exec);
306 static std::unique_ptr<Fft3>
create(std::shared_ptr<const Executor> exec,
319 static std::unique_ptr<Fft3>
create(std::shared_ptr<const Executor> exec,
324 Fft3(std::shared_ptr<const Executor> exec,
size_type size1 = 0,
327 void apply_impl(
const LinOp* b,
LinOp* x)
const override;
330 LinOp* x)
const override;
343 #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:90
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:257
The Ginkgo namespace.
Definition: abstract_factory.hpp:20
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:26
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:369
std::int64_t int64
64-bit signed integral type.
Definition: types.hpp:113
std::int32_t int32
32-bit signed integral type.
Definition: types.hpp:107
This LinOp implements a 1D Fourier matrix using the FFT algorithm.
Definition: fft.hpp:45
This LinOp implements a 2D Fourier matrix using the FFT algorithm.
Definition: fft.hpp:144