]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MINICERN/mathlib/gen/c/rpsipg64.F.ori
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / c / rpsipg64.F.ori
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1996/04/01 15:02:01  mclareni
6 * Mathlib gen
7 *
8 *
9 #include "gen/pilot.h"
10 #if defined(CERNLIB_DOUBLE)
11       FUNCTION DPSIPG(X,K)
12 C
13 #include "gen/imp64.inc"
14 C
15       CHARACTER*(*) NAME
16       PARAMETER(NAME='RPSIPG/DPSIPG')
17 #endif
18 #if !defined(CERNLIB_DOUBLE)
19       FUNCTION RPSIPG(X,K)
20 C
21       CHARACTER*(*) NAME
22       PARAMETER(NAME='RPSIPG')
23 #endif
24 C
25       DIMENSION B(0:20,6),C(7,6),NB(6),P1(0:7),Q1(0:7),P2(0:4),Q2(0:4)
26       DIMENSION SGN(6),SGF(0:6),SGH(6)
27
28       PARAMETER (DELTA = 1D-13)
29       PARAMETER (Z1 = 1, HF = Z1/2)
30       PARAMETER (PI = 3.14159 26535 89793 24D0)
31       PARAMETER (C1 = -PI**2, C2 = 2*PI**3, C3 = 2*PI**4)
32       PARAMETER (C4 = -8*PI**5, C5 = -8*PI**6, C6 = 16*PI**7)
33
34       CHARACTER*80 ERRTXT
35
36       DATA NB /16,17,17,18,19,20/
37       DATA SGN /-1,1,-1,1,-1,1/, SGF /1,-1,2,-6,24,-120,720/
38       DATA SGH /-0.5D0,1,-3,12,-60,360/
39       DATA X0 /1.46163 21449 68362 34D0/
40
41       DATA (P1(J),Q1(J),J=0,7)
42      A/ 1.35249 99667 72634 64D+4, 6.93891 11753 76344 44D-7,
43      1  4.52856 01699 54728 97D+4, 1.97685 74263 04673 64D+4,
44      2  4.51351 68469 73666 26D+4, 4.12551 60835 35383 23D+4,
45      3  1.85290 11818 58261 02D+4, 2.93902 87119 93268 19D+4,
46      4  3.32915 25149 40693 55D+3, 9.08196 66074 85517 03D+3,
47      5  2.40680 32474 35720 18D+2, 1.24474 77785 67085 60D+3,
48      6  5.15778 92000 13908 47D+0, 6.74291 29516 37859 38D+1,
49      7  6.22835 06918 98474 58D-3, 1/
50
51       DATA (P2(J),Q2(J),J=0,4)
52      A/-2.72817 57513 15296 78D-15,7.77788 54852 29616 04D+0,
53      1 -6.48157 12376 61965 10D-1, 5.46117 73810 32150 70D+1,
54      2 -4.48616 54391 80193 58D+0, 8.92920 70048 18613 70D+1,
55      3 -7.01677 22776 67586 64D+0, 3.22703 49379 11433 61D+1,
56      7 -2.12940 44513 10105 17D+0, 1/
57
58       DATA B( 0,1) / 0.33483 86979 10949 386D0/
59       DATA B( 1,1) /-0.05518 74820 48730 095D0/
60       DATA B( 2,1) / 0.00451 01907 36011 502D0/
61       DATA B( 3,1) /-0.00036 57058 88303 721D0/
62       DATA B( 4,1) / 0.00002 94346 27468 223D0/
63       DATA B( 5,1) /-0.00000 23527 76815 151D0/
64       DATA B( 6,1) / 0.00000 01868 53176 633D0/
65       DATA B( 7,1) /-0.00000 00147 50720 184D0/
66       DATA B( 8,1) / 0.00000 00011 57993 337D0/
67       DATA B( 9,1) /-0.00000 00000 90439 179D0/
68       DATA B(10,1) / 0.00000 00000 07029 627D0/
69       DATA B(11,1) /-0.00000 00000 00543 989D0/
70       DATA B(12,1) / 0.00000 00000 00041 925D0/
71       DATA B(13,1) /-0.00000 00000 00003 219D0/
72       DATA B(14,1) / 0.00000 00000 00000 246D0/
73       DATA B(15,1) /-0.00000 00000 00000 019D0/
74       DATA B(16,1) / 0.00000 00000 00000 001D0/
75
76       DATA B( 0,2) /-0.11259 29353 45473 830D0/
77       DATA B( 1,2) / 0.03655 70017 42820 941D0/
78       DATA B( 2,2) /-0.00443 59424 96027 282D0/
79       DATA B( 3,2) / 0.00047 54758 54728 926D0/
80       DATA B( 4,2) /-0.00004 74718 36382 632D0/
81       DATA B( 5,2) / 0.00000 45218 15237 353D0/
82       DATA B( 6,2) /-0.00000 04163 00079 620D0/
83       DATA B( 7,2) / 0.00000 00373 38998 165D0/
84       DATA B( 8,2) /-0.00000 00032 79914 474D0/
85       DATA B( 9,2) / 0.00000 00002 83211 377D0/
86       DATA B(10,2) /-0.00000 00000 24104 028D0/
87       DATA B(11,2) / 0.00000 00000 02026 297D0/
88       DATA B(12,2) /-0.00000 00000 00168 524D0/
89       DATA B(13,2) / 0.00000 00000 00013 885D0/
90       DATA B(14,2) /-0.00000 00000 00001 135D0/
91       DATA B(15,2) / 0.00000 00000 00000 092D0/
92       DATA B(16,2) /-0.00000 00000 00000 007D0/
93       DATA B(17,2) / 0.00000 00000 00000 001D0/
94
95       DATA B( 0,3) / 0.07601 26046 55110 384D0/
96       DATA B( 1,3) /-0.03625 71864 81828 739D0/
97       DATA B( 2,3) / 0.00579 72023 38937 002D0/
98       DATA B( 3,3) /-0.00076 96465 13610 481D0/
99       DATA B( 4,3) / 0.00009 14920 82189 884D0/
100       DATA B( 5,3) /-0.00001 00971 31488 364D0/
101       DATA B( 6,3) / 0.00000 10557 77442 831D0/
102       DATA B( 7,3) /-0.00000 01059 29577 481D0/
103       DATA B( 8,3) / 0.00000 00102 85494 201D0/
104       DATA B( 9,3) /-0.00000 00009 72314 310D0/
105       DATA B(10,3) / 0.00000 00000 89884 635D0/
106       DATA B(11,3) /-0.00000 00000 08153 171D0/
107       DATA B(12,3) / 0.00000 00000 00727 572D0/
108       DATA B(13,3) /-0.00000 00000 00064 010D0/
109       DATA B(14,3) / 0.00000 00000 00005 562D0/
110       DATA B(15,3) /-0.00000 00000 00000 478D0/
111       DATA B(16,3) / 0.00000 00000 00000 041D0/
112       DATA B(17,3) /-0.00000 00000 00000 003D0/
113
114       DATA B( 0,4) /-0.07723 47240 56994 793D0/
115       DATA B( 1,4) / 0.04786 71634 51599 467D0/
116       DATA B( 2,4) /-0.00944 07021 86674 632D0/
117       DATA B( 3,4) / 0.00148 95447 40103 448D0/
118       DATA B( 4,4) /-0.00020 49440 23348 860D0/
119       DATA B( 5,4) / 0.00002 56714 25065 297D0/
120       DATA B( 6,4) /-0.00000 30013 93581 584D0/
121       DATA B( 7,4) / 0.00000 03327 66437 356D0/
122       DATA B( 8,4) /-0.00000 00353 65412 111D0/
123       DATA B( 9,4) / 0.00000 00036 30622 927D0/
124       DATA B(10,4) /-0.00000 00003 62096 951D0/
125       DATA B(11,4) / 0.00000 00000 35237 509D0/
126       DATA B(12,4) /-0.00000 00000 03357 440D0/
127       DATA B(13,4) / 0.00000 00000 00314 068D0/
128       DATA B(14,4) /-0.00000 00000 00028 908D0/
129       DATA B(15,4) / 0.00000 00000 00002 623D0/
130       DATA B(16,4) /-0.00000 00000 00000 235D0/
131       DATA B(17,4) / 0.00000 00000 00000 021D0/
132       DATA B(18,4) /-0.00000 00000 00000 002D0/
133
134       DATA B( 0,5) / 0.10493 30344 59278 632D0/
135       DATA B( 1,5) /-0.07887 79016 52793 557D0/
136       DATA B( 2,5) / 0.01839 74151 12159 397D0/
137       DATA B( 3,5) /-0.00335 22841 59396 504D0/
138       DATA B( 4,5) / 0.00052 28782 30918 016D0/
139       DATA B( 5,5) /-0.00007 31797 85814 740D0/
140       DATA B( 6,5) / 0.00000 94497 29612 085D0/
141       DATA B( 7,5) /-0.00000 11463 39856 723D0/
142       DATA B( 8,5) / 0.00000 01322 69366 108D0/
143       DATA B( 9,5) /-0.00000 00146 46669 180D0/
144       DATA B(10,5) / 0.00000 00015 66940 742D0/
145       DATA B(11,5) /-0.00000 00001 62791 157D0/
146       DATA B(12,5) / 0.00000 00000 16490 345D0/
147       DATA B(13,5) /-0.00000 00000 01634 028D0/
148       DATA B(14,5) / 0.00000 00000 00158 807D0/
149       DATA B(15,5) /-0.00000 00000 00015 171D0/
150       DATA B(16,5) / 0.00000 00000 00001 427D0/
151       DATA B(17,5) /-0.00000 00000 00000 132D0/
152       DATA B(18,5) / 0.00000 00000 00000 012D0/
153       DATA B(19,5) /-0.00000 00000 00000 001D0/
154
155       DATA B( 0,6) /-0.17861 76221 42502 753D0/
156       DATA B( 1,6) / 0.15577 64622 00520 579D0/
157       DATA B( 2,6) /-0.04172 36376 73831 277D0/
158       DATA B( 3,6) / 0.00859 71413 03245 400D0/
159       DATA B( 4,6) /-0.00149 62277 61073 229D0/
160       DATA B( 5,6) / 0.00023 10896 08557 137D0/
161       DATA B( 6,6) /-0.00003 26320 44778 436D0/
162       DATA B( 7,6) / 0.00000 42960 97867 090D0/
163       DATA B( 8,6) /-0.00000 05345 28790 204D0/
164       DATA B( 9,6) / 0.00000 00634 78151 644D0/
165       DATA B(10,6) /-0.00000 00072 48699 714D0/
166       DATA B(11,6) / 0.00000 00008 00521 979D0/
167       DATA B(12,6) /-0.00000 00000 85888 793D0/
168       DATA B(13,6) / 0.00000 00000 08985 442D0/
169       DATA B(14,6) /-0.00000 00000 00919 356D0/
170       DATA B(15,6) / 0.00000 00000 00092 225D0/
171       DATA B(16,6) /-0.00000 00000 00009 090D0/
172       DATA B(17,6) / 0.00000 00000 00000 882D0/
173       DATA B(18,6) /-0.00000 00000 00000 084D0/
174       DATA B(19,6) / 0.00000 00000 00000 008D0/
175       DATA B(20,6) /-0.00000 00000 00000 001D0/
176
177       DATA C(1,1) / 1.66666 66666 66666 67D-1/
178       DATA C(2,1) /-3.33333 33333 33333 33D-2/
179       DATA C(3,1) / 2.38095 23809 52380 95D-2/
180       DATA C(4,1) /-3.33333 33333 33333 33D-2/
181       DATA C(5,1) / 7.57575 75757 57575 76D-2/
182       DATA C(6,1) /-2.53113 55311 35531 14D-1/
183       DATA C(7,1) / 1.16666 66666 66666 67D 0/
184
185       DATA C(1,2) / 5.00000 00000 00000 00D-1/
186       DATA C(2,2) /-1.66666 66666 66666 67D-1/
187       DATA C(3,2) / 1.66666 66666 66666 67D-1/
188       DATA C(4,2) /-3.00000 00000 00000 00D-1/
189       DATA C(5,2) / 8.33333 33333 33333 33D-1/
190       DATA C(6,2) /-3.29047 61904 76190 48D 0/
191       DATA C(7,2) / 1.75000 00000 00000 00D 1/
192
193       DATA C(1,3) / 2.00000 00000 00000 00D 0/
194       DATA C(2,3) /-1.00000 00000 00000 00D 0/
195       DATA C(3,3) / 1.33333 33333 33333 33D 0/
196       DATA C(4,3) /-3.00000 00000 00000 00D 0/
197       DATA C(5,3) / 1.00000 00000 00000 00D+1/
198       DATA C(6,3) /-4.60666 66666 66666 67D+1/
199       DATA C(7,3) / 2.80000 00000 00000 00D+2/
200
201       DATA (C(J,4),J=1,7) /10,-7,12,-33,130,-691,4760/
202       DATA (C(J,5),J=1,7) /60,-56,120,-396,1820,-11056,85680/
203       DATA (C(J,6),J=1,7) /420,-504,1320,-5148,27300,-187952,1627920/
204
205       A=ABS(X)
206       V=A
207       IX=X-DELTA
208       IF(K .LT. 0 .OR. K .GT. 6) THEN
209        H=0
210        WRITE(ERRTXT,101) K
211        CALL MTLPRT(NAME,'C316.1',ERRTXT)
212       ELSEIF(ABS(IX-X) .LE. DELTA) THEN
213        H=0
214        WRITE(ERRTXT,102) X
215        CALL MTLPRT(NAME,'C316.2',ERRTXT)
216       ELSEIF(K .EQ. 0) THEN
217        IF(A .LE. 3) THEN
218         S=0
219         IF(A .LT. HF) THEN
220          S=1/V
221          V=V+1
222         ENDIF
223         AP=P1(7)
224         AQ=Q1(7)
225         DO 11 I = 6,0,-1
226         AP=P1(I)+V*AP
227    11   AQ=Q1(I)+V*AQ
228         H=(V-X0)*AP/AQ-S
229        ELSE
230         R=1/V**2
231         AP=P2(4)
232         AQ=Q2(4)
233         DO 12 I = 3,0,-1
234         AP=P2(I)+R*AP
235    12   AQ=Q2(I)+R*AQ
236         H=LOG(V)-HF/V+AP/AQ
237        ENDIF
238        IF(X .LT. 0) H=H+1/A+PI/TAN(PI*A)
239       ELSE
240        K1=K+1
241        IF(A .LE. 10) THEN
242         IF(A .LT. 3) THEN
243          S=-1/V**K1
244          DO 1 J = 1,2-INT(A)
245          V=V+1
246     1    S=S-1/V**K1
247          V=V+1
248         ELSEIF(A .LE. 4) THEN
249          S=0
250         ELSE
251          V=V-1
252          S=1/V**K1
253          DO 5 J = 1,INT(A)-4
254          V=V-1
255     5    S=S+1/V**K1
256         ENDIF
257         H=2*V-7
258         ALFA=H+H
259         B1=0
260         B2=0
261         DO 2 J = NB(K),0,-1
262         B0=B(J,K)+ALFA*B1-B2
263         B2=B1
264     2   B1=B0
265         H=B0-H*B2+SGF(K)*S
266        ELSE
267         S=0
268         IF(A .LT. 15) THEN
269          S=1/V**K1
270          DO 3 J = 1,14-INT(A)
271          V=V+1
272     3    S=S+1/V**K1
273          V=V+1
274         ENDIF
275         R=1/V**2
276         P=R*C(7,K)
277         DO 4 J = 6,1,-1
278     4   P=R*(C(J,K)+P)
279         H=((SGF(K-1)-SGN(K)*P)*V-SGH(K))/V**K1-SGF(K)*S
280        ENDIF
281        IF(X .LT. 0) THEN
282         P=PI*A
283         IF(K .EQ. 1) THEN
284          V=C1/SIN(P)**2
285         ELSEIF(K .EQ. 2) THEN
286          V=C2*COS(P)/SIN(P)**3
287         ELSEIF(K .EQ. 3) THEN
288          S=SIN(P)**2
289          V=C3*(2*S-3)/S**2
290         ELSEIF(K .EQ. 4) THEN
291          S=SIN(P)
292          V=C4*COS(P)*(S**2-3)/S**5
293         ELSEIF(K .EQ. 5) THEN
294          S=SIN(P)**2
295          V=C5*(15-15*S+2*S**2)/S**3
296         ELSEIF(K .EQ. 6) THEN
297          S=SIN(P)
298          V=C6*COS(P)*(45-30*S**2+2*S**4)/S**7
299         ENDIF
300         H=SGN(K)*(H+V+SGF(K)/A**K1)
301        ENDIF
302       ENDIF
303 #if defined(CERNLIB_DOUBLE)
304       DPSIPG=H
305 #endif
306 #if !defined(CERNLIB_DOUBLE)
307       RPSIPG=H
308 #endif
309       RETURN
310   101 FORMAT('K = ',I5,'  (< 0  OR  > 6)')
311   102 FORMAT('ARGUMENT EQUALS NON-POSITIVE INTEGER =',1P,E15.6)
312       END