1      SUBROUTINE CBINU(Z, FNU, KODE, N, CY, NZ, RL, FNUL, TOL, ELIM,
2     * ALIM)
3C***BEGIN PROLOGUE  CBINU
4C***REFER TO  CBESH,CBESI,CBESJ,CBESK,CAIRY,CBIRY
5C
6C     CBINU COMPUTES THE I FUNCTION IN THE RIGHT HALF Z PLANE
7C
8C***ROUTINES CALLED  CASYI,CBUNI,CMLRI,CSERI,CUOIK,CWRSK
9C***END PROLOGUE  CBINU
10      COMPLEX CW, CY, CZERO, Z
11      REAL ALIM, AZ, DFNU, ELIM, FNU, FNUL, RL, TOL
12      INTEGER I, INW, KODE, N, NLAST, NN, NUI, NW, NZ
13      DIMENSION CY(N), CW(2)
14      DATA CZERO / (0.0E0,0.0E0) /
15C
16      NZ = 0
17      AZ = CABS(Z)
18      NN = N
19      DFNU = FNU + FLOAT(N-1)
20      IF (AZ.LE.2.0E0) GO TO 10
21      IF (AZ*AZ*0.25E0.GT.DFNU+1.0E0) GO TO 20
22   10 CONTINUE
23C-----------------------------------------------------------------------
24C     POWER SERIES
25C-----------------------------------------------------------------------
26      CALL CSERI(Z, FNU, KODE, NN, CY, 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 + FLOAT(NN-1)
33   20 CONTINUE
34      IF (AZ.LT.RL) GO TO 40
35      IF (DFNU.LE.1.0E0) 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 CASYI(Z, FNU, KODE, NN, CY, NW, RL, TOL, ELIM, ALIM)
42      IF (NW.LT.0) GO TO 130
43      GO TO 120
44   40 CONTINUE
45      IF (DFNU.LE.1.0E0) GO TO 70
46   50 CONTINUE
47C-----------------------------------------------------------------------
48C     OVERFLOW AND UNDERFLOW TEST ON I SEQUENCE FOR MILLER ALGORITHM
49C-----------------------------------------------------------------------
50      CALL CUOIK(Z, FNU, KODE, 1, NN, CY, NW, TOL, ELIM, ALIM)
51      IF (NW.LT.0) GO TO 130
52      NZ = NZ + NW
53      NN = NN - NW
54      IF (NN.EQ.0) RETURN
55      DFNU = FNU+FLOAT(NN-1)
56      IF (DFNU.GT.FNUL) GO TO 110
57      IF (AZ.GT.FNUL) GO TO 110
58   60 CONTINUE
59      IF (AZ.GT.RL) GO TO 80
60   70 CONTINUE
61C-----------------------------------------------------------------------
62C     MILLER ALGORITHM NORMALIZED BY THE SERIES
63C-----------------------------------------------------------------------
64      CALL CMLRI(Z, FNU, KODE, NN, CY, NW, TOL)
65      IF(NW.LT.0) GO TO 130
66      GO TO 120
67   80 CONTINUE
68C-----------------------------------------------------------------------
69C     MILLER ALGORITHM NORMALIZED BY THE WRONSKIAN
70C-----------------------------------------------------------------------
71C-----------------------------------------------------------------------
72C     OVERFLOW TEST ON K FUNCTIONS USED IN WRONSKIAN
73C-----------------------------------------------------------------------
74      CALL CUOIK(Z, FNU, KODE, 2, 2, CW, NW, TOL, ELIM, ALIM)
75      IF (NW.GE.0) GO TO 100
76      NZ = NN
77      DO 90 I=1,NN
78        CY(I) = CZERO
79   90 CONTINUE
80      RETURN
81  100 CONTINUE
82      IF (NW.GT.0) GO TO 130
83      CALL CWRSK(Z, FNU, KODE, NN, CY, NW, CW, TOL, ELIM, ALIM)
84      IF (NW.LT.0) GO TO 130
85      GO TO 120
86  110 CONTINUE
87C-----------------------------------------------------------------------
88C     INCREMENT FNU+NN-1 UP TO FNUL, COMPUTE AND RECUR BACKWARD
89C-----------------------------------------------------------------------
90      NUI = INT(FNUL-DFNU) + 1
91      NUI = MAX0(NUI,0)
92      CALL CBUNI(Z, FNU, KODE, NN, CY, NW, NUI, NLAST, FNUL, TOL, ELIM,
93     * ALIM)
94      IF (NW.LT.0) GO TO 130
95      NZ = NZ + NW
96      IF (NLAST.EQ.0) GO TO 120
97      NN = NLAST
98      GO TO 60
99  120 CONTINUE
100      RETURN
101  130 CONTINUE
102      NZ = -1
103      IF(NW.EQ.(-2)) NZ=-2
104      RETURN
105      END
106