herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
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)