1 SUBROUTINE zrati(ZR, ZI, FNU, N, CYR, CYI, TOL)
15 DOUBLE PRECISION ak, amagz, ap1, ap2,
arg, az, cdfnui, cdfnur,
16 * conei, coner, cyi, cyr, czeroi, czeror, dfnu, fdnu, flam, fnu,
17 * fnup, pti, ptr, p1i, p1r, p2i, p2r, rak, rap1, rho, rt2, rzi,
18 * rzr,
test, test1, tol, tti, ttr, t1i, t1r, zi, zr,
xzabs
19 INTEGER i,
id, idnu, inu, itime, k, kk, magz, n
21 DATA czeror,czeroi,coner,conei,rt2/
22 1 0.0d0, 0.0d0, 1.0d0, 0.0d0, 1.41421356237309505d0 /
27 amagz = dble(float(magz+1))
28 fdnu = dble(float(idnu))
29 fnup = dmax1(amagz,fdnu)
35 rzi = -ptr*(zi+zi)*ptr
53 arg = (ap2+ap2)/(ap1*tol)
67 p2r = p1r - (t1r*ptr-t1i*pti)
68 p2i = p1i - (t1r*pti+t1i*ptr)
74 IF (ap1.LE.
test) go to 10
75 IF (itime.EQ.2) go to 20
76 ak =
xzabs(t1r,t1i)*0.5d0
77 flam = ak + dsqrt(ak*ak-1.0d0)
78 rho = dmin1(ap2/ap1,flam)
79 test = test1*dsqrt(rho/(rho*rho-1.0d0))
87 dfnu = fnu + dble(float(n-1))
98 p1r = (ptr*ttr-pti*tti) + p2r
99 p1i = (ptr*tti+pti*ttr) + p2i
104 IF (p1r.NE.czeror .OR. p1i.NE.czeroi) go to 40
108 CALL
zdiv(p2r, p2i, p1r, p1i, cyr(n), cyi(n))
117 ptr = cdfnur + (t1r*rzr-t1i*rzi) + cyr(k+1)
118 pti = cdfnui + (t1r*rzi+t1i*rzr) + cyi(k+1)
120 IF (ak.NE.czeror) go to 50
127 cyi(k) = -rak*pti*rak