1#ifndef IRLBA_MATRIX_SIMPLE_HPP
2#define IRLBA_MATRIX_SIMPLE_HPP
27template<
class EigenVector_,
class Simple_>
39 const Simple_& my_matrix;
42 void multiply(
const EigenVector_& right, EigenVector_& output) {
43 output.noalias() = my_matrix * right;
55template<
class EigenVector_,
class Simple_>
67 const Simple_& my_matrix;
70 void multiply(
const EigenVector_& right, EigenVector_& output) {
71 output.noalias() = my_matrix.adjoint() * right;
83template<
class EigenMatrix_,
class Simple_>
95 const Simple_& my_matrix;
96 static constexpr bool is_same = std::is_same<EigenMatrix_, I<Simple_> >::value;
97 typename std::conditional<is_same, bool, EigenMatrix_>::type buffer;
100 const EigenMatrix_&
realize(EigenMatrix_& buffer) {
101 if constexpr(is_same) {
124template<
class EigenVector_,
class EigenMatrix_,
class SimplePo
inter_>
133 SimplePointer_ my_matrix;
137 return my_matrix->rows();
141 return my_matrix->cols();
162 return std::make_unique<
SimpleWorkspace<EigenVector_, I<
decltype(*my_matrix)> > >(*my_matrix);
Workspace class for multiplying a transposed Matrix.
Definition interface.hpp:61
Interface for a matrix to use in compute().
Definition interface.hpp:142
Workspace class for realizing a Matrix.
Definition interface.hpp:99
Workspace class for multiplying a transposed SimpleMatrix.
Definition simple.hpp:56
void multiply(const EigenVector_ &right, EigenVector_ &output)
Definition simple.hpp:70
A Matrix-compatible wrapper around a "simple" matrix.
Definition simple.hpp:125
std::unique_ptr< SimpleWorkspace< EigenVector_, I< decltype(*my_matrix)> > > new_known_workspace() const
Definition simple.hpp:161
SimpleMatrix(SimplePointer_ matrix)
Definition simple.hpp:130
std::unique_ptr< AdjointWorkspace< EigenVector_ > > new_adjoint_workspace() const
Definition simple.hpp:149
std::unique_ptr< SimpleRealizeWorkspace< EigenMatrix_, I< decltype(*my_matrix)> > > new_known_realize_workspace() const
Definition simple.hpp:175
std::unique_ptr< Workspace< EigenVector_ > > new_workspace() const
Definition simple.hpp:145
Eigen::Index rows() const
Definition simple.hpp:136
Eigen::Index cols() const
Definition simple.hpp:140
std::unique_ptr< RealizeWorkspace< EigenMatrix_ > > new_realize_workspace() const
Definition simple.hpp:153
std::unique_ptr< SimpleAdjointWorkspace< EigenVector_, I< decltype(*my_matrix)> > > new_known_adjoint_workspace() const
Definition simple.hpp:168
Workspace class for realizing a SimpleMatrix.
Definition simple.hpp:84
const EigenMatrix_ & realize(EigenMatrix_ &buffer)
Definition simple.hpp:100
Workspace class for multiplying a SimpleMatrix.
Definition simple.hpp:28
void multiply(const EigenVector_ &right, EigenVector_ &output)
Definition simple.hpp:42
Workspace class for multiplying a Matrix.
Definition interface.hpp:24
Interfaces for matrix inputs.
Implements IRLBA for approximate SVD.
Definition compute.hpp:22