 ROOT   6.19/01 Reference Guide Matrix Template Functions

These function apply to matrices (and also Matrix expression) and can return a matrix expression of a particular defined type, like in the matrix multiplication or a vector, like in the matrix-vector product or a scalar like in the Similarity vector-matrix product.

Functions

template<class T , unsigned int D, unsigned int D2, class R1 , class R2 >
Expr< BinaryOp< DivOp< T >, SMatrix< T, D, D2, R1 >, SMatrix< T, D, D2, R2 >, T >, T, D, D2, typename AddPolicy< T, D, D2, R1, R2 >::RepType > ROOT::Math::Div (const SMatrix< T, D, D2, R1 > &lhs, const SMatrix< T, D, D2, R2 > &rhs)
Division (element wise) of two matrices of the same dimensions: C(i,j) = A(i,j) / B(i,j) returning a matrix expression. More...

template<class T , unsigned int D, unsigned int D2, class R >
Expr< UnaryOp< Fabs< T >, SMatrix< T, D, D2, R >, T >, T, D, D2, RROOT::Math::fabs (const SMatrix< T, D, D2, R > &rhs)
abs of a matrix m2(i,j) = | m1(i,j) | returning a matrix epression More...

template<class T , unsigned int D1, unsigned int D2, class R >
VecExpr< VectorMatrixRowOp< SMatrix< T, D1, D2, R >, SVector< T, D2 >, D2 >, T, D1 > ROOT::Math::operator* (const SMatrix< T, D1, D2, R > &lhs, const SVector< T, D2 > &rhs)
Matrix * Vector multiplication $$a(i) = \sum_{j} M(i,j) * b(j)$$ returning a vector expression. More...

template<class T , unsigned int D1, unsigned int D, unsigned int D2, class R1 , class R2 >
Expr< MatrixMulOp< SMatrix< T, D1, D, R1 >, SMatrix< T, D, D2, R2 >, T, D >, T, D1, D2, typename MultPolicy< T, R1, R2 >::RepType > ROOT::Math::operator* (const SMatrix< T, D1, D, R1 > &lhs, const SMatrix< T, D, D2, R2 > &rhs)
Matrix * Matrix multiplication , $$C(i,j) = \sum_{k} A(i,k) * B(k,j)$$ returning a matrix expression. More...

template<class A , class T , unsigned int D, unsigned int D2, class R >
Expr< BinaryOpCopyR< MulOp< T >, SMatrix< T, D, D2, R >, Constant< A >, T >, T, D, D2, RROOT::Math::operator* (const SMatrix< T, D, D2, R > &lhs, const A &rhs)
Multiplication (element wise) of a matrix and a scalar, B(i,j) = A(i,j) * s returning a matrix expression. More...

template<class A , class T , unsigned int D, unsigned int D2, class R >
Expr< BinaryOpCopyL< MulOp< T >, Constant< A >, SMatrix< T, D, D2, R >, T >, T, D, D2, RROOT::Math::operator* (const A &lhs, const SMatrix< T, D, D2, R > &rhs)
Multiplication (element wise) of a matrix and a scalar, B(i,j) = s * A(i,j) returning a matrix expression. More...

template<class T , unsigned int D, unsigned int D2, class R1 , class R2 >
Expr< BinaryOp< AddOp< T >, SMatrix< T, D, D2, R1 >, SMatrix< T, D, D2, R2 >, T >, T, D, D2, typename AddPolicy< T, D, D2, R1, R2 >::RepType > ROOT::Math::operator+ (const SMatrix< T, D, D2, R1 > &lhs, const SMatrix< T, D, D2, R2 > &rhs)
Addition of two matrices C = A+B returning a matrix expression. More...

template<class A , class T , unsigned int D, unsigned int D2, class R >
Expr< BinaryOpCopyR< AddOp< T >, SMatrix< T, D, D2, R >, Constant< A >, T >, T, D, D2, RROOT::Math::operator+ (const SMatrix< T, D, D2, R > &lhs, const A &rhs)
Addition element by element of matrix and a scalar C(i,j) = A(i,j) + s returning a matrix expression. More...

template<class A , class T , unsigned int D, unsigned int D2, class R >
Expr< BinaryOpCopyL< AddOp< T >, Constant< A >, SMatrix< T, D, D2, R >, T >, T, D, D2, RROOT::Math::operator+ (const A &lhs, const SMatrix< T, D, D2, R > &rhs)
Addition element by element of matrix and a scalar C(i,j) = s + A(i,j) returning a matrix expression. More...

template<class T , unsigned int D, unsigned int D2, class R >
Expr< UnaryOp< Minus< T >, SMatrix< T, D, D2, R >, T >, T, D, D2, RROOT::Math::operator- (const SMatrix< T, D, D2, R > &rhs)
Unary - operator B = - A returning a matrix expression. More...

template<class T , unsigned int D, unsigned int D2, class R1 , class R2 >
Expr< BinaryOp< MinOp< T >, SMatrix< T, D, D2, R1 >, SMatrix< T, D, D2, R2 >, T >, T, D, D2, typename AddPolicy< T, D, D2, R1, R2 >::RepType > ROOT::Math::operator- (const SMatrix< T, D, D2, R1 > &lhs, const SMatrix< T, D, D2, R2 > &rhs)
Subtraction of two matrices C = A-B returning a matrix expression. More...

template<class A , class T , unsigned int D, unsigned int D2, class R >
Expr< BinaryOpCopyR< MinOp< T >, SMatrix< T, D, D2, R >, Constant< A >, T >, T, D, D2, RROOT::Math::operator- (const SMatrix< T, D, D2, R > &lhs, const A &rhs)
Subtraction of a scalar and a matrix (element wise) B(i,j) = A(i,j) - s returning a matrix expression. More...

template<class A , class T , unsigned int D, unsigned int D2, class R >
Expr< BinaryOpCopyL< MinOp< T >, Constant< A >, SMatrix< T, D, D2, R >, T >, T, D, D2, RROOT::Math::operator- (const A &lhs, const SMatrix< T, D, D2, R > &rhs)
Subtraction of a scalar and a matrix (element wise) B(i,j) = s - A(i,j) returning a matrix expression. More...

template<class A , class T , unsigned int D, unsigned int D2, class R >
Expr< BinaryOpCopyR< DivOp< T >, SMatrix< T, D, D2, R >, Constant< A >, T >, T, D, D2, RROOT::Math::operator/ (const SMatrix< T, D, D2, R > &lhs, const A &rhs)
Division (element wise) of a matrix and a scalar, B(i,j) = A(i,j) / s returning a matrix expression. More...

template<class A , class T , unsigned int D, unsigned int D2, class R >
Expr< BinaryOpCopyL< DivOp< T >, Constant< A >, SMatrix< T, D, D2, R >, T >, T, D, D2, RROOT::Math::operator/ (const A &lhs, const SMatrix< T, D, D2, R > &rhs)
Division (element wise) of a matrix and a scalar, B(i,j) = s / A(i,j) returning a matrix expression. More...

template<class T , unsigned int D, class R >
ROOT::Math::Similarity (const SMatrix< T, D, D, R > &lhs, const SVector< T, D > &rhs)
Similarity Vector - Matrix Product: v^T * A * v returning a scalar value of type T $$s = \sum_{i,j} v(i) * A(i,j) * v(j)$$. More...

template<class T , unsigned int D1, unsigned int D2, class R >
SMatrix< T, D1, D1, MatRepSym< T, D1 > > ROOT::Math::Similarity (const SMatrix< T, D1, D2, R > &lhs, const SMatrix< T, D2, D2, MatRepSym< T, D2 > > &rhs)
Similarity Matrix Product : B = U * A * U^T for A symmetric returning a symmetric matrix expression: $$B(i,j) = \sum_{k,l} U(i,k) * A(k,l) * U(j,l)$$. More...

template<class T , unsigned int D1, unsigned int D2, class R >
SMatrix< T, D2, D2, MatRepSym< T, D2 > > ROOT::Math::SimilarityT (const SMatrix< T, D1, D2, R > &lhs, const SMatrix< T, D1, D1, MatRepSym< T, D1 > > &rhs)
Transpose Similarity Matrix Product : B = U^T * A * U for A symmetric returning a symmetric matrix expression: $$B(i,j) = \sum_{k,l} U(k,i) * A(k,l) * U(l,j)$$. More...

template<class T , unsigned int D, unsigned int D2, class R >
Expr< UnaryOp< Sqr< T >, SMatrix< T, D, D2, R >, T >, T, D, D2, RROOT::Math::sqr (const SMatrix< T, D, D2, R > &rhs)
square of a matrix B(i,j) = A(i,j)*A(i,j) returning a matrix expression More...

template<class T , unsigned int D, unsigned int D2, class R >
Expr< UnaryOp< Sqrt< T >, SMatrix< T, D, D2, R >, T >, T, D, D2, RROOT::Math::sqrt (const SMatrix< T, D, D2, R > &rhs)
square root of a matrix (element by element) m2(i,j) = sqrt ( m1(i,j) ) returning a matrix expression More...

template<class T , unsigned int D, unsigned int D2, class R1 , class R2 >
Expr< BinaryOp< MulOp< T >, SMatrix< T, D, D2, R1 >, SMatrix< T, D, D2, R2 >, T >, T, D, D2, typename AddPolicy< T, D, D2, R1, R2 >::RepType > ROOT::Math::Times (const SMatrix< T, D, D2, R1 > &lhs, const SMatrix< T, D, D2, R2 > &rhs)
Element by element matrix multiplication C(i,j) = A(i,j)*B(i,j) returning a matrix expression. More...

template<class T , unsigned int D1, unsigned int D2, class R >
Expr< TransposeOp< SMatrix< T, D1, D2, R >, T, D1, D2 >, T, D2, D1, typename TranspPolicy< T, D1, D2, R >::RepType > ROOT::Math::Transpose (const SMatrix< T, D1, D2, R > &rhs)
Matrix Transpose B(i,j) = A(j,i) returning a matrix expression. More...

◆ Div()

template<class T , unsigned int D, unsigned int D2, class R1 , class R2 >
 Expr, SMatrix, SMatrix, T>, T, D, D2, typename AddPolicy::RepType> ROOT::Math::Div ( const SMatrix< T, D, D2, R1 > & lhs, const SMatrix< T, D, D2, R2 > & rhs )
inline

Division (element wise) of two matrices of the same dimensions: C(i,j) = A(i,j) / B(i,j) returning a matrix expression.

Definition at line 895 of file BinaryOperators.h.

◆ fabs()

template<class T , unsigned int D, unsigned int D2, class R >
 Expr, SMatrix, T>, T, D, D2, R> ROOT::Math::fabs ( const SMatrix< T, D, D2, R > & rhs )
inline

abs of a matrix m2(i,j) = | m1(i,j) | returning a matrix epression

Definition at line 178 of file UnaryOperators.h.

◆ operator*() [1/4]

template<class T , unsigned int D1, unsigned int D2, class R >
 VecExpr,SVector, D2>, T, D1> ROOT::Math::operator* ( const SMatrix< T, D1, D2, R > & lhs, const SVector< T, D2 > & rhs )
inline

Matrix * Vector multiplication $$a(i) = \sum_{j} M(i,j) * b(j)$$ returning a vector expression.

Definition at line 211 of file MatrixFunctions.h.

◆ operator*() [2/4]

template<class T , unsigned int D1, unsigned int D, unsigned int D2, class R1 , class R2 >
 Expr, SMatrix,T,D>, T, D1, D2, typename MultPolicy::RepType> ROOT::Math::operator* ( const SMatrix< T, D1, D, R1 > & lhs, const SMatrix< T, D, D2, R2 > & rhs )
inline

Matrix * Matrix multiplication , $$C(i,j) = \sum_{k} A(i,k) * B(k,j)$$ returning a matrix expression.

Definition at line 386 of file MatrixFunctions.h.

◆ operator*() [3/4]

template<class A , class T , unsigned int D, unsigned int D2, class R >
 Expr, SMatrix, Constant, T>, T, D, D2, R> ROOT::Math::operator* ( const SMatrix< T, D, D2, R > & lhs, const A & rhs )
inline

Multiplication (element wise) of a matrix and a scalar, B(i,j) = A(i,j) * s returning a matrix expression.

Definition at line 706 of file BinaryOperators.h.

◆ operator*() [4/4]

template<class A , class T , unsigned int D, unsigned int D2, class R >
 Expr, Constant, SMatrix, T>, T, D, D2, R> ROOT::Math::operator* ( const A & lhs, const SMatrix< T, D, D2, R > & rhs )
inline

Multiplication (element wise) of a matrix and a scalar, B(i,j) = s * A(i,j) returning a matrix expression.

Definition at line 724 of file BinaryOperators.h.

◆ operator+() [1/3]

template<class T , unsigned int D, unsigned int D2, class R1 , class R2 >
 Expr, SMatrix, SMatrix, T>, T, D, D2, typename AddPolicy::RepType > ROOT::Math::operator+ ( const SMatrix< T, D, D2, R1 > & lhs, const SMatrix< T, D, D2, R2 > & rhs )
inline

Addition of two matrices C = A+B returning a matrix expression.

Definition at line 174 of file BinaryOperators.h.

◆ operator+() [2/3]

template<class A , class T , unsigned int D, unsigned int D2, class R >
 Expr, SMatrix, Constant, T>, T, D, D2, R> ROOT::Math::operator+ ( const SMatrix< T, D, D2, R > & lhs, const A & rhs )
inline

Addition element by element of matrix and a scalar C(i,j) = A(i,j) + s returning a matrix expression.

Definition at line 228 of file BinaryOperators.h.

◆ operator+() [3/3]

template<class A , class T , unsigned int D, unsigned int D2, class R >
 Expr, Constant, SMatrix, T>, T, D, D2, R> ROOT::Math::operator+ ( const A & lhs, const SMatrix< T, D, D2, R > & rhs )
inline

Addition element by element of matrix and a scalar C(i,j) = s + A(i,j) returning a matrix expression.

Definition at line 245 of file BinaryOperators.h.

◆ operator-() [1/4]

template<class T , unsigned int D, unsigned int D2, class R >
 Expr, SMatrix, T>, T, D, D2,R> ROOT::Math::operator- ( const SMatrix< T, D, D2, R > & rhs )
inline

Unary - operator B = - A returning a matrix expression.

Definition at line 103 of file UnaryOperators.h.

◆ operator-() [2/4]

template<class T , unsigned int D, unsigned int D2, class R1 , class R2 >
 Expr, SMatrix, SMatrix, T>, T, D, D2, typename AddPolicy::RepType> ROOT::Math::operator- ( const SMatrix< T, D, D2, R1 > & lhs, const SMatrix< T, D, D2, R2 > & rhs )
inline

Subtraction of two matrices C = A-B returning a matrix expression.

Definition at line 418 of file BinaryOperators.h.

◆ operator-() [3/4]

template<class A , class T , unsigned int D, unsigned int D2, class R >
 Expr, SMatrix, Constant, T>, T, D, D2, R> ROOT::Math::operator- ( const SMatrix< T, D, D2, R > & lhs, const A & rhs )
inline

Subtraction of a scalar and a matrix (element wise) B(i,j) = A(i,j) - s returning a matrix expression.

Definition at line 472 of file BinaryOperators.h.

◆ operator-() [4/4]

template<class A , class T , unsigned int D, unsigned int D2, class R >
 Expr, Constant, SMatrix, T>, T, D, D2, R> ROOT::Math::operator- ( const A & lhs, const SMatrix< T, D, D2, R > & rhs )
inline

Subtraction of a scalar and a matrix (element wise) B(i,j) = s - A(i,j) returning a matrix expression.

Definition at line 490 of file BinaryOperators.h.

◆ operator/() [1/2]

template<class A , class T , unsigned int D, unsigned int D2, class R >
 Expr, SMatrix, Constant, T>, T, D, D2, R> ROOT::Math::operator/ ( const SMatrix< T, D, D2, R > & lhs, const A & rhs )
inline

Division (element wise) of a matrix and a scalar, B(i,j) = A(i,j) / s returning a matrix expression.

Definition at line 949 of file BinaryOperators.h.

◆ operator/() [2/2]

template<class A , class T , unsigned int D, unsigned int D2, class R >
 Expr, Constant, SMatrix, T>, T, D, D2, R> ROOT::Math::operator/ ( const A & lhs, const SMatrix< T, D, D2, R > & rhs )
inline

Division (element wise) of a matrix and a scalar, B(i,j) = s / A(i,j) returning a matrix expression.

Definition at line 967 of file BinaryOperators.h.

◆ Similarity() [1/2]

template<class T , unsigned int D, class R >
 T ROOT::Math::Similarity ( const SMatrix< T, D, D, R > & lhs, const SVector< T, D > & rhs )
inline

Similarity Vector - Matrix Product: v^T * A * v returning a scalar value of type T $$s = \sum_{i,j} v(i) * A(i,j) * v(j)$$.

Definition at line 663 of file MatrixFunctions.h.

◆ Similarity() [2/2]

template<class T , unsigned int D1, unsigned int D2, class R >
 SMatrix > ROOT::Math::Similarity ( const SMatrix< T, D1, D2, R > & lhs, const SMatrix< T, D2, D2, MatRepSym< T, D2 > > & rhs )
inline

Similarity Matrix Product : B = U * A * U^T for A symmetric returning a symmetric matrix expression: $$B(i,j) = \sum_{k,l} U(i,k) * A(k,l) * U(j,l)$$.

Definition at line 736 of file MatrixFunctions.h.

◆ SimilarityT()

template<class T , unsigned int D1, unsigned int D2, class R >
 SMatrix > ROOT::Math::SimilarityT ( const SMatrix< T, D1, D2, R > & lhs, const SMatrix< T, D1, D1, MatRepSym< T, D1 > > & rhs )
inline

Transpose Similarity Matrix Product : B = U^T * A * U for A symmetric returning a symmetric matrix expression: $$B(i,j) = \sum_{k,l} U(k,i) * A(k,l) * U(l,j)$$.

Definition at line 786 of file MatrixFunctions.h.

◆ sqr()

template<class T , unsigned int D, unsigned int D2, class R >
 Expr, SMatrix, T>, T, D, D2, R> ROOT::Math::sqr ( const SMatrix< T, D, D2, R > & rhs )
inline

square of a matrix B(i,j) = A(i,j)*A(i,j) returning a matrix expression

Definition at line 253 of file UnaryOperators.h.

◆ sqrt()

template<class T , unsigned int D, unsigned int D2, class R >
 Expr, SMatrix, T>, T, D, D2, R> ROOT::Math::sqrt ( const SMatrix< T, D, D2, R > & rhs )
inline

square root of a matrix (element by element) m2(i,j) = sqrt ( m1(i,j) ) returning a matrix expression

Definition at line 327 of file UnaryOperators.h.

◆ Times()

template<class T , unsigned int D, unsigned int D2, class R1 , class R2 >
 Expr, SMatrix, SMatrix, T>, T, D, D2, typename AddPolicy::RepType> ROOT::Math::Times ( const SMatrix< T, D, D2, R1 > & lhs, const SMatrix< T, D, D2, R2 > & rhs )
inline

Element by element matrix multiplication C(i,j) = A(i,j)*B(i,j) returning a matrix expression.

This is not a matrix-matrix multiplication and works only for matrices of the same dimensions.

Definition at line 652 of file BinaryOperators.h.

◆ Transpose()

template<class T , unsigned int D1, unsigned int D2, class R >
 Expr,T,D1,D2>, T, D2, D1, typename TranspPolicy::RepType> ROOT::Math::Transpose ( const SMatrix< T, D1, D2, R > & rhs )
inline

Matrix Transpose B(i,j) = A(j,i) returning a matrix expression.

Definition at line 538 of file MatrixFunctions.h.