CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
invertPosDefMatrix.h
Go to the documentation of this file.
1 #ifndef DataFormat_Math_invertPosDefMatrix_H
2 #define DataFormat_Math_invertPosDefMatrix_H
3 
4 #define SMATRIX_USE_CONSTEXPR
5 #include "Math/SMatrix.h"
6 #include "Math/CholeskyDecomp.h"
7 
8 template<typename T,unsigned int N>
9 inline bool invertPosDefMatrix(ROOT::Math::SMatrix<T,N,N,ROOT::Math::MatRepSym<T,N> > & m) {
10 
11  ROOT::Math::CholeskyDecomp<T,N> decomp(m);
12  if (!decomp) {
13  return m.Invert();
14  } else
15  decomp.Invert(m);
16  return true;
17 
18 }
19 
20 template<typename T,unsigned int N>
21 inline bool invertPosDefMatrix(ROOT::Math::SMatrix<T,N,N,ROOT::Math::MatRepSym<T,N> > const & mIn,
22  ROOT::Math::SMatrix<T,N,N,ROOT::Math::MatRepSym<T,N> > & mOut) {
23 
24  ROOT::Math::CholeskyDecomp<T,N> decomp(mIn);
25  if (!decomp) {
26  mOut=mIn;
27  return mOut.Invert();
28  } else
29  decomp.Invert(mOut);
30  return true;
31 
32 }
33 
34 #endif
bool invertPosDefMatrix(ROOT::Math::SMatrix< T, N, N, ROOT::Math::MatRepSym< T, N > > &m)
#define N
Definition: blowfish.cc:9
long double T