1 SUBROUTINE cmlri(Z, FNU, KODE, N, Y, NZ, TOL)
10 COMPLEX CK, CNORM, CONE, CTWO, CZERO, PT, P1, P2, RZ, SUM, Y, Z
11 REAL ACK, AK, AP, AT, AZ, BK, FKAP, FKK, FLAM, FNF, FNU, RHO,
12 * rho2, scle, tfnf, tol, tst,
x,
gamln, r1mach
13 INTEGER I, IAZ, IDUM, IFNU, INU, ITIME, K, KK, KM, KODE, M, N
15 DATA czero,cone,ctwo /(0.0e0,0.0e0),(1.0e0,0.0e0),(2.0e0,0.0e0)/
16 scle = 1.0e+3*r1mach(1)/tol
23 at = float(iaz) + 1.0e0
24 ck =
cmplx(at,0.0e0)/z
29 rho = ack +
sqrt(ack*ack-1.0e0)
31 tst = (rho2+rho2)/((rho2-1.0e0)*(rho-1.0e0))
43 IF (ap.GT.tst*ak*ak) go to 20
50 IF (inu.LT.iaz) go to 40
56 at = float(inu) + 1.0e0
57 ck =
cmplx(at,0.0e0)/z
67 IF (ap.LT.tst) go to 30
68 IF (itime.EQ.2) go to 40
70 flam = ack +
sqrt(ack*ack-1.0e0)
72 rho = amin1(flam,fkap)
73 tst = tst*
sqrt(rho/(rho*rho-1.0e0))
82 kk = max0(i+iaz,k+inu)
88 p2 =
cmplx(scle,0.0e0)
89 fnf = fnu - float(ifnu)
91 bk =
gamln(fkk+tfnf+1.0e0,idum) -
gamln(fkk+1.0e0,idum)
92 * -
gamln(tfnf+1.0e0,idum)
98 p2 = p1 +
cmplx(fkk+fnf,0.0e0)*rz*p2
100 ak = 1.0e0 - tfnf/(fkk+tfnf)
102 sum = sum +
cmplx(ack+bk,0.0e0)*p1
110 p2 = p1 +
cmplx(fkk+fnf,0.0e0)*rz*p2
112 ak = 1.0e0 - tfnf/(fkk+tfnf)
114 sum = sum +
cmplx(ack+bk,0.0e0)*p1
121 IF (ifnu.LE.0) go to 90
124 p2 = p1 +
cmplx(fkk+fnf,0.0e0)*rz*p2
126 ak = 1.0e0 - tfnf/(fkk+tfnf)
128 sum = sum +
cmplx(ack+bk,0.0e0)*p1
134 IF (kode.EQ.2) pt = pt -
cmplx(
x,0.0e0)
135 p1 = -
cmplx(fnf,0.0e0)*clog(rz) + pt
136 ap =
gamln(1.0e0+fnf,idum)
137 pt = p1 -
cmplx(ap,0.0e0)
144 p1 =
cmplx(1.0e0/ap,0.0e0)
std::string dimension(void) const
octave_value sqrt(void) const
subroutine cmlri(Z, FNU, KODE, N, Y, NZ, TOL)
F77_RET_T const double * x