This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / c / cgplg64.F
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 WGPLG(N,M,X)
12 #include "gen/imp64.inc"
13 #include "gen/defc64.inc"
14      +   WGPLG
15 #endif
16 #if !defined(CERNLIB_DOUBLE)
17       FUNCTION CGPLG(N,M,X)
18 #include "gen/defc64.inc"
19      +   CGPLG
20 #endif
21 #include "gen/defc64.inc"
22      +   Z,I,V(0:5),SK,SJ
23 C
24       CHARACTER NAME*(*)
25       CHARACTER*80 ERRTXT
26 #if defined(CERNLIB_DOUBLE)
27       PARAMETER (NAME = 'CGPLG/WGPLG')
28 #endif
29 #if !defined(CERNLIB_DOUBLE)
30       PARAMETER (NAME = 'CGPLG')
31 #endif
32       DIMENSION FCT(0:4),SGN(0:4),U(0:4),S1(4,4),C(4,4),A(0:30,10)
33       DIMENSION NC(10),INDEX(31)
34
35       PARAMETER (I = (0,1))
36       PARAMETER (Z0 = 0, Z1 = 1, HF = Z1/2, C1 = 4*Z1/3, C2 = Z1/3)
37
38       DATA FCT /1,1,2,6,24/, SGN /1,-1,1,-1,1/
39
40       DATA S1(1,1) /1.64493 40668 482D 0/
41       DATA S1(1,2) /1.20205 69031 596D 0/
42       DATA S1(1,3) /1.08232 32337 111D 0/
43       DATA S1(1,4) /1.03692 77551 434D 0/
44       DATA S1(2,1) /1.20205 69031 596D 0/
45       DATA S1(2,2) /2.70580 80842 778D-1/
46       DATA S1(2,3) /9.65511 59989 444D-2/
47       DATA S1(3,1) /1.08232 32337 111D 0/
48       DATA S1(3,2) /9.65511 59989 444D-2/
49       DATA S1(4,1) /1.03692 77551 434D 0/
50
51       DATA C(1,1) / 1.64493 40668 482D0/
52       DATA C(1,2) / 1.20205 69031 596D0/
53       DATA C(1,3) / 1.08232 32337 111D0/
54       DATA C(1,4) / 1.03692 77551 434D0/
55       DATA C(2,1) / 0.00000 00000 000D0/
56       DATA C(2,2) /-1.89406 56589 945D0/
57       DATA C(2,3) /-3.01423 21054 407D0/
58       DATA C(3,1) / 1.89406 56589 945D0/
59       DATA C(3,2) / 3.01423 21054 407D0/
60       DATA C(4,1) / 0.00000 00000 000D0/
61
62       DATA INDEX /1,2,3,4,6*0,5,6,7,7*0,8,9,8*0,10/
63
64       DATA NC /24,26,28,30,22,24,26,19,22,17/
65
66       DATA A( 0,1) / .96753 21504 3498D0/
67       DATA A( 1,1) / .16607 30329 2785D0/
68       DATA A( 2,1) / .02487 93229 2423D0/
69       DATA A( 3,1) / .00468 63619 5945D0/
70       DATA A( 4,1) / .00100 16274 9616D0/
71       DATA A( 5,1) / .00023 20021 9609D0/
72       DATA A( 6,1) / .00005 68178 2272D0/
73       DATA A( 7,1) / .00001 44963 0056D0/
74       DATA A( 8,1) / .00000 38163 2946D0/
75       DATA A( 9,1) / .00000 10299 0426D0/
76       DATA A(10,1) / .00000 02835 7538D0/
77       DATA A(11,1) / .00000 00793 8705D0/
78       DATA A(12,1) / .00000 00225 3670D0/
79       DATA A(13,1) / .00000 00064 7434D0/
80       DATA A(14,1) / .00000 00018 7912D0/
81       DATA A(15,1) / .00000 00005 5029D0/
82       DATA A(16,1) / .00000 00001 6242D0/
83       DATA A(17,1) / .00000 00000 4827D0/
84       DATA A(18,1) / .00000 00000 1444D0/
85       DATA A(19,1) / .00000 00000 0434D0/
86       DATA A(20,1) / .00000 00000 0131D0/
87       DATA A(21,1) / .00000 00000 0040D0/
88       DATA A(22,1) / .00000 00000 0012D0/
89       DATA A(23,1) / .00000 00000 0004D0/
90       DATA A(24,1) / .00000 00000 0001D0/
91
92       DATA A( 0,2) / .95180 88912 7832D0/
93       DATA A( 1,2) / .43131 13184 6532D0/
94       DATA A( 2,2) / .10002 25071 4905D0/
95       DATA A( 3,2) / .02442 41559 5220D0/
96       DATA A( 4,2) / .00622 51246 3724D0/
97       DATA A( 5,2) / .00164 07883 1235D0/
98       DATA A( 6,2) / .00044 40792 0265D0/
99       DATA A( 7,2) / .00012 27749 4168D0/
100       DATA A( 8,2) / .00003 45398 1284D0/
101       DATA A( 9,2) / .00000 98586 9565D0/
102       DATA A(10,2) / .00000 28485 6995D0/
103       DATA A(11,2) / .00000 08317 0847D0/
104       DATA A(12,2) / .00000 02450 3950D0/
105       DATA A(13,2) / .00000 00727 6496D0/
106       DATA A(14,2) / .00000 00217 5802D0/
107       DATA A(15,2) / .00000 00065 4616D0/
108       DATA A(16,2) / .00000 00019 8033D0/
109       DATA A(17,2) / .00000 00006 0204D0/
110       DATA A(18,2) / .00000 00001 8385D0/
111       DATA A(19,2) / .00000 00000 5637D0/
112       DATA A(20,2) / .00000 00000 1735D0/
113       DATA A(21,2) / .00000 00000 0536D0/
114       DATA A(22,2) / .00000 00000 0166D0/
115       DATA A(23,2) / .00000 00000 0052D0/
116       DATA A(24,2) / .00000 00000 0016D0/
117       DATA A(25,2) / .00000 00000 0005D0/
118       DATA A(26,2) / .00000 00000 0002D0/
119
120       DATA A( 0,3) / .98161 02799 1365D0/
121       DATA A( 1,3) / .72926 80632 0726D0/
122       DATA A( 2,3) / .22774 71490 9321D0/
123       DATA A( 3,3) / .06809 08329 6197D0/
124       DATA A( 4,3) / .02013 70118 3064D0/
125       DATA A( 5,3) / .00595 47848 0197D0/
126       DATA A( 6,3) / .00176 76901 3959D0/
127       DATA A( 7,3) / .00052 74821 8502D0/
128       DATA A( 8,3) / .00015 82746 1460D0/
129       DATA A( 9,3) / .00004 77492 2076D0/
130       DATA A(10,3) / .00001 44792 0408D0/
131       DATA A(11,3) / .00000 44115 4886D0/
132       DATA A(12,3) / .00000 13500 3870D0/
133       DATA A(13,3) / .00000 04148 1779D0/
134       DATA A(14,3) / .00000 01279 3307D0/
135       DATA A(15,3) / .00000 00395 9070D0/
136       DATA A(16,3) / .00000 00122 9055D0/
137       DATA A(17,3) / .00000 00038 2658D0/
138       DATA A(18,3) / .00000 00011 9459D0/
139       DATA A(19,3) / .00000 00003 7386D0/
140       DATA A(20,3) / .00000 00001 1727D0/
141       DATA A(21,3) / .00000 00000 3687D0/
142       DATA A(22,3) / .00000 00000 1161D0/
143       DATA A(23,3) / .00000 00000 0366D0/
144       DATA A(24,3) / .00000 00000 0116D0/
145       DATA A(25,3) / .00000 00000 0037D0/
146       DATA A(26,3) / .00000 00000 0012D0/
147       DATA A(27,3) / .00000 00000 0004D0/
148       DATA A(28,3) / .00000 00000 0001D0/
149
150       DATA A( 0,4) /1.06405 21184 614 D0/
151       DATA A( 1,4) /1.06917 20744 981 D0/
152       DATA A( 2,4) / .41527 19325 1768D0/
153       DATA A( 3,4) / .14610 33293 6222D0/
154       DATA A( 4,4) / .04904 73264 8784D0/
155       DATA A( 5,4) / .01606 34086 0396D0/
156       DATA A( 6,4) / .00518 88935 0790D0/
157       DATA A( 7,4) / .00166 29871 7324D0/
158       DATA A( 8,4) / .00053 05827 9969D0/
159       DATA A( 9,4) / .00016 88702 9251D0/
160       DATA A(10,4) / .00005 36832 8059D0/
161       DATA A(11,4) / .00001 70592 3313D0/
162       DATA A(12,4) / .00000 54217 4374D0/
163       DATA A(13,4) / .00000 17239 4082D0/
164       DATA A(14,4) / .00000 05485 3275D0/
165       DATA A(15,4) / .00000 01746 7795D0/
166       DATA A(16,4) / .00000 00556 7550D0/
167       DATA A(17,4) / .00000 00177 6234D0/
168       DATA A(18,4) / .00000 00056 7224D0/
169       DATA A(19,4) / .00000 00018 1313D0/
170       DATA A(20,4) / .00000 00005 8012D0/
171       DATA A(21,4) / .00000 00001 8579D0/
172       DATA A(22,4) / .00000 00000 5955D0/
173       DATA A(23,4) / .00000 00000 1911D0/
174       DATA A(24,4) / .00000 00000 0614D0/
175       DATA A(25,4) / .00000 00000 0197D0/
176       DATA A(26,4) / .00000 00000 0063D0/
177       DATA A(27,4) / .00000 00000 0020D0/
178       DATA A(28,4) / .00000 00000 0007D0/
179       DATA A(29,4) / .00000 00000 0002D0/
180       DATA A(30,4) / .00000 00000 0001D0/
181
182       DATA A( 0,5) / .97920 86066 9175D0/
183       DATA A( 1,5) / .08518 81314 8683D0/
184       DATA A( 2,5) / .00855 98522 2013D0/
185       DATA A( 3,5) / .00121 17721 4413D0/
186       DATA A( 4,5) / .00020 72276 8531D0/
187       DATA A( 5,5) / .00003 99695 8691D0/
188       DATA A( 6,5) / .00000 83806 4065D0/
189       DATA A( 7,5) / .00000 18684 8945D0/
190       DATA A( 8,5) / .00000 04366 6087D0/
191       DATA A( 9,5) / .00000 01059 1733D0/
192       DATA A(10,5) / .00000 00264 7892D0/
193       DATA A(11,5) / .00000 00067 8700D0/
194       DATA A(12,5) / .00000 00017 7654D0/
195       DATA A(13,5) / .00000 00004 7342D0/
196       DATA A(14,5) / .00000 00001 2812D0/
197       DATA A(15,5) / .00000 00000 3514D0/
198       DATA A(16,5) / .00000 00000 0975D0/
199       DATA A(17,5) / .00000 00000 0274D0/
200       DATA A(18,5) / .00000 00000 0077D0/
201       DATA A(19,5) / .00000 00000 0022D0/
202       DATA A(20,5) / .00000 00000 0006D0/
203       DATA A(21,5) / .00000 00000 0002D0/
204       DATA A(22,5) / .00000 00000 0001D0/
205
206       DATA A( 0,6) / .95021 85196 3952D0/
207       DATA A( 1,6) / .29052 52916 1433D0/
208       DATA A( 2,6) / .05081 77406 1716D0/
209       DATA A( 3,6) / .00995 54376 7280D0/
210       DATA A( 4,6) / .00211 73389 5031D0/
211       DATA A( 5,6) / .00047 85947 0550D0/
212       DATA A( 6,6) / .00011 33432 1308D0/
213       DATA A( 7,6) / .00002 78473 3104D0/
214       DATA A( 8,6) / .00000 70478 8108D0/
215       DATA A( 9,6) / .00000 18278 8740D0/
216       DATA A(10,6) / .00000 04838 7492D0/
217       DATA A(11,6) / .00000 01303 3842D0/
218       DATA A(12,6) / .00000 00356 3769D0/
219       DATA A(13,6) / .00000 00098 7174D0/
220       DATA A(14,6) / .00000 00027 6586D0/
221       DATA A(15,6) / .00000 00007 8279D0/
222       DATA A(16,6) / .00000 00002 2354D0/
223       DATA A(17,6) / .00000 00000 6435D0/
224       DATA A(18,6) / .00000 00000 1866D0/
225       DATA A(19,6) / .00000 00000 0545D0/
226       DATA A(20,6) / .00000 00000 0160D0/
227       DATA A(21,6) / .00000 00000 0047D0/
228       DATA A(22,6) / .00000 00000 0014D0/
229       DATA A(23,6) / .00000 00000 0004D0/
230       DATA A(24,6) / .00000 00000 0001D0/
231
232       DATA A( 0,7) / .95064 03218 6777D0/
233       DATA A( 1,7) / .54138 28546 5171D0/
234       DATA A( 2,7) / .13649 97959 0321D0/
235       DATA A( 3,7) / .03417 94232 8207D0/
236       DATA A( 4,7) / .00869 02788 3583D0/
237       DATA A( 5,7) / .00225 28408 4155D0/
238       DATA A( 6,7) / .00059 51608 9806D0/
239       DATA A( 7,7) / .00015 99561 7766D0/
240       DATA A( 8,7) / .00004 36521 3096D0/
241       DATA A( 9,7) / .00001 20747 4688D0/
242       DATA A(10,7) / .00000 33801 8176D0/
243       DATA A(11,7) / .00000 09563 2476D0/
244       DATA A(12,7) / .00000 02731 3129D0/
245       DATA A(13,7) / .00000 00786 6968D0/
246       DATA A(14,7) / .00000 00228 3195D0/
247       DATA A(15,7) / .00000 00066 7205D0/
248       DATA A(16,7) / .00000 00019 6191D0/
249       DATA A(17,7) / .00000 00005 8018D0/
250       DATA A(18,7) / .00000 00001 7246D0/
251       DATA A(19,7) / .00000 00000 5151D0/
252       DATA A(20,7) / .00000 00000 1545D0/
253       DATA A(21,7) / .00000 00000 0465D0/
254       DATA A(22,7) / .00000 00000 0141D0/
255       DATA A(23,7) / .00000 00000 0043D0/
256       DATA A(24,7) / .00000 00000 0013D0/
257       DATA A(25,7) / .00000 00000 0004D0/
258       DATA A(26,7) / .00000 00000 0001D0/
259
260       DATA A( 0,8) / .98800 01167 2229D0/
261       DATA A( 1,8) / .04364 06760 9601D0/
262       DATA A( 2,8) / .00295 09117 8278D0/
263       DATA A( 3,8) / .00031 47780 9720D0/
264       DATA A( 4,8) / .00004 31484 6029D0/
265       DATA A( 5,8) / .00000 69381 8230D0/
266       DATA A( 6,8) / .00000 12464 0350D0/
267       DATA A( 7,8) / .00000 02429 3628D0/
268       DATA A( 8,8) / .00000 00504 0827D0/
269       DATA A( 9,8) / .00000 00109 9075D0/
270       DATA A(10,8) / .00000 00024 9467D0/
271       DATA A(11,8) / .00000 00005 8540D0/
272       DATA A(12,8) / .00000 00001 4127D0/
273       DATA A(13,8) / .00000 00000 3492D0/
274       DATA A(14,8) / .00000 00000 0881D0/
275       DATA A(15,8) / .00000 00000 0226D0/
276       DATA A(16,8) / .00000 00000 0059D0/
277       DATA A(17,8) / .00000 00000 0016D0/
278       DATA A(18,8) / .00000 00000 0004D0/
279       DATA A(19,8) / .00000 00000 0001D0/
280
281       DATA A( 0,9) / .95768 50654 6350D0/
282       DATA A( 1,9) / .19725 24967 9534D0/
283       DATA A( 2,9) / .02603 37031 3918D0/
284       DATA A( 3,9) / .00409 38216 8261D0/
285       DATA A( 4,9) / .00072 68170 7110D0/
286       DATA A( 5,9) / .00014 09187 9261D0/
287       DATA A( 6,9) / .00002 92045 8914D0/
288       DATA A( 7,9) / .00000 63763 1144D0/
289       DATA A( 8,9) / .00000 14516 7850D0/
290       DATA A( 9,9) / .00000 03420 5281D0/
291       DATA A(10,9) / .00000 00829 4302D0/
292       DATA A(11,9) / .00000 00206 0784D0/
293       DATA A(12,9) / .00000 00052 2823D0/
294       DATA A(13,9) / .00000 00013 5066D0/
295       DATA A(14,9) / .00000 00003 5451D0/
296       DATA A(15,9) / .00000 00000 9436D0/
297       DATA A(16,9) / .00000 00000 2543D0/
298       DATA A(17,9) / .00000 00000 0693D0/
299       DATA A(18,9) / .00000 00000 0191D0/
300       DATA A(19,9) / .00000 00000 0053D0/
301       DATA A(20,9) / .00000 00000 0015D0/
302       DATA A(21,9) / .00000 00000 0004D0/
303       DATA A(22,9) / .00000 00000 0001D0/
304
305       DATA A( 0,10) / .99343 65167 1347D0/
306       DATA A( 1,10) / .02225 77012 6826D0/
307       DATA A( 2,10) / .00101 47557 4703D0/
308       DATA A( 3,10) / .00008 17515 6250D0/
309       DATA A( 4,10) / .00000 89997 3547D0/
310       DATA A( 5,10) / .00000 12082 3987D0/
311       DATA A( 6,10) / .00000 01861 6913D0/
312       DATA A( 7,10) / .00000 00317 4723D0/
313       DATA A( 8,10) / .00000 00058 5215D0/
314       DATA A( 9,10) / .00000 00011 4739D0/
315       DATA A(10,10) / .00000 00002 3652D0/
316       DATA A(11,10) / .00000 00000 5082D0/
317       DATA A(12,10) / .00000 00000 1131D0/
318       DATA A(13,10) / .00000 00000 0259D0/
319       DATA A(14,10) / .00000 00000 0061D0/
320       DATA A(15,10) / .00000 00000 0015D0/
321       DATA A(16,10) / .00000 00000 0004D0/
322       DATA A(17,10) / .00000 00000 0001D0/
323
324       IF(N .LT. 1 .OR. N .GT. 4 .OR. M .LT. 1 .OR. M .GT. 4 .OR.
325      1   N+M .GT. 5) THEN
326        Z=0
327        WRITE(ERRTXT,101) N,M
328        CALL MTLPRT(NAME,'C321.1',ERRTXT)
329       ELSEIF(X .EQ. 1) THEN
330        Z=S1(N,M)
331       ELSEIF(X .GT. 2 .OR. X .LT. -1) THEN
332        X1=1/X
333        H=C1*X1+C2
334        ALFA=H+H
335        V(0)=1
336        V(1)=LOG(-X+I*Z0)
337        DO 33 L = 2,N+M
338    33  V(L)=V(1)*V(L-1)/L
339        SK=0
340        DO 34 K = 0,M-1
341        M1=M-K
342        R=X1**M1/(FCT(M1)*FCT(N-1))
343        SJ=0
344        DO 35 J = 0,K
345        N1=N+K-J
346        L=INDEX(10*N1+M1-10)
347        B1=0
348        B2=0
349        DO 31 IT = NC(L),0,-1
350        B0=A(IT,L)+ALFA*B1-B2
351        B2=B1
352    31  B1=B0
353        Q=(FCT(N1-1)/FCT(K-J))*(B0-H*B2)*R/M1**N1
354    35  SJ=SJ+V(J)*Q
355    34  SK=SK+SGN(K)*SJ
356        SJ=0
357        DO 36 J = 0,N-1
358    36  SJ=SJ+V(J)*C(N-J,M)
359        Z=SGN(N)*SK+SGN(M)*(SJ+V(N+M))
360       ELSEIF(X .GT. HF) THEN
361        X1=1-X
362        H=C1*X1+C2
363        ALFA=H+H
364        V(0)=1
365        U(0)=1
366        V(1)=LOG(X1+I*Z0)
367        U(1)=LOG(X)
368        DO 23 L = 2,M
369    23  V(L)=V(1)*V(L-1)/L
370        DO 26 L = 2,N
371    26  U(L)=U(1)*U(L-1)/L
372        SK=0
373        DO 24 K = 0,N-1
374        M1=N-K
375        R=X1**M1/FCT(M1)
376        SJ=0
377        DO 25 J = 0,M-1
378        N1=M-J
379        L=INDEX(10*N1+M1-10)
380        B1=0
381        B2=0
382        DO 12 IT = NC(L),0,-1
383        B0=A(IT,L)+ALFA*B1-B2
384        B2=B1
385    12  B1=B0
386        Q=SGN(J)*(B0-H*B2)*R/M1**N1
387    25  SJ=SJ+V(J)*Q
388    24  SK=SK+U(K)*(S1(M1,M)-SJ)
389        Z=SK+SGN(M)*U(N)*V(M)
390       ELSE
391        L=INDEX(10*N+M-10)
392        H=C1*X+C2
393        ALFA=H+H
394        B1=0
395        B2=0
396        DO 11 IT = NC(L),0,-1
397        B0=A(IT,L)+ALFA*B1-B2
398        B2=B1
399    11  B1=B0
400        Z=(B0-H*B2)*X**M/(FCT(M)*M**N)
401       ENDIF
402 #if defined(CERNLIB_DOUBLE)
403       WGPLG=Z
404 #endif
405 #if !defined(CERNLIB_DOUBLE)
406       CGPLG=Z
407 #endif
408       RETURN
409   101 FORMAT('ILLEGAL VALUES   N = ',I3,'   M = ',I3)
410       END