10#ifndef ROOT_Minuit2_LaSum
11#define ROOT_Minuit2_LaSum
22#define OP_ADD1(MT,MAT1,T) \
23inline ABObj<MT,MAT1,T> operator-(const ABObj<MT,MAT1,T>& m) {\
24 return ABObj<MT,MAT1,T> (m.Obj(), T(-1.)*m.f());\
27inline ABObj<MT,ABSum<ABObj<MT,MAT1,T>, ABObj<MT,MAT1,T> >,T> operator+(const ABObj<MT,MAT1,T>& a, const ABObj<MT,MAT1,T>& b) { \
28 return ABObj<MT,ABSum<ABObj<MT,MAT1,T>, ABObj<MT,MAT1,T> >,T>(ABSum<ABObj<MT,MAT1,T>, ABObj<MT,MAT1,T> >(a, b)); \
30inline ABObj<MT,ABSum<ABObj<MT,MAT1,T>, ABObj<MT,MAT1,T> >,T> operator-(const ABObj<MT,MAT1,T>& a, const ABObj<MT,MAT1,T>& b) { \
31 return ABObj<MT,ABSum<ABObj<MT,MAT1,T>, ABObj<MT,MAT1,T> >,T>(ABSum<ABObj<MT,MAT1,T>, ABObj<MT,MAT1,T> >(a,ABObj<MT,MAT1,T> (b.Obj(),T(-1.)*b.f()))); \
37#define OP_SCALE(MT,MAT1,T) \
38inline ABObj<MT,MAT1,T> operator*(T f, const MAT1& obj) { \
39 return ABObj<MT,MAT1,T>(obj, f); \
45#define OP_SCALE1(MT,MAT1,T) \
46inline ABObj<MT,MAT1,T> operator/(const MAT1& obj, T f) { \
47 return ABObj<MT,MAT1,T>(obj, 1./f); \
53#define OP_MIN(MT,MAT1,T) \
54inline ABObj<MT,MAT1,T> operator-(const MAT1& obj) { \
55 return ABObj<MT,MAT1,T>(obj, T(-1.)); \
#define OP_MIN(MT, MAT1, T)
#define OP_ADD1(MT, MAT1, T)
#define OP_SCALE1(MT, MAT1, T)
#define OP_SCALE(MT, MAT1, T)
#define sym(otri1, otri2)