ergo
mat::Matrix Class Reference

Matrix class and heart of the matrix library. More...

#include <Matrix.h>

Inheritance diagram for mat::Matrix:
mat::MatrixHierarchicBase< Treal, Telement >

List of all members.

Public Types

typedef Telement ElementType
typedef Vector< Treal,
typename
ElementType::VectorType > 
VectorType

Public Member Functions

 Matrix ()
void allocate ()
void assignFromFull (std::vector< Treal > const &fullMat)
void fullMatrix (std::vector< Treal > &fullMat) const
void syFullMatrix (std::vector< Treal > &fullMat) const
void syUpTriFullMatrix (std::vector< Treal > &fullMat) const
void assignFromSparse (std::vector< int > const &rowind, std::vector< int > const &colind, std::vector< Treal > const &values)
void assignFromSparse (std::vector< int > const &rowind, std::vector< int > const &colind, std::vector< Treal > const &values, std::vector< int > const &indexes)
void addValues (std::vector< int > const &rowind, std::vector< int > const &colind, std::vector< Treal > const &values)
void addValues (std::vector< int > const &rowind, std::vector< int > const &colind, std::vector< Treal > const &values, std::vector< int > const &indexes)
void syAssignFromSparse (std::vector< int > const &rowind, std::vector< int > const &colind, std::vector< Treal > const &values)
void syAddValues (std::vector< int > const &rowind, std::vector< int > const &colind, std::vector< Treal > const &values)
void getValues (std::vector< int > const &rowind, std::vector< int > const &colind, std::vector< Treal > &values) const
void getValues (std::vector< int > const &rowind, std::vector< int > const &colind, std::vector< Treal > &, std::vector< int > const &indexes) const
void syGetValues (std::vector< int > const &rowind, std::vector< int > const &colind, std::vector< Treal > &values) const
void getAllValues (std::vector< int > &rowind, std::vector< int > &colind, std::vector< Treal > &) const
void syGetAllValues (std::vector< int > &rowind, std::vector< int > &colind, std::vector< Treal > &) const
Matrix< Treal, Telement > & operator= (const Matrix< Treal, Telement > &mat)
void clear ()
 ~Matrix ()
void writeToFile (std::ofstream &file) const
void readFromFile (std::ifstream &file)
void random ()
void syRandom ()
void randomZeroStructure (Treal probabilityBeingZero)
 Get a random zero structure with a specified probability that each submatrix is zero.
void syRandomZeroStructure (Treal probabilityBeingZero)
template<typename TRule >
void setElementsByRule (TRule &rule)
template<typename TRule >
void sySetElementsByRule (TRule &rule)
template<typename TRule >
void trSetElementsByRule (TRule &rule)
void addIdentity (Treal alpha)
void symToNosym ()
void nosymToSym ()
Matrix< Treal, Telement > & operator= (int const k)
Matrix< Treal, Telement > & operator*= (const Treal alpha)
Treal frob () const
Treal frobSquared () const
Treal syFrob () const
Treal syFrobSquared () const
Treal trace () const
void assign (Treal const alpha, Matrix< Treal, Telement > const &A)
void getFrobSqLowestLevel (std::vector< Treal > &frobsq) const
void frobThreshLowestLevel (Treal const threshold, Matrix< Treal, Telement > *ErrorMatrix)
void getFrobSqElementLevel (std::vector< Treal > &frobsq) const
void frobThreshElementLevel (Treal const threshold, Matrix< Treal, Telement > *ErrorMatrix)
void assignFrobNormsLowestLevel (Matrix< Treal, Matrix< Treal, Telement > > const &A)
 Build a matrix with single matrix elements at the lowest level containing the Frobenius norms of the submatrices of A.
void syAssignFrobNormsLowestLevel (Matrix< Treal, Matrix< Treal, Telement > > const &A)
 Version of assignFrobNormsLowestLevelToMatrix for symmetric matrices.
void assignDiffFrobNormsLowestLevel (Matrix< Treal, Matrix< Treal, Telement > > const &A, Matrix< Treal, Matrix< Treal, Telement > > const &B)
 Same as assignFrobNormsLowestLevel except that the Frobenius norms of the differences between submatrices of A and B are assigned.
void syAssignDiffFrobNormsLowestLevel (Matrix< Treal, Matrix< Treal, Telement > > const &A, Matrix< Treal, Matrix< Treal, Telement > > const &B)
 Same as syAssignFrobNormsLowestLevel except that the Frobenius norms of the differences between submatrices of A and B are assigned.
void truncateAccordingToSparsityPattern (Matrix< Treal, Matrix< Treal, Telement > > &A) const
 Truncate matrix A according to the sparsity pattern of the this matrix (frobNormMat).
Treal frob_thresh (Treal const threshold, Matrix< Treal, Telement > *ErrorMatrix=0)
 Removes small elements so that the introduced error is smaller than the threshold in the Frobenius norm Returns the Frobenius norm of the introduced error.
Treal frob_squared_thresh (Treal const threshold, Matrix< Treal, Telement > *ErrorMatrix=0)
 Removes small elements so that the introduced error is smaller than threshold in the squared Frobenius norm, returns squared frobenius norm of the introduced error added to ErrorMatrix.
void gersgorin (Treal &lmin, Treal &lmax) const
void sy_gersgorin (Treal &lmin, Treal &lmax) const
void add_abs_col_sums (Treal *abscolsums) const
void get_diagonal (Treal *diag) const
size_t memory_usage () const
size_t nnz () const
 Returns number of nonzeros in matrix.
size_t sy_nnz () const
 Returns number of nonzeros in matrix including lower triangle elements.
size_t nvalues () const
 Returns number of stored values in matrix.
size_t sy_nvalues () const
 Returns number of stored values in matrix.
template<typename Top >
Treal syAccumulateWith (Top &op)
template<typename Top >
Treal geAccumulateWith (Top &op)
 Accumulation algorithm for general matrices.
Treal maxAbsValue () const

Static Public Member Functions

static void transpose (Matrix< Treal, Telement > const &A, Matrix< Treal, Telement > &AT)
static void gemm (const bool tA, const bool tB, const Treal alpha, const Matrix< Treal, Telement > &A, const Matrix< Treal, Telement > &B, const Treal beta, Matrix< Treal, Telement > &C)
static void symm (const char side, const char uplo, const Treal alpha, const Matrix< Treal, Telement > &A, const Matrix< Treal, Telement > &B, const Treal beta, Matrix< Treal, Telement > &C)
static void syrk (const char uplo, const bool tA, const Treal alpha, const Matrix< Treal, Telement > &A, const Treal beta, Matrix< Treal, Telement > &C)
static void sysq (const char uplo, const Treal alpha, const Matrix< Treal, Telement > &A, const Treal beta, Matrix< Treal, Telement > &C)
static void ssmm (const Treal alpha, const Matrix< Treal, Telement > &A, const Matrix< Treal, Telement > &B, const Treal beta, Matrix< Treal, Telement > &C)
static void ssmm_upper_tr_only (const Treal alpha, const Matrix< Treal, Telement > &A, const Matrix< Treal, Telement > &B, const Treal beta, Matrix< Treal, Telement > &C)
static void trmm (const char side, const char uplo, const bool tA, const Treal alpha, const Matrix< Treal, Telement > &A, Matrix< Treal, Telement > &B)
static Treal frobDiff (const Matrix< Treal, Telement > &A, const Matrix< Treal, Telement > &B)
static Treal frobSquaredDiff (const Matrix< Treal, Telement > &A, const Matrix< Treal, Telement > &B)
static Treal syFrobDiff (const Matrix< Treal, Telement > &A, const Matrix< Treal, Telement > &B)
static Treal syFrobSquaredDiff (const Matrix< Treal, Telement > &A, const Matrix< Treal, Telement > &B)
static Treal trace_ab (const Matrix< Treal, Telement > &A, const Matrix< Treal, Telement > &B)
static Treal trace_aTb (const Matrix< Treal, Telement > &A, const Matrix< Treal, Telement > &B)
static Treal sy_trace_ab (const Matrix< Treal, Telement > &A, const Matrix< Treal, Telement > &B)
static void add (const Treal alpha, const Matrix< Treal, Telement > &A, Matrix< Treal, Telement > &B)
static void gemm_upper_tr_only (const bool tA, const bool tB, const Treal alpha, const Matrix< Treal, Telement > &A, const Matrix< Treal, Telement > &B, const Treal beta, Matrix< Treal, Telement > &C)
static void sytr_upper_tr_only (char const side, const Treal alpha, Matrix< Treal, Telement > &A, const Matrix< Treal, Telement > &Z)
static void trmm_upper_tr_only (const char side, const char uplo, const bool tA, const Treal alpha, const Matrix< Treal, Telement > &A, Matrix< Treal, Telement > &B)
static void trsytriplemm (char const side, const Matrix< Treal, Telement > &Z, Matrix< Treal, Telement > &A)
static void syInch (const Matrix< Treal, Telement > &A, Matrix< Treal, Telement > &Z, const Treal threshold=0, const side looking=left, const inchversion version=unstable)
static unsigned int level ()

Friends

class Vector< Treal, Telement >

Detailed Description

Matrix class and heart of the matrix library.

This class is used to obtain the hierarchic data structure.

See also:
MatrixHierarchicBase
Permutation

Member Typedef Documentation

typedef Telement mat::Matrix::ElementType
typedef Vector<Treal, typename ElementType::VectorType> mat::Matrix::VectorType

Constructor & Destructor Documentation

mat::Matrix::Matrix ( ) [inline]
mat::Matrix::~Matrix ( ) [inline]

References clear().


Member Function Documentation

void mat::Matrix::add ( const Treal  alpha,
const Matrix< Treal, Telement > &  A,
Matrix< Treal, Telement > &  B 
) [static]
void mat::Matrix::add_abs_col_sums ( Treal *  abscolsums) const
void mat::Matrix::addIdentity ( Treal  alpha)
void mat::Matrix::addValues ( std::vector< int > const &  rowind,
std::vector< int > const &  colind,
std::vector< Treal > const &  values 
)
void mat::Matrix::addValues ( std::vector< int > const &  rowind,
std::vector< int > const &  colind,
std::vector< Treal > const &  values,
std::vector< int > const &  indexes 
)
void mat::Matrix::assign ( Treal const  alpha,
Matrix< Treal, Telement > const &  A 
)

References add().

void mat::Matrix::assignDiffFrobNormsLowestLevel ( Matrix< Treal, Matrix< Treal, Telement > > const &  A,
Matrix< Treal, Matrix< Treal, Telement > > const &  B 
)

Same as assignFrobNormsLowestLevel except that the Frobenius norms of the differences between submatrices of A and B are assigned.

void mat::Matrix::assignFrobNormsLowestLevel ( Matrix< Treal, Matrix< Treal, Telement > > const &  A)

Build a matrix with single matrix elements at the lowest level containing the Frobenius norms of the submatrices of A.

Referenced by mat::Matrix< Treal >::assignDiffFrobNormsLowestLevel().

void mat::Matrix::assignFromFull ( std::vector< Treal > const &  fullMat)
void mat::Matrix::assignFromSparse ( std::vector< int > const &  rowind,
std::vector< int > const &  colind,
std::vector< Treal > const &  values 
)
void mat::Matrix::assignFromSparse ( std::vector< int > const &  rowind,
std::vector< int > const &  colind,
std::vector< Treal > const &  values,
std::vector< int > const &  indexes 
)
Treal mat::Matrix::frob ( ) const [inline]
Treal mat::Matrix::frob_squared_thresh ( Treal const  threshold,
Matrix< Treal, Telement > *  ErrorMatrix = 0 
)

Removes small elements so that the introduced error is smaller than threshold in the squared Frobenius norm, returns squared frobenius norm of the introduced error added to ErrorMatrix.

References mat::MatrixHierarchicBase< Treal, Telement >::swap().

Referenced by frob_thresh(), and mat::Matrix< Treal >::frob_thresh().

Treal mat::Matrix::frob_thresh ( Treal const  threshold,
Matrix< Treal, Telement > *  ErrorMatrix = 0 
) [inline]

Removes small elements so that the introduced error is smaller than the threshold in the Frobenius norm Returns the Frobenius norm of the introduced error.

References template_blas_sqrt(), and frob_squared_thresh().

static Treal mat::Matrix::frobDiff ( const Matrix< Treal, Telement > &  A,
const Matrix< Treal, Telement > &  B 
) [inline, static]
Treal mat::Matrix::frobSquared ( ) const
Treal mat::Matrix::frobSquaredDiff ( const Matrix< Treal, Telement > &  A,
const Matrix< Treal, Telement > &  B 
) [static]
void mat::Matrix::frobThreshElementLevel ( Treal const  threshold,
Matrix< Treal, Telement > *  ErrorMatrix 
)
void mat::Matrix::frobThreshLowestLevel ( Treal const  threshold,
Matrix< Treal, Telement > *  ErrorMatrix 
)
void mat::Matrix::fullMatrix ( std::vector< Treal > &  fullMat) const
template<typename Top >
Treal mat::Matrix::geAccumulateWith ( Top &  op) [inline]
void mat::Matrix::gemm ( const bool  tA,
const bool  tB,
const Treal  alpha,
const Matrix< Treal, Telement > &  A,
const Matrix< Treal, Telement > &  B,
const Treal  beta,
Matrix< Treal, Telement > &  C 
) [static]
void mat::Matrix::gemm_upper_tr_only ( const bool  tA,
const bool  tB,
const Treal  alpha,
const Matrix< Treal, Telement > &  A,
const Matrix< Treal, Telement > &  B,
const Treal  beta,
Matrix< Treal, Telement > &  C 
) [static]

References mat::gemm().

void mat::Matrix::gersgorin ( Treal &  lmin,
Treal &  lmax 
) const

References template_blas_fabs().

void mat::Matrix::get_diagonal ( Treal *  diag) const
void mat::Matrix::getAllValues ( std::vector< int > &  rowind,
std::vector< int > &  colind,
std::vector< Treal > &  values 
) const
void mat::Matrix::getFrobSqElementLevel ( std::vector< Treal > &  frobsq) const
void mat::Matrix::getFrobSqLowestLevel ( std::vector< Treal > &  frobsq) const
void mat::Matrix::getValues ( std::vector< int > const &  rowind,
std::vector< int > const &  colind,
std::vector< Treal > &  values 
) const
void mat::Matrix::getValues ( std::vector< int > const &  rowind,
std::vector< int > const &  colind,
std::vector< Treal > &  values,
std::vector< int > const &  indexes 
) const
static unsigned int mat::Matrix::level ( ) [inline, static]
Treal mat::Matrix::maxAbsValue ( ) const [inline]
size_t mat::Matrix::memory_usage ( ) const
size_t mat::Matrix::nnz ( ) const

Returns number of nonzeros in matrix.

Referenced by nvalues(), and mat::Matrix< Treal >::nvalues().

void mat::Matrix::nosymToSym ( )
size_t mat::Matrix::nvalues ( ) const [inline]

Returns number of stored values in matrix.

Returns same number as nnz()

References nnz().

Matrix< Treal, Telement > & mat::Matrix::operator*= ( const Treal  alpha)
Matrix<Treal, Telement>& mat::Matrix::operator= ( const Matrix< Treal, Telement > &  mat) [inline]
Matrix< Treal, Telement > & mat::Matrix::operator= ( int const  k)
void mat::Matrix::random ( )
void mat::Matrix::randomZeroStructure ( Treal  probabilityBeingZero)

Get a random zero structure with a specified probability that each submatrix is zero.

void mat::Matrix::readFromFile ( std::ifstream &  file)
template<typename TRule >
void mat::Matrix::setElementsByRule ( TRule &  rule)
void mat::Matrix::ssmm ( const Treal  alpha,
const Matrix< Treal, Telement > &  A,
const Matrix< Treal, Telement > &  B,
const Treal  beta,
Matrix< Treal, Telement > &  C 
) [static]
void mat::Matrix::ssmm_upper_tr_only ( const Treal  alpha,
const Matrix< Treal, Telement > &  A,
const Matrix< Treal, Telement > &  B,
const Treal  beta,
Matrix< Treal, Telement > &  C 
) [static]
void mat::Matrix::sy_gersgorin ( Treal &  lmin,
Treal &  lmax 
) const [inline]
size_t mat::Matrix::sy_nnz ( ) const

Returns number of nonzeros in matrix including lower triangle elements.

size_t mat::Matrix::sy_nvalues ( ) const

Returns number of stored values in matrix.

Lower triangle is not included. Lower triangle in diagonal submatrices is not included as well. Different from sy_nnz().

Treal mat::Matrix::sy_trace_ab ( const Matrix< Treal, Telement > &  A,
const Matrix< Treal, Telement > &  B 
) [static]
template<typename Top >
Treal mat::Matrix::syAccumulateWith ( Top &  op) [inline]
void mat::Matrix::syAddValues ( std::vector< int > const &  rowind,
std::vector< int > const &  colind,
std::vector< Treal > const &  values 
)
void mat::Matrix::syAssignDiffFrobNormsLowestLevel ( Matrix< Treal, Matrix< Treal, Telement > > const &  A,
Matrix< Treal, Matrix< Treal, Telement > > const &  B 
)

Same as syAssignFrobNormsLowestLevel except that the Frobenius norms of the differences between submatrices of A and B are assigned.

void mat::Matrix::syAssignFrobNormsLowestLevel ( Matrix< Treal, Matrix< Treal, Telement > > const &  A)

Version of assignFrobNormsLowestLevelToMatrix for symmetric matrices.

Referenced by mat::Matrix< Treal >::syAssignDiffFrobNormsLowestLevel().

void mat::Matrix::syAssignFromSparse ( std::vector< int > const &  rowind,
std::vector< int > const &  colind,
std::vector< Treal > const &  values 
)
Treal mat::Matrix::syFrob ( ) const [inline]
static Treal mat::Matrix::syFrobDiff ( const Matrix< Treal, Telement > &  A,
const Matrix< Treal, Telement > &  B 
) [inline, static]
Treal mat::Matrix::syFrobSquared ( ) const
Treal mat::Matrix::syFrobSquaredDiff ( const Matrix< Treal, Telement > &  A,
const Matrix< Treal, Telement > &  B 
) [static]
void mat::Matrix::syFullMatrix ( std::vector< Treal > &  fullMat) const
void mat::Matrix::syGetAllValues ( std::vector< int > &  rowind,
std::vector< int > &  colind,
std::vector< Treal > &  values 
) const
void mat::Matrix::syGetValues ( std::vector< int > const &  rowind,
std::vector< int > const &  colind,
std::vector< Treal > &  values 
) const
void mat::Matrix::syInch ( const Matrix< Treal, Telement > &  A,
Matrix< Treal, Telement > &  Z,
const Treal  threshold = 0,
const side  looking = left,
const inchversion  version = unstable 
) [static]
void mat::Matrix::symm ( const char  side,
const char  uplo,
const Treal  alpha,
const Matrix< Treal, Telement > &  A,
const Matrix< Treal, Telement > &  B,
const Treal  beta,
Matrix< Treal, Telement > &  C 
) [static]
void mat::Matrix::symToNosym ( )

References mat::transpose().

void mat::Matrix::syRandom ( )
void mat::Matrix::syRandomZeroStructure ( Treal  probabilityBeingZero)
void mat::Matrix::syrk ( const char  uplo,
const bool  tA,
const Treal  alpha,
const Matrix< Treal, Telement > &  A,
const Treal  beta,
Matrix< Treal, Telement > &  C 
) [static]
template<typename TRule >
void mat::Matrix::sySetElementsByRule ( TRule &  rule)

Referenced by trSetElementsByRule().

void mat::Matrix::sysq ( const char  uplo,
const Treal  alpha,
const Matrix< Treal, Telement > &  A,
const Treal  beta,
Matrix< Treal, Telement > &  C 
) [static]
void mat::Matrix::sytr_upper_tr_only ( char const  side,
const Treal  alpha,
Matrix< Treal, Telement > &  A,
const Matrix< Treal, Telement > &  Z 
) [static]
void mat::Matrix::syUpTriFullMatrix ( std::vector< Treal > &  fullMat) const
Treal mat::Matrix::trace ( ) const

References mat::trace().

Treal mat::Matrix::trace_ab ( const Matrix< Treal, Telement > &  A,
const Matrix< Treal, Telement > &  B 
) [static]
Treal mat::Matrix::trace_aTb ( const Matrix< Treal, Telement > &  A,
const Matrix< Treal, Telement > &  B 
) [static]
void mat::Matrix::transpose ( Matrix< Treal, Telement > const &  A,
Matrix< Treal, Telement > &  AT 
) [static]

References mat::transpose().

void mat::Matrix::trmm ( const char  side,
const char  uplo,
const bool  tA,
const Treal  alpha,
const Matrix< Treal, Telement > &  A,
Matrix< Treal, Telement > &  B 
) [static]
void mat::Matrix::trmm_upper_tr_only ( const char  side,
const char  uplo,
const bool  tA,
const Treal  alpha,
const Matrix< Treal, Telement > &  A,
Matrix< Treal, Telement > &  B 
) [static]
template<typename TRule >
void mat::Matrix::trSetElementsByRule ( TRule &  rule) [inline]

References sySetElementsByRule().

void mat::Matrix::trsytriplemm ( char const  side,
const Matrix< Treal, Telement > &  Z,
Matrix< Treal, Telement > &  A 
) [static]
void mat::Matrix::truncateAccordingToSparsityPattern ( Matrix< Treal, Matrix< Treal, Telement > > &  A) const

Truncate matrix A according to the sparsity pattern of the this matrix (frobNormMat).

void mat::Matrix::writeToFile ( std::ofstream &  file) const

Friends And Related Function Documentation

friend class Vector< Treal, Telement > [friend]

The documentation for this class was generated from the following file: