1 SUBROUTINE zbesy(ZR, ZI, FNU, KODE, N, CYR, CYI, NZ, CWRKR, CWRKI,
151 DOUBLE PRECISION cwrki, cwrkr, cyi, cyr, c1i, c1r, c2i, c2r,
152 * elim, exi, exr, ey, fnu, hcii, sti,
str, tay, zi, zr, dexp,
153 *
d1mach, ascle, rtol, atol, aa, bb, tol
154 INTEGER i,
ierr, k, kode, k1, k2, n, nz, nz1, nz2,
i1mach
155 dimension cyr(n), cyi(n), cwrkr(n), cwrki(n)
159 IF (zr.EQ.0.0d0 .AND. zi.EQ.0.0d0)
ierr=1
160 IF (fnu.LT.0.0d0)
ierr=1
161 IF (kode.LT.1 .OR. kode.GT.2)
ierr=1
163 IF (
ierr.NE.0)
RETURN
165 CALL
zbesh(zr, zi, fnu, kode, 1, n, cyr, cyi, nz1,
ierr)
166 IF (
ierr.NE.0.AND.
ierr.NE.3) go to 170
167 CALL
zbesh(zr, zi, fnu, kode, 2, n, cwrkr, cwrki, nz2,
ierr)
168 IF (
ierr.NE.0.AND.
ierr.NE.3) go to 170
170 IF (kode.EQ.2) go to 60
172 str = cwrkr(i) - cyr(i)
173 sti = cwrki(i) - cyi(i)
182 k = min0(iabs(k1),iabs(k2))
187 elim = 2.303d0*(dble(float(k))*r1m5-3.0d0)
192 IF (tay.LT.elim) ey = dexp(-tay)
193 IF (zi.LT.0.0d0) go to 90
212 IF (dmax1(dabs(aa),dabs(bb)).GT.ascle) go to 75
217 str = (aa*c2r - bb*c2i)*atol
218 sti = (aa*c2i + bb*c2r)*atol
222 IF (dmax1(dabs(aa),dabs(bb)).GT.ascle) go to 85
227 str =
str - (aa*c1r - bb*c1i)*atol
228 sti = sti - (aa*c1i + bb*c1r)*atol
231 IF (
str.EQ.0.0d0 .AND. sti.EQ.0.0d0 .AND. ey.EQ.0.0d0) nz = nz