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)
179 tol = dmax1(
d1mach(4),1.0d-18)
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
201 ascle =
d1mach(1)*rtol*1.0d+3
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
double precision function d1mach(i)
subroutine zbesh(ZR, ZI, FNU, KODE, M, N, CYR, CYI, NZ, IERR)
subroutine zbesy(ZR, ZI, FNU, KODE, N, CYR, CYI, NZ, CWRKR, CWRKI, IERR)