26 #if defined (HAVE_CONFIG_H)
136 double zr = z.real ();
137 double zi = z.imag ();
148 Complex expz = exp (- 2.0 / 3.0 * z * sqrt (z));
150 double rexpz = expz.real ();
151 double iexpz = expz.imag ();
153 double tmp = ar*rexpz - ai*iexpz;
155 ai = ar*iexpz + ai*rexpz;
159 if (zi == 0.0 && (! scaled || zr >= 0.0))
213 float ar = a.real ();
214 float ai = a.imag ();
220 float rexpz = expz.real ();
221 float iexpz = expz.imag ();
223 float tmp = ar*rexpz - ai*iexpz;
225 ai = ar*iexpz + ai*rexpz;
229 if (z.imag () == 0.0 && (! scaled || z.real () >= 0.0))
272 return x ==
static_cast<double> (
static_cast<long> (
x));
305 double zr = z.real ();
306 double zi = z.imag ();
308 F77_FUNC (
zbesj, ZBESJ) (zr, zi, alpha, kode, 1, &yr, &yi, nz, t_ierr);
312 if (zi == 0.0 && zr >= 0.0)
322 if ((
static_cast<long> (alpha)) & 1)
334 tmp -= sin (M_PI * alpha) *
zbesy (z, alpha, kode,
ierr);
360 double zr = z.real ();
361 double zi = z.imag ();
365 if (zr == 0.0 && zi == 0.0)
372 F77_FUNC (
zbesy, ZBESY) (zr, zi, alpha, kode, 1, &yr, &yi, nz,
377 if (zi == 0.0 && zr >= 0.0)
388 if ((
static_cast<long> (alpha - 0.5)) & 1)
400 tmp += sin (M_PI * alpha) *
zbesj (z, alpha, kode,
ierr);
424 double zr = z.real ();
425 double zi = z.imag ();
427 F77_FUNC (
zbesi, ZBESI) (zr, zi, alpha, kode, 1, &yr, &yi, nz, t_ierr);
431 if (zi == 0.0 && zr >= 0.0)
451 Complex tmp2 = (2.0 / M_PI) * sin (M_PI * alpha)
457 tmp2 *= exp (-z -
std::abs (z.real ()));
484 double zr = z.real ();
485 double zi = z.imag ();
489 if (zr == 0.0 && zi == 0.0)
496 F77_FUNC (
zbesk, ZBESK) (zr, zi, alpha, kode, 1, &yr, &yi, nz,
501 if (zi == 0.0 && zr >= 0.0)
529 double zr = z.real ();
530 double zi = z.imag ();
532 F77_FUNC (
zbesh, ZBESH) (zr, zi, alpha, kode, 1, 1, &yr, &yi, nz,
565 double zr = z.real ();
566 double zi = z.imag ();
568 F77_FUNC (
zbesh, ZBESH) (zr, zi, alpha, kode, 2, 1, &yr, &yi, nz,
615 retval(i,j) =
f (
x(i,j), alpha, (scaled ? 2 : 1),
ierr(i,j));
633 retval(i,j) =
f (
x, alpha(i,j), (scaled ? 2 : 1),
ierr(i,j));
650 if (x_nr != alpha_nr || x_nc != alpha_nc)
651 (*current_liboctave_error_handler)
652 (
"%s: the sizes of alpha and x must conform", fn);
663 retval(i,j) =
f (
x(i,j), alpha(i,j), (scaled ? 2 : 1),
ierr(i,j));
707 if (dv != alpha.
dims ())
708 (*current_liboctave_error_handler)
709 (
"%s: the sizes of alpha and x must conform", fn);
717 retval(i) =
f (
x(i), alpha(i), (scaled ? 2 : 1),
ierr(i));
736 retval(i,j) =
f (
x(i), alpha(j), (scaled ? 2 : 1),
ierr(i,j));
741 #define SS_BESSEL(name, fcn) \
743 name (double alpha, const Complex& x, bool scaled, octave_idx_type& ierr) \
745 return do_bessel (fcn, #name, alpha, x, scaled, ierr); \
748 #define SM_BESSEL(name, fcn) \
750 name (double alpha, const ComplexMatrix& x, bool scaled, \
751 Array<octave_idx_type>& ierr) \
753 return do_bessel (fcn, #name, alpha, x, scaled, ierr); \
756 #define MS_BESSEL(name, fcn) \
758 name (const Matrix& alpha, const Complex& x, bool scaled, \
759 Array<octave_idx_type>& ierr) \
761 return do_bessel (fcn, #name, alpha, x, scaled, ierr); \
764 #define MM_BESSEL(name, fcn) \
766 name (const Matrix& alpha, const ComplexMatrix& x, bool scaled, \
767 Array<octave_idx_type>& ierr) \
769 return do_bessel (fcn, #name, alpha, x, scaled, ierr); \
772 #define SN_BESSEL(name, fcn) \
774 name (double alpha, const ComplexNDArray& x, bool scaled, \
775 Array<octave_idx_type>& ierr) \
777 return do_bessel (fcn, #name, alpha, x, scaled, ierr); \
780 #define NS_BESSEL(name, fcn) \
782 name (const NDArray& alpha, const Complex& x, bool scaled, \
783 Array<octave_idx_type>& ierr) \
785 return do_bessel (fcn, #name, alpha, x, scaled, ierr); \
788 #define NN_BESSEL(name, fcn) \
790 name (const NDArray& alpha, const ComplexNDArray& x, bool scaled, \
791 Array<octave_idx_type>& ierr) \
793 return do_bessel (fcn, #name, alpha, x, scaled, ierr); \
796 #define RC_BESSEL(name, fcn) \
798 name (const RowVector& alpha, const ComplexColumnVector& x, bool scaled, \
799 Array<octave_idx_type>& ierr) \
801 return do_bessel (fcn, #name, alpha, x, scaled, ierr); \
804 #define ALL_BESSEL(name, fcn) \
805 SS_BESSEL (name, fcn) \
806 SM_BESSEL (name, fcn) \
807 MS_BESSEL (name, fcn) \
808 MM_BESSEL (name, fcn) \
809 SN_BESSEL (name, fcn) \
810 NS_BESSEL (name, fcn) \
811 NN_BESSEL (name, fcn) \
812 RC_BESSEL (name, fcn)
852 return x ==
static_cast<float> (
static_cast<long> (
x));
871 if (z.imag () == 0.0 && z.real () >= 0.0)
881 if ((
static_cast<long> (alpha)) & 1)
889 FloatComplex tmp = cosf (
static_cast<float> (M_PI) * alpha)
894 tmp -= sinf (
static_cast<float> (M_PI) * alpha)
922 if (z.real () == 0.0 && z.imag () == 0.0)
934 if (z.imag () == 0.0 && z.real () >= 0.0)
945 if ((
static_cast<long> (alpha - 0.5)) & 1)
953 FloatComplex tmp = cosf (
static_cast<float> (M_PI) * alpha)
958 tmp += sinf (
static_cast<float> (M_PI) * alpha)
987 if (z.imag () == 0.0 && z.real () >= 0.0)
1001 * sinf (
static_cast<float> (M_PI) * alpha)
1007 tmp2 *= exp (-z -
std::abs (z.real ()));
1035 if (z.real () == 0.0 && z.imag () == 0.0)
1046 if (z.imag () == 0.0 && z.real () >= 0.0)
1086 FloatComplex tmp = exp (
static_cast<float> (M_PI) * alpha * eye)
1119 FloatComplex tmp = exp (-
static_cast<float> (M_PI) * alpha * eye)
1155 retval(i,j) =
f (
x(i,j), alpha, (scaled ? 2 : 1),
ierr(i,j));
1174 retval(i,j) =
f (
x, alpha(i,j), (scaled ? 2 : 1),
ierr(i,j));
1192 if (x_nr != alpha_nr || x_nc != alpha_nc)
1193 (*current_liboctave_error_handler)
1194 (
"%s: the sizes of alpha and x must conform", fn);
1205 retval(i,j) =
f (
x(i,j), alpha(i,j), (scaled ? 2 : 1),
ierr(i,j));
1221 retval(i) =
f (
x(i), alpha, (scaled ? 2 : 1),
ierr(i));
1237 retval(i) =
f (
x, alpha(i), (scaled ? 2 : 1),
ierr(i));
1250 if (dv != alpha.
dims ())
1251 (*current_liboctave_error_handler)
1252 (
"%s: the sizes of alpha and x must conform", fn);
1260 retval(i) =
f (
x(i), alpha(i), (scaled ? 2 : 1),
ierr(i));
1279 retval(i,j) =
f (
x(i), alpha(j), (scaled ? 2 : 1),
ierr(i,j));
1284 #define SS_BESSEL(name, fcn) \
1286 name (float alpha, const FloatComplex& x, bool scaled, \
1287 octave_idx_type& ierr) \
1289 return do_bessel (fcn, #name, alpha, x, scaled, ierr); \
1292 #define SM_BESSEL(name, fcn) \
1293 FloatComplexMatrix \
1294 name (float alpha, const FloatComplexMatrix& x, bool scaled, \
1295 Array<octave_idx_type>& ierr) \
1297 return do_bessel (fcn, #name, alpha, x, scaled, ierr); \
1300 #define MS_BESSEL(name, fcn) \
1301 FloatComplexMatrix \
1302 name (const FloatMatrix& alpha, const FloatComplex& x, bool scaled, \
1303 Array<octave_idx_type>& ierr) \
1305 return do_bessel (fcn, #name, alpha, x, scaled, ierr); \
1308 #define MM_BESSEL(name, fcn) \
1309 FloatComplexMatrix \
1310 name (const FloatMatrix& alpha, const FloatComplexMatrix& x, \
1311 bool scaled, Array<octave_idx_type>& ierr) \
1313 return do_bessel (fcn, #name, alpha, x, scaled, ierr); \
1316 #define SN_BESSEL(name, fcn) \
1317 FloatComplexNDArray \
1318 name (float alpha, const FloatComplexNDArray& x, bool scaled, \
1319 Array<octave_idx_type>& ierr) \
1321 return do_bessel (fcn, #name, alpha, x, scaled, ierr); \
1324 #define NS_BESSEL(name, fcn) \
1325 FloatComplexNDArray \
1326 name (const FloatNDArray& alpha, const FloatComplex& x, \
1327 bool scaled, Array<octave_idx_type>& ierr) \
1329 return do_bessel (fcn, #name, alpha, x, scaled, ierr); \
1332 #define NN_BESSEL(name, fcn) \
1333 FloatComplexNDArray \
1334 name (const FloatNDArray& alpha, const FloatComplexNDArray& x, \
1335 bool scaled, Array<octave_idx_type>& ierr) \
1337 return do_bessel (fcn, #name, alpha, x, scaled, ierr); \
1340 #define RC_BESSEL(name, fcn) \
1341 FloatComplexMatrix \
1342 name (const FloatRowVector& alpha, \
1343 const FloatComplexColumnVector& x, bool scaled, \
1344 Array<octave_idx_type>& ierr) \
1346 return do_bessel (fcn, #name, alpha, x, scaled, ierr); \
1349 #define ALL_BESSEL(name, fcn) \
1350 SS_BESSEL (name, fcn) \
1351 SM_BESSEL (name, fcn) \
1352 MS_BESSEL (name, fcn) \
1353 MM_BESSEL (name, fcn) \
1354 SN_BESSEL (name, fcn) \
1355 NS_BESSEL (name, fcn) \
1356 NN_BESSEL (name, fcn) \
1357 RC_BESSEL (name, fcn)
1382 double zr = z.real ();
1383 double zi = z.imag ();
1396 double rexpz = expz.real ();
1397 double iexpz = expz.imag ();
1399 double tmp = ar*rexpz - ai*iexpz;
1401 ai = ar*iexpz + ai*rexpz;
1405 if (zi == 0.0 && (! scaled || zr >= 0.0))
1459 float ar = a.real ();
1460 float ai = a.imag ();
1467 float rexpz = expz.real ();
1468 float iexpz = expz.imag ();
1470 float tmp = ar*rexpz - ai*iexpz;
1472 ai = ar*iexpz + ai*rexpz;
1476 if (z.imag () == 0.0 && (! scaled || z.real () >= 0.0))
1536 ellipj (
double u,
double m,
double& sn,
double& cn,
double& dn,
double& err)
1538 static const int Nmax = 16;
1539 double m1, t=0, si_u, co_u, se_u, ta_u, b, c[Nmax], a[Nmax], phi;
1544 (*current_liboctave_warning_with_id_handler)
1545 (
"Octave:ellipj-invalid-m",
1546 "ellipj: invalid M value, required value 0 <= M <= 1");
1553 double sqrt_eps = std::sqrt (std::numeric_limits<double>::epsilon ());
1559 t = 0.25*
m*(u - si_u*co_u);
1560 sn = si_u - t * co_u;
1561 cn = co_u + t * si_u;
1562 dn = 1 - 0.5*
m*si_u*si_u;
1564 else if ((1 -
m) < sqrt_eps)
1572 sn = ta_u + 0.25*m1*(si_u*co_u - u)*se_u*se_u;
1573 cn = se_u - 0.25*m1*(si_u*co_u - u)*ta_u*se_u;
1574 dn = se_u + 0.25*m1*(si_u*co_u + u)*ta_u*se_u;
1581 b = std::sqrt (1 -
m);
1582 c[0] = std::sqrt (
m);
1583 for (
n = 1;
n < Nmax; ++
n)
1585 a[
n] = (a[
n - 1] + b)/2;
1586 c[
n] = (a[
n - 1] - b)/2;
1587 b = std::sqrt (a[
n - 1]*b);
1588 if (c[
n]/a[
n] < std::numeric_limits<double>::epsilon ())
break;
1596 for (ii = 1;
n > 0; ii *= 2, --
n) {}
1598 for (
n = Nn;
n > 0; --
n)
1600 phi = (
std::asin ((c[
n]/a[
n])* sin (phi)) + phi)/2;
1604 dn = std::sqrt (1 -
m*sn*sn);
1612 double m1 = 1 -
m, ss1, cc1, dd1;
1614 ellipj (u.imag (), m1, ss1, cc1, dd1, err);
1625 double ss, cc, dd, ddd;
1627 ellipj (u.real (),
m, ss, cc, dd, err);
1628 ddd = cc1*cc1 +
m*ss*ss*ss1*ss1;
1629 sn =
Complex (ss*dd1/ddd, cc*dd*ss1*cc1/ddd);
1630 cn =
Complex (cc*cc1/ddd, -ss*dd*ss1*dd1/ddd);
1631 dn =
Complex (dd*cc1*dd1/ddd, -
m*ss*cc*ss1/ddd);
1673 static const double a[] =
1675 -2.806989788730439e+01, 1.562324844726888e+02,
1676 -1.951109208597547e+02, 9.783370457507161e+01,
1677 -2.168328665628878e+01, 1.772453852905383e+00
1679 static const double b[] =
1681 -5.447609879822406e+01, 1.615858368580409e+02,
1682 -1.556989798598866e+02, 6.680131188771972e+01,
1683 -1.328068155288572e+01
1685 static const double c[] =
1687 -5.504751339936943e-03, -2.279687217114118e-01,
1688 -1.697592457770869e+00, -1.802933168781950e+00,
1689 3.093354679843505e+00, 2.077595676404383e+00
1691 static const double d[] =
1693 7.784695709041462e-03, 3.224671290700398e-01,
1694 2.445134137142996e+00, 3.754408661907416e+00
1697 static const double spi2 = 8.862269254527579e-01;
1698 static const double pbreak_lo = 0.04850;
1699 static const double pbreak_hi = 1.95150;
1703 if (
x >= pbreak_lo &&
x <= pbreak_hi)
1706 const double q = 0.5*(1-
x),
r = q*q;
1707 const double yn = (((((a[0]*
r + a[1])*
r + a[2])*
r + a[3])*
r + a[4])*
r + a[5])*q;
1708 const double yd = ((((b[0]*
r + b[1])*
r + b[2])*
r + b[3])*
r + b[4])*
r + 1.0;
1711 else if (
x > 0.0 &&
x < 2.0)
1714 const double q = (
x < 1
1715 ? std::sqrt (-2*std::log (0.5*
x))
1716 : std::sqrt (-2*std::log (0.5*(2-
x))));
1718 const double yn = ((((c[0]*q + c[1])*q + c[2])*q + c[3])*q + c[4])*q + c[5];
1720 const double yd = (((
d[0]*q +
d[1])*q +
d[2])*q +
d[3])*q + 1.0;
1737 double u = (
erf (y) - (1-
x)) * spi2 * exp (y*y);
1803 static const double a[] =
1805 -2.806989788730439e+01, 1.562324844726888e+02,
1806 -1.951109208597547e+02, 9.783370457507161e+01,
1807 -2.168328665628878e+01, 1.772453852905383e+00
1809 static const double b[] =
1811 -5.447609879822406e+01, 1.615858368580409e+02,
1812 -1.556989798598866e+02, 6.680131188771972e+01,
1813 -1.328068155288572e+01
1815 static const double c[] =
1817 -5.504751339936943e-03, -2.279687217114118e-01,
1818 -1.697592457770869e+00, -1.802933168781950e+00,
1819 3.093354679843505e+00, 2.077595676404383e+00
1821 static const double d[] =
1823 7.784695709041462e-03, 3.224671290700398e-01,
1824 2.445134137142996e+00, 3.754408661907416e+00
1827 static const double spi2 = 8.862269254527579e-01;
1828 static const double pbreak = 0.95150;
1829 double ax = fabs (
x), y;
1835 const double q = 0.5 *
x,
r = q*q;
1836 const double yn = (((((a[0]*
r + a[1])*
r + a[2])*
r + a[3])*
r + a[4])*
r + a[5])*q;
1837 const double yd = ((((b[0]*
r + b[1])*
r + b[2])*
r + b[3])*
r + b[4])*
r + 1.0;
1843 const double q = std::sqrt (-2*std::log (0.5*(1-ax)));
1844 const double yn = ((((c[0]*q + c[1])*q + c[2])*q + c[3])*q + c[4])*q + c[5];
1845 const double yd = (((
d[0]*q +
d[1])*q +
d[2])*q +
d[3])*q + 1.0;
1856 double u = (
erf (y) -
x) * spi2 * exp (y*y);
1880 double im =
x.imag ();
1881 double u =
expm1 (
x.real ());
1882 double v = sin (im/2);
1899 float im =
x.imag ();
1900 float u =
expm1 (
x.real ());
1901 float v = sin (im/2);
1929 result = std::tgamma (
x);
1952 result = std::tgammaf (
x);
1962 double r =
x.real (), i =
x.imag ();
1964 if (fabs (
r) < 0.5 && fabs (i) < 0.5)
1966 double u = 2*
r +
r*
r + i*i;
1981 float r =
x.real (), i =
x.imag ();
1983 if (fabs (
r) < 0.5 && fabs (i) < 0.5)
1985 float u = 2*
r +
r*
r + i*i;
1995 static const double pi = 3.14159265358979323846;
1997 template <
typename T>
2008 return std::log (
x);
2015 return std::log (
x);
2018 template <
typename T>
2026 static const T dg_coeff[10] =
2028 -0.83333333333333333e-1, 0.83333333333333333e-2,
2029 -0.39682539682539683e-2, 0.41666666666666667e-2,
2030 -0.75757575757575758e-2, 0.21092796092796093e-1,
2031 -0.83333333333333333e-1, 0.4432598039215686,
2032 -0.3053954330270122e+1, 0.125318899521531e+2
2035 T overz2 = T (1.0) / (zc * zc);
2040 p += dg_coeff[k] * overz2k;
2041 p +=
xlog (zc) - T (0.5) / zc;
2045 template <
typename T>
2049 static const double euler_mascheroni
2050 = 0.577215664901532860606512090082402431042;
2062 p =
psi (1 - z) - (
pi / tan (
pi * z));
2067 p = - euler_mascheroni;
2075 p += 1.0 / (2 * k - 1);
2077 p = - euler_mascheroni - 2 * std::log (2) + 2 * (p);
2087 const signed char n = 10 - z;
2088 for (
signed char k =
n - 1; k >= 0; k--)
2102 template <
typename T>
2108 typedef typename std::complex<T>::value_type P;
2113 std::complex<T> dgam (0.0, 0.0);
2115 dgam = std::complex<T> (
psi (z_r), 0.0);
2117 dgam =
psi (P (1.0) - z)- (P (
pi) / tan (P (
pi) * z));
2121 std::complex<T> z_m = z;
2124 unsigned char n = 8 - z_ra;
2125 z_m = z + std::complex<T> (
n, 0.0);
2130 std::complex<T> z_p = z + P (
n - 1);
2131 for (
unsigned char k =
n; k > 0; k--, z_p -= 1.0)
2132 dgam -= P (1.0) / z_p;
2151 template <
typename T>
2179 template <
typename T>
2185 fortran_psifn<T> (z,
n, ans,
ierr);
2214 #if defined (HAVE_LGAMMA_R)
2216 result = lgamma_r (
x, &sgngam);
2219 int sgngam = signgam;
2223 return result +
Complex (0., M_PI);
2233 #if defined (HAVE_LGAMMAF_R)
2235 result = lgammaf_r (
x, &sgngam);
2237 result = std::lgammaf (
x);
2238 int sgngam = signgam;
2250 ?
Complex (std::log (-(1.0 +
x)), M_PI)
subroutine cairy(Z, ID, KODE, AI, NZ, IERR)
subroutine cbesh(Z, FNU, KODE, M, N, CY, NZ, IERR)
subroutine cbiry(Z, ID, KODE, BI, IERR)
void resize(const dim_vector &dv, const T &rfv)
Size of the specified dimension.
octave_idx_type numel(void) const
Number of elements in the array.
octave_idx_type cols(void) const
octave_idx_type rows(void) const
const dim_vector & dims(void) const
Return a const-reference so that dims ()(i) works efficiently.
Vector representing the dimensions (size) of an Array.
octave_idx_type numel(int n=0) const
Number of elements that a matrix with this dimensions would have.
ColumnVector real(const ComplexColumnVector &a)
subroutine dpsifn(X, N, KODE, M, ANS, NZ, IERR)
#define F77_CONST_CMPLX_ARG(x)
#define F77_XFCN(f, F, args)
octave_f77_int_type F77_INT
double lo_ieee_nan_value(void)
F77_RET_T const F77_DBLE const F77_DBLE F77_DBLE * d
F77_RET_T const F77_DBLE const F77_DBLE F77_DBLE const F77_INT F77_INT & ierr
F77_RET_T const F77_DBLE * x
#define ALL_BESSEL(name, fcn)
std::complex< double > w(std::complex< double > z, double relerr=0)
std::complex< double > erfc(std::complex< double > z, double relerr=0)
std::complex< double > erfcx(std::complex< double > z, double relerr=0)
std::complex< double > erfi(std::complex< double > z, double relerr=0)
std::complex< double > erf(std::complex< double > z, double relerr=0)
std::complex< double > Dawson(std::complex< double > z, double relerr=0)
static bool is_integer_value(double x)
static Complex zbesh1(const Complex &z, double alpha, int kode, octave_idx_type &ierr)
static Complex zbesj(const Complex &z, double alpha, int kode, octave_idx_type &ierr)
static T xlog(const T &x)
Complex besselj(double alpha, const Complex &x, bool scaled, octave_idx_type &ierr)
static Complex zbesy(const Complex &z, double alpha, int kode, octave_idx_type &ierr)
static double do_erfinv(double x, bool refine)
static FloatComplex cbesh2(const FloatComplex &z, float alpha, int kode, octave_idx_type &ierr)
static double do_erfcinv(double x, bool refine)
Complex besselh2(double alpha, const Complex &x, bool scaled, octave_idx_type &ierr)
static Complex zbesk(const Complex &z, double alpha, int kode, octave_idx_type &ierr)
static FloatComplex cbesi(const FloatComplex &z, float alpha, int kode, octave_idx_type &ierr)
static T lanczos_approximation_psi(const T zc)
Complex bessely(double alpha, const Complex &x, bool scaled, octave_idx_type &ierr)
static FloatComplex cbesh1(const FloatComplex &z, float alpha, int kode, octave_idx_type &ierr)
void ellipj(double u, double m, double &sn, double &cn, double &dn, double &err)
static Complex do_bessel(dptr f, const char *, double alpha, const Complex &x, bool scaled, octave_idx_type &ierr)
Complex besselh1(double alpha, const Complex &x, bool scaled, octave_idx_type &ierr)
void fortran_psifn< float >(float z, octave_idx_type n_arg, float &ans, octave_idx_type &ierr)
FloatComplex(* fptr)(const FloatComplex &, float, int, octave_idx_type &)
static Complex zbesi(const Complex &z, double alpha, int kode, octave_idx_type &ierr)
static Complex zbesh2(const Complex &z, double alpha, int kode, octave_idx_type &ierr)
Complex log1p(const Complex &x)
Complex besseli(double alpha, const Complex &x, bool scaled, octave_idx_type &ierr)
static Complex bessel_return_value(const Complex &val, octave_idx_type ierr)
Complex asin(const Complex &x)
static FloatComplex cbesy(const FloatComplex &z, float alpha, int kode, octave_idx_type &ierr)
Complex airy(const Complex &z, bool deriv, bool scaled, octave_idx_type &ierr)
static FloatComplex cbesj(const FloatComplex &z, float alpha, int kode, octave_idx_type &ierr)
Complex erfc(const Complex &x)
void fortran_psifn< double >(double z, octave_idx_type n_arg, double &ans, octave_idx_type &ierr)
Complex(* dptr)(const Complex &, double, int, octave_idx_type &)
static FloatComplex cbesk(const FloatComplex &z, float alpha, int kode, octave_idx_type &ierr)
bool negative_sign(double x)
Complex rc_log1p(double x)
Complex rc_lgamma(double x)
Complex besselk(double alpha, const Complex &x, bool scaled, octave_idx_type &ierr)
Complex biry(const Complex &z, bool deriv, bool scaled, octave_idx_type &ierr)
static void fortran_psifn(T z, octave_idx_type n, T &ans, octave_idx_type &ierr)
std::complex< T > floor(const std::complex< T > &x)
Complex erf(const Complex &x)
Complex expm1(const Complex &x)
static double f(double k, double l_nu, double c_pm)
std::complex< double > Complex
std::complex< float > FloatComplex
octave_int< T > pow(const octave_int< T > &a, const octave_int< T > &b)
octave_value::octave_value(const Array< char > &chm, char type) return retval
subroutine psifn(X, N, KODE, M, ANS, NZ, IERR)
F77_RET_T F77_FUNC(xerbla, XERBLA)(F77_CONST_CHAR_ARG_DEF(s_arg
subroutine zairy(ZR, ZI, ID, KODE, AIR, AII, NZ, IERR)
subroutine zbesh(ZR, ZI, FNU, KODE, M, N, CYR, CYI, NZ, IERR)
subroutine zbiry(ZR, ZI, ID, KODE, BIR, BII, IERR)