Logo ROOT  
Reference Guide
LaProd.h
Go to the documentation of this file.
1 // @(#)root/minuit2:$Id$
2 // Authors: M. Winkler, F. James, L. Moneta, A. Zsenei 2003-2005
3 
4 /**********************************************************************
5  * *
6  * Copyright (c) 2005 LCG ROOT Math team, CERN/PH-SFT *
7  * *
8  **********************************************************************/
9 
10 #ifndef ROOT_Minuit2_LaProd
11 #define ROOT_Minuit2_LaProd
12 
13 #include "Minuit2/ABProd.h"
14 #include "Minuit2/LAVector.h"
15 #include "Minuit2/LASymMatrix.h"
16 
17 namespace ROOT {
18 
19 namespace Minuit2 {
20 
21 /*
22  LM" remove this for fixing alpha poblem
23 #define OP_MULT1(MT1,MT2,MAT1,MAT2,T) \
24 template<class B> \
25 inline ABObj<AlgebraicProdType<MT1,MT2>::Type,ABProd<ABObj<MT1,MAT1,T>, ABObj<MT2,B,T> >,T> operator*(const
26 ABObj<MT1,MAT1,T>& a, const ABObj<MT2,B,T>& b) { return ABObj<AlgebraicProdType<MT1,MT2>::Type,ABProd<ABObj<MT1,MAT1,T>,
27 ABObj<MT2,B,T> >,T>(ABProd<ABObj<MT1,MAT1,T>, ABObj<MT2,B,T> >(a, b)); } \
28 template<class A> \
29 inline ABObj<AlgebraicProdType<MT1,MT2>::Type,ABProd<ABObj<MT1,A,T>, ABObj<MT2,MAT2,T> >,T> operator*(const
30 ABObj<MT1,A,T>& a, const ABObj<MT2,MAT2,T>& b) { \
31  return ABObj<AlgebraicProdType<MT1,MT2>::Type,ABProd<ABObj<MT1,A,T>, ABObj<MT2,MAT2,T> >,T>(ABProd<ABObj<MT1,A,T>,
32 ABObj<MT2,MAT2,T> >(a, b)); \
33 } \
34  \
35 */
36 
37 #define OP_MULT1(MT1, MT2, MAT1, MAT2, T) \
38  inline ABObj<AlgebraicProdType<MT1, MT2>::Type, ABProd<ABObj<MT1, MAT1, T>, ABObj<MT2, MAT2, T>>, T> operator*( \
39  const ABObj<MT1, MAT1, T> &a, const ABObj<MT2, MAT2, T> &b) \
40  { \
41  return ABObj<AlgebraicProdType<MT1, MT2>::Type, ABProd<ABObj<MT1, MAT1, T>, ABObj<MT2, MAT2, T>>, T>( \
42  ABProd<ABObj<MT1, MAT1, T>, ABObj<MT2, MAT2, T>>(a, b)); \
43  }
44 
45 OP_MULT1(sym, vec, LASymMatrix, LAVector, double)
46 // OP_MULT1(sym,gen,LASymMatrix,LAGenMatrix,double)
47 // OP_MULT1(sym,sym,LASymMatrix,LASymMatrix,double)
48 // OP_MULT1(gen,vec,LAGenMatrix,LAVector,double)
49 // OP_MULT1(gen,sym,LAGenMatrix,LASymMatrix,double)
50 // OP_MULT1(gen,gen,LAGenMatrix,LAGenMatrix,double)
51 
52 } // namespace Minuit2
53 
54 } // namespace ROOT
55 
56 #endif // ROOT_Minuit2_LaProd
sym
#define sym(otri1, otri2)
Definition: triangle.c:933
LASymMatrix.h
ABProd.h
LAVector.h
vec
Definition: civetweb.c:2228
ROOT
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
Definition: EExecutionPolicy.hxx:4
OP_MULT1
#define OP_MULT1(MT1, MT2, MAT1, MAT2, T)
Definition: LaProd.h:37