1#ifndef IRLBA_MATRIX_INTERFACE_HPP
2#define IRLBA_MATRIX_INTERFACE_HPP
23template<
class EigenVector_>
49 virtual void multiply(
const EigenVector_& right, EigenVector_& output) = 0;
60template<
class EigenVector_>
87 virtual void multiply(
const EigenVector_& right, EigenVector_& output) = 0;
98template<
class EigenMatrix_>
119 virtual const EigenMatrix_&
realize(EigenMatrix_& buffer) = 0;
126 const auto& out =
realize(buffer);
127 if (&out != &buffer) {
141template<
class EigenVector_,
class EigenMatrix_>
161 virtual Eigen::Index
rows()
const = 0;
166 virtual Eigen::Index
cols()
const = 0;
173 virtual std::unique_ptr<Workspace<EigenVector_> >
new_workspace()
const = 0;
Workspace class for multiplying a transposed Matrix.
Definition interface.hpp:61
virtual void multiply(const EigenVector_ &right, EigenVector_ &output)=0
Interface for a matrix to use in compute().
Definition interface.hpp:142
virtual std::unique_ptr< AdjointWorkspace< EigenVector_ > > new_adjoint_workspace() const =0
virtual std::unique_ptr< RealizeWorkspace< EigenMatrix_ > > new_realize_workspace() const =0
virtual Eigen::Index rows() const =0
std::unique_ptr< AdjointWorkspace< EigenVector_ > > new_known_adjoint_workspace() const
Definition interface.hpp:208
virtual Eigen::Index cols() const =0
virtual std::unique_ptr< Workspace< EigenVector_ > > new_workspace() const =0
std::unique_ptr< RealizeWorkspace< EigenMatrix_ > > new_known_realize_workspace() const
Definition interface.hpp:220
std::unique_ptr< Workspace< EigenVector_ > > new_known_workspace() const
Definition interface.hpp:196
Workspace class for realizing a Matrix.
Definition interface.hpp:99
virtual const EigenMatrix_ & realize(EigenMatrix_ &buffer)=0
void realize_copy(EigenMatrix_ &buffer)
Definition interface.hpp:125
Workspace class for multiplying a Matrix.
Definition interface.hpp:24
virtual void multiply(const EigenVector_ &right, EigenVector_ &output)=0
Implements IRLBA for approximate SVD.
Definition compute.hpp:22