// @(#)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 MA_LaOuterProd_H_ #define MA_LaOuterProd_H_ /** LAPACK Algebra specialize the Outer_product function for LAVector; */ #include "Minuit2/VectorOuterProduct.h" #include "Minuit2/ABSum.h" #include "Minuit2/LAVector.h" #include "Minuit2/LASymMatrix.h" namespace ROOT { namespace Minuit2 { inline ABObj, double>, double> Outer_product(const ABObj& obj) { // std::cout<<"ABObj, double>, double> Outer_product(const ABObj& obj)"<, double>, double>(VectorOuterProduct, double>(obj)); } // f*outer template inline ABObj, T>, T> operator*(T f, const ABObj, T>, T>& obj) { // std::cout<<"ABObj, T>, T> operator*(T f, const ABObj, T>, T>& obj)"<, T>, T>(obj.Obj(), obj.f()*f); } // outer/f template inline ABObj, T>, T> operator/(const ABObj, T>, T>& obj, T f) { // std::cout<<"ABObj, T>, T> operator/(const ABObj, T>, T>& obj, T f)"<, T>, T>(obj.Obj(), obj.f()/f); } // -outer template inline ABObj, T>, T> operator-(const ABObj, T>, T>& obj) { // std::cout<<"ABObj, T>, T> operator/(const ABObj, T>, T>& obj, T f)"<, T>, T>(obj.Obj(), T(-1.)*obj.f()); } void Outer_prod(LASymMatrix&, const LAVector&, double f = 1.); } // namespace Minuit2 } // namespace ROOT #endif //MA_LaOuterProd_H_