|
HLIBpro
2.5.1
|
Represents low rank matrices in factored form:
.
#include <TRkMatrix.hh>
Public Member Functions | |
| TRkMatrix () | |
| construct zero sized low-rank matrix | |
| TRkMatrix (const size_t rows, const size_t cols) | |
| construct low-rank matrix of size rows × cols | |
| TRkMatrix (const TBlockIndexSet &block_is, const value_type_t avalue_type=real_valued) | |
| construct low-rank matrix of size defined by block index set | |
| TRkMatrix (const TIndexSet &arow_is, const TIndexSet &acol_is, const value_type_t avalue_type=real_valued) | |
| construct low-rank matrix of size defined by block index set | |
| TRkMatrix (const TIndexSet &arow_is, const TIndexSet &acol_is, const bool acomplex) | |
| construct low-rank matrix of size defined by block index set | |
| TRkMatrix (const TIndexSet &arow_is, const TIndexSet &acol_is, const BLAS::Matrix< real > &A, const BLAS::Matrix< real > &B) | |
| TRkMatrix (const TIndexSet &arow_is, const TIndexSet &acol_is, const BLAS::Matrix< complex > &A, const BLAS::Matrix< complex > &B) | |
| TRkMatrix (const TIndexSet &arow_is, const TIndexSet &acol_is, BLAS::Matrix< real > &&A, BLAS::Matrix< real > &&B) | |
| TRkMatrix (const TIndexSet &arow_is, const TIndexSet &acol_is, BLAS::Matrix< complex > &&A, BLAS::Matrix< complex > &&B) | |
| TRkMatrix (const TBlockCluster *bc, const value_type_t avalue_type=real_valued) | |
| construct low-rank matrix of size defined by block cluster | |
| TRkMatrix (const TRkMatrix &A) | |
| copy constructor | |
| ~TRkMatrix () | |
| destructor | |
| virtual bool | is_zero () const |
| return true, if matrix is zero | |
| BLAS::Matrix< real > & | blas_rmat_A () |
| return pointer to internal matrix data of matrix A | |
| const BLAS::Matrix< real > & | blas_rmat_A () const |
| return const pointer to internal matrix data of matrix A | |
| BLAS::Matrix< complex > & | blas_cmat_A () |
| return pointer to internal matrix data of matrix A | |
| const BLAS::Matrix< complex > & | blas_cmat_A () const |
| return const pointer to internal matrix data of matrix A | |
| BLAS::Matrix< real > & | blas_rmat_B () |
| return pointer to internal matrix data of matrix B | |
| const BLAS::Matrix< real > & | blas_rmat_B () const |
| return const pointer to internal matrix data of matrix B | |
| BLAS::Matrix< complex > & | blas_cmat_B () |
| return pointer to internal matrix data of matrix B | |
| const BLAS::Matrix< complex > & | blas_cmat_B () const |
| return const pointer to internal matrix data of matrix B | |
| const BLAS::Vector< real > | blas_rvec_A (const idx_t i) const |
| return vector A_i | |
| const BLAS::Vector< real > | blas_rvec_B (const idx_t i) const |
| return vector B_i | |
| const BLAS::Vector< complex > | blas_cvec_A (const idx_t i) const |
| return vector A_i | |
| const BLAS::Vector< complex > | blas_cvec_B (const idx_t i) const |
| return vector B_i | |
| const TScalarVector | vec_A (const idx_t i) const |
| return vector A_i | |
| const TScalarVector | vec_B (const idx_t i) const |
| return vector B_i | |
| size_t | rank () const |
| return rank of matrix | |
| void | set_rank (const size_t k) |
| set rank of matrix without truncating data | |
| void | comp_rank () |
| compute actual rank of matrix (remove zero vectors) | |
| virtual size_t | rows () const |
| return number of rows | |
| virtual size_t | cols () const |
| return number of columns | |
| virtual void | set_cluster (const TBlockCluster *c) |
| set new cluster over which matrix is defined and change size accordingly | |
| void | set_size (const size_t n, const size_t m, const size_t k) |
| set size and rank of matrix (if zero == true fill new memory with zeros) | |
| void | set_size (const size_t n, const size_t m) |
| set new size but keep current rank of matrix | |
| real | entry (const idx_t i, const idx_t j) const |
| return real valued coefficent (i, j) of matrix | |
| const complex | centry (const idx_t i, const idx_t j) const |
| return complex valued coefficent (i, j) of matrix | |
| virtual void | to_real () |
| switch to real valued storage if possible, e.g. all imaginary components zero | |
| virtual void | to_complex () |
| switch to complex valued storage | |
| virtual void | transpose () |
| transpose matrix | |
| virtual void | conjugate () |
| conjugate matrix coefficients | |
| virtual void | truncate (const TTruncAcc &acc) |
| truncate matrix w.r.t. accuracy acc | |
| void | add_rank (const real alpha, const BLAS::Matrix< real > &A, const BLAS::Matrix< real > &B, const TTruncAcc &acc) |
| compute this ≔ this + α·A·B^H and truncate result w.r.t. acc (real valued variant) | |
| void | add_rank (const complex alpha, const BLAS::Matrix< complex > &A, const BLAS::Matrix< complex > &B, const TTruncAcc &acc) |
| compute this ≔ this + α·A·B^H and truncate result w.r.t. acc (complex valued variant) | |
| void | add_dense (const real alpha, const BLAS::Matrix< real > &D, const TTruncAcc &acc) |
| add a dense matrix and truncate w.r.t. acc (real valued variant) | |
| void | add_dense (const complex alpha, const BLAS::Matrix< complex > &D, const TTruncAcc &acc) |
| add a dense matrix and truncate w.r.t. acc (complex valued variant) | |
| void | copy_dense (const TDenseMatrix *A, const TTruncAcc &acc) |
| copy a densematrix (nxm) as low-rank matrix (rank = min{n,m}) | |
| virtual void | scale (const real f) |
| scale matrix by constant factor | |
| virtual void | mul_vec (const real alpha, const TVector *x, const real beta, TVector *y, const matop_t op=MATOP_NORM) const |
| compute y ≔ α·M·x + β·y, where M is either this, this^T or this^H depending on op | |
| virtual void | add (const real alpha, const TMatrix *A) |
| compute this = this + α·A without truncation | |
| virtual TRkMatrix * | mul_right (const real alpha, const TMatrix *B, const matop_t op_A, const matop_t op_B) const |
| compute matrix product α·op_A(this)·op_B(B) | |
| virtual TRkMatrix * | mul_left (const real alpha, const TMatrix *A, const matop_t op_A, const matop_t op_B) const |
| compute matrix product α·op_A(A)·op_B(this) | |
| virtual void | cscale (const complex f) |
| scale matrix by constant factor | |
| virtual void | cmul_vec (const complex alpha, const TVector *x, const complex beta, TVector *y, const matop_t op_A=MATOP_NORM) const |
| compute y ≔ α·M·x + β·y, where M is either this, this^T or this^H depending on op | |
| virtual void | cadd (const complex a, const TMatrix *matrix) |
| compute this = this + α·A without truncation | |
| virtual TRkMatrix * | cmul_right (const complex alpha, const TMatrix *B, const matop_t op_A, const matop_t op_B) const |
| compute matrix product α·op_A(this)·op_B(B) | |
| virtual TRkMatrix * | cmul_left (const complex alpha, const TMatrix *A, const matop_t op_A, const matop_t op_B) const |
| compute matrix product α·op_A(A)·op_B(this) | |
| virtual auto | create () const -> std::unique_ptr< TMatrix > |
| return object of same type | |
| virtual auto | copy () const -> std::unique_ptr< TMatrix > |
| return copy of matrix | |
| virtual auto | copy (const TTruncAcc &acc, const bool do_coarsen=false) const -> std::unique_ptr< TMatrix > |
| return copy matrix wrt. given accuracy; if do_coarsen is set, perform coarsening | |
| virtual void | copy_to (TMatrix *A) const |
| copy matrix into matrix A | |
| virtual void | copy_to (TMatrix *A, const TTruncAcc &acc, const bool do_coarsen=false) const |
| copy matrix into matrix A with accuracy acc and optional coarsening | |
| virtual size_t | byte_size () const |
| return size in bytes used by this object | |
| virtual void | read (TByteStream &s) |
| read matrix from byte stream | |
| virtual void | build (TByteStream &s) |
| construct matrix from byte stream | |
| virtual void | write (TByteStream &s) const |
| write matrix into byte stream | |
| virtual size_t | bs_size () const |
| return size of object in a bytestream | |
| virtual void | check_data () const |
| test data for invalid values, e.g. INF and NAN | |
Public Member Functions inherited from TMatrix | |
| TMatrix (const value_type_t avalue_type=real_valued) | |
| construct zero sized matrix | |
| TMatrix (const TBlockCluster *bcl, const value_type_t avalue_type=real_valued) | |
| construct matrix of size defined by block cluster bcl | |
| TMatrix (const TBlockIndexSet &bis, const value_type_t avalue_type=real_valued) | |
| construct matrix of size defined by block index set bis | |
| TMatrix (const TMatrix &A) | |
| copy constructor | |
| virtual | ~TMatrix () |
| dtor | |
| int | id () const |
| return ID | |
| void | set_id (const int aid) |
| set ID | |
| TIndexSet | row_is () const |
| return row index set | |
| TIndexSet | col_is () const |
| return column index set | |
| TBlockIndexSet | block_is () const |
| return block index set | |
| TIndexSet | row_is (const matop_t op) const |
| return row index set w.r.t. given matrix operation | |
| TIndexSet | col_is (const matop_t op) const |
| return row index set w.r.t. given matrix operation | |
| TBlockIndexSet | block_is (const matop_t op) const |
| return row index set w.r.t. given matrix operation | |
| virtual idx_t | row_ofs () const |
| return first index (number) in row | |
| virtual idx_t | col_ofs () const |
| return first index (number) in column | |
| virtual void | set_ofs (const idx_t r, const idx_t c) |
| set index set offsets | |
| virtual void | set_block_is (const TBlockIndexSet &is) |
| set block index set of matrix | |
| bool | is_nonsym () const |
| return true if matrix is unsymmetric | |
| bool | is_symmetric () const |
| return true if matrix is symmetric | |
| bool | is_hermitian () const |
| return true if matrix is hermitian | |
| matform_t | form () const |
| return matrix format | |
| void | set_nonsym () |
| set matrix to be unsymmetric | |
| void | set_symmetric () |
| set matrix to be symmetric | |
| void | set_hermitian () |
| set matrix to be hermitian | |
| virtual void | set_form (const matform_t f) |
| set matrix format | |
| virtual bool | is_blocked () const |
| return true, if matrix is blocked | |
| virtual bool | is_dense () const |
| return true, if matrix is dense | |
| virtual bool | is_self_adjoint () const |
| return true, if operator is self adjoint | |
| const TProcSet & | procs () const |
| return matrix processor set | |
| uint | nprocs () const |
| return number of processors in local set | |
| virtual void | set_procs (const TProcSet &ps, const bool recursive=false) |
| set processor set of matrix | |
| virtual void | copy_struct (const TMatrix *M) |
| value_type_t | value_type () const |
| return value type of matrix | |
| void | set_value_type (const value_type_t vt) |
| set value type of matrix | |
| bool | is_real () const |
| return true if matrix is real valued | |
| bool | is_complex () const |
| return true if matrix is complex valued | |
| void | set_complex (const bool b, const bool force=false) |
| const TBlockCluster * | cluster () const |
| return corresponding block cluster of matrix | |
| virtual void | apply (const TVector *x, TVector *y, const matop_t op=apply_normal) const |
| virtual void | apply_add (const real alpha, const TVector *x, TVector *y, const matop_t op=apply_normal) const |
| virtual auto | domain_vector () const -> std::unique_ptr< TVector > |
| return vector in domain space | |
| virtual auto | range_vector () const -> std::unique_ptr< TVector > |
| return vector in range space | |
| virtual size_t | global_byte_size () const |
| virtual auto | row_vector () const -> std::unique_ptr< TVector > |
| return appropriate row vector object for matrix | |
| virtual auto | col_vector () const -> std::unique_ptr< TVector > |
| return appropriate column vector object for matrix | |
| virtual void | sum (const TProcSet &p, const uint pid, const uint nparts, TByteStream *bs, const TTruncAcc &acc) |
| virtual void | print (const uint ofs=0) const |
| print basic info about matrix to stdout | |
Public Member Functions inherited from TTypeInfo | |
| virtual typeid_t | type () const =0 |
| return type ID of object | |
| virtual bool | is_type (const typeid_t t) const |
| return true if local object is of given type ID t | |
| virtual std::string | typestr () const |
| return string representation of type | |
Public Member Functions inherited from TLockable | |
| TMutex & | mutex () |
| give access to internal mutex | |
| void | lock () |
| lock local mutex | |
| void | unlock () |
| unlock local mutex | |
| size_t | byte_size () const |
| return size in bytes used by this object | |
| TRkMatrix | ( | const TIndexSet & | arow_is, |
| const TIndexSet & | acol_is, | ||
| const BLAS::Matrix< real > & | A, | ||
| const BLAS::Matrix< real > & | B | ||
| ) |
construct low-rank matrix of size defined by block index set and real factors A and B
| TRkMatrix | ( | const TIndexSet & | arow_is, |
| const TIndexSet & | acol_is, | ||
| const BLAS::Matrix< complex > & | A, | ||
| const BLAS::Matrix< complex > & | B | ||
| ) |
construct low-rank matrix of size defined by block index set and complex factors A and B
| TRkMatrix | ( | const TIndexSet & | arow_is, |
| const TIndexSet & | acol_is, | ||
| BLAS::Matrix< real > && | A, | ||
| BLAS::Matrix< real > && | B | ||
| ) |
construct low-rank matrix of size defined by block index set and real factors A and B (move version)
| TRkMatrix | ( | const TIndexSet & | arow_is, |
| const TIndexSet & | acol_is, | ||
| BLAS::Matrix< complex > && | A, | ||
| BLAS::Matrix< complex > && | B | ||
| ) |
construct low-rank matrix of size defined by block index set and complex factors A and B (move version)