1 SUBROUTINE zuni1(ZR, ZI, FNU, KODE, N, YR, YI, NZ, NLAST, FNUL,
19 DOUBLE PRECISION alim, aphi, ascle, bry, coner, crsc,
20 * cscl, csrr, cssr, cwrki, cwrkr, c1r, c2i, c2m, c2r, elim, fn,
21 * fnu, fnul, phii, phir, rast, rs1, rzi, rzr, sti,
str, sumi,
22 * sumr, s1i, s1r, s2i, s2r, tol, yi, yr, zeroi, zeror, zeta1i,
23 * zeta1r, zeta2i, zeta2r, zi, zr, cyr, cyi,
d1mach,
xzabs
24 INTEGER i, iflag,
init, k, kode, m, n, nd, nlast,
nn, nuf, nw, nz
25 dimension bry(3), yr(n), yi(n), cwrkr(16), cwrki(16), cssr(3),
26 * csrr(3), cyr(2), cyi(2)
27 DATA zeror,zeroi,coner / 0.0d0, 0.0d0, 1.0d0 /
51 CALL
zunik(zr, zi, fn, 1, 1, tol,
init, phir, phii, zeta1r,
52 * zeta1i, zeta2r, zeta2i, sumr, sumi, cwrkr, cwrki)
53 IF (kode.EQ.1) go to 10
63 s1r = -zeta1r + zeta2r
64 s1i = -zeta1i + zeta2i
67 IF (dabs(rs1).GT.elim) go to 130
71 fn = fnu + dble(float(nd-i))
73 CALL
zunik(zr, zi, fn, 1, 0, tol,
init, phir, phii, zeta1r,
74 * zeta1i, zeta2r, zeta2i, sumr, sumi, cwrkr, cwrki)
75 IF (kode.EQ.1) go to 40
82 s1i = -zeta1i + sti + zi
85 s1r = -zeta1r + zeta2r
86 s1i = -zeta1i + zeta2i
92 IF (dabs(rs1).GT.elim) go to 110
94 IF (dabs(rs1).LT.alim) go to 60
98 aphi =
xzabs(phir,phii)
99 rs1 = rs1 + dlog(aphi)
100 IF (dabs(rs1).GT.elim) go to 110
101 IF (i.EQ.1) iflag = 1
102 IF (rs1.LT.0.0d0) go to 60
103 IF (i.EQ.1) iflag = 3
108 s2r = phir*sumr - phii*sumi
109 s2i = phir*sumi + phii*sumr
110 str = dexp(s1r)*cssr(iflag)
113 str = s2r*s1r - s2i*s1i
114 s2i = s2r*s1i + s2i*s1r
116 IF (iflag.NE.1) go to 70
117 CALL
zuchk(s2r, s2i, nw, bry(1), tol)
118 IF (nw.NE.0) go to 110
123 yr(m) = s2r*csrr(iflag)
124 yi(m) = s2i*csrr(iflag)
126 IF (nd.LE.2) go to 100
127 rast = 1.0d0/
xzabs(zr,zi)
132 bry(2) = 1.0d0/bry(1)
145 s2r = s1r + (fnu+fn)*(rzr*c2r-rzi*c2i)
146 s2i = s1i + (fnu+fn)*(rzr*c2i+rzi*c2r)
155 IF (iflag.GE.3) go to 90
159 IF (c2m.LE.ascle) go to 90
166 s1r = s1r*cssr(iflag)
167 s1i = s1i*cssr(iflag)
168 s2r = s2r*cssr(iflag)
169 s2i = s2i*cssr(iflag)
178 IF (rs1.GT.0.0d0) go to 120
183 IF (nd.EQ.0) go to 100
184 CALL
zuoik(zr, zi, fnu, kode, 1, nd, yr, yi, nuf, tol, elim, alim)
185 IF (nuf.LT.0) go to 120
188 IF (nd.EQ.0) go to 100
189 fn = fnu + dble(float(nd-1))
190 IF (fn.GE.fnul) go to 30
197 IF (rs1.GT.0.0d0) go to 120