]>
Commit | Line | Data |
---|---|---|
0795afa3 | 1 | * |
2 | * $Id$ | |
3 | * | |
4 | * $Log$ | |
5 | * Revision 1.9 2000/07/25 14:53:05 mclareni | |
6 | * Version 7.51 from author | |
7 | * | |
8 | * | |
9 | *#include "sys/CERNLIB_machine.h" | |
10 | #include "isajet/pilot.h" | |
11 | #if defined(CERNLIB_NOCERN) | |
12 | DOUBLE PRECISION FUNCTION DDILOG(X) | |
13 | C | |
14 | C FROM CERN PROGRAM LIBRARY | |
15 | C | |
16 | #if defined(CERNLIB_IMPNONE) | |
17 | IMPLICIT NONE | |
18 | #endif | |
19 | DOUBLE PRECISION X,Y,T,S,A,PI3,PI6,ZERO,ONE,HALF,MALF,MONE,MTWO | |
20 | DOUBLE PRECISION C(0:18),H,ALFA,B0,B1,B2 | |
21 | INTEGER I | |
22 | C | |
23 | DATA ZERO /0.0D0/, ONE /1.0D0/ | |
24 | DATA HALF /0.5D0/, MALF /-0.5D0/, MONE /-1.0D0/, MTWO /-2.0D0/ | |
25 | DATA PI3 /3.28986 81336 96453D0/, PI6 /1.64493 40668 48226D0/ | |
26 | C | |
27 | DATA C( 0) / 0.42996 69356 08137 0D0/ | |
28 | DATA C( 1) / 0.40975 98753 30771 1D0/ | |
29 | DATA C( 2) /-0.01858 84366 50146 0D0/ | |
30 | DATA C( 3) / 0.00145 75108 40622 7D0/ | |
31 | DATA C( 4) /-0.00014 30418 44423 4D0/ | |
32 | DATA C( 5) / 0.00001 58841 55418 8D0/ | |
33 | DATA C( 6) /-0.00000 19078 49593 9D0/ | |
34 | DATA C( 7) / 0.00000 02419 51808 5D0/ | |
35 | DATA C( 8) /-0.00000 00319 33412 7D0/ | |
36 | DATA C( 9) / 0.00000 00043 45450 6D0/ | |
37 | DATA C(10) /-0.00000 00006 05784 8D0/ | |
38 | DATA C(11) / 0.00000 00000 86121 0D0/ | |
39 | DATA C(12) /-0.00000 00000 12443 3D0/ | |
40 | DATA C(13) / 0.00000 00000 01822 6D0/ | |
41 | DATA C(14) /-0.00000 00000 00270 1D0/ | |
42 | DATA C(15) / 0.00000 00000 00040 4D0/ | |
43 | DATA C(16) /-0.00000 00000 00006 1D0/ | |
44 | DATA C(17) / 0.00000 00000 00000 9D0/ | |
45 | DATA C(18) /-0.00000 00000 00000 1D0/ | |
46 | C | |
47 | IF(X .EQ. ONE) THEN | |
48 | DDILOG=PI6 | |
49 | RETURN | |
50 | ELSE IF(X .EQ. MONE) THEN | |
51 | DDILOG=MALF*PI6 | |
52 | RETURN | |
53 | END IF | |
54 | T=-X | |
55 | IF(T .LE. MTWO) THEN | |
56 | Y=MONE/(ONE+T) | |
57 | S=ONE | |
58 | A=-PI3+HALF*(LOG(-T)**2-LOG(ONE+ONE/T)**2) | |
59 | ELSE IF(T .LT. MONE) THEN | |
60 | Y=MONE-T | |
61 | S=MONE | |
62 | A=LOG(-T) | |
63 | A=-PI6+A*(A+LOG(ONE+ONE/T)) | |
64 | ELSE IF(T .LE. MALF) THEN | |
65 | Y=(MONE-T)/T | |
66 | S=ONE | |
67 | A=LOG(-T) | |
68 | A=-PI6+A*(MALF*A+LOG(ONE+T)) | |
69 | ELSE IF(T .LT. ZERO) THEN | |
70 | Y=-T/(ONE+T) | |
71 | S=MONE | |
72 | A=HALF*LOG(ONE+T)**2 | |
73 | ELSE IF(T .LE. ONE) THEN | |
74 | Y=T | |
75 | S=ONE | |
76 | A=ZERO | |
77 | ELSE | |
78 | Y=ONE/T | |
79 | S=MONE | |
80 | A=PI6+HALF*LOG(T)**2 | |
81 | END IF | |
82 | C | |
83 | H=Y+Y-ONE | |
84 | ALFA=H+H | |
85 | B1=ZERO | |
86 | B2=ZERO | |
87 | DO 1 I = 18,0,-1 | |
88 | B0=C(I)+ALFA*B1-B2 | |
89 | B2=B1 | |
90 | 1 B1=B0 | |
91 | DDILOG=-(S*(B0-H*B2)+A) | |
92 | RETURN | |
93 | END | |
94 | #endif | |
95 | ||
96 | ||
97 | ||
98 | ||
99 | ||
100 |