gstlearn  1.0.0
CCC
AMatrixSquare Class Reference

#include <AMatrixSquare.hpp>

Inheritance diagram for AMatrixSquare:
AMatrix AStringable ICloneable MatrixSquareGeneral MatrixSquareSymmetric

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)
 
void reset (int nrows, int ncols, double value=0.)
 
void resetFromArray (int nrows, int ncols, const double *tab, bool byCol=true)
 
void resetFromVD (int nrows, int ncols, const VectorDouble &tab, bool byCol=true)
 
void resetFromVVD (const VectorVectorDouble &tab, bool byCol=true)
 
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.)
 
virtual bool isSparse () 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
 
virtual void transposeInPlace ()
 
virtual AMatrixtranspose () const
 
virtual void addScalar (double v)
 
virtual void addScalarDiag (double v)
 
virtual void prodScalar (double v)
 
virtual String toString (const AStringFormat *strfmt=nullptr) const override
 
virtual double getValue (int irow, int icol) const
 
virtual double & getValueRef (int irow, int icol)
 
virtual void setValue (int irow, int icol, double value)
 
virtual void setValuesByArrays (const VectorInt &irows, const VectorInt &icols, const VectorDouble &values)
 
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)
 
bool isSame (const AMatrix &m, double eps=EPSILON10)
 
bool isSameSize (const AMatrix &m) const
 
bool isEmpty () const
 
double compare (const AMatrix &mat) const
 
int getNRows () const
 
int getNCols () const
 
int getNTotal () const
 
VectorDouble getValues (bool byCol=true) const
 
VectorDouble getDiagonal (int shift=0) const
 
VectorDouble getRow (int irow) const
 
VectorDouble getColumn (int icol) const
 
bool isColumnDefined (int icol) const
 
bool isRowDefined (int irow) const
 
int getNumberColumnDefined () const
 
int getNumberRowDefined () 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.)
 
void getValuesAsTriplets (VectorInt &irows, VectorInt &icols, VectorDouble &values) const
 
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)
 
double quadraticMatrix (const VectorDouble &x, const VectorDouble &y)
 
int invert ()
 
int solve (const VectorDouble &b, VectorDouble &x) const
 
void dumpElements (const String &title, int ifrom, int ito) const
 
void setIdentity (double value=1.)
 
void fill (double value)
 
void fillRandom (int seed=432432, double zeroPercent=0.1)
 
void setValues (const VectorDouble &values, bool byCol=true)
 
double getMeanByColumn (int icol) const
 
double getMinimum () const
 
double getMaximum () const
 
void copyReduce (const AMatrix *x, const VectorInt &activeRows, const VectorInt &activeCols)
 
void setFlagCheckAddress (bool flagCheckAddress)
 
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)
 
 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)
 
 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 double _getValue (int rank) const =0
 
virtual void _setValue (int irow, int icol, double value)=0
 
virtual void _setValues (const double *values, bool byCol)
 
virtual double _getValue (int irow, int icol) 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 int _getIndexToRank (int irow, int icol) 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 ()
 
void _fillFromVVD (const VectorVectorDouble &X)
 
bool _getFlagCheckAddress () const
 

Detailed Description

Square Matrix

Constructor & Destructor Documentation

◆ AMatrixSquare() [1/2]

AMatrixSquare::AMatrixSquare ( int  nrow = 0)
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

◆ 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: