Adding Lednicky's weight generator
[u/mrichter/AliRoot.git] / PWG2 / FEMTOSCOPY / AliFemto / FsiTools.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  2007/03/07 10:14:49  mchojnacki
6 * First version on CVS
7 *
8 * Revision 1.1.1.1  1996/04/01 15:01:55  mclareni
9 * Mathlib gen
10 *
11 *
12       FUNCTION CGAMMA(Z)
13
14       DIMENSION C(0:15)
15       COMPLEX*8 Z,CGAMMA
16       COMPLEX*8 U,V,F,H,S
17       CHARACTER NAME*(*)
18       CHARACTER*80 ERRTXT
19       PARAMETER (NAME = 'CGAMMA')
20
21       PARAMETER (Z1 = 1, HF = Z1/2)
22
23       DATA PI /3.14159 26535 89793 24D0/
24       DATA C1 /2.50662 82746 31000 50D0/
25
26       DATA C( 0) / 41.62443 69164 39068D0/
27       DATA C( 1) /-51.22424 10223 74774D0/
28       DATA C( 2) / 11.33875 58134 88977D0/
29       DATA C( 3) / -0.74773 26877 72388D0/
30       DATA C( 4) /  0.00878 28774 93061D0/
31       DATA C( 5) / -0.00000 18990 30264D0/
32       DATA C( 6) /  0.00000 00019 46335D0/
33       DATA C( 7) / -0.00000 00001 99345D0/
34       DATA C( 8) /  0.00000 00000 08433D0/
35       DATA C( 9) /  0.00000 00000 01486D0/
36       DATA C(10) / -0.00000 00000 00806D0/
37       DATA C(11) /  0.00000 00000 00293D0/
38       DATA C(12) / -0.00000 00000 00102D0/
39       DATA C(13) /  0.00000 00000 00037D0/
40       DATA C(14) / -0.00000 00000 00014D0/
41       DATA C(15) /  0.00000 00000 00006D0/
42
43
44       U=Z
45       X=U
46       IF(AIMAG(U) .EQ. 0 .AND. -ABS(X) .EQ. INT(X)) THEN
47        F=0
48        H=0
49        WRITE(ERRTXT,101) X
50 c       CALL MTLPRT(NAME,'C305.1',ERRTXT)
51       ELSE
52        IF(X .GE. 1) THEN
53         F=1
54         V=U
55        ELSEIF(X .GE. 0) THEN
56         F=1/U
57         V=1+U
58        ELSE
59         F=1
60         V=1-U
61        END IF
62        H=1
63        S=C(0)
64        DO 1 K = 1,15
65        H=((V-K)/(V+(K-1)))*H
66     1  S=S+C(K)*H
67        H=V+(4+HF)
68        H=C1*EXP((V-HF)*LOG(H)-H)*S
69        IF(X .LT. 0) H=PI/(SIN(PI*U)*H)
70       ENDIF
71       CGAMMA=F*H
72       RETURN
73   101 FORMAT('ARGUMENT EQUALS NON-POSITIVE INTEGER = ',1P,E15.1)
74       END
75
76 *
77 * $Id$
78 *
79 * $Log$
80 * Revision 1.1.1.1  2007/03/07 10:14:49  mchojnacki
81 * First version on CVS
82 *
83 * Revision 1.1.1.1  1996/04/01 15:02:02  mclareni
84 * Mathlib gen
85 *
86 *
87       FUNCTION DFRSIN(X)
88
89       IMPLICIT REAL*8 (A-H,O-Z)
90       DIMENSION A(0:16),B(0:15),C1(0:25),C2(0:28)
91
92       PARAMETER (Z1 = 1, R8 = Z1/8, R32 = Z1/32)
93
94       DATA C0 /1.25331 41373 15500 3D0/
95
96       DATA NA,NB,NC1,NC2 /16,15,25,28/
97
98       DATA A( 0) / 0.76435 13866 41860 002D0/
99       DATA A( 1) /-0.43135 54754 76601 793D0/
100       DATA A( 2) / 0.43288 19997 97266 531D0/
101       DATA A( 3) /-0.26973 31033 83871 110D0/
102       DATA A( 4) / 0.08416 04532 08769 354D0/
103       DATA A( 5) /-0.01546 52448 44613 820D0/
104       DATA A( 6) / 0.00187 85542 34398 220D0/
105       DATA A( 7) /-0.00016 26497 76188 875D0/
106       DATA A( 8) / 0.00001 05739 76563 833D0/
107       DATA A( 9) /-0.00000 05360 93398 892D0/
108       DATA A(10) / 0.00000 00218 16584 549D0/
109       DATA A(11) /-0.00000 00007 29016 212D0/
110       DATA A(12) / 0.00000 00000 20373 325D0/
111       DATA A(13) /-0.00000 00000 00483 440D0/
112       DATA A(14) / 0.00000 00000 00009 865D0/
113       DATA A(15) /-0.00000 00000 00000 175D0/
114       DATA A(16) / 0.00000 00000 00000 003D0/
115
116       DATA B( 0) / 0.63041 40431 45705 392D0/
117       DATA B( 1) /-0.42344 51140 57053 335D0/
118       DATA B( 2) / 0.37617 17264 33436 566D0/
119       DATA B( 3) /-0.16249 48915 45095 674D0/
120       DATA B( 4) / 0.03822 25577 86330 087D0/
121       DATA B( 5) /-0.00564 56347 71321 909D0/
122       DATA B( 6) / 0.00057 45495 19768 974D0/
123       DATA B( 7) /-0.00004 28707 15321 020D0/
124       DATA B( 8) / 0.00000 24512 07499 233D0/
125       DATA B( 9) /-0.00000 01109 88418 409D0/
126       DATA B(10) / 0.00000 00040 82497 317D0/
127       DATA B(11) /-0.00000 00001 24498 302D0/
128       DATA B(12) / 0.00000 00000 03200 484D0/
129       DATA B(13) /-0.00000 00000 00070 324D0/
130       DATA B(14) / 0.00000 00000 00001 336D0/
131       DATA B(15) /-0.00000 00000 00000 022D0/
132
133       DATA C1( 0) / 0.99056 04793 73497 549D0/
134       DATA C1( 1) /-0.01218 35098 31478 997D0/
135       DATA C1( 2) /-0.00248 27428 23113 060D0/
136       DATA C1( 3) / 0.00026 60949 52647 247D0/
137       DATA C1( 4) /-0.00000 10790 68987 406D0/
138       DATA C1( 5) /-0.00000 48836 81753 933D0/
139       DATA C1( 6) / 0.00000 09990 55266 368D0/
140       DATA C1( 7) /-0.00000 00750 92717 372D0/
141       DATA C1( 8) /-0.00000 00190 79487 573D0/
142       DATA C1( 9) / 0.00000 00090 90797 293D0/
143       DATA C1(10) /-0.00000 00019 66236 033D0/
144       DATA C1(11) / 0.00000 00001 64772 911D0/
145       DATA C1(12) / 0.00000 00000 63079 714D0/
146       DATA C1(13) /-0.00000 00000 36432 219D0/
147       DATA C1(14) / 0.00000 00000 10536 930D0/
148       DATA C1(15) /-0.00000 00000 01716 438D0/
149       DATA C1(16) /-0.00000 00000 00107 124D0/
150       DATA C1(17) / 0.00000 00000 00204 099D0/
151       DATA C1(18) /-0.00000 00000 00090 064D0/
152       DATA C1(19) / 0.00000 00000 00025 506D0/
153       DATA C1(20) /-0.00000 00000 00004 036D0/
154       DATA C1(21) /-0.00000 00000 00000 570D0/
155       DATA C1(22) / 0.00000 00000 00000 762D0/
156       DATA C1(23) /-0.00000 00000 00000 363D0/
157       DATA C1(24) / 0.00000 00000 00000 118D0/
158       DATA C1(25) /-0.00000 00000 00000 025D0/
159
160       DATA C2( 0) / 0.04655 77987 37516 4561D0/
161       DATA C2( 1) / 0.04499 21302 01239 4140D0/
162       DATA C2( 2) /-0.00175 42871 39651 4532D0/
163       DATA C2( 3) /-0.00014 65340 02581 0678D0/
164       DATA C2( 4) / 0.00003 91330 40863 0159D0/
165       DATA C2( 5) /-0.00000 34932 28659 7731D0/
166       DATA C2( 6) /-0.00000 03153 53003 2345D0/
167       DATA C2( 7) / 0.00000 01876 58200 8529D0/
168       DATA C2( 8) /-0.00000 00377 55280 4930D0/
169       DATA C2( 9) / 0.00000 00026 65516 5010D0/
170       DATA C2(10) / 0.00000 00010 88144 8122D0/
171       DATA C2(11) /-0.00000 00005 35500 7671D0/
172       DATA C2(12) / 0.00000 00001 31576 5447D0/
173       DATA C2(13) /-0.00000 00000 15286 0881D0/
174       DATA C2(14) /-0.00000 00000 03394 7646D0/
175       DATA C2(15) / 0.00000 00000 02702 0267D0/
176       DATA C2(16) /-0.00000 00000 00946 3142D0/
177       DATA C2(17) / 0.00000 00000 00207 1565D0/
178       DATA C2(18) /-0.00000 00000 00012 6931D0/
179       DATA C2(19) /-0.00000 00000 00013 9756D0/
180       DATA C2(20) / 0.00000 00000 00008 5929D0/
181       DATA C2(21) /-0.00000 00000 00003 1070D0/
182       DATA C2(22) / 0.00000 00000 00000 7515D0/
183       DATA C2(23) /-0.00000 00000 00000 0648D0/
184       DATA C2(24) /-0.00000 00000 00000 0522D0/
185       DATA C2(25) / 0.00000 00000 00000 0386D0/
186       DATA C2(26) /-0.00000 00000 00000 0165D0/
187       DATA C2(27) / 0.00000 00000 00000 0050D0/
188       DATA C2(28) /-0.00000 00000 00000 0009D0/
189
190       V=ABS(X)
191       IF(V .LT. 8) THEN
192        Y=R8*V
193        H=2*Y**2-1
194        ALFA=H+H
195        B1=0
196        B2=0
197        DO 4 I = NB,0,-1
198        B0=B(I)+ALFA*B1-B2
199        B2=B1
200     4  B1=B0
201        H=SQRT(V)*Y*(B0-B2)
202       ELSE
203        R=1/V
204        H=10*R-1
205        ALFA=H+H
206        B1=0
207        B2=0
208        DO 5 I = NC1,0,-1
209        B0=C1(I)+ALFA*B1-B2
210        B2=B1
211     5  B1=B0
212        S=B0-H*B2
213        B1=0
214        B2=0
215        DO 6 I = NC2,0,-1
216        B0=C2(I)+ALFA*B1-B2
217        B2=B1
218     6  B1=B0
219        H=C0-SQRT(R)*(S*COS(V)+(B0-H*B2)*SIN(V))
220       END IF
221       IF(X .LT. 0) H=-H
222       DFRSIN=H
223       return
224       end
225
226
227       function DFRCOS(X)
228
229       IMPLICIT REAL*8 (A-H,O-Z)
230       DIMENSION A(0:16),B(0:15),C1(0:25),C2(0:28)
231
232       PARAMETER (Z1 = 1, R8 = Z1/8, R32 = Z1/32)
233
234       DATA C0 /1.25331 41373 15500 3D0/
235
236       DATA NA,NB,NC1,NC2 /16,15,25,28/
237
238       DATA A( 0) / 0.76435 13866 41860 002D0/
239       DATA A( 1) /-0.43135 54754 76601 793D0/
240       DATA A( 2) / 0.43288 19997 97266 531D0/
241       DATA A( 3) /-0.26973 31033 83871 110D0/
242       DATA A( 4) / 0.08416 04532 08769 354D0/
243       DATA A( 5) /-0.01546 52448 44613 820D0/
244       DATA A( 6) / 0.00187 85542 34398 220D0/
245       DATA A( 7) /-0.00016 26497 76188 875D0/
246       DATA A( 8) / 0.00001 05739 76563 833D0/
247       DATA A( 9) /-0.00000 05360 93398 892D0/
248       DATA A(10) / 0.00000 00218 16584 549D0/
249       DATA A(11) /-0.00000 00007 29016 212D0/
250       DATA A(12) / 0.00000 00000 20373 325D0/
251       DATA A(13) /-0.00000 00000 00483 440D0/
252       DATA A(14) / 0.00000 00000 00009 865D0/
253       DATA A(15) /-0.00000 00000 00000 175D0/
254       DATA A(16) / 0.00000 00000 00000 003D0/
255
256       DATA B( 0) / 0.63041 40431 45705 392D0/
257       DATA B( 1) /-0.42344 51140 57053 335D0/
258       DATA B( 2) / 0.37617 17264 33436 566D0/
259       DATA B( 3) /-0.16249 48915 45095 674D0/
260       DATA B( 4) / 0.03822 25577 86330 087D0/
261       DATA B( 5) /-0.00564 56347 71321 909D0/
262       DATA B( 6) / 0.00057 45495 19768 974D0/
263       DATA B( 7) /-0.00004 28707 15321 020D0/
264       DATA B( 8) / 0.00000 24512 07499 233D0/
265       DATA B( 9) /-0.00000 01109 88418 409D0/
266       DATA B(10) / 0.00000 00040 82497 317D0/
267       DATA B(11) /-0.00000 00001 24498 302D0/
268       DATA B(12) / 0.00000 00000 03200 484D0/
269       DATA B(13) /-0.00000 00000 00070 324D0/
270       DATA B(14) / 0.00000 00000 00001 336D0/
271       DATA B(15) /-0.00000 00000 00000 022D0/
272
273       DATA C1( 0) / 0.99056 04793 73497 549D0/
274       DATA C1( 1) /-0.01218 35098 31478 997D0/
275       DATA C1( 2) /-0.00248 27428 23113 060D0/
276       DATA C1( 3) / 0.00026 60949 52647 247D0/
277       DATA C1( 4) /-0.00000 10790 68987 406D0/
278       DATA C1( 5) /-0.00000 48836 81753 933D0/
279       DATA C1( 6) / 0.00000 09990 55266 368D0/
280       DATA C1( 7) /-0.00000 00750 92717 372D0/
281       DATA C1( 8) /-0.00000 00190 79487 573D0/
282       DATA C1( 9) / 0.00000 00090 90797 293D0/
283       DATA C1(10) /-0.00000 00019 66236 033D0/
284       DATA C1(11) / 0.00000 00001 64772 911D0/
285       DATA C1(12) / 0.00000 00000 63079 714D0/
286       DATA C1(13) /-0.00000 00000 36432 219D0/
287       DATA C1(14) / 0.00000 00000 10536 930D0/
288       DATA C1(15) /-0.00000 00000 01716 438D0/
289       DATA C1(16) /-0.00000 00000 00107 124D0/
290       DATA C1(17) / 0.00000 00000 00204 099D0/
291       DATA C1(18) /-0.00000 00000 00090 064D0/
292       DATA C1(19) / 0.00000 00000 00025 506D0/
293       DATA C1(20) /-0.00000 00000 00004 036D0/
294       DATA C1(21) /-0.00000 00000 00000 570D0/
295       DATA C1(22) / 0.00000 00000 00000 762D0/
296       DATA C1(23) /-0.00000 00000 00000 363D0/
297       DATA C1(24) / 0.00000 00000 00000 118D0/
298       DATA C1(25) /-0.00000 00000 00000 025D0/
299
300       DATA C2( 0) / 0.04655 77987 37516 4561D0/
301       DATA C2( 1) / 0.04499 21302 01239 4140D0/
302       DATA C2( 2) /-0.00175 42871 39651 4532D0/
303       DATA C2( 3) /-0.00014 65340 02581 0678D0/
304       DATA C2( 4) / 0.00003 91330 40863 0159D0/
305       DATA C2( 5) /-0.00000 34932 28659 7731D0/
306       DATA C2( 6) /-0.00000 03153 53003 2345D0/
307       DATA C2( 7) / 0.00000 01876 58200 8529D0/
308       DATA C2( 8) /-0.00000 00377 55280 4930D0/
309       DATA C2( 9) / 0.00000 00026 65516 5010D0/
310       DATA C2(10) / 0.00000 00010 88144 8122D0/
311       DATA C2(11) /-0.00000 00005 35500 7671D0/
312       DATA C2(12) / 0.00000 00001 31576 5447D0/
313       DATA C2(13) /-0.00000 00000 15286 0881D0/
314       DATA C2(14) /-0.00000 00000 03394 7646D0/
315       DATA C2(15) / 0.00000 00000 02702 0267D0/
316       DATA C2(16) /-0.00000 00000 00946 3142D0/
317       DATA C2(17) / 0.00000 00000 00207 1565D0/
318       DATA C2(18) /-0.00000 00000 00012 6931D0/
319       DATA C2(19) /-0.00000 00000 00013 9756D0/
320       DATA C2(20) / 0.00000 00000 00008 5929D0/
321       DATA C2(21) /-0.00000 00000 00003 1070D0/
322       DATA C2(22) / 0.00000 00000 00000 7515D0/
323       DATA C2(23) /-0.00000 00000 00000 0648D0/
324       DATA C2(24) /-0.00000 00000 00000 0522D0/
325       DATA C2(25) / 0.00000 00000 00000 0386D0/
326       DATA C2(26) /-0.00000 00000 00000 0165D0/
327       DATA C2(27) / 0.00000 00000 00000 0050D0/
328       DATA C2(28) /-0.00000 00000 00000 0009D0/
329
330       V=ABS(X)
331       IF(V .LT. 8) THEN
332        H=R32*V**2-1
333        ALFA=H+H
334        B1=0
335        B2=0
336        DO 1 I = NA,0,-1
337        B0=A(I)+ALFA*B1-B2
338        B2=B1
339     1  B1=B0
340        H=SQRT(V)*(B0-H*B2)
341       ELSE
342        R=1/V
343        H=10*R-1
344        ALFA=H+H
345        B1=0
346        B2=0
347        DO 2 I = NC1,0,-1
348        B0=C1(I)+ALFA*B1-B2
349        B2=B1
350     2  B1=B0
351        S=B0-H*B2
352        B1=0
353        B2=0
354        DO 3 I = NC2,0,-1
355        B0=C2(I)+ALFA*B1-B2
356        B2=B1
357     3  B1=B0
358        H=C0-SQRT(R)*((B0-H*B2)*COS(V)-S*SIN(V))
359       END IF
360       IF(X .LT. 0) H=-H
361       DFRCOS=H
362       RETURN
363       END