28 Numerics library [numerics]

28.8 Numbers [numbers]

28.8.1 Header <numbers> synopsis [numbers.syn]

namespace std::numbers { template<class T> inline constexpr T e_v = unspecified; template<class T> inline constexpr T log2e_v = unspecified; template<class T> inline constexpr T log10e_v = unspecified; template<class T> inline constexpr T pi_v = unspecified; template<class T> inline constexpr T inv_pi_v = unspecified; template<class T> inline constexpr T inv_sqrtpi_v = unspecified; template<class T> inline constexpr T ln2_v = unspecified; template<class T> inline constexpr T ln10_v = unspecified; template<class T> inline constexpr T sqrt2_v = unspecified; template<class T> inline constexpr T sqrt3_v = unspecified; template<class T> inline constexpr T inv_sqrt3_v = unspecified; template<class T> inline constexpr T egamma_v = unspecified; template<class T> inline constexpr T phi_v = unspecified; template<floating_­point T> inline constexpr T e_v<T> = see below; template<floating_­point T> inline constexpr T log2e_v<T> = see below; template<floating_­point T> inline constexpr T log10e_v<T> = see below; template<floating_­point T> inline constexpr T pi_v<T> = see below; template<floating_­point T> inline constexpr T inv_pi_v<T> = see below; template<floating_­point T> inline constexpr T inv_sqrtpi_v<T> = see below; template<floating_­point T> inline constexpr T ln2_v<T> = see below; template<floating_­point T> inline constexpr T ln10_v<T> = see below; template<floating_­point T> inline constexpr T sqrt2_v<T> = see below; template<floating_­point T> inline constexpr T sqrt3_v<T> = see below; template<floating_­point T> inline constexpr T inv_sqrt3_v<T> = see below; template<floating_­point T> inline constexpr T egamma_v<T> = see below; template<floating_­point T> inline constexpr T phi_v<T> = see below; inline constexpr double e = e_v<double>; inline constexpr double log2e = log2e_v<double>; inline constexpr double log10e = log10e_v<double>; inline constexpr double pi = pi_v<double>; inline constexpr double inv_pi = inv_pi_v<double>; inline constexpr double inv_sqrtpi = inv_sqrtpi_v<double>; inline constexpr double ln2 = ln2_v<double>; inline constexpr double ln10 = ln10_v<double>; inline constexpr double sqrt2 = sqrt2_v<double>; inline constexpr double sqrt3 = sqrt3_v<double>; inline constexpr double inv_sqrt3 = inv_sqrt3_v<double>; inline constexpr double egamma = egamma_v<double>; inline constexpr double phi = phi_v<double>; }

28.8.2 Mathematical constants [math.constants]

The library-defined partial specializations of mathematical constant variable templates are initialized with the nearest representable values of e, , , π, , , ln2, ln10, , , , the Euler-Mascheroni γ constant, and the golden ratio φ constant , respectively.
Pursuant to [namespace.std], a program may partially or explicitly specialize a mathematical constant variable template provided that the specialization depends on a program-defined type.
A program that instantiates a primary template of a mathematical constant variable template is ill-formed.