// @(#)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_LaProd #define ROOT_Minuit2_LaProd #include "Minuit2/ABProd.h" #include "Minuit2/LAVector.h" #include "Minuit2/LASymMatrix.h" namespace ROOT { namespace Minuit2 { /* LM" remove this for fixing alpha poblem #define OP_MULT1(MT1,MT2,MAT1,MAT2,T) \ template \ inline ABObj::Type,ABProd, ABObj >,T> operator*(const ABObj& a, const ABObj& b) { return ABObj::Type,ABProd, ABObj >,T>(ABProd, ABObj >(a, b)); } \ template \ inline ABObj::Type,ABProd, ABObj >,T> operator*(const ABObj& a, const ABObj& b) { \ return ABObj::Type,ABProd, ABObj >,T>(ABProd, ABObj >(a, b)); \ } \ \ */ #define OP_MULT1(MT1, MT2, MAT1, MAT2, T) \ inline ABObj::Type, ABProd, ABObj>, T> operator*( \ const ABObj &a, const ABObj &b) \ { \ return ABObj::Type, ABProd, ABObj>, T>( \ ABProd, ABObj>(a, b)); \ } OP_MULT1(sym, vec, LASymMatrix, LAVector, double) // OP_MULT1(sym,gen,LASymMatrix,LAGenMatrix,double) // OP_MULT1(sym,sym,LASymMatrix,LASymMatrix,double) // OP_MULT1(gen,vec,LAGenMatrix,LAVector,double) // OP_MULT1(gen,sym,LAGenMatrix,LASymMatrix,double) // OP_MULT1(gen,gen,LAGenMatrix,LAGenMatrix,double) } // namespace Minuit2 } // namespace ROOT #endif // ROOT_Minuit2_LaProd