1
SUBROUTINE grat1(a,x,r,p,q,eps)
2
C .. Scalar Arguments ..
3
DOUBLE PRECISION a,eps,p,q,r,x
6
DOUBLE PRECISION a2n,a2nm1,am0,an,an0,b2n,b2nm1,c,cma,g,h,j,l,sum,
9
C .. External Functions ..
10
DOUBLE PRECISION erf,erfc1,gam1,rexp
11
EXTERNAL erf,erfc1,gam1,rexp
13
C .. Intrinsic Functions ..
14
INTRINSIC abs,dlog,exp,sqrt
16
C .. Executable Statements ..
17
C-----------------------------------------------------------------------
18
C EVALUATION OF THE INCOMPLETE GAMMA RATIO FUNCTIONS
21
C IT IS ASSUMED THAT A .LE. 1. EPS IS THE TOLERANCE TO BE USED.
22
C THE INPUT ARGUMENT R HAS THE VALUE E**(-X)*X**A/GAMMA(A).
23
C-----------------------------------------------------------------------
24
IF (a*x.EQ.0.0D0) GO TO 120
25
IF (a.EQ.0.5D0) GO TO 100
26
IF (x.LT.1.1D0) GO TO 10
29
C TAYLOR SERIES FOR P(A,X)/X**A
34
tol = 0.1D0*eps/ (a+1.0D0)
39
IF (abs(t).GT.tol) GO TO 20
40
j = a*x* ((sum/6.0D0-0.5D0/ (a+2.0D0))*x+1.0D0/ (a+1.0D0))
45
IF (x.LT.0.25D0) GO TO 30
46
IF (a.LT.x/2.59D0) GO TO 50
49
30 IF (z.GT.-.13394D0) GO TO 50
52
p = w*g* (0.5D0+ (0.5D0-j))
59
IF (q.LT.0.0D0) GO TO 90
63
C CONTINUED FRACTION EXPANSION
70
70 a2nm1 = x*a2n + c*a2nm1
71
b2nm1 = x*b2n + c*b2nm1
78
IF (abs(an0-am0).GE.eps*an0) GO TO 70
93
100 IF (x.GE.0.25D0) GO TO 110
98
110 q = erfc1(0,sqrt(x))
102
120 IF (x.LE.a) GO TO 80