]>
Commit | Line | Data |
---|---|---|
3820ca8e | 1 | |
2 | CDECK 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 | ||
8 | C----------------------------------------------------------------------- | |
9 | ||
10 | FUNCTION HWULI2(X) | |
11 | ||
12 | C----------------------------------------------------------------------- | |
13 | ||
14 | C Complex dilogarithm function, Li_2 (Spence function) | |
15 | ||
16 | C----------------------------------------------------------------------- | |
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 |