1 SUBROUTINE cuni2(Z, FNU, KODE, N, Y, NZ, NLAST, FNUL, TOL, ELIM,
18 COMPLEX AI, ARG, ASUM, BSUM, CFN, CI, CID, CIP, CONE, CRSC, CSCL,
19 * csr, css, cy, czero, c1, c2, dai, phi, rz, s1, s2, y, z, zb,
20 * zeta1, zeta2, zn, zar
21 REAL AARG, AIC, ALIM, ANG, APHI, ASCLE, AY, BRY, CAR, C2I, C2M,
22 * c2r, elim, fn, fnu, fnul, hpi, rs1, sar, tol, yy,
r1mach
23 INTEGER I, IFLAG, IN, INU, J, K, KODE, N, NAI, ND, NDAI, NLAST,
24 * nn, nuf, nw, nz, idum
25 dimension bry(3), y(n), cip(4), css(3), csr(3), cy(2)
26 DATA czero,cone,ci/(0.0e0,0.0e0),(1.0e0,0.0e0),(0.0e0,1.0e0)/
27 DATA cip(1),cip(2),cip(3),cip(4)/
28 1 (1.0e0,0.0e0), (0.0e0,1.0e0), (-1.0e0,0.0e0), (0.0e0,-1.0e0)/
30 1 1.57079632679489662e+00, 1.265512123484645396e+00/
40 cscl =
cmplx(1.0e0/tol,0.0e0)
41 crsc =
cmplx(tol,0.0e0)
48 bry(1) = 1.0e+3*
r1mach(1)/tol
57 ang = hpi*(fnu-float(inu))
65 IF (yy.GT.0.0e0)
GO TO 10
75 CALL cunhj(zn, fn, 1, tol, phi, arg, zeta1, zeta2, asum, bsum)
76 IF (kode.EQ.1)
GO TO 20
77 cfn =
cmplx(fnu,0.0e0)
78 s1 = -zeta1 + cfn*(cfn/(zb+zeta2))
84 IF (abs(rs1).GT.elim)
GO TO 150
88 fn = fnu + float(nd-i)
89 CALL cunhj(zn, fn, 0, tol, phi, arg, zeta1, zeta2, asum, bsum)
90 IF (kode.EQ.1)
GO TO 50
93 s1 = -zeta1 + cfn*(cfn/(zb+zeta2)) +
cmplx(0.0e0,ay)
102 IF (abs(rs1).GT.elim)
GO TO 120
103 IF (i.EQ.1) iflag = 2
104 IF (abs(rs1).LT.alim)
GO TO 70
111 rs1 = rs1 + alog(aphi) - 0.25e0*alog(aarg) - aic
112 IF (abs(rs1).GT.elim)
GO TO 120
113 IF (i.EQ.1) iflag = 1
114 IF (rs1.LT.0.0e0)
GO TO 70
115 IF (i.EQ.1) iflag = 3
121 CALL cairy(arg, 0, 2, ai, nai, idum)
122 CALL cairy(arg, 1, 2, dai, ndai, idum)
123 s2 = phi*(ai*asum+dai*bsum)
126 c2m = exp(c2r)*
real(css(iflag))
127 s1 =
cmplx(c2m,0.0e0)*
cmplx(cos(c2i),sin(c2i))
129 IF (iflag.NE.1)
GO TO 80
130 CALL cuchk(s2, nw, bry(1), tol)
131 IF (nw.NE.0)
GO TO 120
133 IF (yy.LE.0.0e0) s2 = conjg(s2)
140 IF (nd.LE.2)
GO TO 110
141 rz =
cmplx(2.0e0,0.0e0)/z
142 bry(2) = 1.0e0/bry(1)
152 s2 = s1 +
cmplx(fnu+fn,0.0e0)*rz*s2
158 IF (iflag.GE.3)
GO TO 100
164 IF (c2m.LE.ascle)
GO TO 100
176 IF (rs1.GT.0.0e0)
GO TO 140
183 IF (nd.EQ.0)
GO TO 110
184 CALL cuoik(z, fnu, kode, 1, nd, y, nuf, tol, elim, alim)
185 IF (nuf.LT.0)
GO TO 140
188 IF (nd.EQ.0)
GO TO 110
189 fn = fnu + float(nd-1)
190 IF (fn.LT.fnul)
GO TO 130
200 IF (yy.LE.0.0e0)c2=conjg(c2)
209 IF (rs1.GT.0.0e0)
GO TO 140
subroutine cairy(Z, ID, KODE, AI, NZ, IERR)
subroutine cuchk(Y, NZ, ASCLE, TOL)
subroutine cunhj(Z, FNU, IPMTR, TOL, PHI, ARG, ZETA1, ZETA2, ASUM, BSUM)
subroutine cuni2(Z, FNU, KODE, N, Y, NZ, NLAST, FNUL, TOL, ELIM, ALIM)
subroutine cuoik(Z, FNU, KODE, IKFLG, N, Y, NUF, TOL, ELIM, ALIM)
ColumnVector real(const ComplexColumnVector &a)