]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/mathlib/gen/c/dilog64.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / c / dilog64.F
CommitLineData
fe4da5cc 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