1.2.1
CCC
 
MatrixSquareGeneral Class Reference

#include <MatrixSquareGeneral.hpp>

Inheritance diagram for MatrixSquareGeneral:
AMatrixSquare MatrixRectangular AMatrixDense AMatrix AStringable ICloneable

Public Member Functions

 MatrixSquareGeneral (int nrow=0, int opt_eigen=-1)
 
 MatrixSquareGeneral (const MatrixSquareGeneral &m)
 
 MatrixSquareGeneral (const AMatrix &m)
 
MatrixSquareGeneraloperator= (const MatrixSquareGeneral &r)
 
virtual ~MatrixSquareGeneral ()
 
bool mustBeSymmetric () const override
 ICloneable interface. More...
 
bool mustBeDiagonal () const override
 
bool mustBeDiagCst () const override
 
int decomposeLU (MatrixSquareGeneral &tls, MatrixSquareGeneral &tus, double eps=EPSILON20)
 
- Public Member Functions inherited from AMatrixSquare
 AMatrixSquare (int nrow=0, int opt_eigen=-1)
 
 AMatrixSquare (const AMatrixSquare &m)
 
 AMatrixSquare (const AMatrix &m)
 
AMatrixSquareoperator= (const AMatrixSquare &r)
 
virtual ~AMatrixSquare ()
 
virtual double determinant (void) const
 Interface for AMatrix. More...
 
bool isSquare (bool printWhyNot=false) const override
 
int getNSize () const
 
double trace () const
 
void innerMatrix (const AMatrixSquare &x, const AMatrix &r1, const AMatrix &r2)
 
void prodDiagByVector (const VectorDouble &diag)
 
void divideDiagByVector (const VectorDouble &diag)
 
void prodByDiagInPlace (int mode, const VectorDouble &c)
 
double normVec (const VectorDouble &vec)
 
- Public Member Functions inherited from MatrixRectangular
 MatrixRectangular (int nrow=0, int ncol=0, int opt_eigen=-1)
 
 MatrixRectangular (const MatrixRectangular &m)
 
 MatrixRectangular (const AMatrix &m)
 
MatrixRectangularoperator= (const MatrixRectangular &r)
 
virtual ~MatrixRectangular ()
 
void addRow (int nrow_added=1)
 
void addColumn (int ncolumn_added=1)
 
- Public Member Functions inherited from AMatrixDense
 AMatrixDense (int nrow=0, int ncol=0, int opt_eigen=-1)
 
 AMatrixDense (const AMatrixDense &m)
 
 AMatrixDense (const AMatrix &m)
 
AMatrixDenseoperator= (const AMatrixDense &r)
 
virtual ~AMatrixDense ()
 
virtual bool isDense () const
 Interface for AMatrix. More...
 
virtual bool isSparse () const
 
virtual void setColumn (int icol, const VectorDouble &tab) override
 
virtual void setRow (int irow, const VectorDouble &tab) override
 
virtual void setDiagonal (const VectorDouble &tab) override
 
virtual void setDiagonalToConstant (double value=1.) override
 
virtual void addScalar (double v) override
 
virtual void addScalarDiag (double v) override
 
virtual void prodScalar (double v) override
 
virtual void fill (double value) override
 
virtual void multiplyRow (const VectorDouble &vec) override
 
virtual void multiplyColumn (const VectorDouble &vec) override
 
virtual void divideRow (const VectorDouble &vec) override
 
virtual void divideColumn (const VectorDouble &vec) override
 
virtual VectorDouble prodVecMat (const VectorDouble &x, bool transpose=false) const override
 
virtual VectorDouble prodMatVec (const VectorDouble &x, bool transpose=false) const override
 
virtual VectorDouble getRow (int irow) const override
 
virtual VectorDouble getColumn (int icol) const override
 
virtual void prodMatMatInPlace (const AMatrix *x, const AMatrix *y, bool transposeX=false, bool transposeY=false) override
 
void addMatInPlace (const AMatrixDense &y, double cx=1., double cy=1.)
 The next functions use specific definition of matrix (to avoid dynamic_cast) rather than manipulating AMatrix. They are not generic of AMatrix anymore. WARNING: output matrix should not match any of input matrices (speed up). More...
 
virtual void prodNormMatMatInPlace (const AMatrixDense &a, const AMatrixDense &m, bool transpose=false)
 
virtual void prodNormMatInPlace (const AMatrixDense &a, const VectorDouble &vec=VectorDouble(), bool transpose=false)
 
VectorDouble getEigenValues () const
 
const MatrixSquareGeneralgetEigenVectors () const
 
- Public Member Functions inherited from AMatrix
 AMatrix (int nrow=0, int ncol=0, int opt_eigen=-1)
 
 AMatrix (const AMatrix &m)
 
AMatrixoperator= (const AMatrix &m)
 
virtual ~AMatrix ()
 
void init (int nrows, int ncols, int opt_eigen=-1)
 
void reset (int nrows, int ncols, double value=0., int opt_eigen=-1)
 
void resetFromArray (int nrows, int ncols, const double *tab, bool byCol=true, int opt_eigen=-1)
 
void resetFromVD (int nrows, int ncols, const VectorDouble &tab, bool byCol=true, int opt_eigen=-1)
 
void resetFromVVD (const VectorVectorDouble &tab, bool byCol=true, int opt_eigen=-1)
 
virtual String toString (const AStringFormat *strfmt=nullptr) const override
 Interface to AStringable. More...
 
virtual bool isValid (int irow, int icol, bool printWhyNot=false) const
 
virtual bool isIdentity (bool printWhyNot=false) const
 
virtual bool isSymmetric (bool printWhyNot=false, double eps=EPSILON10) const
 
virtual bool isDiagonal (bool printWhyNot=false) const
 
virtual bool isDiagCst (bool printWhyNot=false) const
 
virtual void transposeInPlace ()
 
virtual AMatrixtranspose () const
 
virtual NF_Triplet getMatrixToTriplet (int shiftRow=0, int shiftCol=0) const
 
void addMatInPlace (const AMatrix &y, double cx=1., double cy=1.)
 
void prodMatInPlace (const AMatrix *matY, bool transposeY=false)
 
void prodNormMatMatInPlace (const AMatrix &a, const AMatrix &m, bool transpose=false)
 
void prodNormMatInPlace (const AMatrix &a, const VectorDouble &vec=VectorDouble(), bool transpose=false)
 
void resize (int nrows, int ncols)
 
double getValue (int irow, int icol) const
 
void setValue (int irow, int icol, double value)
 
void updValue (int irow, int icol, const EOperator &oper, double value)
 
void setValue_ (int irow, int icol, double value)
 
void updValue_ (int irow, int icol, const EOperator &oper, double value)
 
double getValue_ (int irow, int icol) const
 
void addValue (int irow, int icol, double value)
 
bool isSame (const AMatrix &m, double eps=EPSILON4, bool printWhyNot=false)
 
bool isSameSize (const AMatrix &m) const
 
bool empty () const
 
double compare (const AMatrix &mat) const
 
int getNRows () const
 
int getNCols () const
 
int size () const
 
VectorDouble getValues (bool byCol=true) const
 
VectorDouble getDiagonal (int shift=0) const
 
bool isColumnDefined (int icol) const
 
bool isRowDefined (int irow) const
 
int getNumberColumnDefined () const
 
int getNumberRowDefined () const
 
bool isFlagEigen () const
 
bool isNonNegative (bool verbose=false)
 
void prodMatVecInPlace (const VectorDouble &x, VectorDouble &y, bool transpose=false) const
 
void prodMatVecInPlacePtr (const double *x, double *y, bool transpose=false) const
 
void prodVecMatInPlace (const VectorDouble &x, VectorDouble &y, bool transpose=false) const
 
void prodVecMatInPlacePtr (const double *x, double *y, bool transpose=false) const
 
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 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
 
double getNormInf () const
 
void copyReduce (const AMatrix *x, const VectorInt &activeRows, const VectorInt &activeCols)
 
void copyElements (const AMatrix &m, double factor=1.)
 
void setFlagCheckAddress (bool flagCheckAddress)
 
void makePositiveColumn ()
 
void linearCombination (double val1, const AMatrix *mat1, double val2=1., const AMatrix *mat2=nullptr)
 
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
 

Static Public Member Functions

static MatrixSquareGeneralcreateFromVVD (const VectorVectorDouble &X, int opt_eigen=-1)
 
static MatrixSquareGeneralcreateFromVD (const VectorDouble &X, int nrow, bool byCol=false, int opt_eigen=-1, bool invertColumnOrder=false)
 
- Static Public Member Functions inherited from MatrixRectangular
static MatrixRectangularcreateFromVVD (const VectorVectorDouble &X, int opt_eigen=-1)
 
static MatrixRectangularcreateFromVD (const VectorDouble &X, int nrow, int ncol, bool byCol=false, int opt_eigen=-1, bool invertColumnOrder=false)
 
static MatrixRectangularglue (const AMatrix *A1, const AMatrix *A2, bool flagShiftRow, bool flagShiftCol)
 

Public Attributes

 DECLARE_TOTL
 Has a specific implementation in the Target language. More...
 
- Public Attributes inherited from MatrixRectangular
 DECLARE_TOTL
 Has a specific implementation in the Target language. More...
 

Detailed Description

Square Matrix General

Constructor & Destructor Documentation

MatrixSquareGeneral::MatrixSquareGeneral ( int  nrow = 0,
int  opt_eigen = -1 
)
MatrixSquareGeneral::MatrixSquareGeneral ( const MatrixSquareGeneral m)
MatrixSquareGeneral::MatrixSquareGeneral ( const AMatrix m)
MatrixSquareGeneral::~MatrixSquareGeneral ( )
virtual

Member Function Documentation

MatrixSquareGeneral * MatrixSquareGeneral::createFromVD ( const VectorDouble X,
int  nrow,
bool  byCol = false,
int  opt_eigen = -1,
bool  invertColumnOrder = false 
)
static
MatrixSquareGeneral * MatrixSquareGeneral::createFromVVD ( const VectorVectorDouble X,
int  opt_eigen = -1 
)
static

Converts a VectorVectorDouble into a Matrix Note: the input argument is stored by row (if coming from [] specification)

Parameters
XInput VectorVectorDouble argument
opt_eigenOption for use of Eigen Library
Returns
The returned square matrix
Remarks
: the matrix is transposed implicitly while reading
int MatrixSquareGeneral::decomposeLU ( MatrixSquareGeneral tls,
MatrixSquareGeneral tus,
double  eps = EPSILON20 
)

LU Decomposition of a square matrix (not necessarily symmetric)

Parameters
tlsOutput square matrix containing lower triangle (stored columnwise)
tusOutput square matrix containing upper triangle (stored linewise)
epsTolerance
Remarks
The output matrices 'tus' and 'tls' must be dimensioned beforehand
bool MatrixSquareGeneral::mustBeDiagCst ( ) const
inlineoverridevirtual

Say if the matrix must be diagonal constant

Reimplemented from MatrixRectangular.

bool MatrixSquareGeneral::mustBeDiagonal ( ) const
inlineoverridevirtual

Say if the matrix must be diagonal

Reimplemented from MatrixRectangular.

bool MatrixSquareGeneral::mustBeSymmetric ( ) const
inlineoverridevirtual

ICloneable interface.

Interface for AMatrix

Say if the matrix must be symmetric

Reimplemented from MatrixRectangular.

MatrixSquareGeneral & MatrixSquareGeneral::operator= ( const MatrixSquareGeneral r)

Member Data Documentation

MatrixSquareGeneral::DECLARE_TOTL

Has a specific implementation in the Target language.


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