Class xlifepp::ApproximateMatrix#

template<class T>
class ApproximateMatrix#

Inheritence diagram for xlifepp::ApproximateMatrix:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "4" [label="xlifepp::ApproximateMatrix< complex_t >" tooltip="xlifepp::ApproximateMatrix< complex_t >"] "3" [label="xlifepp::ApproximateMatrix< real_t >" tooltip="xlifepp::ApproximateMatrix< real_t >"] "6" [label="xlifepp::ApproximateMatrix< xlifepp::Matrix< complex_t > >" tooltip="xlifepp::ApproximateMatrix< xlifepp::Matrix< complex_t > >"] "5" [label="xlifepp::ApproximateMatrix< xlifepp::Matrix< real_t > >" tooltip="xlifepp::ApproximateMatrix< xlifepp::Matrix< real_t > >"] "1" [label="xlifepp::ApproximateMatrix< T >" tooltip="xlifepp::ApproximateMatrix< T >" fillcolor="#BFBFBF"] "2" [label="xlifepp::LowRankMatrix< T >" tooltip="xlifepp::LowRankMatrix< T >"] "4" -> "1" [dir=forward tooltip="template-instance"] "3" -> "1" [dir=forward tooltip="template-instance"] "6" -> "1" [dir=forward tooltip="template-instance"] "5" -> "1" [dir=forward tooltip="template-instance"] "2" -> "1" [dir=forward tooltip="public-inheritance"] }

Collaboration diagram for xlifepp::ApproximateMatrix:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "1" [label="xlifepp::ApproximateMatrix< T >" tooltip="xlifepp::ApproximateMatrix< T >" fillcolor="#BFBFBF"] }

base class of all approximate matrix methods

Subclassed by xlifepp::LowRankMatrix< T >

Public Functions

inline virtual ~ApproximateMatrix()#

virtual destructor

virtual ApproximateMatrix<T> *clone() const = 0#

virtual creation of a clone

virtual void extend(const std::vector<number_t> &rowIndex, const std::vector<number_t> &colIndex, number_t m = 0, number_t n = 0) = 0#

extend ApproximateMatrix to larger numbering

virtual ApproximateMatrix<T> *extract(const std::vector<number_t> &rowIndex, const std::vector<number_t> &colIndex) const = 0#

extract part of ApproximateMatrix (virtual)

virtual void luFactorize(bool withPermutation = false) = 0#

virtual LU factorization

virtual void multLeftMatrixCol(T *M, T *R, number_t p) const = 0#

left product by a col dense matrix (matCol*L)-> col matrix

virtual void multLeftMatrixRow(T *M, T *R, number_t p) const = 0#

left product by a row dense matrix (matRow*L)-> row matrix

virtual void multMatrixCol(T *M, T *R, number_t p) const = 0#

right product by a col dense matrix (L*matCol)-> col matrix

virtual void multMatrixRow(T *M, T *R, number_t p) const = 0#

right product by a row dense matrix (L*matRow)-> row matrix

virtual std::vector<T> &multMatrixVector(const std::vector<T>&, std::vector<T>&) const = 0#

virtual product matrix * vector

virtual std::vector<T> &multVectorMatrix(const std::vector<T>&, std::vector<T>&) const = 0#

virtual product vector * matrix

inline virtual real_t norm2() const#

Frobenius norm.

virtual real_t norminfty() const = 0#

infinite norm

virtual void print(std::ostream&) const = 0#

print to stream

virtual void restrict(const std::vector<number_t> &rowIndex, const std::vector<number_t> &colIndex) = 0#

restrict ApproximateMatrix to smaller numbering

virtual real_t squaredNorm() const = 0#

squared Frobenius norm

virtual LargeMatrix<T> toLargeMatrix(StorageType st = _dense, AccessType = _row) const = 0#

convert to LargeMatrix

virtual Matrix<T> toMatrix() const = 0#

convert to Matrix (dense row)

Public Members

MatrixApproximationType approximationType#

type of approximation

bool isAllocated#

true if allocated

string_t name#

optional name, useful for documentation