]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MINICERN/mathlib/gen/c/dilog64.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / c / dilog64.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1996/04/01 15:02:05  mclareni
6 * Mathlib gen
7 *
8 *
9 #include "gen/pilot.h"
10 #if defined(CERNLIB_DOUBLE)
11       FUNCTION DDILOG(X)
12 #include "gen/imp64.inc"
13 #endif
14 #if !defined(CERNLIB_DOUBLE)
15       FUNCTION RDILOG(X)
16 #endif
17       DIMENSION C(0:19)
18
19       PARAMETER (Z1 = 1, HF = Z1/2)
20       PARAMETER (PI = 3.14159 26535 89793 24D0)
21       PARAMETER (PI3 = PI**2/3, PI6 = PI**2/6, PI12 = PI**2/12)
22
23       DATA C( 0) / 0.42996 69356 08136 97D0/
24       DATA C( 1) / 0.40975 98753 30771 05D0/
25       DATA C( 2) /-0.01858 84366 50145 92D0/
26       DATA C( 3) / 0.00145 75108 40622 68D0/
27       DATA C( 4) /-0.00014 30418 44423 40D0/
28       DATA C( 5) / 0.00001 58841 55418 80D0/
29       DATA C( 6) /-0.00000 19078 49593 87D0/
30       DATA C( 7) / 0.00000 02419 51808 54D0/
31       DATA C( 8) /-0.00000 00319 33412 74D0/
32       DATA C( 9) / 0.00000 00043 45450 63D0/
33       DATA C(10) /-0.00000 00006 05784 80D0/
34       DATA C(11) / 0.00000 00000 86120 98D0/
35       DATA C(12) /-0.00000 00000 12443 32D0/
36       DATA C(13) / 0.00000 00000 01822 56D0/
37       DATA C(14) /-0.00000 00000 00270 07D0/
38       DATA C(15) / 0.00000 00000 00040 42D0/
39       DATA C(16) /-0.00000 00000 00006 10D0/
40       DATA C(17) / 0.00000 00000 00000 93D0/
41       DATA C(18) /-0.00000 00000 00000 14D0/
42       DATA C(19) /+0.00000 00000 00000 02D0/
43
44       IF(X .EQ. 1) THEN
45        H=PI6
46       ELSEIF(X .EQ. -1) THEN
47        H=-PI12
48       ELSE
49        T=-X
50        IF(T .LE. -2) THEN
51         Y=-1/(1+T)
52         S=1
53         A=-PI3+HF*(LOG(-T)**2-LOG(1+1/T)**2)
54        ELSEIF(T .LT. -1) THEN
55         Y=-1-T
56         S=-1
57         A=LOG(-T)
58         A=-PI6+A*(A+LOG(1+1/T))
59        ELSE IF(T .LE. -HF) THEN
60         Y=-(1+T)/T
61         S=1
62         A=LOG(-T)
63         A=-PI6+A*(-HF*A+LOG(1+T))
64        ELSE IF(T .LT. 0) THEN
65         Y=-T/(1+T)
66         S=-1
67         A=HF*LOG(1+T)**2
68        ELSE IF(T .LE. 1) THEN
69         Y=T
70         S=1
71         A=0
72        ELSE
73         Y=1/T
74         S=-1
75         A=PI6+HF*LOG(T)**2
76        ENDIF
77        H=Y+Y-1
78        ALFA=H+H
79        B1=0
80        B2=0
81        DO 1 I = 19,0,-1
82        B0=C(I)+ALFA*B1-B2
83        B2=B1
84     1  B1=B0
85        H=-(S*(B0-H*B2)+A)
86       ENDIF
87 #if defined(CERNLIB_DOUBLE)
88       DDILOG=H
89 #endif
90 #if !defined(CERNLIB_DOUBLE)
91        DILOG=H
92 #endif
93       RETURN
94       END