]>
Commit | Line | Data |
---|---|---|
37e4484e | 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 |