Logo ROOT  
Reference Guide
LaInverse.h
Go to the documentation of this file.
1 // @(#)root/minuit2:$Id$
2 // Authors: M. Winkler, F. James, L. Moneta, A. Zsenei 2003-2005
3 
4 /**********************************************************************
5  * *
6  * Copyright (c) 2005 LCG ROOT Math team, CERN/PH-SFT *
7  * *
8  **********************************************************************/
9 
10 #ifndef ROOT_Minuit2_LaInverse
11 #define ROOT_Minuit2_LaInverse
12 
13 
14 
15 
16 #include "Minuit2/MatrixInverse.h"
17 #include "Minuit2/LASymMatrix.h"
18 
19 namespace ROOT {
20 
21  namespace Minuit2 {
22 
23 
24 /// LAPACK Algebra functions
25 /// specialize the Invert function for LASymMatrix
26 
27 inline ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double> Inverse(const ABObj<sym, LASymMatrix, double>& obj) {
28  return ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double>(MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>(obj));
29 }
30 
31 template<class T>
32 inline ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double> operator*(T f, const ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double>& inv) {
33  return ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double>(inv.Obj(), f*inv.f());
34 }
35 
36 template<class T>
38  return ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double>(inv.Obj(), inv.f()/f);
39 }
40 
41 template<class T>
43  return ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double>(inv.Obj(), T(-1.)*inv.f());
44 }
45 
46 int Invert(LASymMatrix&);
47 
49 
50 /*
51 template<class M>
52 inline ABObj<sym, MatrixInverse<sym, ABObj<sym, M, double>, double>, double> Inverse(const ABObj<sym, M, double>& obj) {
53  return ABObj<sym, MatrixInverse<sym, ABObj<sym, M, double>, double>, double>(MatrixInverse<sym, ABObj<sym, M, double>, double>(obj));
54 }
55 
56 inline ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double> Inverse(const ABObj<sym, LASymMatrix, double>& obj) {
57  return ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double>(MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>(obj));
58 }
59 */
60 
61  } // namespace Minuit2
62 
63 } // namespace ROOT
64 
65 #endif // ROOT_Minuit2_LaInverse
ROOT::Minuit2::operator*
ABObj< mt, M, T > operator*(T f, const M &obj)
Definition: ABObj.h:148
ROOT::Minuit2::Invert
int Invert(LASymMatrix &)
Definition: LaInverse.cxx:30
f
#define f(i)
Definition: RSha256.hxx:122
sym
#define sym(otri1, otri2)
Definition: triangle.c:932
LASymMatrix.h
ROOT::Minuit2::ABObj
Definition: ABObj.h:29
ROOT::Minuit2::LASymMatrix
Class describing a symmetric matrix of size n.
Definition: LASymMatrix.h:59
inv
void inv(rsa_NUMBER *, rsa_NUMBER *, rsa_NUMBER *)
Definition: rsaaux.cxx:949
ROOT::Minuit2::MatrixInverse
Definition: MatrixInverse.h:30
ROOT::Minuit2::ABObj< sym, LASymMatrix, double >
Definition: ABObj.h:111
ROOT::Minuit2::operator-
ABObj< mt, M, T > operator-(const M &obj)
Definition: ABObj.h:160
ROOT::Minuit2::Invert_undef_sym
int Invert_undef_sym(LASymMatrix &)
ROOT::Minuit2::operator/
ABObj< mt, M, T > operator/(const M &obj, T f)
Definition: ABObj.h:154
MatrixInverse.h
ROOT::Minuit2::Inverse
ABObj< sym, MatrixInverse< sym, ABObj< sym, LASymMatrix, double >, double >, double > Inverse(const ABObj< sym, LASymMatrix, double > &obj)
LAPACK Algebra functions specialize the Invert function for LASymMatrix.
Definition: LaInverse.h:35
ROOT::Minuit2::sym
Definition: ABTypes.h:27
ROOT::Math::Chebyshev::T
double T(double x)
Definition: ChebyshevPol.h:52
ROOT
VSD Structures.
Definition: StringConv.hxx:21