Mathematical constants
Table des matières |
Constantes (depuis C++20)
|
Défini dans l'en-tête
<numbers>
|
|||
|
Défini dans l'espace de noms
std::numbers
|
|||
|
e_v
|
la constante mathématique
e
(gabarit de variable) |
||
|
log2e_v
|
log
2
e
(modèle de variable) |
||
|
log10e_v
|
log
10
e
(modèle de variable) |
||
|
pi_v
|
la constante mathématique
π
(modèle de variable) |
||
|
inv_pi_v
|
(modèle de variable) |
||
|
inv_sqrtpi_v
|
(gabarit de variable) |
||
|
ln2_v
|
ln 2
(modèle de variable) |
||
|
ln10_v
|
ln 10
(modèle de variable) |
||
|
sqrt2_v
|
√
2
(modèle de variable) |
||
|
sqrt3_v
|
√
3
(modèle de variable) |
||
|
inv_sqrt3_v
|
(modèle de variable) |
||
|
egamma_v
|
la constante d'Euler–Mascheroni γ
(modèle de variable) |
||
|
phi_v
|
le nombre d'or Φ
(
(modèle de variable) |
||
|
inline constexpr double
e
|
e_v
<
double
>
(constante) |
||
|
inline constexpr double
log2e
|
log2e_v
<
double
>
(constante) |
||
|
inline constexpr double
log10e
|
log10e_v
<
double
>
(constante) |
||
|
inline constexpr double
pi
|
pi_v
<
double
>
(constante) |
||
|
inline constexpr double
inv_pi
|
inv_pi_v
<
double
>
(constante) |
||
|
inline constexpr double
inv_sqrtpi
|
inv_sqrtpi_v
<
double
>
(constante) |
||
|
inline constexpr double
ln2
|
ln2_v
<
double
>
(constante) |
||
|
inline constexpr double
ln10
|
ln10_v
<
double
>
(constante) |
||
|
inline constexpr double
sqrt2
|
sqrt2_v
<
double
>
(constante) |
||
|
inline constexpr double
sqrt3
|
sqrt3_v
<
double
>
(constante) |
||
|
inline constexpr double
inv_sqrt3
|
inv_sqrt3_v
<
double
>
(constante) |
||
|
inline constexpr double
egamma
|
egamma_v
<
double
>
(constante) |
||
|
inline constexpr double
phi
|
phi_v
<
double
>
(constante) |
||
Notes
Un programme qui instancie un modèle primaire d'un modèle de variable de constante mathématique est non conforme.
La bibliothèque standard spécialise les modèles de variables de constantes mathématiques pour tous les types à virgule flottante (c'est-à-dire float , double , long double , et les types à virgule flottante de largeur fixe (depuis C++23) ).
Un programme peut spécialiser partiellement ou explicitement un modèle de variable de constante mathématique à condition que la spécialisation dépende d'un type défini par le programme .
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_math_constants
|
201907L
|
(C++20) | Constantes mathématiques |
Exemple
#include <cmath> #include <iomanip> #include <iostream> #include <limits> #include <numbers> #include <string_view> auto egamma_aprox(const unsigned iterations) { long double s{}; for (unsigned m{2}; m != iterations; ++m) if (const long double t{std::riemann_zetal(m) / m}; m % 2) s -= t; else s += t; return s; }; int main() { using namespace std::numbers; using namespace std::string_view_literals; const auto x = std::sqrt(inv_pi) / inv_sqrtpi + std::ceil(std::exp2(log2e)) + sqrt3 * inv_sqrt3 + std::exp(0); const auto v = (phi * phi - phi) + 1 / std::log2(sqrt2) + log10e * ln10 + std::pow(e, ln2) - std::cos(pi); std::cout << "La réponse est " << x * v << '\n'; constexpr auto γ{"0.577215664901532860606512090082402"sv}; std::cout << "γ comme 10⁶ sommes de ±ζ(m)/m = " << egamma_aprox(1'000'000) << '\n' << "γ comme egamma_v<float> = " << std::setprecision(std::numeric_limits<float>::digits10 + 1) << egamma_v<float> << '\n' << "γ comme egamma_v<double> = " << std::setprecision(std::numeric_limits<double>::digits10 + 1) << egamma_v<double> << '\n' << "γ comme egamma_v<long double> = " << std::setprecision(std::numeric_limits<long double>::digits10 + 1) << egamma_v<long double> << '\n' << "γ avec " << γ.length() - 1 << " chiffres de précision = " << γ << '\n'; }
Sortie possible :
La réponse est 42 γ comme 10⁶ sommes de ±ζ(m)/m = 0.577215 γ comme egamma_v<float> = 0.5772157 γ comme egamma_v<double> = 0.5772156649015329 γ comme egamma_v<long double> = 0.5772156649015328606 γ avec 34 chiffres de précision = 0.577215664901532860606512090082402
Voir aussi
|
(C++11)
|
représente une fraction rationnelle exacte
(modèle de classe) |