GNU Octave 10.1.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 
Loading...
Searching...
No Matches
zacai.f
Go to the documentation of this file.
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,XZABS
18C***END PROLOGUE ZACAI
19C COMPLEX CSGN,CSPN,C1,C2,Y,Z,ZN,CY
20 DOUBLE PRECISION ALIM, ARG, ASCLE, AZ, CSGNR, CSGNI, CSPNR,
21 * cspni, c1r, c1i, c2r, c2i, cyr, cyi, dfnu, elim, fmr, fnu, pi,
22 * rl, sgn, tol, yy, yr, yi, zr, zi, znr, zni, d1mach, xzabs
23 INTEGER INU, IUF, KODE, MR, N, NN, NW, NZ
24 dimension yr(n), yi(n), cyr(2), cyi(2)
25 DATA pi / 3.14159265358979324d0 /
26 nz = 0
27 znr = -zr
28 zni = -zi
29 az = xzabs(zr,zi)
30 nn = n
31 dfnu = fnu + dble(float(n-1))
32 IF (az.LE.2.0d0) GO TO 10
33 IF (az*az*0.25d0.GT.dfnu+1.0d0) GO TO 20
34 10 CONTINUE
35C-----------------------------------------------------------------------
36C POWER SERIES FOR THE I FUNCTION
37C-----------------------------------------------------------------------
38 CALL zseri(znr, zni, fnu, kode, nn, yr, yi, nw, tol, elim, alim)
39 GO TO 40
40 20 CONTINUE
41 IF (az.LT.rl) GO TO 30
42C-----------------------------------------------------------------------
43C ASYMPTOTIC EXPANSION FOR LARGE Z FOR THE I FUNCTION
44C-----------------------------------------------------------------------
45 CALL zasyi(znr, zni, fnu, kode, nn, yr, yi, nw, rl, tol, elim,
46 * alim)
47 IF (nw.LT.0) GO TO 80
48 GO TO 40
49 30 CONTINUE
50C-----------------------------------------------------------------------
51C MILLER ALGORITHM NORMALIZED BY THE SERIES FOR THE I FUNCTION
52C-----------------------------------------------------------------------
53 CALL zmlri(znr, zni, fnu, kode, nn, yr, yi, nw, tol)
54 IF(nw.LT.0) GO TO 80
55 40 CONTINUE
56C-----------------------------------------------------------------------
57C ANALYTIC CONTINUATION TO THE LEFT HALF PLANE FOR THE K FUNCTION
58C-----------------------------------------------------------------------
59 CALL zbknu(znr, zni, fnu, kode, 1, cyr, cyi, nw, tol, elim, alim)
60 IF (nw.NE.0) GO TO 80
61 fmr = dble(float(mr))
62 sgn = -dsign(pi,fmr)
63 csgnr = 0.0d0
64 csgni = sgn
65 IF (kode.EQ.1) GO TO 50
66 yy = -zni
67 csgnr = -csgni*dsin(yy)
68 csgni = csgni*dcos(yy)
69 50 CONTINUE
70C-----------------------------------------------------------------------
71C CALCULATE CSPN=EXP(FNU*PI*I) TO MINIMIZE LOSSES OF SIGNIFICANCE
72C WHEN FNU IS LARGE
73C-----------------------------------------------------------------------
74 inu = int(sngl(fnu))
75 arg = (fnu-dble(float(inu)))*sgn
76 cspnr = dcos(arg)
77 cspni = dsin(arg)
78 IF (mod(inu,2).EQ.0) GO TO 60
79 cspnr = -cspnr
80 cspni = -cspni
81 60 CONTINUE
82 c1r = cyr(1)
83 c1i = cyi(1)
84 c2r = yr(1)
85 c2i = yi(1)
86 IF (kode.EQ.1) GO TO 70
87 iuf = 0
88 ascle = 1.0d+3*d1mach(1)/tol
89 CALL zs1s2(znr, zni, c1r, c1i, c2r, c2i, nw, ascle, alim, iuf)
90 nz = nz + nw
91 70 CONTINUE
92 yr(1) = cspnr*c1r - cspni*c1i + csgnr*c2r - csgni*c2i
93 yi(1) = cspnr*c1i + cspni*c1r + csgnr*c2i + csgni*c2r
94 RETURN
95 80 CONTINUE
96 nz = -1
97 IF(nw.EQ.(-2)) nz=-2
98 RETURN
99 END
double precision function d1mach(i)
Definition d1mach.f:23
T mod(T x, T y)
Definition lo-mappers.h:294
double precision function xzabs(zr, zi)
Definition xzabs.f:2
subroutine zacai(zr, zi, fnu, kode, mr, n, yr, yi, nz, rl, tol, elim, alim)
Definition zacai.f:3
subroutine zasyi(zr, zi, fnu, kode, n, yr, yi, nz, rl, tol, elim, alim)
Definition zasyi.f:3
subroutine zbknu(zr, zi, fnu, kode, n, yr, yi, nz, tol, elim, alim)
Definition zbknu.f:3
subroutine zmlri(zr, zi, fnu, kode, n, yr, yi, nz, tol)
Definition zmlri.f:2
subroutine zs1s2(zrr, zri, s1r, s1i, s2r, s2i, nz, ascle, alim, iuf)
Definition zs1s2.f:3
subroutine zseri(zr, zi, fnu, kode, n, yr, yi, nz, tol, elim, alim)
Definition zseri.f:3