C++ IS 29124 ISO 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 Status Section Description Status Comments 7 Macro names Partial No diagnostic for inconsistent definitions of __STDCPP_WANT_MATH_SPEC_FUNCS__ 8 Mathematical special functions Y 8.1 Additions to header <cmath> synopsis Y 8.1.1 associated Laguerre polynomials Y 8.1.2 associated Legendre functions Y 8.1.3 beta function Y 8.1.4 (complete) elliptic integral of the first kind Y 8.1.5 (complete) elliptic integral of the second kind Y 8.1.6 (complete) elliptic integral of the third kind Y 8.1.7 regular modified cylindrical Bessel functions Y 8.1.8 cylindrical Bessel functions (of the first kind) Y 8.1.9 irregular modified cylindrical Bessel functions Y 8.1.10 cylindrical Neumann functions Y 8.1.11 (incomplete) elliptic integral of the first kind Y 8.1.12 (incomplete) elliptic integral of the second kind Y 8.1.13 (incomplete) elliptic integral of the third kind Y 8.1.14 exponential integral Y 8.1.15 Hermite polynomials Y 8.1.16 Laguerre polynomials Y 8.1.17 Legendre polynomials Y 8.1.18 Riemann zeta function Y 8.1.19 spherical Bessel functions (of the first kind) Y 8.1.20 spherical associated Legendre functions Y 8.1.21 spherical Neumann functions Y 8.2 Additions to header <math.h> Y 8.3 The header <ctgmath> Partial Conflicts with C++ 2011 requirements. 8.4 The header <tgmath.h> N Conflicts with C++ 2011 requirements.
Implementation Specific Behavior For 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.