GNU Octave 10.1.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 
Loading...
Searching...
No Matches
zbinu.f
Go to the documentation of this file.
1 SUBROUTINE zbinu(ZR, ZI, FNU, KODE, N, CYR, CYI, NZ, RL, FNUL,
2 * TOL, ELIM, ALIM)
3C***BEGIN PROLOGUE ZBINU
4C***REFER TO ZBESH,ZBESI,ZBESJ,ZBESK,ZAIRY,ZBIRY
5C
6C ZBINU COMPUTES THE I FUNCTION IN THE RIGHT HALF Z PLANE
7C
8C***ROUTINES CALLED XZABS,ZASYI,ZBUNI,ZMLRI,ZSERI,ZUOIK,ZWRSK
9C***END PROLOGUE ZBINU
10 DOUBLE PRECISION ALIM, AZ, CWI, CWR, CYI, CYR, DFNU, ELIM, FNU,
11 * fnul, rl, tol, zeroi, zeror, zi, zr, xzabs
12 INTEGER I, INW, KODE, N, NLAST, NN, NUI, NW, NZ
13 dimension cyr(n), cyi(n), cwr(2), cwi(2)
14 DATA zeror,zeroi / 0.0d0, 0.0d0 /
15C
16 nz = 0
17 az = xzabs(zr,zi)
18 nn = n
19 dfnu = fnu + dble(float(n-1))
20 IF (az.LE.2.0d0) GO TO 10
21 IF (az*az*0.25d0.GT.dfnu+1.0d0) GO TO 20
22 10 CONTINUE
23C-----------------------------------------------------------------------
24C POWER SERIES
25C-----------------------------------------------------------------------
26 CALL zseri(zr, zi, fnu, kode, nn, cyr, cyi, nw, tol, elim, alim)
27 inw = iabs(nw)
28 nz = nz + inw
29 nn = nn - inw
30 IF (nn.EQ.0) RETURN
31 IF (nw.GE.0) GO TO 120
32 dfnu = fnu + dble(float(nn-1))
33 20 CONTINUE
34 IF (az.LT.rl) GO TO 40
35 IF (dfnu.LE.1.0d0) GO TO 30
36 IF (az+az.LT.dfnu*dfnu) GO TO 50
37C-----------------------------------------------------------------------
38C ASYMPTOTIC EXPANSION FOR LARGE Z
39C-----------------------------------------------------------------------
40 30 CONTINUE
41 CALL zasyi(zr, zi, fnu, kode, nn, cyr, cyi, nw, rl, tol, elim,
42 * alim)
43 IF (nw.LT.0) GO TO 130
44 GO TO 120
45 40 CONTINUE
46 IF (dfnu.LE.1.0d0) GO TO 70
47 50 CONTINUE
48C-----------------------------------------------------------------------
49C OVERFLOW AND UNDERFLOW TEST ON I SEQUENCE FOR MILLER ALGORITHM
50C-----------------------------------------------------------------------
51 CALL zuoik(zr, zi, fnu, kode, 1, nn, cyr, cyi, nw, tol, elim,
52 * alim)
53 IF (nw.LT.0) GO TO 130
54 nz = nz + nw
55 nn = nn - nw
56 IF (nn.EQ.0) RETURN
57 dfnu = fnu+dble(float(nn-1))
58 IF (dfnu.GT.fnul) GO TO 110
59 IF (az.GT.fnul) GO TO 110
60 60 CONTINUE
61 IF (az.GT.rl) GO TO 80
62 70 CONTINUE
63C-----------------------------------------------------------------------
64C MILLER ALGORITHM NORMALIZED BY THE SERIES
65C-----------------------------------------------------------------------
66 CALL zmlri(zr, zi, fnu, kode, nn, cyr, cyi, nw, tol)
67 IF(nw.LT.0) GO TO 130
68 GO TO 120
69 80 CONTINUE
70C-----------------------------------------------------------------------
71C MILLER ALGORITHM NORMALIZED BY THE WRONSKIAN
72C-----------------------------------------------------------------------
73C-----------------------------------------------------------------------
74C OVERFLOW TEST ON K FUNCTIONS USED IN WRONSKIAN
75C-----------------------------------------------------------------------
76 CALL zuoik(zr, zi, fnu, kode, 2, 2, cwr, cwi, nw, tol, elim,
77 * alim)
78 IF (nw.GE.0) GO TO 100
79 nz = nn
80 DO 90 i=1,nn
81 cyr(i) = zeror
82 cyi(i) = zeroi
83 90 CONTINUE
84 RETURN
85 100 CONTINUE
86 IF (nw.GT.0) GO TO 130
87 CALL zwrsk(zr, zi, fnu, kode, nn, cyr, cyi, nw, cwr, cwi, tol,
88 * elim, alim)
89 IF (nw.LT.0) GO TO 130
90 GO TO 120
91 110 CONTINUE
92C-----------------------------------------------------------------------
93C INCREMENT FNU+NN-1 UP TO FNUL, COMPUTE AND RECUR BACKWARD
94C-----------------------------------------------------------------------
95 nui = int(sngl(fnul-dfnu)) + 1
96 nui = max0(nui,0)
97 CALL zbuni(zr, zi, fnu, kode, nn, cyr, cyi, nw, nui, nlast, fnul,
98 * tol, elim, alim)
99 IF (nw.LT.0) GO TO 130
100 nz = nz + nw
101 IF (nlast.EQ.0) GO TO 120
102 nn = nlast
103 GO TO 60
104 120 CONTINUE
105 RETURN
106 130 CONTINUE
107 nz = -1
108 IF(nw.EQ.(-2)) nz=-2
109 RETURN
110 END
double precision function xzabs(zr, zi)
Definition xzabs.f:2
subroutine zasyi(zr, zi, fnu, kode, n, yr, yi, nz, rl, tol, elim, alim)
Definition zasyi.f:3
subroutine zbinu(zr, zi, fnu, kode, n, cyr, cyi, nz, rl, fnul, tol, elim, alim)
Definition zbinu.f:3
subroutine zbuni(zr, zi, fnu, kode, n, yr, yi, nz, nui, nlast, fnul, tol, elim, alim)
Definition zbuni.f:3
subroutine zmlri(zr, zi, fnu, kode, n, yr, yi, nz, tol)
Definition zmlri.f:2
subroutine zseri(zr, zi, fnu, kode, n, yr, yi, nz, tol, elim, alim)
Definition zseri.f:3
subroutine zuoik(zr, zi, fnu, kode, ikflg, n, yr, yi, nuf, tol, elim, alim)
Definition zuoik.f:3
subroutine zwrsk(zrr, zri, fnu, kode, n, yr, yi, nz, cwr, cwi, tol, elim, alim)
Definition zwrsk.f:3