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ónDescripciónEjemplo
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ónDescripciónEjemplo
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 - 1expm1(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 <iostream>
#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 <iostream>
#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, comopowylog, 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.

    Otras extensiones