C++ IS 29124ISO C++Special Functions
This table is based on the table of contents of ISO/IEC FDIS 29124,
Doc No: N3060, Date: 2010-03-06,
"Extensions to the C++ Library to support mathematical special functions".
Complete support for IS 29124 is in GCC 6.1 and later releases, when using
at least C++11 (for older releases or C++98/C++03 use TR1 instead).
For C++11 and C++14 the additions to the library are not declared by their
respective headers unless __STDCPP_WANT_MATH_SPEC_FUNCS__
is defined as a macro that expands to a non-zero integer constant.
For C++17 the special functions are always declared (since GCC 7.1).
When the special functions are declared the macro
__STDCPP_MATH_SPEC_FUNCS__ is defined to 201003L.
In addition to the special functions defined in IS 29124, for
non-strict modes (i.e. -std=gnu++NN modes) the
hypergeometric functions and confluent hypergeometric functions
from TR1 are also provided, defined in namespace
__gnu_cxx.
C++ Special Functions Implementation StatusSectionDescriptionStatusComments7Macro namesPartialNo diagnostic for inconsistent definitions of
__STDCPP_WANT_MATH_SPEC_FUNCS__8Mathematical special functionsY8.1Additions to header <cmath> synopsisY8.1.1associated Laguerre polynomialsY8.1.2associated Legendre functionsY8.1.3beta functionY8.1.4(complete) elliptic integral of the first kindY8.1.5(complete) elliptic integral of the second kindY8.1.6(complete) elliptic integral of the third kindY8.1.7regular modified cylindrical Bessel functionsY8.1.8cylindrical Bessel functions (of the first kind)Y8.1.9irregular modified cylindrical Bessel functionsY8.1.10cylindrical Neumann functionsY8.1.11(incomplete) elliptic integral of the first kindY8.1.12(incomplete) elliptic integral of the second kindY8.1.13(incomplete) elliptic integral of the third kindY8.1.14exponential integralY8.1.15Hermite polynomialsY8.1.16Laguerre polynomialsY8.1.17Legendre polynomialsY8.1.18Riemann zeta functionY8.1.19spherical Bessel functions (of the first kind)Y8.1.20spherical associated Legendre functionsY8.1.21spherical Neumann functionsY8.2Additions to header <math.h>Y8.3The header <ctgmath>PartialConflicts with C++ 2011 requirements.8.4The header <tgmath.h>NConflicts with C++ 2011 requirements.
Implementation Specific BehaviorFor behaviour which is specified by the 2011 standard,
see C++ 2011 Implementation
Specific Behavior. This section documents behaviour which
is required by IS 29124.
7.2 [macro.user]/3 /4 The functions declared in
Clause 8 are only declared when
__STDCPP_WANT_MATH_SPEC_FUNCS__ == 1
(or in C++17 mode, for GCC 7.1 and later).
8.1.1 [sf.cmath.Lnm]/1 The effect of calling
these functions with n >= 128 or m >= 128
should be described here.
8.1.2 [sf.cmath.Plm]/3 The effect of calling
these functions with l >= 128 should be described here.
8.1.3 [sf.cmath.I]/3 The effect of calling
these functions with nu >= 128 should be described here.
8.1.8 [sf.cmath.J]/3 The effect of calling
these functions with nu >= 128 should be described here.
8.1.9 [sf.cmath.K]/3 The effect of calling
these functions with nu >= 128 should be described here.
8.1.10 [sf.cmath.N]/3 The effect of calling
these functions with nu >= 128 should be described here.
8.1.15 [sf.cmath.Hn]/3 The effect of calling
these functions with n >= 128 should be described here.
8.1.16 [sf.cmath.Ln]/3 The effect of calling
these functions with n >= 128 should be described here.
8.1.17 [sf.cmath.Pl]/3 The effect of calling
these functions with l >= 128 should be described here.
8.1.19 [sf.cmath.j]/3 The effect of calling
these functions with n >= 128 should be described here.
8.1.20 [sf.cmath.Ylm]/3 The effect of calling
these functions with l >= 128 should be described here.
8.1.21 [sf.cmath.n]/3 The effect of calling
these functions with n >= 128 should be described here.