Functions
SpecialFunctions.erf — Functionerf(x)Compute the error function of $x$, defined by
External links: DLMF, Wikipedia.
See also: erfc(x), erfcx(x), erfi(x), dawson(x), erfinv(x), erfcinv(x).
Implementation by
SpecialFunctions.erfc — Functionerfc(x)Compute the complementary error function of $x$, defined by
This is the accurate version of 1-erf(x) for large $x$.
External links: DLMF, Wikipedia.
See also: erf(x).
Implementation by
SpecialFunctions.erfcx — Functionerfcx(x)Compute the scaled complementary error function of $x$, defined by
This is the accurate version of $e^{x^2} \operatorname{erfc}(x)$ for large $x$. Note also that $\operatorname{erfcx}(-ix)$ computes the Faddeeva function w(x).
External links: DLMF, Wikipedia.
See also: erfc(x).
Implementation by
Float32/Float64: C standard math library libm.BigFloat: MPFR has an open TODO item for this function until then, we use DLMF 7.12.1 for the tail.
SpecialFunctions.erfi — Functionerfi(x)Compute the imaginary error function of $x$, defined by
External links: Wikipedia.
See also: erf(x).
Implementation by
Float32/Float64: C standard math library libm.
SpecialFunctions.dawson — Functiondawson(x)Compute the Dawson function (scaled imaginary error function) of $x$, defined by
This is the accurate version of $\frac{\sqrt{\pi}}{2} e^{-x^2} \operatorname{erfi}(x)$ for large $x$.
External links: DLMF, Wikipedia.
See also: erfi(x).
Implementation by
Float32/Float64: C standard math library libm.
SpecialFunctions.erfinv — Functionerfinv(x)Compute the inverse error function of a real $x$, that is
External links: Wikipedia.
See also: erf(x).
Implementation
Using the rational approximants tabulated in:
J. M. Blair, C. A. Edwards, and J. H. Johnson, "Rational Chebyshev approximations for the inverse of the error function", Math. Comp. 30, pp. 827–830 (1976). http://dx.doi.org/10.1090/S0025-5718-1976-0421040-7, http://www.jstor.org/stable/2005402
SpecialFunctions.erfcinv — Functionerfcinv(x)Compute the inverse error complementary function of a real $x$, that is
External links: Wikipedia.
See also: erfc(x).
Implementation
Using the rational approximants tabulated in:
J. M. Blair, C. A. Edwards, and J. H. Johnson, "Rational Chebyshev approximations for the inverse of the error function", Math. Comp. 30, pp. 827–830 (1976). http://dx.doi.org/10.1090/S0025-5718-1976-0421040-7, http://www.jstor.org/stable/2005402
SpecialFunctions.sinint — Functionsinint(x)Compute the sine integral function of $x$, defined by
External links: DLMF, Wikipedia.
See also: cosint(x).
Implementation
Using the rational approximants tabulated in:
A.J. MacLeod, "Rational approximations, software and test methods for sine and cosine integrals", Numer. Algor. 12, pp. 259–272 (1996). http://dx.doi.org/10.1007/BF02142806, https://link.springer.com/article/10.1007/BF02142806.
Note: the second zero of $Ci(x)$ has a typo that is fixed: $r_1 = 3.38418 0422\mathbf{8} 51186 42639 78511 46402$ in the article, but is in fact: $r_1 = 3.38418 0422\mathbf{5} 51186 42639 78511 46402$.
SpecialFunctions.cosint — Functioncosint(x)Compute the cosine integral function of $x$, defined by
where $\gamma$ is the Euler-Mascheroni constant.
External links: DLMF, Wikipedia.
See also: sinint(x).
Implementation
Using the rational approximants tabulated in:
A.J. MacLeod, "Rational approximations, software and test methods for sine and cosine integrals", Numer. Algor. 12, pp. 259–272 (1996). http://dx.doi.org/10.1007/BF02142806, https://link.springer.com/article/10.1007/BF02142806.
Note: the second zero of $Ci(x)$ has a typo that is fixed: $r_1 = 3.38418 0422\mathbf{8} 51186 42639 78511 46402$ in the article, but is in fact: $r_1 = 3.38418 0422\mathbf{5} 51186 42639 78511 46402$.
SpecialFunctions.digamma — Functiondigamma(x)Compute the digamma function of x (the logarithmic derivative of gamma(x)).
SpecialFunctions.invdigamma — Functioninvdigamma(x)Compute the inverse digamma function of x.
SpecialFunctions.trigamma — Functiontrigamma(x)Compute the trigamma function of x (the logarithmic second derivative of gamma(x)).
SpecialFunctions.polygamma — Functionpolygamma(m, x)Compute the polygamma function of order m of argument x (the (m+1)th derivative of the logarithm of gamma(x))
SpecialFunctions.airyai — Functionairyai(x)Airy function of the first kind $\operatorname{Ai}(x)$.
SpecialFunctions.airyaiprime — Functionairyaiprime(x)Derivative of the Airy function of the first kind $\operatorname{Ai}'(x)$.
SpecialFunctions.airyaix — Functionairyaix(x)Scaled Airy function of the first kind $\operatorname{Ai}(x) e^{\frac{2}{3} x \sqrt{x}}$. Throws DomainError for negative Real arguments.
SpecialFunctions.airyaiprimex — Functionairyaiprimex(x)Scaled derivative of the Airy function of the first kind $\operatorname{Ai}'(x) e^{\frac{2}{3} x \sqrt{x}}$. Throws DomainError for negative Real arguments.
SpecialFunctions.airybi — Functionairybi(x)Airy function of the second kind $\operatorname{Bi}(x)$.
SpecialFunctions.airybiprime — Functionairybiprime(x)Derivative of the Airy function of the second kind $\operatorname{Bi}'(x)$.
SpecialFunctions.airybix — Functionairybix(x)Scaled Airy function of the second kind $\operatorname{Bi}(x) e^{- \left| \operatorname{Re} \left( \frac{2}{3} x \sqrt{x} \right) \right|}$.
SpecialFunctions.airybiprimex — Functionairybiprimex(x)Scaled derivative of the Airy function of the second kind $\operatorname{Bi}'(x) e^{- \left| \operatorname{Re} \left( \frac{2}{3} x \sqrt{x} \right) \right|}$.
SpecialFunctions.besselj0 — Functionbesselj0(x)Bessel function of the first kind of order 0, $J_0(x)$.
SpecialFunctions.besselj1 — Functionbesselj1(x)Bessel function of the first kind of order 1, $J_1(x)$.
SpecialFunctions.besselj — Functionbesselj(nu, x)Bessel function of the first kind of order nu, $J_\nu(x)$.
SpecialFunctions.besseljx — Functionbesseljx(nu, x)Scaled Bessel function of the first kind of order nu, $J_\nu(x) e^{- | \operatorname{Im}(x) |}$.
SpecialFunctions.bessely0 — Functionbessely0(x)Bessel function of the second kind of order 0, $Y_0(x)$.
SpecialFunctions.bessely1 — Functionbessely1(x)Bessel function of the second kind of order 1, $Y_1(x)$.
SpecialFunctions.bessely — Functionbessely(nu, x)Bessel function of the second kind of order nu, $Y_\nu(x)$.
SpecialFunctions.besselyx — Functionbesselyx(nu, x)Scaled Bessel function of the second kind of order nu, $Y_\nu(x) e^{- | \operatorname{Im}(x) |}$.
SpecialFunctions.hankelh1 — Functionhankelh1(nu, x)Bessel function of the third kind of order nu, $H^{(1)}_\nu(x)$.
SpecialFunctions.hankelh1x — Functionhankelh1x(nu, x)Scaled Bessel function of the third kind of order nu, $H^{(1)}_\nu(x) e^{-x i}$.
SpecialFunctions.hankelh2 — Functionhankelh2(nu, x)Bessel function of the third kind of order nu, $H^{(2)}_\nu(x)$.
SpecialFunctions.hankelh2x — Functionhankelh2x(nu, x)Scaled Bessel function of the third kind of order nu, $H^{(2)}_\nu(x) e^{x i}$.
SpecialFunctions.besselh — Functionbesselh(nu, [k=1,] x)Bessel function of the third kind of order nu (the Hankel function). k is either 1 or 2, selecting hankelh1 or hankelh2, respectively. k defaults to 1 if it is omitted. (See also besselhx for an exponentially scaled variant.)
SpecialFunctions.besselhx — Functionbesselhx(nu, [k=1,] z)Compute the scaled Hankel function $\exp(∓iz) H_ν^{(k)}(z)$, where $k$ is 1 or 2, $H_ν^{(k)}(z)$ is besselh(nu, k, z), and $∓$ is $-$ for $k=1$ and $+$ for $k=2$. k defaults to 1 if it is omitted.
The reason for this function is that $H_ν^{(k)}(z)$ is asymptotically proportional to $\exp(∓iz)/\sqrt{z}$ for large $|z|$, and so the besselh function is susceptible to overflow or underflow when z has a large imaginary part. The besselhx function cancels this exponential factor (analytically), so it avoids these problems.
SpecialFunctions.besseli — Functionbesseli(nu, x)Modified Bessel function of the first kind of order nu, $I_\nu(x)$.
SpecialFunctions.besselix — Functionbesselix(nu, x)Scaled modified Bessel function of the first kind of order nu, $I_\nu(x) e^{- | \operatorname{Re}(x) |}$.
SpecialFunctions.besselk — Functionbesselk(nu, x)Modified Bessel function of the second kind of order nu, $K_\nu(x)$.
SpecialFunctions.besselkx — Functionbesselkx(nu, x)Scaled modified Bessel function of the second kind of order nu, $K_\nu(x) e^x$.
SpecialFunctions.ellipk — Functionellipk(m)Computes Complete Elliptic Integral of 1st kind $K(m)$ for parameter $m$ given by
External links: DLMF, Wikipedia.
See also: ellipe(m).
Arguments
m: parameter $m$ is in relation to elliptic modulus $k$ by $k^2=m$ and modular angle $\alpha$ by $k=\sin \alpha$
Implementation
Using piecewise approximation polynomial as given in
'Fast Computation of Complete Elliptic Integrals and Jacobian Elliptic Functions', Fukushima, Toshio. (2014). F09-FastEI. Celest Mech Dyn Astr, DOI 10.1007/s10569-009-9228-z, https://pdfs.semanticscholar.org/8112/c1f56e833476b61fc54d41e194c962fbe647.pdf
For $m<0$`, followed
Fukushima, Toshio. (2014). 'Precise, compact, and fast computation of complete elliptic integrals by piecewise minimax rational function approximation'. Journal of Computational and Applied Mathematics. 282. DOI 10.13140/2.1.1946.6245., https://www.researchgate.net/publication/267330394
Also suggested in this paper that we should consider domain only from $(-\infty,1]$.
SpecialFunctions.ellipe — Functionellipe(m)Computes Complete Elliptic Integral of 2nd kind $E(m)$ for parameter $m$ given by
External links: DLMF, Wikipedia.
See also: ellipk(m).
Arguments
m: parameter $m$ is in relation to elliptic modulus $k$ by $k^2=m$ and modular angle $\alpha$ by $k=\sin \alpha$
Implementation
Using piecewise approximation polynomial as given in
'Fast Computation of Complete Elliptic Integrals and Jacobian Elliptic Functions', Fukushima, Toshio. (2014). F09-FastEI. Celest Mech Dyn Astr, DOI 10.1007/s10569-009-9228-z, https://pdfs.semanticscholar.org/8112/c1f56e833476b61fc54d41e194c962fbe647.pdf
For $m<0$`, followed
Fukushima, Toshio. (2014). 'Precise, compact, and fast computation of complete elliptic integrals by piecewise minimax rational function approximation'. Journal of Computational and Applied Mathematics. 282. DOI 10.13140/2.1.1946.6245., https://www.researchgate.net/publication/267330394
Also suggested in this paper that we should consider domain only from $(-\infty,1]$.
SpecialFunctions.eta — Functioneta(x)Dirichlet eta function $\eta(s) = \sum^\infty_{n=1}(-1)^{n-1}/n^{s}$.
SpecialFunctions.zeta — Functionzeta(s, z)Generalized zeta function $\zeta(s, z)$, defined by the sum $\sum_{k=0}^\infty ((k+z)^2)^{-s/2}$, where any term with $k+z=0$ is excluded. For $\Re z > 0$, this definition is equivalent to the Hurwitz zeta function $\sum_{k=0}^\infty (k+z)^{-s}$. For $z=1$, it yields the Riemann zeta function $\zeta(s)$.
zeta(s)Riemann zeta function $\zeta(s)$.
SpecialFunctions.gamma — Functiongamma(z)Compute the gamma function for complex $z$, defined by
and by analytic continuation in the whole complex plane.
External links: DLMF, Wikipedia.
See also: loggamma(z).
Implementation by
SpecialFunctions.gamma_inc — Functiongamma_inc(a,x,IND)DLMF: https://dlmf.nist.gov/8.2#E4 , https://dlmf.nist.gov/8.2#E5 Wikipedia: https://en.wikipedia.org/wiki/Incompletegammafunction IND –> Accuracy desired ; IND=0 means 14 significant digits accuracy , IND=1 means 6 significant digit and IND=2 means only 3 digit accuracy suffices. gammainc(a,x) or P(a,x) is the Incomplete gamma function ratio given by : ``1/\Gamma (a) \int{0}^{x} e^{-t}t^{a-1} dt$gamma_q(a,x) or Q(a,x) is the Incomplete gamma function ratio given by : 1 - P(a,x) ->$1/\Gamma (a) \int{x}^{\infty} e^{-t}t^{a-1} dt`` Returns a tuple (gammainc, gammaq) where gammainc + gamma_q = 1.0
SpecialFunctions.gamma_inc_inv — Functiongamma_inc_inv(a,p,q)DLMF: https://dlmf.nist.gov/8.2#E4 , https://dlmf.nist.gov/8.2#E5 Wiki: https://en.wikipedia.org/wiki/Incompletegammafunction
gammainc(a,x) or (P(a,x),Q(a,x)) is the Incomplete gamma function ratio given by : ``1/\Gamma (a) \int{0}^{x} e^{-t}t^{a-1} dt`gamma_inc_inv(a,p,q) inverts the gamma_inc function, by computingxgivena,p,q` in P(a,x)=p and Q(a,x)=q.
SpecialFunctions.beta_inc — Functionbeta_inc(a,b,x,y)Computes Incomplete Beta Function Ratios given by:
and $I_{y}(a,b) = 1.0 - I_{x}(a,b)$. given $B(a,b) = 1/G(a,b) = \Gamma(a)\Gamma(b)/\Gamma(a+b)$ and $x+y = 1$.
SpecialFunctions.loggamma — Functionloggamma(x)Computes the logarithm of gamma for given x. If x is a Real, then it throws a DomainError if gamma(x) is negative.
See also logabsgamma.
SpecialFunctions.logabsgamma — Functionlogabsgamma(x)Compute the logarithm of absolute value of gamma for Real xand returns a tuple (log(abs(gamma(x))), sign(gamma(x))).
See also loggamma.
SpecialFunctions.logfactorial — Functionlogfactorial(x)Compute the logarithmic factorial of a nonnegative integer x. Equivalent to loggamma of x + 1, but loggamma extends this function to non-integer x.
SpecialFunctions.beta — Functionbeta(x, y)Euler integral of the first kind $\operatorname{B}(x,y) = \Gamma(x)\Gamma(y)/\Gamma(x+y)$.
SpecialFunctions.logbeta — Functionlogbeta(x, y)Natural logarithm of the beta function $\log(|\operatorname{B}(x,y)|)$.
See also logabsbeta.
SpecialFunctions.logabsbeta — Functionlogabsbeta(x, y)Compute the natural logarithm of the absolute value of the beta function, returning a tuple (log(abs(beta(x,y))), sign(beta(x,y)))
See also logbeta.
SpecialFunctions.logabsbinomial — Functionlogabsbinomial(n, k)Accurate natural logarithm of the absolute value of the binomial coefficient binomial(n, k) for large n and k near n/2.
Returns a tuple (log(abs(binomial(n,k))), sign(binomial(n,k))).