[numbers] (original) (raw)

29 Numerics library [numerics]

29.8.1 Header synopsis [numbers.syn]

namespace std::numbers { template<class T> constexpr T e_v = unspecified;template<class T> constexpr T log2e_v = unspecified;template<class T> constexpr T log10e_v = unspecified;template<class T> constexpr T pi_v = unspecified;template<class T> constexpr T inv_pi_v = unspecified;template<class T> constexpr T inv_sqrtpi_v = unspecified;template<class T> constexpr T ln2_v = unspecified;template<class T> constexpr T ln10_v = unspecified;template<class T> constexpr T sqrt2_v = unspecified;template<class T> constexpr T sqrt3_v = unspecified;template<class T> constexpr T inv_sqrt3_v = unspecified;template<class T> constexpr T egamma_v = unspecified;template<class T> constexpr T phi_v = unspecified;template<floating_point T> constexpr T e_v<T> = see below;template<floating_point T> constexpr T log2e_v<T> = see below;template<floating_point T> constexpr T log10e_v<T> = see below;template<floating_point T> constexpr T pi_v<T> = see below;template<floating_point T> constexpr T inv_pi_v<T> = see below;template<floating_point T> constexpr T inv_sqrtpi_v<T> = see below;template<floating_point T> constexpr T ln2_v<T> = see below;template<floating_point T> constexpr T ln10_v<T> = see below;template<floating_point T> constexpr T sqrt2_v<T> = see below;template<floating_point T> constexpr T sqrt3_v<T> = see below;template<floating_point T> constexpr T inv_sqrt3_v<T> = see below;template<floating_point T> constexpr T egamma_v<T> = see below;template<floating_point T> 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>;}

29.8.2 Mathematical constants [math.constants]

The library-defined partial specializations of mathematical constant variable templates are initialized with the nearest representable values ofe,,,π,,,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.