1 SUBROUTINE zbesi(ZR, ZI, FNU, KODE, N, CYR, CYI, NZ, IERR)
153 DOUBLE PRECISION aa, alim,
arg, conei, coner, csgni, csgnr, cyi,
154 * cyr, dig, elim, fnu, fnul, pi, rl, r1m5,
str, tol, zi, zni, znr,
155 * zr,
d1mach, az, bb, fn,
xzabs, ascle, rtol, atol, sti
156 INTEGER i,
ierr, inu, k, kode, k1,k2,n,nz,
nn,
i1mach
158 DATA pi /3.14159265358979324d0/
159 DATA coner, conei /1.0d0,0.0d0/
164 IF (fnu.LT.0.0d0)
ierr=1
165 IF (kode.LT.1 .OR. kode.GT.2)
ierr=1
167 IF (
ierr.NE.0)
RETURN
183 k = min0(iabs(k1),iabs(k2))
184 elim = 2.303d0*(dble(float(k))*r1m5-3.0d0)
186 aa = r1m5*dble(float(k1))
187 dig = dmin1(aa,18.0d0)
189 alim = elim + dmax1(-aa,-41.45d0)
190 rl = 1.2d0*dig + 3.0d0
191 fnul = 10.0d0 + 6.0d0*(dig-3.0d0)
196 fn = fnu+dble(float(n-1))
198 bb=dble(float(
i1mach(9)))*0.5d0
200 IF (az.GT.aa) go to 260
201 IF (fn.GT.aa) go to 260
209 IF (zr.GE.0.0d0) go to 40
217 arg = (fnu-dble(float(inu)))*pi
218 IF (zi.LT.0.0d0)
arg = -
arg
221 IF (
mod(inu,2).EQ.0) go to 40
225 CALL
zbinu(znr, zni, fnu, kode, n, cyr, cyi, nz, rl, fnul, tol,
227 IF (nz.LT.0) go to 120
228 IF (zr.GE.0.0d0)
RETURN
243 IF (dmax1(dabs(aa),dabs(bb)).GT.ascle) go to 55
248 str = aa*csgnr - bb*csgni
249 sti = aa*csgni + bb*csgnr
257 IF(nz.EQ.(-2)) go to 130