]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HERWIG/src/hwuli2.f
use TMath::Abs() instead of ambiguous abs().
[u/mrichter/AliRoot.git] / HERWIG / src / hwuli2.f
CommitLineData
3820ca8e 1
2CDECK ID>, HWULI2.
3
4*CMZ :- -23/08/94 13.22.29 by Mike Seymour
5
6*-- Author : Ulrich Baur & Nigel Glover, adapted by Ian Knowles
7
8C-----------------------------------------------------------------------
9
10 FUNCTION HWULI2(X)
11
12C-----------------------------------------------------------------------
13
14C Complex dilogarithm function, Li_2 (Spence function)
15
16C-----------------------------------------------------------------------
17
18 IMPLICIT NONE
19
20 DOUBLE COMPLEX HWULI2,PROD,Y,Y2,X,Z
21
22 DOUBLE PRECISION XR,XI,R2,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,ZETA2,
23
24 & ZERO,ONE,HALF
25
26 PARAMETER (ZERO=0.0D0, ONE=1.0D0, HALF=0.5D0)
27
28 DATA A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,ZETA2/ -0.250000000000000D0,
29
30 & -0.111111111111111D0,-0.010000000000000D0,-0.017006802721088D0,
31
32 & -0.019444444444444D0,-0.020661157024793D0,-0.021417300648069D0,
33
34 & -0.021948866377231D0,-0.022349233811171D0,-0.022663689135191D0,
35
36 & 1.644934066848226D0/
37
38 PROD(Y,Y2)=Y*(ONE+A1*Y*(ONE+A2*Y*(ONE+A3*Y2*(ONE+A4*Y2*(ONE+A5*Y2*
39
40 & (ONE+A6*Y2*(ONE+A7*Y2*(ONE+A8*Y2*(ONE+A9*Y2*(ONE+A10*Y2))))))))))
41
42 XR=DBLE(X)
43
44 XI=IMAG(X)
45
46 R2=XR*XR+XI*XI
47
48 IF (R2.GT.ONE.AND.(XR/R2).GT.HALF) THEN
49
50 Z=-LOG(ONE/X)
51
52 HWULI2=PROD(Z,Z*Z)+ZETA2-LOG(X)*LOG(ONE-X)+HALF*LOG(X)**2
53
54 ELSEIF (R2.GT.ONE.AND.(XR/R2).LE.HALF) THEN
55
56 Z=-LOG(ONE-ONE/X)
57
58 HWULI2=-PROD(Z,Z*Z)-ZETA2-HALF*LOG(-X)**2
59
60 ELSEIF (R2.EQ.ONE.AND.XI.EQ.ZERO) THEN
61
62 HWULI2=ZETA2
63
64 ELSEIF (R2.LE.ONE.AND.XR.GT.HALF) THEN
65
66 Z=-LOG(X)
67
68 HWULI2=-PROD(Z,Z*Z)+ZETA2-LOG(X)*LOG(ONE-X)
69
70 ELSE
71
72 Z=-LOG(ONE-X)
73
74 HWULI2=PROD(Z,Z*Z)
75
76 ENDIF
77
78 END