// @(#)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 #include "Minuit2/MatrixInverse.h" #include "Minuit2/LASymMatrix.h" namespace ROOT { namespace Minuit2 { /// LAPACK Algebra functions /// specialize the Invert function for LASymMatrix 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