herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
clooptools.h
1 /* -*- C++ -*-
2  clooptools.h
3  the C/C++ header file with all definitions for LoopTools
4  this file is part of LoopTools
5  last modified 2 Sep 14 th
6  dgrell 2011-01-21 for Herwig: moved definitions and extern declarations to our clooptools.cc
7  dgrell 2016-09-08 for Herwig: update to Looptols-2.13
8 */
9 
10 
11 #ifndef HERWIG_clooptools_h_
12 #define HERWIG_clooptools_h_
13 
14 #include <complex>
15 
16 /****************************************************************/
17 
18 // Adapted version of ftypes.h
19 
20 
21 typedef double RealType;
22 typedef double REAL;
23 
24 typedef int INTEGER;
25 typedef const REAL CREAL;
26 
27 struct COMPLEX { REAL re, im; };
28 typedef const COMPLEX CCOMPLEX;
29 
30 typedef std::complex<RealType> ComplexType;
31 
32 typedef const RealType cRealType;
33 typedef const ComplexType cComplexType;
34 
35 //#define cachelookup_ ljcachelookup_
36 
37 // typedef const COMPLEX CCOMPLEX;
38 
39 typedef long long int memindex;
40 
41 /****************************************************************/
42 
43 #define AARGS(t) t(m)
44 
45 #define BARGS(t) t(p), t(m1), t(m2)
46 
47 #define CARGS(t) t(p1), t(p2), t(p1p2), t(m1), t(m2), t(m3)
48 
49 #define DARGS(t) t(p1), t(p2), t(p3), t(p4), t(p1p2), t(p2p3), \
50  t(m1), t(m2), t(m3), t(m4)
51 
52 #define EARGS(t) t(p1), t(p2), t(p3), t(p4), t(p5), \
53  t(p1p2), t(p2p3), t(p3p4), t(p4p5), t(p5p1), \
54  t(m1), t(m2), t(m3), t(m4), t(m5)
55 
56 /****************************************************************/
57 
58 #define _lt_Cr_(v) cRealType v
59 #define _lt_Cc_(v) cComplexType v
60 #define _lt_Fr_(v) CREAL *v
61 #define _lt_Fc_(v) CCOMPLEX *v
62 #define _lt_Id_(v) v
63 #define _lt_Frp_(v) &v
64 #define _lt_Fcp_(v) (CCOMPLEX *)&v
65 #define _lt_Fap_(v) (COMPLEX *)v
66 
67 // #define _lt_Frd_(f)
68 // #define _lt_Fcd_(f)
69 // #define _lt_Fad_(v,n)
70 // #define _lt_Fax_(v,n)
71 
72 /****************************************************************/
73 
74 namespace Herwig {
75  namespace Looptools {
76 
77  enum {
78  aa0 = 0,
79  aa00 = 3,
80  Naa = 6
81  };
82 
83  enum {
84  bb0 = 0,
85  bb1 = 3,
86  bb00 = 6,
87  bb11 = 9,
88  bb001 = 12,
89  bb111 = 15,
90  dbb0 = 18,
91  dbb1 = 21,
92  dbb00 = 24,
93  dbb11 = 27,
94  dbb001 = 30,
95  Nbb = 33
96  };
97 
98  enum {
99  cc0 = 0,
100  cc1 = 3,
101  cc2 = 6,
102  cc00 = 9,
103  cc11 = 12,
104  cc12 = 15,
105  cc22 = 18,
106  cc001 = 21,
107  cc002 = 24,
108  cc111 = 27,
109  cc112 = 30,
110  cc122 = 33,
111  cc222 = 36,
112  cc0000 = 39,
113  cc0011 = 42,
114  cc0012 = 45,
115  cc0022 = 48,
116  cc1111 = 51,
117  cc1112 = 54,
118  cc1122 = 57,
119  cc1222 = 60,
120  cc2222 = 63,
121  Ncc = 66
122  };
123 
124  enum {
125  dd0 = 0,
126  dd1 = 3,
127  dd2 = 6,
128  dd3 = 9,
129  dd00 = 12,
130  dd11 = 15,
131  dd12 = 18,
132  dd13 = 21,
133  dd22 = 24,
134  dd23 = 27,
135  dd33 = 30,
136  dd001 = 33,
137  dd002 = 36,
138  dd003 = 39,
139  dd111 = 42,
140  dd112 = 45,
141  dd113 = 48,
142  dd122 = 51,
143  dd123 = 54,
144  dd133 = 57,
145  dd222 = 60,
146  dd223 = 63,
147  dd233 = 66,
148  dd333 = 69,
149  dd0000 = 72,
150  dd0011 = 75,
151  dd0012 = 78,
152  dd0013 = 81,
153  dd0022 = 84,
154  dd0023 = 87,
155  dd0033 = 90,
156  dd1111 = 93,
157  dd1112 = 96,
158  dd1113 = 99,
159  dd1122 = 102,
160  dd1123 = 105,
161  dd1133 = 108,
162  dd1222 = 111,
163  dd1223 = 114,
164  dd1233 = 117,
165  dd1333 = 120,
166  dd2222 = 123,
167  dd2223 = 126,
168  dd2233 = 129,
169  dd2333 = 132,
170  dd3333 = 135,
171  dd00001 = 138,
172  dd00002 = 141,
173  dd00003 = 144,
174  dd00111 = 147,
175  dd00112 = 150,
176  dd00113 = 153,
177  dd00122 = 156,
178  dd00123 = 159,
179  dd00133 = 162,
180  dd00222 = 165,
181  dd00223 = 168,
182  dd00233 = 171,
183  dd00333 = 174,
184  dd11111 = 177,
185  dd11112 = 180,
186  dd11113 = 183,
187  dd11122 = 186,
188  dd11123 = 189,
189  dd11133 = 192,
190  dd11222 = 195,
191  dd11223 = 198,
192  dd11233 = 201,
193  dd11333 = 204,
194  dd12222 = 207,
195  dd12223 = 210,
196  dd12233 = 213,
197  dd12333 = 216,
198  dd13333 = 219,
199  dd22222 = 222,
200  dd22223 = 225,
201  dd22233 = 228,
202  dd22333 = 231,
203  dd23333 = 234,
204  dd33333 = 237,
205  Ndd = 240
206  };
207 
208  enum {
209  ee0 = 0,
210  ee1 = 3,
211  ee2 = 6,
212  ee3 = 9,
213  ee4 = 12,
214  ee00 = 15,
215  ee11 = 18,
216  ee12 = 21,
217  ee13 = 24,
218  ee14 = 27,
219  ee22 = 30,
220  ee23 = 33,
221  ee24 = 36,
222  ee33 = 39,
223  ee34 = 42,
224  ee44 = 45,
225  ee001 = 48,
226  ee002 = 51,
227  ee003 = 54,
228  ee004 = 57,
229  ee111 = 60,
230  ee112 = 63,
231  ee113 = 66,
232  ee114 = 69,
233  ee122 = 72,
234  ee123 = 75,
235  ee124 = 78,
236  ee133 = 81,
237  ee134 = 84,
238  ee144 = 87,
239  ee222 = 90,
240  ee223 = 93,
241  ee224 = 96,
242  ee233 = 99,
243  ee234 = 102,
244  ee244 = 105,
245  ee333 = 108,
246  ee334 = 111,
247  ee344 = 114,
248  ee444 = 117,
249  ee0000 = 120,
250  ee0011 = 123,
251  ee0012 = 126,
252  ee0013 = 129,
253  ee0014 = 132,
254  ee0022 = 135,
255  ee0023 = 138,
256  ee0024 = 141,
257  ee0033 = 144,
258  ee0034 = 147,
259  ee0044 = 150,
260  ee1111 = 153,
261  ee1112 = 156,
262  ee1113 = 159,
263  ee1114 = 162,
264  ee1122 = 165,
265  ee1123 = 168,
266  ee1124 = 171,
267  ee1133 = 174,
268  ee1134 = 177,
269  ee1144 = 180,
270  ee1222 = 183,
271  ee1223 = 186,
272  ee1224 = 189,
273  ee1233 = 192,
274  ee1234 = 195,
275  ee1244 = 198,
276  ee1333 = 201,
277  ee1334 = 204,
278  ee1344 = 207,
279  ee1444 = 210,
280  ee2222 = 213,
281  ee2223 = 216,
282  ee2224 = 219,
283  ee2233 = 222,
284  ee2234 = 225,
285  ee2244 = 228,
286  ee2333 = 231,
287  ee2334 = 234,
288  ee2344 = 237,
289  ee2444 = 240,
290  ee3333 = 243,
291  ee3334 = 246,
292  ee3344 = 249,
293  ee3444 = 252,
294  ee4444 = 255,
295  Nee = 258
296  };
297 
298  enum {
299  KeyA0 = 1,
300  KeyBget = 1<<2,
301  KeyC0 = 1<<4,
302  KeyD0 = 1<<6,
303  KeyE0 = 1<<8,
304  KeyEget = 1<<10,
305  KeyEgetC = 1<<12,
306  KeyAll = KeyA0 + KeyBget + KeyC0 + KeyD0 + KeyE0 + KeyEget + KeyEgetC
307  };
308 
309  enum {
310  DebugA = 1,
311  DebugB = 1<<1,
312  DebugC = 1<<2,
313  DebugD = 1<<3,
314  DebugE = 1<<4,
315  DebugAll = DebugA + DebugB + DebugC + DebugD + DebugE
316  };
317 
318  ComplexType ToComplex(COMPLEX c);
319 
323  void ltini(std::string logfilename = std::string("Looptools.log"));
324 
328  void ltexi(std::string logfilename = std::string("Looptools.log"));
329 
330  /****************************************************************/
331 
332  memindex Aget(AARGS(_lt_Cr_));
333  memindex AgetC(AARGS(_lt_Cc_));
334 
335  void Aput(ComplexType *res, AARGS(_lt_Cr_));
336  void AputC(ComplexType *res, AARGS(_lt_Cc_));
337 
338  void Aputnocache(ComplexType *res, AARGS(_lt_Cr_));
339  void AputnocacheC(ComplexType *res, AARGS(_lt_Cc_));
340 
341  COMPLEX *Acache(const memindex integral);
342  COMPLEX *AcacheC(const memindex integral);
343 
344  ComplexType Aval(const int i, const memindex integral);
345  ComplexType AvalC(const int i, const memindex integral);
346 
347  ComplexType A0i(const int i, AARGS(_lt_Cr_));
348  ComplexType A0iC(const int i, AARGS(_lt_Cc_));
349 
350  ComplexType A0(AARGS(_lt_Cr_));
351  ComplexType A00(AARGS(_lt_Cr_));
352 
353  ComplexType A0C(AARGS(_lt_Cc_));
354  ComplexType A00C(AARGS(_lt_Cc_));
355 
356  /****************************************************************/
357 
358  memindex Bget(BARGS(_lt_Cr_));
359  memindex BgetC(BARGS(_lt_Cc_));
360 
361  void Bput(ComplexType *res, BARGS(_lt_Cr_));
362  void BputC(ComplexType *res, BARGS(_lt_Cc_));
363 
364  void Bputnocache(ComplexType *res, BARGS(_lt_Cr_));
365  void BputnocacheC(ComplexType *res, BARGS(_lt_Cc_));
366 
367  COMPLEX *Bcache(const memindex integral);
368  COMPLEX *BcacheC(const memindex integral);
369 
370  ComplexType Bval(const int i, const memindex integral);
371  ComplexType BvalC(const int i, const memindex integral);
372 
373  ComplexType B0i(const int i, BARGS(_lt_Cr_));
374  ComplexType B0iC(const int i, BARGS(_lt_Cc_));
375 
376  ComplexType B0(BARGS(_lt_Cr_));
377  ComplexType B1(BARGS(_lt_Cr_));
378  ComplexType B00(BARGS(_lt_Cr_));
379  ComplexType B11(BARGS(_lt_Cr_));
380  ComplexType B001(BARGS(_lt_Cr_));
381  ComplexType B111(BARGS(_lt_Cr_));
382  ComplexType DB0(BARGS(_lt_Cr_));
383  ComplexType DB1(BARGS(_lt_Cr_));
384  ComplexType DB00(BARGS(_lt_Cr_));
385  ComplexType DB11(BARGS(_lt_Cr_));
386 
387  ComplexType B0C(BARGS(_lt_Cc_));
388  ComplexType B1C(BARGS(_lt_Cc_));
389  ComplexType B00C(BARGS(_lt_Cc_));
390  ComplexType B11C(BARGS(_lt_Cc_));
391  ComplexType B001C(BARGS(_lt_Cc_));
392  ComplexType B111C(BARGS(_lt_Cc_));
393  ComplexType DB0C(BARGS(_lt_Cc_));
394  ComplexType DB1C(BARGS(_lt_Cc_));
395  ComplexType DB00C(BARGS(_lt_Cc_));
396  ComplexType DB11C(BARGS(_lt_Cc_));
397 
398  /****************************************************************/
399 
400  memindex Cget(CARGS(_lt_Cr_));
401  memindex CgetC(CARGS(_lt_Cc_));
402 
403  void Cput(ComplexType *res, CARGS(_lt_Cr_));
404  void CputC(ComplexType *res, CARGS(_lt_Cc_));
405 
406  void C0nocache(ComplexType *res, CARGS(_lt_Cr_));
407  void C0nocacheC(ComplexType *res, CARGS(_lt_Cc_));
408 
409  COMPLEX *Ccache(const memindex integral);
410  COMPLEX *CcacheC(const memindex integral);
411 
412  ComplexType Cval(const int i, const memindex integral);
413  ComplexType CvalC(const int i, const memindex integral);
414 
415  ComplexType C0i(const int i, CARGS(_lt_Cr_));
416  ComplexType C0iC(const int i, CARGS(_lt_Cc_));
417 
418  ComplexType C0(CARGS(_lt_Cr_));
419  ComplexType C0C(CARGS(_lt_Cc_));
420 
421  /****************************************************************/
422 
423  memindex Dget(DARGS(_lt_Cr_));
424  memindex DgetC(DARGS(_lt_Cc_));
425 
426  void Dput(ComplexType *res, DARGS(_lt_Cr_));
427  void DputC(ComplexType *res, DARGS(_lt_Cc_));
428 
429  void D0nocache(ComplexType *res, DARGS(_lt_Cr_));
430  void D0nocacheC(ComplexType *res, DARGS(_lt_Cc_));
431 
432  COMPLEX *Dcache(const memindex integral);
433  COMPLEX *DcacheC(const memindex integral);
434 
435  ComplexType Dval(const int i, const memindex integral);
436  ComplexType DvalC(const int i, const memindex integral);
437 
438  ComplexType D0i(const int i, DARGS(_lt_Cr_));
439  ComplexType D0iC(const int i, DARGS(_lt_Cc_));
440 
441  ComplexType D0(DARGS(_lt_Cr_));
442  ComplexType D0C(DARGS(_lt_Cc_));
443 
444  /****************************************************************/
445 
446  memindex Eget(EARGS(_lt_Cr_));
447  memindex EgetC(EARGS(_lt_Cc_));
448 
449  void Eput(ComplexType *res, EARGS(_lt_Cr_));
450  void EputC(ComplexType *res, EARGS(_lt_Cc_));
451 
452  void E0nocache(ComplexType *res, EARGS(_lt_Cr_));
453  void E0nocacheC(ComplexType *res, EARGS(_lt_Cc_));
454 
455  COMPLEX *Ecache(const memindex integral);
456  COMPLEX *EcacheC(const memindex integral);
457 
458  ComplexType Eval(const int i, const memindex integral);
459  ComplexType EvalC(const int i, const memindex integral);
460 
461  ComplexType E0i(const int i, EARGS(_lt_Cr_));
462  ComplexType E0iC(const int i, EARGS(_lt_Cc_));
463 
464  ComplexType E0(EARGS(_lt_Cr_));
465  ComplexType E0C(EARGS(_lt_Cc_));
466 
467  /****************************************************************/
468 
469  ComplexType Li2(_lt_Cr_(x));
470  ComplexType Li2C(_lt_Cc_(x));
471  ComplexType Li2omx(_lt_Cr_(x));
472  ComplexType Li2omxC(_lt_Cc_(x));
473 
474  /****************************************************************/
475 
476  void clearcache();
477  void markcache();
478  void restorecache();
479 
480  void setmudim(cRealType mudim);
481  RealType getmudim();
482 
483  void setdelta(cRealType delta);
484  RealType getdelta();
485 
486  void setuvdiv(cRealType uvdiv);
487  RealType getuvdiv();
488 
489  void setlambda(cRealType lambda);
490  RealType getlambda();
491 
492  void setminmass(cRealType minmass);
493  RealType getminmass();
494 
495  void setmaxdev(cRealType maxdev);
496  RealType getmaxdev();
497 
498  void setwarndigits(const int warndigits);
499  int getwarndigits();
500 
501  void seterrdigits(const int errdigits);
502  int geterrdigits();
503 
504  void setversionkey(const int versionkey);
505  int getversionkey();
506 
507  void setdebugkey(const int debugkey);
508  int getdebugkey();
509 
510  void setdebugrange(const int debugfrom, const int debugto);
511 
512  void setcmpbits(const int cmpbits);
513  int getcmpbits();
514 
515  void setdiffeps(cRealType diffeps);
516  RealType getdiffeps();
517 
518  void setzeroeps(cRealType zeroeps);
519  RealType getzeroeps();
520 
521  } // namespace Looptools
522 } // namespace Herwig
523 
524 #endif
525 
-*- C++ -*-