Mathematical Functions to be Implemented#
This page lists mathematical functions to be implemented in FuncSketch. Functions which has been implemented will be removed from this list.
Basic Functions#
All basic functions in <cmath> header in C++11 have been implemented.
Other Special Functions#
Candidate of implementation of special functions are as follows:
Type |
Function |
Name in FuncSketch |
In C++ |
In Python |
|---|---|---|---|---|
Beta |
Beta function \(B{(x, y)}\) |
(TODO) |
|
(TODO) |
Beta |
Incomplete beta function \(B{(x; a, b)}\) |
(TODO) |
|
(TODO) |
Airy |
Airy function of the first kind \(\mathrm{Ai}{(x)}\) |
(TODO) |
|
(TODO) |
Airy |
Airy function of the second kind \(\mathrm{Bi}{(x)}\) |
(TODO) |
|
(TODO) |
Bessel |
Cylindrical Bessel function \(J_{\nu}{(x)}\) |
(TODO) |
|
(TODO) |
Bessel |
Cylindrical Neumann function \(Y_{\nu}{(x)}\) |
(TODO) |
|
(TODO) |
Bessel |
Regular modified cylindrical Bessel function \(I_{\nu}{(x)}\) |
(TODO) |
|
(TODO) |
Bessel |
Irregular modified cylindrical Bessel function \(K_{\nu}{(x)}\) |
(TODO) |
|
(TODO) |
Bessel |
Spherical Bessel function \(j_n{(x)}\) |
(TODO) |
|
(TODO) |
Bessel |
Spherical Neumann function \(y_n{(x)}\) |
(TODO) |
|
(TODO) |
Bessel |
Cylindrical Hankel function of the first kind \(H_{\nu}^{(1)}{(x)}\) |
(TODO) |
|
(TODO) |
Bessel |
Cylindrical Hankel function of the second kind \(H_{\nu}^{(2)}{(x)}\) |
(TODO) |
|
(TODO) |
Bessel |
Spherical Hankel function of the first kind \(h_n^{(1)}{(x)}\) |
(TODO) |
|
(TODO) |
Bessel |
Spherical Hankel function of the second kind \(h_n^{(2)}{(x)}\) |
(TODO) |
|
(TODO) |
Kelvin |
Kelvin function \(\mathrm{ber}_{\nu}{(x)}\) |
(TODO) |
(TODO) |
(TODO) |
Kelvin |
Kelvin function \(\mathrm{bei}_{\nu}{(x)}\) |
(TODO) |
(TODO) |
(TODO) |
Kelvin |
Kelvin function \(\mathrm{ker}_{\nu}{(x)}\) |
(TODO) |
(TODO) |
(TODO) |
Kelvin |
Kelvin function \(\mathrm{kei}_{\nu}{(x)}\) |
(TODO) |
(TODO) |
(TODO) |
Gamma |
Digamma function \(\psi{(x)}\) |
(TODO) |
|
(TODO) |
Gamma |
Polygamma function \(\psi^{(n)}{(x)}\) |
(TODO) |
|
(TODO) |
Gamma |
Upper incomplete gamma function \(\Gamma{(a, x)}\) |
(TODO) |
|
(TODO) |
Gamma |
Lower incomplete gamma function \(\gamma{(a, x)}\) |
(TODO) |
|
(TODO) |
Error function |
Inverse error function \(\mathrm{erf}^{-1}{(x)}\) |
(TODO) |
|
(TODO) |
Error function |
Inverse complementary error function \(\mathrm{erfc}^{-1}{(x)}\) |
(TODO) |
|
(TODO) |
Hermite |
Hermite polynomial \(H_n{(x)}\) (physicist’s) |
(TODO) |
|
(TODO) |
Chebyshev |
Chebyshev polynomial of the first kind \(T_n{(x)}\) |
(TODO) |
|
(TODO) |
Chebyshev |
Chebyshev polynomial of the second kind \(U_n{(x)}\) |
(TODO) |
|
(TODO) |
Gegenbauer |
Gegenbauer polynomial \(C_n^{(\lambda)}{(x)}\) |
(TODO) |
|
(TODO) |
Laguerre |
Laguerre polynomial \(L_n{(x)}\) |
(TODO) |
|
(TODO) |
Laguerre |
Associated Laguerre polynomial \(L_n^{(\alpha)}{(x)}\) |
(TODO) |
|
(TODO) |
Legendre |
Legendre polynomial \(P_n{(x)}\) |
(TODO) |
|
(TODO) |
Legendre |
Associated Legendre polynomial \(P_n^m{(x)}\) |
(TODO) |
|
(TODO) |
Legendre |
Spherical associated Legendre polynomial |
(TODO) |
|
(TODO) |
Jacobi polynomial |
Jacobi polynomial \(P_n^{(\alpha, \beta)}{(x)}\) |
(TODO) |
|
(TODO) |
Elliptic integral |
Complete elliptic integral of the first kind \(K(k)\) |
(TODO) |
|
(TODO) |
Elliptic integral |
Complete elliptic integral of the second kind \(E(k)\) |
(TODO) |
|
(TODO) |
Elliptic integral |
Complete elliptic integral of the third kind \(\Pi(n, k)\) |
(TODO) |
|
(TODO) |
Elliptic integral |
Incomplete elliptic integral of the first kind \(F(\phi, k)\) |
(TODO) |
|
(TODO) |
Elliptic integral |
Incomplete elliptic integral of the second kind \(E(\phi, k)\) |
(TODO) |
|
(TODO) |
Elliptic integral |
Incomplete elliptic integral of the third kind \(\Pi(n, \phi, k)\) |
(TODO) |
|
(TODO) |
Jacobi elliptic |
Jacobi elliptic function \(\mathrm{sn}{(u, k)}\) |
(TODO) |
|
(TODO) |
Jacobi elliptic |
Jacobi elliptic function \(\mathrm{cn}{(u, k)}\) |
(TODO) |
|
(TODO) |
Jacobi elliptic |
Jacobi elliptic function \(\mathrm{dn}{(u, k)}\) |
(TODO) |
|
(TODO) |
Exponential integral |
Exponential integral \(Ei(x)\) |
(TODO) |
|
(TODO) |
Other integrals |
Dawson integral \(F{(x)}\) |
(TODO) |
(TODO) |
(TODO) |
Other integrals |
Sine integral \(\mathrm{Si}{(x)}\) |
(TODO) |
(TODO) |
(TODO) |
Other integrals |
Cosine integral \(\mathrm{Ci}{(x)}\) |
(TODO) |
(TODO) |
(TODO) |
Hypergeometric |
Confluent hypergeometric function (Kummer’s M) \(M{(a, b, x)}\) |
(TODO) |
|
(TODO) |
Hypergeometric |
Confluent hypergeometric function (Kummer’s U) \(U{(a, b, x)}\) |
(TODO) |
(TODO) |
(TODO) |
Hypergeometric |
Gauss hypergeometric function \({}_2F_1{(a, b; c; x)}\) |
(TODO) |
(TODO) |
(TODO) |
Zeta |
Riemann zeta function \(\zeta{(x)}\) |
(TODO) |
|
(TODO) |
Zeta |
Hurwitz zeta function \(\zeta{(x, q)}\) |
(TODO) |
(TODO) |
(TODO) |
Lambert W |
Lambert W function (principal branch) \(W_0{(x)}\) |
(TODO) |
|
(TODO) |
Lambert W |
Lambert W function (secondary branch) \(W_{-1}{(x)}\) |
(TODO) |
|
(TODO) |
Owen |
Owen’s T function \(T{(h, a)}\) |
(TODO) |
|
(TODO) |
TODO: Names in Python will be researched later.
TODO: Names of functions in FuncSketch are not decided yet.
TODO: Some functions have several different definitions, so we need to determine the definitions to be used in FuncSketch.
TODO: Some functions have different order of arguments in notation and implementation in C++, so we need to determine the order of arguments to be used in FuncSketch.
Special functions are added in C++17, and some of them are not available in some compilers even in 2026. So we will use Boost.Math for these functions.
Boost.Math does not provide a dedicated function for the Gauss hypergeometric function \({}_2F_1\). But
boost::math::hypergeometric_pFq(generalized hypergeometric function) may be able to be used to compute it instead.Boost.Math does not currently provide Kelvin functions, the Dawson integral, sine/cosine integrals, the Hurwitz zeta function, or Kummer’s U function.
Kelvin function can be computed using Bessel functions.