|
Ginkgo
Generated from pipelines/1556235455 branch based on develop. Ginkgo version 1.9.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;
73 dim<1> get_fft_size()
const;
75 bool is_inverse()
const;
84 static std::unique_ptr<Fft>
create(std::shared_ptr<const Executor> exec);
94 static std::unique_ptr<Fft>
create(std::shared_ptr<const Executor> exec,
99 Fft(std::shared_ptr<const Executor> exec,
size_type size = 0,
102 void apply_impl(
const LinOp* b,
LinOp* x)
const override;
105 LinOp* x)
const override;
155 using value_type = std::complex<double>;
156 using index_type =
int64;
159 std::unique_ptr<LinOp>
transpose()
const override;
171 dim<2> get_fft_size()
const;
173 bool is_inverse()
const;
182 static std::unique_ptr<Fft2>
create(std::shared_ptr<const Executor> exec);
191 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,
208 Fft2(std::shared_ptr<const Executor> exec,
size_type size1 = 0,
211 void apply_impl(
const LinOp* b,
LinOp* x)
const override;
214 LinOp* x)
const override;
267 using value_type = std::complex<double>;
268 using index_type =
int64;
271 std::unique_ptr<LinOp>
transpose()
const override;
283 dim<3> get_fft_size()
const;
285 bool is_inverse()
const;
294 static std::unique_ptr<Fft3>
create(std::shared_ptr<const Executor> exec);
303 static std::unique_ptr<Fft3>
create(std::shared_ptr<const Executor> exec,
316 static std::unique_ptr<Fft3>
create(std::shared_ptr<const Executor> exec,
321 Fft3(std::shared_ptr<const Executor> exec,
size_type size1 = 0,
324 void apply_impl(
const LinOp* b,
LinOp* x)
const override;
327 LinOp* x)
const override;
340 #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:433
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:86
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:255
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:660
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.
std::int64_t int64
64-bit signed integral type.
Definition: types.hpp:109
std::int32_t int32
32-bit signed integral type.
Definition: types.hpp:103
This LinOp implements a 1D Fourier matrix using the FFT algorithm.
Definition: fft.hpp:45
The EnableLinOp mixin can be used to provide sensible default implementations of the majority of the ...
Definition: lin_op.hpp:877
This mixin inherits from (a subclass of) PolymorphicObject and provides a base implementation of a ne...
Definition: polymorphic_object.hpp:661
This LinOp implements a 2D Fourier matrix using the FFT algorithm.
Definition: fft.hpp:143