1 SUBROUTINE cbesh(Z, FNU, KODE, M, N, CY, NZ, IERR)
155 COMPLEX CY, Z, ZN, ZT, CSGN
156 REAL AA, ALIM, ALN, ARG, AZ, CPN, DIG, ELIM, FMM, FN, FNU, FNUL,
157 * HPI, RHPI, RL, R1M5, SGN, SPN, TOL, UFL, XN, XX, YN, YY, R1MACH,
158 * BB, ASCLE, RTOL, ATOL
159 INTEGER I, IERR, INU, INUH, IR, K, KODE, K1, K2, M,
160 * MM, MR, N, NN, NUF, NW, NZ, I1MACH
163 DATA hpi /1.57079632679489662e0/
170 IF (xx.EQ.0.0e0 .AND. yy.EQ.0.0e0) ierr=1
171 IF (fnu.LT.0.0e0) ierr=1
172 IF (m.LT.1 .OR. m.GT.2) ierr=1
173 IF (kode.LT.1 .OR. kode.GT.2) ierr=1
175 IF (ierr.NE.0)
RETURN
188 tol = amax1(r1mach(4),1.0e-18)
192 k = min0(iabs(k1),iabs(k2))
193 elim = 2.303e0*(float(k)*r1m5-3.0e0)
196 dig = amin1(aa,18.0e0)
198 alim = elim + amax1(-aa,-41.45e0)
199 fnul = 10.0e0 + 6.0e0*(dig-3.0e0)
200 rl = 1.2e0*dig + 3.0e0
201 fn = fnu + float(nn-1)
204 zn = z*
cmplx(0.0e0,-fmm)
212 bb=float(i1mach(9))*0.5e0
214 IF(az.GT.aa)
GO TO 240
215 IF(fn.GT.aa)
GO TO 240
223 ufl = r1mach(1)*1.0e+3
224 IF (az.LT.ufl)
GO TO 220
225 IF (fnu.GT.fnul)
GO TO 90
226 IF (fn.LE.1.0e0)
GO TO 70
227 IF (fn.GT.2.0e0)
GO TO 60
228 IF (az.GT.tol)
GO TO 70
231 IF (aln.GT.elim)
GO TO 220
234 CALL cuoik(zn, fnu, kode, 2, nn, cy, nuf, tol, elim, alim)
235 IF (nuf.LT.0)
GO TO 220
242 IF (nn.EQ.0)
GO TO 130
244 IF ((xn.LT.0.0e0) .OR. (xn.EQ.0.0e0 .AND. yn.LT.0.0e0 .AND.
250 CALL cbknu(zn, fnu, kode, nn, cy, nz, tol, elim, alim)
257 CALL cacon(zn, fnu, kode, mr, nn, cy, nw, rl, fnul, tol, elim,
259 IF (nw.LT.0)
GO TO 230
267 IF ((xn.GE.0.0e0) .AND. (xn.NE.0.0e0 .OR. yn.GE.0.0e0 .OR.
270 IF (xn.EQ.0.0e0 .AND. yn.LT.0.0e0) zn = -zn
272 CALL cbunk(zn, fnu, kode, mr, nn, cy, nw, tol, elim, alim)
273 IF (nw.LT.0)
GO TO 230
289 arg = (fnu-float(inu-ir))*sgn
294 csgn =
cmplx(-spn,cpn)
296 IF (
mod(inuh,2).EQ.1) csgn = -csgn
297 zt =
cmplx(0.0e0,-fmm)
307 IF (amax1(abs(aa),abs(bb)).GT.ascle)
GO TO 125
308 zn = zn*
cmplx(rtol,0.0e0)
312 cy(i) = zn*
cmplx(atol,0.0e0)
317 IF (xn.LT.0.0e0)
GO TO 220
324 IF(nw.EQ.(-1))
GO TO 220
subroutine cacon(Z, FNU, KODE, MR, N, Y, NZ, RL, FNUL, TOL, ELIM, ALIM)
subroutine cbesh(Z, FNU, KODE, M, N, CY, NZ, IERR)
subroutine cbknu(Z, FNU, KODE, N, Y, NZ, TOL, ELIM, ALIM)
subroutine cbunk(Z, FNU, KODE, MR, N, Y, NZ, TOL, ELIM, ALIM)
subroutine cuoik(Z, FNU, KODE, IKFLG, N, Y, NUF, TOL, ELIM, ALIM)
ColumnVector real(const ComplexColumnVector &a)