gstlearn  0.2.1
Geostatistics & Machine Learning toolbox
AMatrixSquare Class Reference

#include <AMatrixSquare.hpp>

Inheritance diagram for AMatrixSquare:
AMatrix AStringable ICloneable MatrixSquareGeneral MatrixSquareSymmetric MatrixSquareDiagonal MatrixSquareDiagonalCst

Public Member Functions

virtual ~AMatrixSquare ()
 
int getNSize () const
 
void normMatrix (const AMatrixSquare &x, const AMatrix &y)
 
void normTMatrix (const AMatrixSquare &x, const AMatrix &y)
 
double trace () const
 
void innerMatrix (const AMatrixSquare &x, const AMatrix &r1, const AMatrix &r2)
 
void prodDiagByVector (const VectorDouble &diag)
 
void divideDiagByVector (const VectorDouble &diag)
 
virtual double determinant (void) const
 
- Public Member Functions inherited from AMatrix
virtual ~AMatrix ()
 
void init (int nrows, int ncols, bool sparse=false)
 
int getNRows () const
 
int getNCols () const
 
int getNTotal () const
 
virtual double getValue (int irow, int icol) const
 
virtual double getValue (int rank) const
 
virtual double & getValueRef (int irow, int icol)
 
VectorDouble getValues () const
 
void getValuesAsTriplets (VectorInt &irows, VectorInt &icols, VectorDouble &values) const
 
VectorDouble getDiagonal (int shift=0) const
 
VectorDouble getRow (int irow) const
 
VectorDouble getColumn (int icol) const
 
void add (int irow, int icol, double value)
 
void add (const AMatrix &tab, double value=1.)
 
void subtract (const AMatrix &tab, double value=1.)
 
virtual void setColumn (int icol, const VectorDouble &tab)
 
virtual void setRow (int irow, const VectorDouble &tab)
 
virtual void setDiagonal (const VectorDouble &tab)
 
virtual void setDiagonal (double value=1.)
 
const cs * getCs () const
 
Triplet getCsToTriplet (bool flag_from_1=false) const
 
bool isSameSize (const AMatrix &m) const
 
bool isSparse () const
 
bool isEmpty () const
 
virtual bool isSquare (bool printWhyNot=false) const
 
virtual bool isValid (int irow, int icol, bool printWhyNot=false) const
 
virtual bool isIdentity (bool printWhyNot=false) const
 
virtual bool isSymmetric (bool printWhyNot=false) const
 
virtual bool isDiagonal (bool printWhyNot=false) const
 
virtual bool isDiagCst (bool printWhyNot=false) const
 
virtual bool mustBeSymmetric () const
 
virtual bool mustBeDiagonal () const
 
virtual bool mustBeDiagCst () const
 
bool isSame (const AMatrix &m, double eps=EPSILON10)
 
void reset (int nrows, int ncols, bool sparse=false)
 
void reset (int nrows, int ncols, double value, bool sparse=false)
 
void reset (int nrows, int ncols, const double *tab, bool sparse=false)
 
void reset (int nrows, int ncols, const VectorDouble &tab, bool sparse=false, bool flagByRow=true)
 
void reset (const VectorVectorDouble &tab, bool flagByRow=true)
 
double compare (const AMatrix &mat) const
 
void toSparseInPlace ()
 
AMatrixtoSparse () const
 
virtual void transposeInPlace ()
 
virtual AMatrixtranspose () const
 
virtual void addScalar (double v)
 
virtual void addScalarDiag (double v)
 
virtual void prodScalar (double v)
 
void prodVector (const double *inv, double *outv) const
 
void prodVector (const VectorDouble &inv, VectorDouble &outv) const
 
void multiplyRow (const VectorDouble &vec)
 
void multiplyColumn (const VectorDouble &vec)
 
void divideRow (const VectorDouble &vec)
 
void divideColumn (const VectorDouble &vec)
 
virtual void addMatrix (const AMatrix &y)
 
virtual void prodMatrix (const AMatrix &x, const AMatrix &y)
 
virtual void linearCombination (double cx, double cy, const AMatrix &y)
 
int invert ()
 
int solve (const VectorDouble &b, VectorDouble &x) const
 
void dumpElements (const String &title, int ifrom, int ito) const
 
virtual String toString (const AStringFormat *strfmt=nullptr) const override
 
virtual void setValue (int irow, int icol, double value)
 
virtual void setValue (int rank, double value)
 
void setIdentity (double value=1.)
 
void fill (double value)
 
void fillRandom (int seed=432432, double zeroPercent=0.1)
 
void setValuesOldStyle (const double *values, bool byCol=true)
 
void setValues (const VectorDouble &values, bool byCol=true)
 
void setValuesByArrays (const VectorInt &irows, const VectorInt &icols, const VectorDouble &values)
 
double getMeanByColumn (int icol) const
 
double getMinimum () const
 
double getMaximum () const
 
void copyReduce (const AMatrix *x, const VectorInt &validRows, const VectorInt &validCols)
 
double operator() (int row, int col) const
 
double & operator() (int row, int col)
 
- Public Member Functions inherited from AStringable
 AStringable ()
 
 AStringable (const AStringable &r)
 
AStringableoperator= (const AStringable &r)
 
virtual ~AStringable ()
 
virtual void display (const AStringFormat *strfmt=nullptr) const final
 
virtual void display (int level) const final
 
- Public Member Functions inherited from ICloneable
 ICloneable ()
 
virtual ~ICloneable ()
 
virtual ICloneableclone () const =0
 

Protected Member Functions

 AMatrixSquare (int nrow=0, bool sparse=false)
 
 AMatrixSquare (const AMatrixSquare &m)
 
AMatrixSquareoperator= (const AMatrixSquare &r)
 
void _setNSize (int nval)
 
bool _isNumberValid (int nrows, int ncols) const
 
- Protected Member Functions inherited from AMatrix
 AMatrix (int nrow=0, int ncol=0, bool sparse=false)
 
 AMatrix (const cs *A)
 
 AMatrix (const AMatrix &m)
 
AMatrixoperator= (const AMatrix &m)
 
virtual bool _isPhysicallyPresent (int, int) const
 
virtual bool _isCompatible (const AMatrix &m) const =0
 
virtual void _allocate ()=0
 
virtual void _deallocate ()=0
 
virtual int _getMatrixSize () const =0
 
virtual void _setValue (int rank, double value)=0
 
virtual void _setValue (int irow, int icol, double value)=0
 
virtual void _setValues (const double *values, bool byCol)=0
 
virtual double _getValue (int irow, int icol) const =0
 
virtual double _getValue (int rank) const =0
 
virtual double & _getValueRef (int irow, int icol)=0
 
virtual void _transposeInPlace ()=0
 
virtual void _prodVector (const double *inv, double *outv) const =0
 
virtual int _invert ()=0
 
virtual int _solve (const VectorDouble &b, VectorDouble &x) const =0
 
virtual void _clearContents ()
 
void _setNCols (int ncols)
 
void _setNRows (int nrows)
 
bool _isNumbersValid (int nrows, int ncols) const
 
bool _isColumnValid (int icol) const
 
bool _isRowValid (int irow) const
 
bool _isIndexValid (int irow, int icol) const
 
bool _isRowVectorConsistent (const VectorDouble &tab)
 
bool _isColVectorConsistent (const VectorDouble &tab)
 
bool _isVectorSizeConsistent (int nrows, int ncols, const VectorDouble &tab)
 
bool _isRankValid (int rank) const
 
void _clear ()
 

Detailed Description

Square Matrix

Constructor & Destructor Documentation

◆ AMatrixSquare() [1/2]

AMatrixSquare::AMatrixSquare ( int  nrow = 0,
bool  sparse = false 
)
protected

◆ AMatrixSquare() [2/2]

AMatrixSquare::AMatrixSquare ( const AMatrixSquare m)
protected

◆ ~AMatrixSquare()

AMatrixSquare::~AMatrixSquare ( )
virtual

Member Function Documentation

◆ _isNumberValid()

bool AMatrixSquare::_isNumberValid ( int  nrows,
int  ncols 
) const
protected

◆ _setNSize()

void AMatrixSquare::_setNSize ( int  nval)
protected

◆ determinant()

double AMatrixSquare::determinant ( void  ) const
virtual

Returns the Determinant value

Reimplemented in MatrixSquareDiagonal, and MatrixSquareDiagonalCst.

◆ divideDiagByVector()

void AMatrixSquare::divideDiagByVector ( const VectorDouble diag)

Divide the diagonal by a vector

◆ getNSize()

int AMatrixSquare::getNSize ( ) const
inline

Returns the size of the matrix (nrows=ncols)

◆ innerMatrix()

void AMatrixSquare::innerMatrix ( const AMatrixSquare x,
const AMatrix r1,
const AMatrix r2 
)

Perform inner product

Perform the product: this = t(R1) %*% X %*% R2 + t(R2) %*% X %*% R1

Parameters
xSquare matrix
r1Left Hand Matrix
r2Right Hand Matrix
Remarks
The number of rows of Y must be equal to the dimension of X
The output matrix is square with dimension equal to the number of columns of Y

◆ normMatrix()

void AMatrixSquare::normMatrix ( const AMatrixSquare x,
const AMatrix y 
)

Perform Norm matrix

Perform the product: this = t(Y) %*% X %*% Y

Parameters
xSquare matrix
yMatrix (possibly rectangular)
Remarks
The number of rows of Y must be equal to the dimension of X
The output matrix is square with dimension equal to the number of columns of Y

◆ normTMatrix()

void AMatrixSquare::normTMatrix ( const AMatrixSquare x,
const AMatrix y 
)

Perform the product: this = Y %*% X %*% t(Y)

Parameters
xSquare matrix
yMatrix (possibly rectangular)
Remarks
The number of columns of Y must be equal to the dimension of X
The output matrix is square with dimension equal to the number of rows of Y

◆ operator=()

AMatrixSquare & AMatrixSquare::operator= ( const AMatrixSquare r)
protected

◆ prodDiagByVector()

void AMatrixSquare::prodDiagByVector ( const VectorDouble diag)

Multiply the diagonal by a vector

◆ trace()

double AMatrixSquare::trace ( ) const

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