]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/mathlib/gen/c/reli164.F
Fixing for Sun
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / c / reli164.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1996/04/01 15:02:10 mclareni
6* Mathlib gen
7*
8*
9#include "gen/pilot.h"
10#if defined(CERNLIB_DOUBLE)
11 FUNCTION DELI1(X,AKP)
12C
13#include "gen/imp64.inc"
14C
15#endif
16#if !defined(CERNLIB_DOUBLE)
17 FUNCTION RELI1(X,AKP)
18C
19#endif
20C
21C Translation of Algol procedure el1(x,kc) in
22C R. BULIRSCH Numerical Calculation of Elliptic Integrals and
23C Elliptic Functions, Numer. Math. 7 (1965) 78-90
24C
25 PARAMETER (ID = 16)
26 PARAMETER (PI = 3.14159 26535 89793 24D0)
27 PARAMETER (Z10 = 10)
28 PARAMETER (CA = Z10**(-ID/2), CB = Z10**(-(ID+2)))
29
30 IF(X .EQ. 0) THEN
31 H=0
32 ELSEIF(AKP .EQ. 0) THEN
33#if defined(CERNLIB_DOUBLE)
34 H=DASINH(X)
35#endif
36#if !defined(CERNLIB_DOUBLE)
37 H=ASINH(X)
38#endif
39 ELSE
40 Y=ABS(1/X)
41 YKP=ABS(AKP)
42 XM=1
43 L=0
44 1 E=XM*YKP
45 G=XM
46 XM=YKP+XM
47 Y=-E/Y+Y
48 IF(Y .EQ. 0) Y=SQRT(E)*CB
49 IF(ABS(G-YKP) .GT. CA*G) THEN
50 YKP=2*SQRT(E)
51 L=2*L
52 IF(Y .LT. 0) L=L+1
53 GO TO 1
54 ENDIF
55 IF(Y .LT. 0) L=L+1
56 E=(ATAN(XM/Y)+PI*L)/XM
57 IF(X .LT. 0) E=-E
58 H=E
59 ENDIF
60#if defined(CERNLIB_DOUBLE)
61 DELI1=H
62#endif
63#if !defined(CERNLIB_DOUBLE)
64 RELI1=H
65#endif
66 RETURN
67 END