1*DECK ZBINU 2 SUBROUTINE ZBINU (ZR, ZI, FNU, KODE, N, CYR, CYI, NZ, RL, FNUL, 3 + TOL, ELIM, ALIM) 4C***BEGIN PROLOGUE ZBINU 5C***SUBSIDIARY 6C***PURPOSE Subsidiary to ZAIRY, ZBESH, ZBESI, ZBESJ, ZBESK and ZBIRY 7C***LIBRARY SLATEC 8C***TYPE ALL (CBINU-A, ZBINU-A) 9C***AUTHOR Amos, D. E., (SNL) 10C***DESCRIPTION 11C 12C ZBINU COMPUTES THE I FUNCTION IN THE RIGHT HALF Z PLANE 13C 14C***SEE ALSO ZAIRY, ZBESH, ZBESI, ZBESJ, ZBESK, ZBIRY 15C***ROUTINES CALLED ZABS, ZASYI, ZBUNI, ZMLRI, ZSERI, ZUOIK, ZWRSK 16C***REVISION HISTORY (YYMMDD) 17C 830501 DATE WRITTEN 18C 910415 Prologue converted to Version 4.0 format. (BAB) 19C***END PROLOGUE ZBINU 20 DOUBLE PRECISION ALIM, AZ, CWI, CWR, CYI, CYR, DFNU, ELIM, FNU, 21 * FNUL, RL, TOL, ZEROI, ZEROR, ZI, ZR, ZABS 22 INTEGER I, INW, KODE, N, NLAST, NN, NUI, NW, NZ 23 DIMENSION CYR(N), CYI(N), CWR(2), CWI(2) 24 EXTERNAL ZABS 25 DATA ZEROR,ZEROI / 0.0D0, 0.0D0 / 26C***FIRST EXECUTABLE STATEMENT ZBINU 27 NZ = 0 28 AZ = ZABS(ZR,ZI) 29 NN = N 30 DFNU = FNU + (N-1) 31 IF (AZ.LE.2.0D0) GO TO 10 32 IF (AZ*AZ*0.25D0.GT.DFNU+1.0D0) GO TO 20 33 10 CONTINUE 34C----------------------------------------------------------------------- 35C POWER SERIES 36C----------------------------------------------------------------------- 37 CALL ZSERI(ZR, ZI, FNU, KODE, NN, CYR, CYI, NW, TOL, ELIM, ALIM) 38 INW = ABS(NW) 39 NZ = NZ + INW 40 NN = NN - INW 41 IF (NN.EQ.0) RETURN 42 IF (NW.GE.0) GO TO 120 43 DFNU = FNU + (NN-1) 44 20 CONTINUE 45 IF (AZ.LT.RL) GO TO 40 46 IF (DFNU.LE.1.0D0) GO TO 30 47 IF (AZ+AZ.LT.DFNU*DFNU) GO TO 50 48C----------------------------------------------------------------------- 49C ASYMPTOTIC EXPANSION FOR LARGE Z 50C----------------------------------------------------------------------- 51 30 CONTINUE 52 CALL ZASYI(ZR, ZI, FNU, KODE, NN, CYR, CYI, NW, RL, TOL, ELIM, 53 * ALIM) 54 IF (NW.LT.0) GO TO 130 55 GO TO 120 56 40 CONTINUE 57 IF (DFNU.LE.1.0D0) GO TO 70 58 50 CONTINUE 59C----------------------------------------------------------------------- 60C OVERFLOW AND UNDERFLOW TEST ON I SEQUENCE FOR MILLER ALGORITHM 61C----------------------------------------------------------------------- 62 CALL ZUOIK(ZR, ZI, FNU, KODE, 1, NN, CYR, CYI, NW, TOL, ELIM, 63 * ALIM) 64 IF (NW.LT.0) GO TO 130 65 NZ = NZ + NW 66 NN = NN - NW 67 IF (NN.EQ.0) RETURN 68 DFNU = FNU+(NN-1) 69 IF (DFNU.GT.FNUL) GO TO 110 70 IF (AZ.GT.FNUL) GO TO 110 71 60 CONTINUE 72 IF (AZ.GT.RL) GO TO 80 73 70 CONTINUE 74C----------------------------------------------------------------------- 75C MILLER ALGORITHM NORMALIZED BY THE SERIES 76C----------------------------------------------------------------------- 77 CALL ZMLRI(ZR, ZI, FNU, KODE, NN, CYR, CYI, NW, TOL) 78 IF(NW.LT.0) GO TO 130 79 GO TO 120 80 80 CONTINUE 81C----------------------------------------------------------------------- 82C MILLER ALGORITHM NORMALIZED BY THE WRONSKIAN 83C----------------------------------------------------------------------- 84C----------------------------------------------------------------------- 85C OVERFLOW TEST ON K FUNCTIONS USED IN WRONSKIAN 86C----------------------------------------------------------------------- 87 CALL ZUOIK(ZR, ZI, FNU, KODE, 2, 2, CWR, CWI, NW, TOL, ELIM, 88 * ALIM) 89 IF (NW.GE.0) GO TO 100 90 NZ = NN 91 DO 90 I=1,NN 92 CYR(I) = ZEROR 93 CYI(I) = ZEROI 94 90 CONTINUE 95 RETURN 96 100 CONTINUE 97 IF (NW.GT.0) GO TO 130 98 CALL ZWRSK(ZR, ZI, FNU, KODE, NN, CYR, CYI, NW, CWR, CWI, TOL, 99 * ELIM, ALIM) 100 IF (NW.LT.0) GO TO 130 101 GO TO 120 102 110 CONTINUE 103C----------------------------------------------------------------------- 104C INCREMENT FNU+NN-1 UP TO FNUL, COMPUTE AND RECUR BACKWARD 105C----------------------------------------------------------------------- 106 NUI = FNUL-DFNU + 1 107 NUI = MAX(NUI,0) 108 CALL ZBUNI(ZR, ZI, FNU, KODE, NN, CYR, CYI, NW, NUI, NLAST, FNUL, 109 * TOL, ELIM, ALIM) 110 IF (NW.LT.0) GO TO 130 111 NZ = NZ + NW 112 IF (NLAST.EQ.0) GO TO 120 113 NN = NLAST 114 GO TO 60 115 120 CONTINUE 116 RETURN 117 130 CONTINUE 118 NZ = -1 119 IF(NW.EQ.(-2)) NZ=-2 120 RETURN 121 END 122