]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/mathlib/gen/g/dislan.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / g / dislan.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1996/04/01 15:02:43 mclareni
6* Mathlib gen
7*
8*
9#include "gen/pilot.h"
10C This will be DISLAN,IF=DOUBLE and DISLAN64,IF=-DOUBLE
11 FUNCTION DISLAN(X)
12
13 DIMENSION P1(0:4),P2(0:3),P3(0:3),P4(0:3),P5(0:3),P6(0:3)
14 DIMENSION Q1(0:4),Q2(0:3),Q3(0:3),Q4(0:3),Q5(0:3),Q6(0:3)
15 DIMENSION A1(1:3),A2(1:3)
16
17 DATA (P1(I),I=0,4),(Q1(I),I=0,4)
18 1/ 0.25140 91491E+0,-0.62505 80444E-1, 0.14583 81230E-1,
19 2 -0.21088 17737E-2, 0.74112 47290E-3,
20 3 1.0 ,-0.55711 75625E-2, 0.62253 10236E-1,
21 4 -0.31373 78427E-2, 0.19314 96439E-2/
22
23 DATA (P2(I),I=0,3),(Q2(I),I=0,3)
24 1/ 0.28683 28584E+0, 0.35643 63231E+0, 0.15235 18695E+0,
25 2 0.22513 04883E-1,
26 3 1.0 , 0.61911 36137E+0, 0.17207 21448E+0,
27 4 0.22785 94771E-1/
28
29 DATA (P3(I),I=0,3),(Q3(I),I=0,3)
30 1/ 0.28683 29066E+0, 0.30038 28436E+0, 0.99509 51941E-1,
31 2 0.87338 27185E-2,
32 3 1.0 , 0.42371 90502E+0, 0.10956 31512E+0,
33 4 0.86938 51567E-2/
34
35 DATA (P4(I),I=0,3),(Q4(I),I=0,3)
36 1/ 0.10003 51630E+1, 0.45035 92498E+1, 0.10858 83880E+2,
37 2 0.75360 52269E+1,
38 3 1.0 , 0.55399 69678E+1, 0.19335 81111E+2,
39 4 0.27213 21508E+2/
40
41 DATA (P5(I),I=0,3),(Q5(I),I=0,3)
42 1/ 0.10000 06517E+1, 0.49094 14111E+2, 0.85055 44753E+2,
43 2 0.15321 53455E+3,
44 3 1.0 , 0.50099 28881E+2, 0.13998 19104E+3,
45 4 0.42000 02909E+3/
46
47 DATA (P6(I),I=0,3),(Q6(I),I=0,3)
48 1/ 0.10000 00983E+1, 0.13298 68456E+3, 0.91621 49244E+3,
49 2 -0.96050 54274E+3,
50 3 1.0 , 0.13398 87843E+3, 0.10559 90413E+4,
51 4 0.55322 24619E+3/
52
53 DATA (A1(I),I=1,3)
54 1/-0.45833 33333E+0, 0.66753 47222E+0,-0.16417 41416E+1/
55
56 DATA (A2(I),I=1,3)
57 1/ 1.0 ,-0.42278 43351E+0,-0.20434 03138E+1/
58
59 ENTRY DSTLAN(X)
60
61 V=X
62 IF(V .LT. -5.5) THEN
63 U=EXP(V+1)
64 DISLAN=0.3989422803*EXP(-1/U)*SQRT(U)*
65 1 (1+(A1(1)+(A1(2)+A1(3)*U)*U)*U)
66 ELSEIF(V .LT. -1) THEN
67 U=EXP(-V-1)
68 DISLAN=(EXP(-U)/SQRT(U))*
69 1 (P1(0)+(P1(1)+(P1(2)+(P1(3)+P1(4)*V)*V)*V)*V)/
70 2 (Q1(0)+(Q1(1)+(Q1(2)+(Q1(3)+Q1(4)*V)*V)*V)*V)
71 ELSEIF(V .LT. 1) THEN
72 DISLAN=(P2(0)+(P2(1)+(P2(2)+P2(3)*V)*V)*V)/
73 1 (Q2(0)+(Q2(1)+(Q2(2)+Q2(3)*V)*V)*V)
74 ELSEIF(V .LT. 4) THEN
75 DISLAN=(P3(0)+(P3(1)+(P3(2)+P3(3)*V)*V)*V)/
76 1 (Q3(0)+(Q3(1)+(Q3(2)+Q3(3)*V)*V)*V)
77 ELSEIF(V .LT. 12) THEN
78 U=1/V
79 DISLAN=(P4(0)+(P4(1)+(P4(2)+P4(3)*U)*U)*U)/
80 1 (Q4(0)+(Q4(1)+(Q4(2)+Q4(3)*U)*U)*U)
81 ELSEIF(V .LT. 50) THEN
82 U=1/V
83 DISLAN=(P5(0)+(P5(1)+(P5(2)+P5(3)*U)*U)*U)/
84 1 (Q5(0)+(Q5(1)+(Q5(2)+Q5(3)*U)*U)*U)
85 ELSEIF(V .LT. 300) THEN
86 U=1/V
87 DISLAN=(P6(0)+(P6(1)+(P6(2)+P6(3)*U)*U)*U)/
88 1 (Q6(0)+(Q6(1)+(Q6(2)+Q6(3)*U)*U)*U)
89 ELSE
90 U=1/(V-V*LOG(V)/(V+1))
91 DISLAN=1-(A2(1)+(A2(2)+A2(3)*U)*U)*U
92 ENDIF
93 RETURN
94 END