ROOT logo
ROOT » MATH » MATRIX » TMatrixTCramerInv

namespace TMatrixTCramerInv


Encapsulate templates of Cramer Inversion routines.

The 4x4, 5x5 and 6x6 are adapted from routines written by
Mark Fischler and Steven Haywood as part of the CLHEP package

Although for sizes <= 6x6 the Cramer Inversion has a gain in speed
compared to factorization schemes (like LU) , one pays a price in
accuracy  .

For Example:
H * H^-1 = U, where H is a 5x5 Hilbert matrix
U is a 5x5 Unity matrix

LU    : |U_jk| < 10e-13 for  j!=k
Cramer: |U_jk| < 10e-7  for  j!=k

however Cramer algorithm is about 10 (!) times faster

Function Members (Methods)

Bool_tInv2x2(TMatrixT<float>& m, Double_t* determ)
Bool_tInv2x2(TMatrixT<double>& m, Double_t* determ)
Bool_tInv3x3(TMatrixT<float>& m, Double_t* determ)
Bool_tInv3x3(TMatrixT<double>& m, Double_t* determ)
Bool_tInv4x4(TMatrixT<float>& m, Double_t* determ)
Bool_tInv4x4(TMatrixT<double>& m, Double_t* determ)
Bool_tInv5x5(TMatrixT<float>& m, Double_t* determ)
Bool_tInv5x5(TMatrixT<double>& m, Double_t* determ)
Bool_tInv6x6(TMatrixT<float>& m, Double_t* determ)
Bool_tInv6x6(TMatrixT<double>& m, Double_t* determ)

Class Charts

Function documentation

Bool_t Inv2x2(TMatrixT<Element> &m,Double_t *determ)
Bool_t Inv3x3(TMatrixT<Element> &m,Double_t *determ)
Bool_t Inv4x4(TMatrixT<Element> &m,Double_t *determ)
Bool_t Inv5x5(TMatrixT<Element> &m,Double_t *determ)
Bool_t Inv6x6(TMatrixT<Element> &m,Double_t *determ)
template<class Element> Bool_t Inv2x2(TMatrixT<Element> &m,Double_t *determ)
template<class Element> Bool_t Inv3x3(TMatrixT<Element> &m,Double_t *determ)
template<class Element> Bool_t Inv4x4(TMatrixT<Element> &m,Double_t *determ)
template<class Element> Bool_t Inv5x5(TMatrixT<Element> &m,Double_t *determ)
template<class Element> Bool_t Inv6x6(TMatrixT<Element> &m,Double_t *determ)