1
DOUBLE PRECISION FUNCTION basym(a,b,lambda,eps)
2
C-----------------------------------------------------------------------
3
C ASYMPTOTIC EXPANSION FOR IX(A,B) FOR LARGE A AND B.
4
C LAMBDA = (A + B)*Y - B AND EPS IS THE TOLERANCE USED.
5
C IT IS ASSUMED THAT LAMBDA IS NONNEGATIVE AND THAT
6
C A AND B ARE GREATER THAN OR EQUAL TO 15.
7
C-----------------------------------------------------------------------
8
C .. Scalar Arguments ..
9
DOUBLE PRECISION a,b,eps,lambda
12
DOUBLE PRECISION bsum,dsum,e0,e1,f,h,h2,hn,j0,j1,r,r0,r1,s,sum,t,
13
+ t0,t1,u,w,w0,z,z0,z2,zn,znm1
14
INTEGER i,im1,imj,j,m,mm1,mmj,n,np1,num
17
DOUBLE PRECISION a0(21),b0(21),c(21),d(21)
19
C .. External Functions ..
20
DOUBLE PRECISION bcorr,erfc1,rlog1
21
EXTERNAL bcorr,erfc1,rlog1
23
C .. Intrinsic Functions ..
24
INTRINSIC abs,exp,sqrt
26
C .. Data statements ..
27
C------------------------
28
C ****** NUM IS THE MAXIMUM VALUE THAT N CAN TAKE IN THE DO LOOP
29
C ENDING AT STATEMENT 50. IT IS REQUIRED THAT NUM BE EVEN.
30
C THE ARRAYS A0, B0, C, D HAVE DIMENSION NUM + 1.
32
C------------------------
35
C------------------------
37
DATA e0/1.12837916709551D0/,e1/.353553390593274D0/
39
C .. Executable Statements ..
40
C------------------------
46
w0 = 1.0D0/sqrt(a* (1.0D0+h))
52
w0 = 1.0D0/sqrt(b* (1.0D0+h))
54
20 f = a*rlog1(-lambda/a) + b*rlog1(lambda/b)
56
IF (t.EQ.0.0D0) RETURN
61
a0(1) = (2.0D0/3.0D0)*r1
64
j0 = (0.5D0/e0)*erfc1(1,z0)
76
a0(n) = 2.0D0*r0* (1.0D0+h*hn)/ (n+2.0D0)
79
a0(np1) = 2.0D0*r1*s/ (n+3.0D0)
89
bsum = bsum + (j*r-mmj)*a0(j)*b0(mmj)
91
b0(m) = r*a0(m) + bsum/m
93
c(i) = b0(i)/ (i+1.0D0)
99
dsum = dsum + d(imj)*c(j)
104
j0 = e1*znm1 + (n-1.0D0)*j0
113
IF ((abs(t0)+abs(t1)).LE.eps*sum) GO TO 80
116
80 u = exp(-bcorr(a,b))