INMOST
A toolkit for distributed mathematical modeling
INMOST::MatrixMul< VarA, VarB, VarR > Class Template Reference
Inheritance diagram for INMOST::MatrixMul< VarA, VarB, VarR >:
Collaboration diagram for INMOST::MatrixMul< VarA, VarB, VarR >:

Public Types

typedef AbstractMatrix< VarR >::enumerator enumerator
 
- Public Types inherited from INMOST::AbstractMatrix< VarR >
typedef AbstractMatrixReadOnly< VarR >::enumerator enumerator
 
- Public Types inherited from INMOST::AbstractMatrixReadOnly< VarR >
typedef unsigned enumerator
 

Public Member Functions

void Resize (enumerator rows, enumerator cols)
 This is a stub function to fulfill abstract inheritance. More...
 
__INLINE enumerator Rows () const
 Number of rows. More...
 
__INLINE enumerator Cols () const
 Number of columns. More...
 
 MatrixMul (const AbstractMatrixReadOnly< VarA > &rA, const AbstractMatrixReadOnly< VarB > &rB)
 
 MatrixMul (const MatrixMul &b)
 
__INLINE VarR compute (enumerator i, enumerator j) const
 Access element of the matrix by row and column indices without right to change the element. More...
 
__INLINE VarR & operator() (enumerator i, enumerator j)
 Access element of the matrix by row and column indices. More...
 
__INLINE const VarR & get (enumerator i, enumerator j) const
 Access element of the matrix by row and column indices without right to change the element. More...
 
__INLINE INMOST_DATA_ENUM_TYPE GetMatrixCount () const
 Retrieve number of indices of derivatives.
 
- Public Member Functions inherited from INMOST::AbstractMatrix< VarR >
 AbstractMatrix ()
 Construct empty matrix.
 
AbstractMatrixoperator= (AbstractMatrix const &other)
 Assign matrix of the same type. More...
 
AbstractMatrixoperator= (AbstractMatrixReadOnly< typeB > const &other)
 Assign matrix of another type. More...
 
AbstractMatrixoperator= (VarR const &b)
 Assign value to all entries of the matrix. More...
 
virtual VarR & operator() (enumerator i, enumerator j)=0
 Access element of the matrix by row and column indices. More...
 
SubMatrix< VarR > operator() (enumerator first_row, enumerator last_row, enumerator first_col, enumerator last_col)
 Extract submatrix of a matrix for in-place manipulation of elements. More...
 
virtual const VarR & get (enumerator i, enumerator j) const=0
 Access element of the matrix by row and column indices. More...
 
virtual void Resize (enumerator rows, enumerator cols)=0
 Resize the matrix into different size. More...
 
void Zero ()
 Set all the elements of the matrix to zero.
 
virtual void Swap (AbstractMatrix< VarR > &b)
 Exchange contents of two matrices.
 
AbstractMatrixoperator-= (const AbstractMatrixReadOnly< typeB > &other)
 Subtract a matrix and store result in the current. More...
 
AbstractMatrixoperator-= (const AbstractMatrix< typeB > &other)
 Subtract a matrix and store result in the current. More...
 
AbstractMatrix< VarR > & operator-= (const AbstractMatrix< typeB > &other)
 
AbstractMatrix< VarR > & operator-= (const AbstractMatrixReadOnly< typeB > &other)
 
AbstractMatrixoperator+= (const AbstractMatrixReadOnly< typeB > &other)
 Add a matrix and store result in the current. More...
 
AbstractMatrixoperator+= (const AbstractMatrix< typeB > &other)
 Add a matrix and store result in the current. More...
 
AbstractMatrix< VarR > & operator+= (const AbstractMatrix< typeB > &other)
 
AbstractMatrix< VarR > & operator+= (const AbstractMatrixReadOnly< typeB > &other)
 
AbstractMatrixoperator*= (const AbstractMatrixReadOnly< typeB > &B)
 Multiply matrix with another matrix in-place. More...
 
AbstractMatrixoperator*= (typeB coef)
 Multiply the matrix by the coefficient of the same type and store the result. More...
 
AbstractMatrix< VarR > & operator*= (const AbstractMatrixReadOnly< typeB > &B)
 
AbstractMatrix< VarR > & operator*= (typeB coef)
 
AbstractMatrixoperator/= (typeB coef)
 Divide the matrix by the coefficient of the same type and store the result. More...
 
AbstractMatrix< VarR > & operator/= (typeB coef)
 
BlockOfMatrix< VarR > BlockOf (enumerator nrows, enumerator ncols, enumerator offset_row, enumerator offset_col)
 Define matrix as a part of a matrix of larger size with in-place manipulation of elements. More...
 
MatrixTranspose< VarR > Transpose ()
 Transpose the current matrix with access to elements. More...
 
MatrixRepack< VarR > Repack (enumerator rows, enumerator cols)
 Change representation of the matrix into matrix of another size. More...
 
MatrixConcatCols< VarR > ConcatCols (AbstractMatrix< VarR > &B)
 Concatenate B matrix as columns of current matrix. More...
 
MatrixConcatRows< VarR > ConcatRows (AbstractMatrix< VarR > &B)
 Concatenate B matrix as rows of current matrix. More...
 
bool CheckNans () const
 Check all matrix entries for not a number. More...
 
bool CheckInfs () const
 Check all matrix entries for infinity. More...
 
bool CheckNansInfs () const
 Check all matrix entries for not a number and infinity. More...
 
Matrix< typename Promote< VarR, typeB >::type > Transform (const AbstractMatrix< typeB > &other) const
 Transformation matrix from current vector to provided vector using shortest arc rotation. More...
 
Matrix< typename Promote< VarR, typeB >::type > Transform (const AbstractMatrixReadOnly< typeB > &other) const
 Transformation matrix from current vector to provided vector using shortest arc rotation. More...
 
Matrix< typename Promote< VarR, typeB >::type > CrossProduct (const AbstractMatrix< typeB > &other) const
 Cross-product operation for a vector. More...
 
Matrix< typename Promote< VarR, typeB >::type > CrossProduct (const AbstractMatrixReadOnly< typeB > &other) const
 Cross-product operation for a vector. More...
 
Promote< VarR, typeB >::type DotProduct (const AbstractMatrix< typeB > &other) const
 Computes dot product by summing up multiplication of entries with the same indices in the current and the provided matrix. More...
 
Promote< VarR, typeB >::type DotProduct (const AbstractMatrixReadOnly< typeB > &other) const
 Computes dot product by summing up multiplication of entries with the same indices in the current and the provided matrix. More...
 
Promote< VarR, typeB >::type operator^ (const AbstractMatrix< typeB > &other) const
 Computes dot product by summing up multiplication of entries with the same indices in the current and the provided matrix. More...
 
Promote< VarR, typeB >::type operator^ (const AbstractMatrixReadOnly< typeB > &other) const
 Computes dot product by summing up multiplication of entries with the same indices in the current and the provided matrix. More...
 
SelfPromote< VarR >::type FrobeniusNorm () const
 Computes frobenious norm of the matrix. More...
 
VarR MaxNorm () const
 Computes maximum absolute value of the matrix. More...
 
VarR Trace () const
 Calculate sum of the diagonal elements of the matrix. More...
 
void Print (INMOST_DATA_REAL_TYPE threshold=1.0e-10, std::ostream &sout=std::cout) const
 Output matrix to screen. More...
 
bool isSymmetric (double eps=1.0e-7) const
 Check if the matrix is symmetric. More...
 
void MPT (INMOST_DATA_ENUM_TYPE *Perm, INMOST_DATA_REAL_TYPE *SL=NULL, INMOST_DATA_REAL_TYPE *SR=NULL) const
 Maximum product transversal. More...
 
__INLINE INMOST_DATA_ENUM_TYPE GetMatrixCount () const
 Retrieve number of indices of derivatives.
 
virtual ~AbstractMatrix ()
 Destructor.
 
- Public Member Functions inherited from INMOST::AbstractMatrixReadOnly< VarR >
virtual VarR compute (enumerator i, enumerator j) const=0
 Compute element of the matrix by row and column indices without right to change the element. More...
 
bool CheckNans () const
 Check all matrix entries for not a number. More...
 
bool CheckInfs () const
 Check all matrix entries for infinity. More...
 
bool CheckNansInfs () const
 Check all matrix entries for not a number and infinity. More...
 
VarR Det () const
 Matrix determinant.
 
bool SVD (AbstractMatrix< VarR > &U, AbstractMatrix< VarR > &Sigma, AbstractMatrix< VarR > &V, bool order_singular_values=true, bool nonnegative=true) const
 Singular value decomposition. More...
 
bool cSVD (AbstractMatrix< VarR > &U, AbstractMatrix< VarR > &Sigma, AbstractMatrix< VarR > &V) const
 Singular value decomposition. More...
 
ConstMatrixTranspose< VarR > Transpose () const
 Transpose current matrix. More...
 
ConstMatrixConjugateTranspose< VarR > ConjugateTranspose () const
 Transpose and conjugate current matrix. More...
 
ConstMatrixConjugate< VarR > Conjugate () const
 Conjugate current matrix. More...
 
Matrix< typename Promote< VarR, typeB >::type > CrossProduct (const AbstractMatrixReadOnly< typeB > &other) const
 Cross-product operation for a vector. More...
 
Matrix< typename Promote< VarR, typeB >::type > Transform (const AbstractMatrixReadOnly< typeB > &other) const
 Transformation matrix from current vector to provided vector using shortest arc rotation. More...
 
MatrixDifference< VarR, typeB > operator- (const AbstractMatrixReadOnly< typeB > &other) const
 Subtract a matrix. More...
 
MatrixUnaryMinus< VarR > operator- () const
 Unary minus. Change sign of each element of the matrix.
 
MatrixSum< VarR, typeB > operator+ (const AbstractMatrixReadOnly< typeB > &other) const
 Add a matrix. More...
 
MatrixMul< VarR, typeB, typename Promote< VarR, typeB >::type > operator* (const AbstractMatrixReadOnly< typeB > &other) const
 Multiply the matrix by another matrix. More...
 
MatrixMulCoef< VarR, typeB, typename Promote< VarR, typeB >::type > operator* (const typeB &coef) const
 Multiply the matrix by a coefficient. More...
 
MatrixMulShellCoef< VarR, shell_expression< A >, typename Promote< VarR, variable >::type > operator* (shell_expression< A > const &coef) const
 Multiply the matrix by a coefficient. More...
 
KroneckerProduct< VarR, typeB > Kronecker (const AbstractMatrixReadOnly< typeB > &other) const
 Kronecker product, latex symbol \otimes. More...
 
Matrix< VarR > Invert (int *ierr=NULL) const
 Inverts matrix using Crout-LU decomposition with full pivoting for maximum element. More...
 
Matrix< VarR > CholeskyInvert (int *ierr=NULL) const
 Inverts symmetric positive-definite matrix using Cholesky decomposition.
 
Matrix< typename Promote< VarR, typeB >::type > Solve (const AbstractMatrixReadOnly< typeB > &B, int *ierr=NULL) const
 Finds X in A*X=B, where A and B are general matrices. More...
 
Matrix< typename Promote< VarR, typeB >::type > CholeskySolve (const AbstractMatrixReadOnly< typeB > &B, int *ierr=NULL) const
 Finds X in A*X=B, where A is a square symmetric positive definite matrix. More...
 
__INLINE Matrix< Promote< variable, variable >::type > CholeskySolve (const AbstractMatrixReadOnly< variable > &B, int *ierr) const
 
__INLINE Matrix< Promote< INMOST_DATA_REAL_TYPE, variable >::type > CholeskySolve (const AbstractMatrixReadOnly< variable > &B, int *ierr) const
 
__INLINE Matrix< Promote< variable, INMOST_DATA_REAL_TYPE >::type > CholeskySolve (const AbstractMatrixReadOnly< INMOST_DATA_REAL_TYPE > &B, int *ierr) const
 
VarR Trace () const
 Calculate sum of the diagonal elements of the matrix. More...
 
void Print (INMOST_DATA_REAL_TYPE threshold=1.0e-10, std::ostream &sout=std::cout) const
 Output matrix to screen. More...
 
bool isSymmetric (double eps=1.0e-7) const
 Check if the matrix is symmetric. More...
 
Promote< VarR, typeB >::type DotProduct (const AbstractMatrixReadOnly< typeB > &other) const
 Computes dot product by summing up multiplication of entries with the same indices in the current and the provided matrix. More...
 
Promote< VarR, typeB >::type operator^ (const AbstractMatrixReadOnly< typeB > &other) const
 Computes dot product by summing up multiplication of entries with the same indices in the current and the provided matrix. More...
 
SelfPromote< VarR >::type FrobeniusNorm () const
 Computes frobenius norm of the matrix. More...
 
VarR MaxNorm () const
 Computes maximum absolute value of the matrix. More...
 
Matrix< VarR > PseudoInvert (INMOST_DATA_REAL_TYPE tol=0, int *ierr=NULL) const
 Calculates Moore-Penrose pseudo-inverse of the matrix. More...
 
Matrix< VarR > Power (INMOST_DATA_REAL_TYPE n, int *ierr=NULL) const
 Calcuate A^n, where n is some real value. More...
 
Matrix< VarR > Root (INMOST_DATA_ENUM_TYPE iter=25, INMOST_DATA_REAL_TYPE tol=1.0e-7, int *ierr=NULL) const
 Calculate square root of A matrix by Babylonian method. More...
 
Matrix< typename Promote< VarR, typeB >::type > PseudoSolve (const AbstractMatrixReadOnly< typeB > &B, INMOST_DATA_REAL_TYPE tol=0, int *ierr=NULL) const
 Solves the system of equations of the form A*X=B, with A and B matrices. More...
 
Matrix< VarR > ExtractSubMatrix (enumerator ibeg, enumerator iend, enumerator jbeg, enumerator jend) const
 Extract submatrix of a matrix. More...
 
ConstMatrixRepack< VarR > Repack (enumerator rows, enumerator cols) const
 Change representation of the matrix into matrix of another size. More...
 
ConstSubMatrix< VarR > operator() (enumerator first_row, enumerator last_row, enumerator first_col, enumerator last_col) const
 Extract submatrix of a matrix for in-place manipulation of elements. More...
 
ConstBlockOfMatrix< VarR > BlockOf (enumerator nrows, enumerator ncols, enumerator offset_row, enumerator offset_col) const
 Define matrix as a part of a matrix of larger size with in-place manipulation of elements. More...
 
MatrixDivCoef< VarR, typeB, typename Promote< VarR, typeB >::type > operator/ (const typeB &coef) const
 Divide the matrix by a coefficient of a different type. More...
 
MatrixDivShellCoef< VarR, shell_expression< A >, typename Promote< VarR, variable >::type > operator/ (shell_expression< A > const &coef) const
 Divide the matrix by a coefficient of a different type. More...
 
Matrix< typename Promote< VarR, typeB >::type > operator/ (const AbstractMatrixReadOnly< typeB > &other) const
 Performs B^{-1}*A, multiplication by inverse matrix from left. More...
 
ConstMatrixConcatCols< VarR > ConcatCols (const AbstractMatrixReadOnly< VarR > &B) const
 Concatenate B matrix as columns of current matrix. More...
 
ConstMatrixConcatCols2< VarR, VarB, typename Promote< VarR, VarB >::type > ConcatCols (const AbstractMatrixReadOnly< VarB > &B) const
 Concatenate B matrix as columns of current matrix. More...
 
ConstMatrixConcatRows< VarR > ConcatRows (const AbstractMatrixReadOnly< VarR > &B) const
 Concatenate B matrix as rows of current matrix. More...
 
ConstMatrixConcatRows2< VarR, VarB, typename Promote< VarR, VarB >::type > ConcatRows (const AbstractMatrixReadOnly< VarB > &B) const
 Concatenate B matrix as rows of current matrix. More...
 
virtual ~AbstractMatrixReadOnly ()
 Destructor.
 

Additional Inherited Members

- Static Protected Attributes inherited from INMOST::AbstractMatrixBase
static thread_private< Sparse::RowMergermerger
 

Detailed Description

template<typename VarA, typename VarB, typename VarR>
class INMOST::MatrixMul< VarA, VarB, VarR >

Definition at line 3153 of file inmost_dense.h.

Member Function Documentation

◆ Cols()

template<typename VarA , typename VarB , typename VarR >
__INLINE enumerator INMOST::MatrixMul< VarA, VarB, VarR >::Cols ( ) const
inlinevirtual

Number of columns.

Returns
Number of columns.

Implements INMOST::AbstractMatrixReadOnly< VarR >.

Definition at line 3176 of file inmost_dense.h.

◆ compute()

template<typename VarA , typename VarB , typename VarR >
__INLINE VarR INMOST::MatrixMul< VarA, VarB, VarR >::compute ( enumerator  i,
enumerator  j 
) const
inline

Access element of the matrix by row and column indices without right to change the element.

Parameters
iRow index.
jColumn index.
Returns
Reference to constant element.

Definition at line 3210 of file inmost_dense.h.

◆ get()

template<typename VarA , typename VarB , typename VarR >
__INLINE const VarR& INMOST::MatrixMul< VarA, VarB, VarR >::get ( enumerator  i,
enumerator  j 
) const
inline

Access element of the matrix by row and column indices without right to change the element.

Parameters
iRow index.
jColumn index.
Returns
Reference to constant element.

Definition at line 3221 of file inmost_dense.h.

◆ operator()()

template<typename VarA , typename VarB , typename VarR >
__INLINE VarR& INMOST::MatrixMul< VarA, VarB, VarR >::operator() ( enumerator  i,
enumerator  j 
)
inline

Access element of the matrix by row and column indices.

Parameters
iRow index.
jColumn index.
Returns
Reference to element.

Definition at line 3215 of file inmost_dense.h.

◆ Resize()

template<typename VarA , typename VarB , typename VarR >
void INMOST::MatrixMul< VarA, VarB, VarR >::Resize ( enumerator  rows,
enumerator  cols 
)
inline

This is a stub function to fulfill abstract inheritance.

BlockOfMatrix cannot change it's size, since it just points to a part of the larger empty matrix.

Definition at line 3165 of file inmost_dense.h.

◆ Rows()

template<typename VarA , typename VarB , typename VarR >
__INLINE enumerator INMOST::MatrixMul< VarA, VarB, VarR >::Rows ( ) const
inlinevirtual

Number of rows.

Returns
Number of rows.

Implements INMOST::AbstractMatrixReadOnly< VarR >.

Definition at line 3173 of file inmost_dense.h.


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