herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
ff.h
1 * $Id: ff.h,v 1.1 1995/12/12 10:03:48 gj Exp $
2 * -------------------------------------------------------------
3 * INCLUDE FILE FOR THE FF ROUTINES.
4 * Geert Jan van Oldenborgh.
5 * -------------------------------------------------------------
6 * please do not change, and recompile _everything_ when you do.
7 * -------------------------------------------------------------
8 *
9 * this parameter determines how far the scalar npoint functions
10 * will look back to find the same parameters (when lmem is true)
11 *
12  integer memory
13  parameter (memory = 12)
14 *
15 * if .TRUE. then default (ffinit)
16 * l4also: in C0 (and higher), also consider the algorithm with 16
17 * dilogs .TRUE.
18 * ldc3c4: in D0 (and higher), also consider possible cancellations
19 * between the C0s .TRUE.
20 * lmem: before computing the C0 and higher, first check whether
21 * it has already been done recently .FALSE.
22 * ldot: leave the dotproducts and some determinants in common
23 * .FALSE.
24 * onshel: (in ffz?0 only): use onshell momenta .TRUE.
25 * lsmug: internal use
26 * lnasty: internal use
27 *
28  logical l4also,ldc3c4,lmem,ldot,onshel,lsmug,lnasty
29 *
30 * nwidth: number of widths within which the complex mass is used
31 * nschem: scheme to handle the complex mass (see ffinit.f)
32 * idot: internal flags to signal that some of the dotproducts
33 * are input: 0: none; 1: external pi.pj, 2: external +
34 * kinematical determinant, 3: all dotproducts + kindet.
35 *
36  integer nwidth,nschem,idot
37 *
38 * xloss: factor that the final result of a subtraction can be
39 * smaller than the terms without warning (default 1/8)
40 * precx: precision of real numbers, determined at runtime by
41 * ffinit (IEEE: 4.e-16)
42 * precc: same for complex numbers
43 * xalogm: smallest real number of which a log can be taken,
44 * determined at runtime by ffinit (IEEE: 2.e-308)
45 * xclogm: same for complex.
46 * xalog2: xalogm**2
47 * xclog2: xclogm**2
48 * reqprc: not used
49 * pi: pi
50 * pi6: pi**2/6
51 * pi12: pi**2/12
52 * xlg2: log(2)
53 * bf: factors in the expansion of dilog (~Bernouilli numbers)
54 * xninv: 1/n
55 * xn2inv: 1/n**2
56 * xinfac: 1/n!
57 * fpij2: vi.vj for 2point function 1-2: si, 3-3: pi
58 * fpij3: vi.vj for 3point function 1-3: si, 4-6: pi
59 * fpij4: vi.vj for 4point function 1-4: si, 5-10: pi
60 * fpij5: vi.vj for 5point function 1-5: si, 6-15: pi
61 * fpij6: vi.vj for 6point function 1-6: si, 7-21: pi
62 * fdel2: del2 = delta_(p1,p2)^(p1,p2) = p1^2.p2^2 - p1.p2^2 in C0
63 * fdel3: del3 = delta_(p1,p2,p3)^(p1,p2,p3) in D0
64 * fdel4s: del4s = delta_(s1,s2,s3,s4)^(s1,s2,s3,s4) in D0
65 * fdel4: del4 = delta_(p1,p2,p3,p4)^(p1,p2,p3,p4) in E0
66 * fdl3i: del3i = delta_(pj,pk,pl)^(pj,pk,pl) in E0, D0 without si
67 * fdl4si: dl4si = del4s in E0, D0 without si
68 * fdl3ij: same in F0 without si and sj.
69 * fd4sij: dl4si = del4s in E0, D0 without si
70 * fdl4i: delta4 in F0 without si.
71 * fodel2: same offshell (in case of complex or z-functions)
72 * fodel3: -''-
73 * cfdl4s: -''-
74 * fodel4: -''-
75 * fodl3i: -''-
76 * fod3ij: -''-
77 * fodl4i: -''-
78 * fidel3: ier of del3 (is not included in D0)
79 * fidel4: ier of del4 (is not included in E0)
80 * fidl3i: ier of dl3i (is not included in E0)
81 * fid3ij: ier of dl3ij (is not included in F0)
82 * fidl4i: ier of dl4i (is not included in F0)
83 *
84  RealType xloss,precx,precc,xalogm,xclogm,xalog2,xclog2,
85  & reqprc,pi,pi6,pi12,xlg2,sqrt2,bf(20),
86  & xninv(30),xn2inv(30),xinfac(30),
87  & fpij2(3,3),fpij3(6,6),fpij4(10,10),fpij5(15,15),
88  & fpij6(21,21),fdel2,fdel3,fdel4s,fdel4,fdl3i(5),
89  & fdl4si(5),fdl3ij(6,6),fd4sij(6,6),fdl4i(6),fodel2,
90  & fodel3,fodel4,fodl3i(5),fod3ij(6,6),fodl4i(6)
91  integer fidel3,fidel4,fidl3i(5),fid3ij(6,6),fidl4i(6)
92 *
93 * cI: imaginary unit
94 * c[zero1]:0,1 complex
95 * c2ipi: 2*i*pi
96 * cipi2: i*pi**2
97 * cfp..: complex version of fp..., only defined in ff[cz]*
98 * cmipj: (internal only) mi^2 - pj^2 in C0
99 * c2sisj: (internal only) 2*si.sj in D0
100 * cfdl4s: del4s in complex case (D0)
101 * ca1: (internal only) complex A1
102 * csdl2p: (internal only) complex transformed sqrt(del2)
103 *
104  ComplexType cI,czero,chalf,cone,c2ipi,cipi2,
105  & cfpij2(3,3),cfpij3(6,6),cfpij4(10,10),cfpij5(15,15),
106  & cfpij6(21,21),cmipj(3,3),c2sisj(4,4),cfdl4s,ca1
107 *
108 * nevent: number in integration loop (to be updated by user)
109 * ner: can be used to signal numerical problems (see ffrcvr)
110 * id: identifier of scalar function (to be set by user)
111 * idsub: internal identifier to pinpoint errors
112 * inx: in D0: p(inx(i,j)) = isgn(i,j)*(s(i)-s(j))
113 * inx5: in E0: p(inx5(i,j)) = isgn5(i,j)*(s(i)-s(j))
114 * inx6: in F0: p(inx6(i,j)) = isgn6(i,j)*(s(i)-s(j))
115 * isgn: see inx
116 * isgn5: see inx5
117 * isgn6: see inx6
118 * iold: rotation matrix for 4point function
119 * isgrot: signs to iold
120 * isgn34: +1 or -1: which root to choose in the transformation (D0)
121 * isgnal: +1 or -1: which root to choose in the alpha-trick (C0)
122 * irota3: save the number of positions the C0 configuration has been
123 * rotated over
124 * irota4: same for the D0
125 * irota5: same for the E0
126 * irota6: same for the F0
127 *
128  integer nevent,ner,id,idsub,inx(4,4),isgn(4,4),inx5(5,5),
129  & isgn5(5,5),inx6(6,6),isgn6(6,6),isgn34,isgnal,iold(13,
130  & 12),isgrot(10,12),irota3,irota4,irota5,irota6
131  integer idum93(2)
132 *
133  ComplexType cIeps
134 *
135 * parameters
136 *
137  parameter(
138  & cI = (0D0, 1D0),
139  & czero = (0D0,0D0),
140  & chalf = (.5D0,0D0),
141  & cone = (1D0,0D0),
142  & c2ipi = (0D0,6.28318530717958647692528676655896D0),
143  & cipi2 = (0D0,9.869604401089358618834490999876D0),
144  & pi = 3.14159265358979323846264338327948D0,
145  & pi6 = 1.644934066848226436472415166646D0,
146  & pi12 = .822467033424113218236207583323D0,
147  & xlg2 = .6931471805599453094172321214581D0,
148  & sqrt2 = 1.4142135623730950488016887242096981D0,
149  & cIeps = (0D0,1D-50) )
150 *
151 * common
152 *
153  common /ffsign/isgn34,isgnal
154  common /ffprec/ xloss,precx,precc,xalogm,xclogm,xalog2,xclog2,
155  & reqprc
156  common /ffflag/ l4also,ldc3c4,lmem,ldot,
157  & nevent,ner,id,idsub,nwidth,nschem,onshel,idot
158  common /ffcnst/ bf,xninv,xn2inv,xinfac,inx,isgn,iold,isgrot,
159  & inx5,isgn5,inx6,isgn6
160  common /ffrota/ irota3,irota4,irota5,irota6
161  common /ffdot/ fpij2,fpij3,fpij4,fpij5,fpij6
162  common /ffdel/ fdel2,fdel3,fdel4s,fdel4,fdl3i,fdl4si,fdl3ij,
163  & fd4sij,fdl4i
164  common /ffidel/ fidel3,fidel4,fidl3i,fid3ij,fidl4i
165  common /ffcdot/ cfpij2,cfpij3,cfpij4,cfpij5,cfpij6
166  common /ffcdel/ fodel2,fodel3,cfdl4s,fodel4,fodl3i,fod3ij,fodl4i
167  common /ffsmug/ lsmug,lnasty,idum93,cmipj,c2sisj,ca1
168 *
169 * regularization parameters
170 *
171  ComplexType mudimc
172  RealType delta, uvdiv, lambda, minmass
173  RealType diffeps, zeroeps
174  common /ltregul/ mudimc, delta, uvdiv, lambda, minmass,
175  & diffeps, zeroeps
176 
177  RealType mudim
178  equivalence (mudimc, mudim)
179 *
180 * nan is used for undefined values and is supposed to
181 * "poison" a result, much as the IEEE NaN, which is just
182 * too unportable in Fortran
183 *
184  ComplexType nan
185  parameter (nan = (1D123, 1D123))
constexpr double pi
Iterator find(IteratorRange< Iterator > r, const T &t)