Constantes matemáticas
De cppreference.com
Contenido |
[editar]Constantes (desde C++20)
Definido en el archivo de encabezado <numbers> | |||
Definido en el espacio de nombres std::numbers | |||
e_v | La constante matemática e (plantilla de variables) | ||
log2e_v | log 2e (plantilla de variables) | ||
log10e_v | log 10e (plantilla de variables) | ||
pi_v | π (plantilla de variables) | ||
inv_pi_v |
(plantilla de variables) | ||
inv_sqrtpi_v |
(plantilla de variables) | ||
ln2_v | ln 2 (plantilla de variables) | ||
ln10_v | ln 10 (plantilla de variables) | ||
sqrt2_v | √2 (plantilla de variables) | ||
sqrt3_v | √3 (plantilla de variables) | ||
inv_sqrt3_v |
(plantilla de variables) | ||
egamma_v | La constante Euler–Mascheroni (plantilla de variables) | ||
phi_v | La constante del número aúreo Φ (
(plantilla de variables) | ||
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) |
[editar]Notas
Un programa que instancia una plantilla primaria de una plantilla de variable de una constante matemática está mal formado.
La bilioteca estándar especializa las plantillas de variable de constantes matemáticas para todos los tipos de punto flotante (es decir, float, double y longdouble).
Un programa puede especializar parcialmente o totalmente una plantilla de variable de una constante matemática dado que la especialización dependa de un tipo definido por el programa.
Macro de Prueba de característica |
---|
__cpp_lib_math_constants |
[editar]Ejemplo
Ejecuta este código
#include <cmath>#include <iomanip>#include <iostream>#include <limits>#include <numbers>#include <string_view> struct two_t {};template<class T>constexprauto operator^(T base, two_t){return base * base;} int main(){usingnamespace std::numbers;constexpr two_t ²; std::cout<<"La respuesta es "<<(((std::sin(e)^²)+(std::cos(e)^²))+std::pow(e, ln2)+std::sqrt(pi)* inv_sqrtpi +((std::cosh(pi)^²)-(std::sinh(pi)^²))+ sqrt3 * inv_sqrt3 * log2e * ln2 * log10e * ln10 * pi * inv_pi +(phi * phi - phi))*((sqrt2 * sqrt3)^²)<<'\n'; auto egamma_aprox =[](unsignedconst iterations){longdouble s =0, m =2.0;for(unsigned c =2; c != iterations;++c, ++m){constlongdouble t =std::riemann_zeta(m)/ m;(c &1)==0? s += t : s -= t;}return s;}; constexprstd::string_view γ {"0.577215664901532860606512090082402"}; std::cout<<"γ como 10⁶ sums of ±ζ(m)/m = "<< egamma_aprox(1'000'000)<<'\n'<<"γ como egamma_v<float> = "<<std::setprecision(std::numeric_limits<float>::digits10+1)<< egamma_v<float><<'\n'<<"γ como egamma_v<double> = "<<std::setprecision(std::numeric_limits<double>::digits10+1)<< egamma_v<double><<'\n'<<"γ como egamma_v<long double> = "<<std::setprecision(std::numeric_limits<longdouble>::digits10+1)<< egamma_v<longdouble><<'\n'<<"γ con "<< γ.length()-1<<" dígitos de precisión = "<< γ <<'\n';}
Posible salida:
La respuesta es 42 γ como 10⁶ sums of ±ζ(m)/m = 0.577215 γ como egamma_v<float> = 0.5772157 γ como egamma_v<double> = 0.5772156649015329 γ como egamma_v<long double> = 0.5772156649015328606 γ con 34 dígitos de precisión = 0.577215664901532860606512090082402
[editar]Véase también
(C++11) | Representa una fracción racional exacta. (plantilla de clase) |