1 SUBROUTINE casyi(Z, FNU, KODE, N, Y, NZ, RL, TOL, ELIM, ALIM)
12 COMPLEX AK1, CK, CONE, CS1, CS2, CZ, CZERO, DK, EZ, P1, RZ, S2,
14 REAL AA, ACZ, AEZ, AK, ALIM, ARG, ARM, ATOL, AZ, BB, BK, DFNU,
15 * DNU2, ELIM, FDN, FNU, PI, RL, RTPI, RTR1, S, SGN, SQK, TOL, X,
17 INTEGER I, IB, IL, INU, J, JL, K, KODE, KODED, M, N, NN, NZ
19 DATA pi, rtpi /3.14159265358979324e0 , 0.159154943091895336e0 /
20 DATA czero, cone / (0.0e0,0.0e0), (1.0e0,0.0e0) /
25 arm = 1.0e+3*r1mach(1)
28 dfnu = fnu + float(n-il)
32 ak1 =
cmplx(rtpi,0.0e0)/z
35 IF (kode.EQ.2) cz = z -
cmplx(x,0.0e0)
37 IF (abs(acz).GT.elim)
GO TO 80
40 IF ((abs(acz).GT.alim) .AND. (n.GT.2))
GO TO 10
45 IF (dnu2.GT.rtr1) fdn = dnu2*dnu2
46 ez = z*
cmplx(8.0e0,0.0e0)
57 IF (yy.EQ.0.0e0)
GO TO 20
63 arg = (fnu-float(inu))*pi
67 IF (yy.LT.0.0e0) bk = -bk
69 IF (
mod(inu,2).EQ.1) p1 = -p1
83 ck = ck*
cmplx(sqk,0.0e0)/dk
86 cs1 = cs1 + ck*
cmplx(sgn,0.0e0)
92 IF (aa.LE.atol)
GO TO 40
97 IF (x+x.LT.elim) s2 = s2 + p1*cs2*cexp(-z-z)
98 fdn = fdn + 8.0e0*dfnu + 4.0e0
110 y(k) =
cmplx(ak+fnu,0.0e0)*rz*y(k+1) + y(k+2)
114 IF (koded.EQ.0)
RETURN
subroutine casyi(z, fnu, kode, n, y, nz, rl, tol, elim, alim)