1 SUBROUTINE ZACAI(ZR, ZI, FNU, KODE, MR, N, YR, YI, NZ, RL, TOL, 2 * ELIM, ALIM) 3C***BEGIN PROLOGUE ZACAI 4C***REFER TO ZAIRY 5C 6C ZACAI APPLIES THE ANALYTIC CONTINUATION FORMULA 7C 8C K(FNU,ZN*EXP(MP))=K(FNU,ZN)*EXP(-MP*FNU) - MP*I(FNU,ZN) 9C MP=PI*MR*CMPLX(0.0,1.0) 10C 11C TO CONTINUE THE K FUNCTION FROM THE RIGHT HALF TO THE LEFT 12C HALF Z PLANE FOR USE WITH ZAIRY WHERE FNU=1/3 OR 2/3 AND N=1. 13C ZACAI IS THE SAME AS ZACON WITH THE PARTS FOR LARGER ORDERS AND 14C RECURRENCE REMOVED. A RECURSIVE CALL TO ZACON CAN RESULT IF ZACON 15C IS CALLED FROM ZAIRY. 16C 17C***ROUTINES CALLED ZASYI,ZBKNU,ZMLRI,ZSERI,ZS1S2,D1MACH,ZABS 18C***END PROLOGUE ZACAI 19C COMPLEX CSGN,CSPN,C1,C2,Y,Z,ZN,CY 20 EXTERNAL ZABS 21 DOUBLE PRECISION ALIM, ARG, ASCLE, AZ, CSGNR, CSGNI, CSPNR, 22 * CSPNI, C1R, C1I, C2R, C2I, CYR, CYI, DFNU, ELIM, FMR, FNU, PI, 23 * RL, SGN, TOL, YY, YR, YI, ZR, ZI, ZNR, ZNI, D1MACH, ZABS 24 INTEGER INU, IUF, KODE, MR, N, NN, NW, NZ 25 DIMENSION YR(N), YI(N), CYR(2), CYI(2) 26 DATA PI / 3.14159265358979324D0 / 27 NZ = 0 28 ZNR = -ZR 29 ZNI = -ZI 30 AZ = ZABS(ZR,ZI) 31 NN = N 32 DFNU = FNU + DBLE(FLOAT(N-1)) 33 IF (AZ.LE.2.0D0) GO TO 10 34 IF (AZ*AZ*0.25D0.GT.DFNU+1.0D0) GO TO 20 35 10 CONTINUE 36C----------------------------------------------------------------------- 37C POWER SERIES FOR THE I FUNCTION 38C----------------------------------------------------------------------- 39 CALL ZSERI(ZNR, ZNI, FNU, KODE, NN, YR, YI, NW, TOL, ELIM, ALIM) 40 GO TO 40 41 20 CONTINUE 42 IF (AZ.LT.RL) GO TO 30 43C----------------------------------------------------------------------- 44C ASYMPTOTIC EXPANSION FOR LARGE Z FOR THE I FUNCTION 45C----------------------------------------------------------------------- 46 CALL ZASYI(ZNR, ZNI, FNU, KODE, NN, YR, YI, NW, RL, TOL, ELIM, 47 * ALIM) 48 IF (NW.LT.0) GO TO 80 49 GO TO 40 50 30 CONTINUE 51C----------------------------------------------------------------------- 52C MILLER ALGORITHM NORMALIZED BY THE SERIES FOR THE I FUNCTION 53C----------------------------------------------------------------------- 54 CALL ZMLRI(ZNR, ZNI, FNU, KODE, NN, YR, YI, NW, TOL) 55 IF(NW.LT.0) GO TO 80 56 40 CONTINUE 57C----------------------------------------------------------------------- 58C ANALYTIC CONTINUATION TO THE LEFT HALF PLANE FOR THE K FUNCTION 59C----------------------------------------------------------------------- 60 CALL ZBKNU(ZNR, ZNI, FNU, KODE, 1, CYR, CYI, NW, TOL, ELIM, ALIM) 61 IF (NW.NE.0) GO TO 80 62 FMR = DBLE(FLOAT(MR)) 63 SGN = -DSIGN(PI,FMR) 64 CSGNR = 0.0D0 65 CSGNI = SGN 66 IF (KODE.EQ.1) GO TO 50 67 YY = -ZNI 68 CSGNR = -CSGNI*DSIN(YY) 69 CSGNI = CSGNI*DCOS(YY) 70 50 CONTINUE 71C----------------------------------------------------------------------- 72C CALCULATE CSPN=EXP(FNU*PI*I) TO MINIMIZE LOSSES OF SIGNIFICANCE 73C WHEN FNU IS LARGE 74C----------------------------------------------------------------------- 75 INU = INT(SNGL(FNU)) 76 ARG = (FNU-DBLE(FLOAT(INU)))*SGN 77 CSPNR = DCOS(ARG) 78 CSPNI = DSIN(ARG) 79 IF (MOD(INU,2).EQ.0) GO TO 60 80 CSPNR = -CSPNR 81 CSPNI = -CSPNI 82 60 CONTINUE 83 C1R = CYR(1) 84 C1I = CYI(1) 85 C2R = YR(1) 86 C2I = YI(1) 87 IF (KODE.EQ.1) GO TO 70 88 IUF = 0 89 ASCLE = 1.0D+3*D1MACH(1)/TOL 90 CALL ZS1S2(ZNR, ZNI, C1R, C1I, C2R, C2I, NW, ASCLE, ALIM, IUF) 91 NZ = NZ + NW 92 70 CONTINUE 93 YR(1) = CSPNR*C1R - CSPNI*C1I + CSGNR*C2R - CSGNI*C2I 94 YI(1) = CSPNR*C1I + CSPNI*C1R + CSGNR*C2I + CSGNI*C2R 95 RETURN 96 80 CONTINUE 97 NZ = -1 98 IF(NW.EQ.(-2)) NZ=-2 99 RETURN 100 END 101