Biblioteca estándar de C++<cmath>
La biblioteca estándar de C++ ofrece numerosas funciones, entre las cuales<cmath>es un archivo de cabecera que contiene funciones matemáticas y proporciona muchas operaciones matemáticas básicas y constantes.
<cmath>es un archivo de cabecera de la biblioteca estándar de C++ que define un conjunto de funciones matemáticas capaces de realizar operaciones matemáticas básicas, como potencias, funciones trigonométricas, logaritmos, valor absoluto, etc.
Para usar<cmath>las funciones de <cmath>, debes incluir este archivo de cabecera en tu programa de C++:
#include <cmath>
Funciones comunes
<cmath>Proporciona muchas funciones matemáticas; a continuación se muestran algunas de uso frecuente.
1. Funciones matemáticas básicas
| Función | Descripción | Ejemplo |
|---|---|---|
abs(x) | Calcula el valor absolutoxde un entero. | abs(-5) // 5 |
fabs(x) | Calcula el valor absolutoxde un número de coma flotante. | fabs(-5.5) // 5.5 |
fmod(x, y) | Calcula el resto dexla división de un número entreyotro. | fmod(5.3, 2) // 1.3 |
remainder(x, y) | Calcula el resto dexla división de un número entreyotro. | remainder(5.5, 2) // 1.5 |
fmax(x, y) | Devuelvexyyel mayor de los dos valores. | fmax(3.5, 4.2) // 4.2 |
fmin(x, y) | Devuelvexyyel menor de los dos valores. | fmin(3.5, 4.2) // 3.5 |
hypot(x, y) | Calculasqrt(x*x + y*y) | hypot(3, 4) // 5 |
2. Funciones exponenciales y logarítmicas
| Función | Descripción | Ejemplo |
|---|---|---|
exp(x) | Calculae^x,ee (la base del logaritmo natural) elevado a x. | exp(1) // 2.71828... |
log(x) | Calculaxel logaritmo natural de x. | log(2.71828) // 1 |
log10(x) | Calculaxel logaritmo en base 10 de x. | log10(100) // 2 |
pow(x, y) | Calculaxdeyx elevado a la potencia y. | pow(2, 3) // 8 |
sqrt(x) | Calculaxla raíz cuadrada de x. | sqrt(16) // 4 |
cbrt(x) | Calculaxla raíz cúbica de x. | cbrt(27) // 3 |
expm1(x) | Calculae^x - 1 | expm1(1) // 1.71828... |
log1p(x) | Calculalog(1 + x), adecuado para x cercano a 0. | log1p(0.00001) // 0.00001 |
3. Funciones trigonométricas
| Función | Descripción | Ejemplo |
|---|---|---|
sin(x) |
Calculaxel seno de x,xen radianes. |
sin(3.14159 / 2) // 1 |
cos(x) |
Calculaxel coseno de x,xen radianes. |
cos(3.14159) // -1 |
tan(x) |
Calculaxla tangente de x,xen radianes. |
tan(0) // 0 |
asin(x) |
Calculaxel arcoseno de x, que devuelve radianes. |
asin(1) // 3.14159/2 |
acos(x) |
Calculaxel arcocoseno de x, que devuelve radianes. |
acos(-1) // 3.14159 |
atan(x) |
Calculaxla arcotangente de x, que devuelve radianes. |
atan(1) // 3.14159/4 |
atan2(y, x) |
Calculay/xla arcotangente de x, que devuelve radianes. |
atan2(1, 1) // 3.14159/4 |
4. Funciones hiperbólicas
| Función | Descripción | Ejemplo |
|---|---|---|
sinh(x) |
Calculaxel seno hiperbólico de x. |
sinh(0) // 0 |
cosh(x) |
Calculaxel coseno hiperbólico de x. |
cosh(0) // 1 |
tanh(x) |
Calculaxla tangente hiperbólica de x. |
tanh(1) // 0.7616 |
asinh(x) |
Calculaxel arcoseno hiperbólico de x. |
asinh(1) // 0.8814 |
acosh(x) |
Calculaxel arcocoseno hiperbólico de x,x ≥ 1 |
acosh(1) // 0 |
atanh(x) |
Calculaxla arcotangente hiperbólica de x,xen (-1, 1). |
atanh(0.5) // 0.5493 |
5. Redondeo y operaciones con números de coma flotante
| Función | Descripción | Ejemplo |
|---|---|---|
ceil(x) |
Devuelve el entero más pequeñoxno menor que x. |
ceil(2.3) // 3 |
floor(x) |
Devuelve el entero más grandexno mayor que x. |
floor(2.3) // 2 |
trunc(x) |
Devuelve el valor entero eliminando la parte fraccionaria. | trunc(2.8) // 2 |
round(x) |
Devuelve el redondeo al entero más cercano. | round(2.5) // 3 |
lround(x) |
Devuelve el redondeo allongtipo long. |
lround(2.5) // 3 |
llround(x) |
Devuelve el redondeo allong longtipo long long. |
llround(2.5) // 3 |
nearbyint(x) |
Devuelve el redondeo al entero más cercano (sin lanzar una excepción de coma flotante). | nearbyint(2.5) // 2 |
rint(x) |
Devuelve el redondeo a un entero conforme al modo de redondeo actual. | rint(2.5) // 3 |
modf(x, &intpart) |
va axSepara las partes entera y fraccionaria de x. |
modf(2.3, &intpart) |
6. Comprobación de números de coma flotante
| Función | Descripción | Ejemplo |
|---|---|---|
isfinite(x) |
Compruebaxsi es un valor finito (ni infinito ni NaN). |
isfinite(3.0) // true |
isinf(x) |
Compruebaxsi es infinito. |
isinf(1.0 / 0.0) // true |
isnan(x) |
Compruebaxsi es NaN. |
isnan(0.0 / 0.0) // true |
isnormal(x) |
Compruebaxsi es un número de coma flotante normal y distinto de cero. |
isnormal(1.0) // true |
signbit(x) |
Compruebaxsi su signo es negativo. |
signbit(-5.3) // true |
Ejemplo
A continuación se muestra un ejemplo sencillo<cmath>que utiliza <cmath> y muestra cómo calcular la raíz cuadrada, el seno y el valor absoluto de un número.
Ejemplo 1
#include <cmath> // Incluye el archivo de cabecera <cmath>
int main() {
double num = 9.0;
double root = sqrt(num); // Calcular la raíz cuadrada
double sinValue = sin(M_PI / 2); // Calcular el seno; M_PI es una aproximación de π
double absValue = abs(-5.0); // Calcular el valor absoluto
std::cout << "The square root of " << num << " is " << root << std::endl;
std::cout << "The sine of " << M_PI / 2 << " is " << sinValue << std::endl;
std::cout << "The absolute value of -5.0 is " << absValue << std::endl;
return 0;
}
Salida:
The square root of 9 is 3 The sine of 1.570796 is 1 The absolute value of -5 is 5
Ejemplo 2
#include <cmath>
int main() {
// Operaciones matemáticas básicas
std::cout << "abs(-5) = " << abs(-5) << std::endl;
std::cout << "fmod(5.3, 2) = " << fmod(5.3, 2) << std::endl;
// Funciones exponenciales y logarítmicas
std::cout << "exp(1) = " << exp(1) << std::endl;
std::cout << "log(2.71828) = " << log(2.71828) << std::endl;
std::cout << "pow(2, 3) = " << pow(2, 3) << std::endl;
// Funciones trigonométricas
std::cout << "sin(3.14159 / 2) = " << sin(3.14159 / 2) << std::endl;
std::cout << "cos(3.14159) = " << cos(3.14159) << std::endl;
// Funciones de redondeo
std::cout << "ceil(2.3) = " << ceil(2.3) << std::endl;
std::cout << "floor(2.3) = " << floor(2.3) << std::endl;
// Comprobación de números de coma flotante
double x = 1.0 / 0.0;
if (isinf(x)) {
std::cout << "x is infinite" << std::endl;
}
return 0;
}
Notas
<cmath>Las funciones de <cmath> normalmente aceptanfloatodoubleargumentos de tipo ..., y devuelven resultados del tipo correspondiente. Paralong doubletipo, puedes usar<cmath>las funciones de <cmath>, pero debes añadir después del nombre de la funciónlel sufijo, por ejemplosqrtl。- Algunas funciones, como
powylog, pueden aceptar enteros como argumentos, pero el resultado sigue siendo un número de coma flotante. <cmath>Las funciones de <cmath> pueden lanzar excepciones, por ejemplo cuandosqrtel argumento de la función es negativo, se lanzastd::domain_erroruna excepción.
<cmath>Es un archivo de cabecera muy útil de la biblioteca estándar de C++ que proporciona muchas funciones matemáticas básicas y ayuda a los desarrolladores a realizar operaciones matemáticas al escribir programas.