Mathematical special functions (since C++17) (original) (raw)
Mathematical special functions
The Mathematical Special Functions library was originally part of Library TR1 ISO/IEC TR 19768:2007, then published as an independent ISO standard, ISO/IEC 29124:2010, and finally merged to ISO C++ as of C++17.
See Mathematical special functions for the ISO/IEC 29124:2010 version of this library.
[edit] Functions
| Defined in header | |
|---|---|
| assoc_laguerreassoc_laguerrefassoc_laguerrel(C++17)(C++17)(C++17) | associated Laguerre polynomials (function) [edit] |
| assoc_legendreassoc_legendrefassoc_legendrel(C++17)(C++17)(C++17) | associated Legendre polynomials (function) [edit] |
| betabetafbetal(C++17)(C++17)(C++17) | beta function (function) [edit] |
| comp_ellint_1comp_ellint_1fcomp_ellint_1l(C++17)(C++17)(C++17) | (complete) elliptic integral of the first kind (function) [edit] |
| comp_ellint_2comp_ellint_2fcomp_ellint_2l(C++17)(C++17)(C++17) | (complete) elliptic integral of the second kind (function) [edit] |
| comp_ellint_3comp_ellint_3fcomp_ellint_3l(C++17)(C++17)(C++17) | (complete) elliptic integral of the third kind (function) [edit] |
| cyl_bessel_icyl_bessel_ifcyl_bessel_il(C++17)(C++17)(C++17) | regular modified cylindrical Bessel functions (function) [edit] |
| cyl_bessel_jcyl_bessel_jfcyl_bessel_jl(C++17)(C++17)(C++17) | cylindrical Bessel functions (of the first kind) (function) [edit] |
| cyl_bessel_kcyl_bessel_kfcyl_bessel_kl(C++17)(C++17)(C++17) | irregular modified cylindrical Bessel functions (function) [edit] |
| cyl_neumanncyl_neumannfcyl_neumannl(C++17)(C++17)(C++17) | cylindrical Neumann functions (function) [edit] |
| ellint_1ellint_1fellint_1l(C++17)(C++17)(C++17) | (incomplete) elliptic integral of the first kind (function) [edit] |
| ellint_2ellint_2fellint_2l(C++17)(C++17)(C++17) | (incomplete) elliptic integral of the second kind (function) [edit] |
| ellint_3ellint_3fellint_3l(C++17)(C++17)(C++17) | (incomplete) elliptic integral of the third kind (function) [edit] |
| expintexpintfexpintl(C++17)(C++17)(C++17) | exponential integral (function) [edit] |
| hermitehermitefhermitel(C++17)(C++17)(C++17) | Hermite polynomials (function) [edit] |
| legendrelegendreflegendrel(C++17)(C++17)(C++17) | Legendre polynomials (function) [edit] |
| laguerrelaguerreflaguerrel(C++17)(C++17)(C++17) | Laguerre polynomials (function) [edit] |
| riemann_zetariemann_zetafriemann_zetal(C++17)(C++17)(C++17) | Riemann zeta function (function) [edit] |
| sph_besselsph_besselfsph_bessell(C++17)(C++17)(C++17) | spherical Bessel functions (of the first kind) (function) [edit] |
| sph_legendresph_legendrefsph_legendrel(C++17)(C++17)(C++17) | spherical associated Legendre functions (function) [edit] |
| sph_neumannsph_neumannfsph_neumannl(C++17)(C++17)(C++17) | spherical Neumann functions (function) [edit] |
[edit] Notes
The float and long double overloads for math special functions without the "f" or "l" suffix are present in the final draft of ISO/IEC 29124:2010 (N3060), but absent in the published C++17/20 standard (see LWG issue 3234). These overloads were not provided by MSVC STL until VS 2022 17.3.
These functions are unrelated to special member functions of class types.
| Feature-test macro | Value | Std | Feature |
|---|---|---|---|
| __cpp_lib_math_special_functions | 201603L | (C++17) | Mathematical special functions |
[edit] Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3234(P1467R9) | C++17 | additional overloads for math special functions were missing | these overloads are required |
[edit] References
C++23 standard (ISO/IEC 14882:2024):
28.7.6 Mathematical special functions [sf.cmath]
C++20 standard (ISO/IEC 14882:2020):
26.8.6 Mathematical special functions [sf.cmath]
C++17 standard (ISO/IEC 14882:2017):
29.9.5 Mathematical special functions [sf.cmath]