1 SUBROUTINE zasyi(ZR, ZI, FNU, KODE, N, YR, YI, NZ, RL, TOL, ELIM,
14 DOUBLE PRECISION AA, AEZ, AK, AK1I, AK1R, ALIM, ARG, ARM, ATOL,
15 * az, bb, bk, cki, ckr, conei, coner, cs1i, cs1r, cs2i, cs2r, czi,
16 * czr, dfnu, dki, dkr, dnu2, elim, ezi, ezr, fdn, fnu, pi, p1i,
17 * p1r, raz, rl, rtpi, rtr1, rzi, rzr, s, sgn, sqk, sti, str, s2i,
18 * s2r, tol, tzi, tzr, yi, yr, zeroi, zeror, zi, zr,
d1mach,
xzabs
19 INTEGER I, IB, IL, INU, J, JL, K, KODE, KODED, M, N, NN, NZ
20 dimension yr(n), yi(n)
21 DATA pi, rtpi /3.14159265358979324d0 , 0.159154943091895336d0 /
22 DATA zeror,zeroi,coner,conei / 0.0d0, 0.0d0, 1.0d0, 0.0d0 /
29 dfnu = fnu + dble(float(n-il))
38 CALL xzsqrt(ak1r, ak1i, ak1r, ak1i)
41 IF (kode.NE.2)
GO TO 10
45 IF (dabs(czr).GT.elim)
GO TO 100
48 IF ((dabs(czr).GT.alim) .AND. (n.GT.2))
GO TO 20
50 CALL xzexp(czr, czi, str, sti)
51 CALL zmlt(ak1r, ak1i, str, sti, ak1r, ak1i)
54 IF (dnu2.GT.rtr1) fdn = dnu2*dnu2
64 jl = int(sngl(rl+rl)) + 2
67 IF (zi.EQ.0.0d0)
GO TO 30
73 arg = (fnu-dble(float(inu)))*pi
77 IF (zi.LT.0.0d0) bk = -bk
80 IF (
mod(inu,2).EQ.0)
GO TO 30
100 CALL zdiv(ckr, cki, dkr, dki, str, sti)
106 cs1r = cs1r + ckr*sgn
107 cs1i = cs1i + cki*sgn
114 IF (aa.LE.atol)
GO TO 50
120 IF (zr+zr.GE.elim)
GO TO 60
123 CALL xzexp(-tzr, -tzi, str, sti)
124 CALL zmlt(str, sti, p1r, p1i, str, sti)
125 CALL zmlt(str, sti, cs2r, cs2i, str, sti)
129 fdn = fdn + 8.0d0*dfnu + 4.0d0
133 yr(m) = s2r*ak1r - s2i*ak1i
134 yi(m) = s2r*ak1i + s2i*ak1r
146 yr(k) = (ak+fnu)*(rzr*yr(k+1)-rzi*yi(k+1)) + yr(k+2)
147 yi(k) = (ak+fnu)*(rzr*yi(k+1)+rzi*yr(k+1)) + yi(k+2)
151 IF (koded.EQ.0)
RETURN
152 CALL xzexp(czr, czi, ckr, cki)
154 str = yr(i)*ckr - yi(i)*cki
155 yi(i) = yr(i)*cki + yi(i)*ckr
double precision function d1mach(i)
double precision function xzabs(ZR, ZI)
subroutine xzexp(AR, AI, BR, BI)
subroutine xzsqrt(AR, AI, BR, BI)
subroutine zasyi(ZR, ZI, FNU, KODE, N, YR, YI, NZ, RL, TOL, ELIM, ALIM)
subroutine zdiv(AR, AI, BR, BI, CR, CI)
subroutine zmlt(AR, AI, BR, BI, CR, CI)