// @(#)root/minuit2:$Id$ // Authors: M. Winkler, F. James, L. Moneta, A. Zsenei 2003-2005 /********************************************************************** * * * Copyright (c) 2005 LCG ROOT Math team, CERN/PH-SFT * * * **********************************************************************/ #ifndef ROOT_Minuit2_LaInverse #define ROOT_Minuit2_LaInverse /** LAPACK Algebra specialize the Invert function for LASymMatrix */ #include "Minuit2/MatrixInverse.h" #include "Minuit2/LASymMatrix.h" namespace ROOT { namespace Minuit2 { inline ABObj, double>, double> Inverse(const ABObj& obj) { return ABObj, double>, double>(MatrixInverse, double>(obj)); } template inline ABObj, double>, double> operator*(T f, const ABObj, double>, double>& inv) { return ABObj, double>, double>(inv.Obj(), f*inv.f()); } template inline ABObj, double>, double> operator/(const ABObj, double>, double>& inv, T f) { return ABObj, double>, double>(inv.Obj(), inv.f()/f); } template inline ABObj, double>, double> operator-(const ABObj, double>, double>& inv) { return ABObj, double>, double>(inv.Obj(), T(-1.)*inv.f()); } int Invert(LASymMatrix&); int Invert_undef_sym(LASymMatrix&); /* template inline ABObj, double>, double> Inverse(const ABObj& obj) { return ABObj, double>, double>(MatrixInverse, double>(obj)); } inline ABObj, double>, double> Inverse(const ABObj& obj) { return ABObj, double>, double>(MatrixInverse, double>(obj)); } */ } // namespace Minuit2 } // namespace ROOT #endif // ROOT_Minuit2_LaInverse