File indexing completed on 2026-08-06 09:23:36
0001 * $Id: ff.h,v 1.1 1995/12/12 10:03:48 gj Exp $
0002 * -------------------------------------------------------------
0003 * INCLUDE FILE FOR THE FF ROUTINES.
0004 * Geert Jan van Oldenborgh.
0005 * -------------------------------------------------------------
0006 * please do not change, and recompile _everything_ when you do.
0007 * -------------------------------------------------------------
0008 *
0009 * this parameter determines how far the scalar npoint functions
0010 * will look back to find the same parameters (when lmem is true)
0011 *
0012 integer memory
0013 parameter(memory=12)
0014 *
0015 * if .TRUE. then default (ffinit)
0016 * lwrite: give debug output .FALSE.
0017 * ltest: test consistency internally (slow) .TRUE.
0018 * l4also: in C0 (and higher), also consider the algorithm with 16
0019 * dilogs .TRUE.
0020 * ldc3c4: in D0 (and higher), also consider possible cancellations
0021 * between the C0's .TRUE.
0022 * lmem: before computing the C0 and higher, first check whether
0023 * it has already been done recently .FALSE.
0024 * lwarn: give warning messages (concerning numerical stability)
0025 * .TRUE.
0026 * ldot: leave the dotproducts and some determinants in common
0027 * .FALSE.
0028 * onshel: (in ffz?0 only): use onshell momenta .TRUE.
0029 * lsmug: internal use
0030 * lnasty: internal use
0031 *
0032 logical lwrite,ltest,l4also,ldc3c4,lmem,lwarn,ldot,onshel,lsmug,
0033 + lnasty
0034 *
0035 * nwidth: number of widths within which the complex mass is used
0036 * nschem: scheme to handle the complex mass (see ffinit.f)
0037 * idot: internal flags to signal that some of the dotproducts
0038 * are input: 0: none; 1: external pi.pj, 2: external +
0039 * kinematical determinant, 3: all dotproducts + kindet.
0040 *
0041 integer nwidth,nschem,idot
0042 *
0043 * xloss: factor that the final result of a subtraction can be
0044 * smaller than the terms without warning (default 1/8)
0045 * precx: precision of real numbers, determined at runtime by
0046 * ffinit (IEEE: 4.e-16)
0047 * precc: same for complex numbers
0048 * xalogm: smallest real number of which a log can be taken,
0049 * determined at runtime by ffinit (IEEE: 2.e-308)
0050 * xclogm: same for complex.
0051 * xalog2: xalogm**2
0052 * xclog2: xclogm**2
0053 * reqprc: not used
0054 * x[0124]:0,1,2,4
0055 * x05: 1/2
0056 * pi: pi
0057 * pi6: pi**2/6
0058 * pi12: pi**2/12
0059 * xlg2: log(2)
0060 * bf: factors in the expansion of dilog (~Bernouilli numbers)
0061 * xninv: 1/n
0062 * xn2inv: 1/n**2
0063 * xinfac: 1/n!
0064 * fpij2: vi.vj for 2point function 1-2: si, 3-3: pi
0065 * fpij3: vi.vj for 3point function 1-3: si, 4-6: pi
0066 * fpij4: vi.vj for 4point function 1-4: si, 5-10: pi
0067 * fpij5: vi.vj for 5point function 1-5: si, 6-15: pi
0068 * fpij6: vi.vj for 6point function 1-6: si, 7-21: pi
0069 * fdel2: del2 = delta_(p1,p2)^(p1,p2) = p1^2.p2^2 - p1.p2^2 in C0
0070 * fdel3: del3 = delta_(p1,p2,p3)^(p1,p2,p3) in D0
0071 * fdel4s: del4s = delta_(s1,s2,s3,s4)^(s1,s2,s3,s4) in D0
0072 * fdel4: del4 = delta_(p1,p2,p3,p4)^(p1,p2,p3,p4) in E0
0073 * fdl3i: del3i = delta_(pj,pk,pl)^(pj,pk,pl) in E0, D0 without si
0074 * fdl4si: dl4si = del4s in E0, D0 without si
0075 * fdl3ij: same in F0 without si and sj.
0076 * fd4sij: dl4si = del4s in E0, D0 without si
0077 * fdl4i: delta4 in F0 without si.
0078 * fodel2: same offshell (in case of complex or z-functions)
0079 * fodel3: -"-
0080 * cfdl4s: -"-
0081 * fodel4: -"-
0082 * fodl3i: -"-
0083 * fod3ij: -"-
0084 * fodl4i: -"-
0085 * fidel3: ier of del3 (is not included in D0)
0086 * fidel4: ier of del4 (is not included in E0)
0087 * fidl3i: ier of dl3i (is not included in E0)
0088 * fid3ij: ier of dl3ij (is not included in F0)
0089 * fidl4i: ier of dl4i (is not included in F0)
0090 *
0091 DOUBLE PRECISION xloss,precx,precc,xalogm,xclogm,xalog2,xclog2,
0092 + reqprc,x0,x05,x1,x2,x4,pi,pi6,pi12,xlg2,bf(20),
0093 + xninv(30),xn2inv(30),xinfac(30),
0094 + fpij2(3,3),fpij3(6,6),fpij4(10,10),fpij5(15,15),
0095 + fpij6(21,21),fdel2,fdel3,fdel4s,fdel4,fdl3i(5),
0096 + fdl4si(5),fdl3ij(6,6),fd4sij(6,6),fdl4i(6),fodel2,
0097 + fodel3,fodel4,fodl3i(5),fod3ij(6,6),fodl4i(6)
0098 integer fidel3,fidel4,fidl3i(5),fid3ij(6,6),fidl4i(6)
0099 *
0100 * c[0124]:0,1,2,4 complex
0101 * c05: 1/2 complex
0102 * c2ipi: 2*i*pi
0103 * cipi2: i*pi**2
0104 * cfp..: complex version of fp..., only defined in ff[cz]*
0105 * cmipj: (internal only) mi^2 - pj^2 in C0
0106 * c2sisj: (internal only) 2*si.sj in D0
0107 * cfdl4s: del4s in complex case (D0)
0108 * ca1: (internal only) complex A1
0109 * csdl2p: (internal only) complex transformed sqrt(del2)
0110 *
0111 DOUBLE COMPLEX c0,c05,c1,c2,c4,c2ipi,cipi2,
0112 + cfpij2(3,3),cfpij3(6,6),cfpij4(10,10),cfpij5(15,15),
0113 + cfpij6(21,21),cmipj(3,3),c2sisj(4,4),cfdl4s,ca1
0114 *
0115 * nevent: number in integration loop (to be updated by user)
0116 * ner: can be used to signal numerical problems (see ffrcvr)
0117 * id: identifier of scalar function (to be set by user)
0118 * idsub: internal identifier to pinpoint errors
0119 * inx: in D0: p(inx(i,j)) = isgn(i,j)*(s(i)-s(j))
0120 * inx5: in E0: p(inx5(i,j)) = isgn5(i,j)*(s(i)-s(j))
0121 * inx6: in F0: p(inx6(i,j)) = isgn6(i,j)*(s(i)-s(j))
0122 * isgn: see inx
0123 * isgn5: see inx5
0124 * isgn6: see inx6
0125 * iold: rotation matrix for 4point function
0126 * isgrot: signs to iold
0127 * isgn34: +1 or -1: which root to choose in the transformation (D0)
0128 * isgnal: +1 or -1: which root to choose in the alpha-trick (C0)
0129 * irota3: save the number of positions the C0 configuration has been
0130 * rotated over
0131 * irota4: same for the D0
0132 * irota5: same for the E0
0133 * irota6: same for the F0
0134 *
0135 integer nevent,ner,id,idsub,inx(4,4),isgn(4,4),inx5(5,5),
0136 + isgn5(5,5),inx6(6,6),isgn6(6,6),isgn34,isgnal,iold(13,
0137 + 12),isgrot(10,12),irota3,irota4,irota5,irota6
0138 integer idum93(2)
0139 *
0140 * parameters
0141 *
0142 parameter(x0 = 0.d0,x1 = 1.d0,x05 = .5d0,x2 = 2.d0,x4 = 4.d0,
0143 + c0 = (0.D0,0.D0),c05 = (.5D0,0.D0),c1 = (1.D0,0.D0),
0144 + c2 = (2.D0,0.D0),c4 = (4.D0,0.D0))
0145 parameter(
0146 + c2ipi = (0.D+0,6.28318530717958647692528676655896D+0),
0147 + cipi2 = (0.D+0,9.869604401089358618834490999876D+0),
0148 + pi = 3.14159265358979323846264338327948D+0,
0149 + pi6 = 1.644934066848226436472415166646D+0,
0150 + pi12 = .822467033424113218236207583323D+0,
0151 + xlg2 = .6931471805599453094172321214581D+0)
0152 *
0153 * common
0154 *
0155 common /ffsign/isgn34,isgnal
0156 common /ffprec/ xloss,precx,precc,xalogm,xclogm,xalog2,xclog2,
0157 + reqprc
0158 common /ffflag/ lwrite,ltest,l4also,ldc3c4,lmem,lwarn,ldot,
0159 + nevent,ner,id,idsub,nwidth,nschem,onshel,idot
0160 common /ffcnst/ bf,xninv,xn2inv,xinfac,inx,isgn,iold,isgrot,
0161 + inx5,isgn5,inx6,isgn6
0162 common /ffrota/ irota3,irota4,irota5,irota6
0163 common /ffdot/ fpij2,fpij3,fpij4,fpij5,fpij6
0164 common /ffdel/ fdel2,fdel3,fdel4s,fdel4,fdl3i,fdl4si,fdl3ij,
0165 + fd4sij,fdl4i
0166 common /ffidel/ fidel3,fidel4,fidl3i,fid3ij,fidl4i
0167 common /ffcdot/ cfpij2,cfpij3,cfpij4,cfpij5,cfpij6
0168 common /ffcdel/ fodel2,fodel3,cfdl4s,fodel4,fodl3i,fod3ij,fodl4i
0169 common /ffsmug/ lsmug,lnasty,idum93,cmipj,c2sisj,ca1