ROOT  6.07/01
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Functions
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.

Collaboration diagram for Matrix Template Functions:

Functions

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,
R
ROOT::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, R
ROOT::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 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,
R
ROOT::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, R
ROOT::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 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 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,
R
ROOT::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, R
ROOT::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< 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 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,
R
ROOT::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, R
ROOT::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 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 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...
 
template<class T , unsigned int D, class R >
T 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< Minus< T >
, SMatrix< T, D, D2, R >, T >
, T, D, D2, R
ROOT::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 R >
Expr< UnaryOp< Fabs< T >
, SMatrix< T, D, D2, R >, T >
, T, D, D2, R
ROOT::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 D, unsigned int D2, class R >
Expr< UnaryOp< Sqr< T >
, SMatrix< T, D, D2, R >, T >
, T, D, D2, R
ROOT::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, R
ROOT::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...
 

Function Documentation

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 
)
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 897 of file BinaryOperators.h.

Referenced by test21().

template<class T , unsigned int D, unsigned int D2, class R >
Expr<UnaryOp<Fabs<T>, SMatrix<T,D,D2,R>, 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 180 of file UnaryOperators.h.

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 
)
inline

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

Definition at line 219 of file MatrixFunctions.h.

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 
)
inline

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

Definition at line 394 of file MatrixFunctions.h.

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, 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 708 of file BinaryOperators.h.

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, 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 726 of file BinaryOperators.h.

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 
)
inline

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

Definition at line 176 of file BinaryOperators.h.

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, 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 230 of file BinaryOperators.h.

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, 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 247 of file BinaryOperators.h.

template<class T , unsigned int D, unsigned int D2, class R >
Expr<UnaryOp<Minus<T>, SMatrix<T,D,D2,R>, 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 105 of file UnaryOperators.h.

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 
)
inline

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

Definition at line 420 of file BinaryOperators.h.

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, 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 474 of file BinaryOperators.h.

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, 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 492 of file BinaryOperators.h.

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, 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 951 of file BinaryOperators.h.

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, 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 969 of file BinaryOperators.h.

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 671 of file MatrixFunctions.h.

Referenced by test4(), test_smatrix_sym_kalman(), and testInnerProd_S().

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 
)
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 744 of file MatrixFunctions.h.

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 
)
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 794 of file MatrixFunctions.h.

Referenced by test_smatrix_sym_kalman(), and testATBA_S2().

template<class T , unsigned int D, unsigned int D2, class R >
Expr<UnaryOp<Sqr<T>, SMatrix<T,D,D2,R>, 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 255 of file UnaryOperators.h.

template<class T , unsigned int D, unsigned int D2, class R >
Expr<UnaryOp<Sqrt<T>, SMatrix<T,D,D2,R>, 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 329 of file UnaryOperators.h.

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 
)
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 654 of file BinaryOperators.h.

Referenced by test21(), and test7().

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)
inline