Utilice funciones exponenciales de STL en C++

Jinku Hu 12 octubre 2023
  1. Utilice la función std::exp para calcular las potencias del número de Euler
  2. Utilice la función std::exp2 para calcular potencias de dos
  3. Utilice la función std::pow para calcular las potencias del número dado
  4. Utilice la función std::log para calcular el logaritmo natural del número dado
Utilice funciones exponenciales de STL en C++

Este artículo demostrará las funciones STL para calcular el exponencial en C++.

Utilice la función std::exp para calcular las potencias del número de Euler

La función std::exp es parte del encabezado <cmath> junto con muchas funciones matemáticas comunes. El primero calcula el número de Euler elevado a la potencia dada, que se pasa como único argumento.

La función std::exp tiene múltiples sobrecargas para float, double, long double, e incluso tipo integral, pero la última todavía devuelve un valor de coma flotante double. Si se produce el desbordamiento, se devuelve uno de los siguientes valores +HUGE_VAL, +HUGE_VALF o +HUGE_VALL.

Tenga en cuenta que existen valores de retorno especiales para varios argumentos como +-0, +-INFINITY y NaN. Todos estos casos se muestran en el siguiente código de ejemplo.

#include <cmath>
#include <iomanip>
#include <iostream>

using std::cout;
using std::endl;

int main() {
  cout << "exp(1) = e¹ = " << std::setprecision(16) << std::exp(1) << '\n'
       << "exp(10)  = " << std::exp(10) << '\n'
       << "exp(100) = " << std::exp(100) << '\n';

  cout << "exp(-0) = " << std::exp(-0.0) << '\n'
       << "exp(+Inf) = " << std::exp(+INFINITY) << '\n'
       << "exp(NaN) = " << std::exp(NAN) << '\n'
       << "exp(-Inf) = " << std::exp(-INFINITY) << '\n';

  return EXIT_SUCCESS;
}

Producción :

exp(1) = e¹ = 2.718281828459045
exp(10)  = 22026.46579480672
exp(100) = 2.688117141816136e+43
exp(-0) = 1
exp(+Inf) = inf
exp(NaN) = nan
exp(-Inf) = 0

Utilice la función std::exp2 para calcular potencias de dos

Por otro lado, tenemos la función std::exp2 para calcular las potencias de dos. Las sobrecargas de esta función devuelven valores de punto flotante, pero también pueden aceptar tipos integrales. Observe que std::exp2 tiene valores especiales similares para argumentos como +-0, +-INFINITY y NaN.

#include <cmath>
#include <iomanip>
#include <iostream>

using std::cout;
using std::endl;

int main() {
  cout << "exp2(4) = " << std::exp2(4) << '\n'
       << "exp2(0.5) = " << std::exp2(0.5) << '\n'
       << "exp2(10) = " << std::exp2(10) << '\n';

  cout << "exp2(-0) = " << std::exp2(-0.0) << '\n'
       << "exp2(+Inf) = " << std::exp2(+INFINITY) << '\n'
       << "exp2(NaN) = " << std::exp2(NAN) << '\n'
       << "exp2(-Inf) = " << std::exp2(-INFINITY) << '\n';

  return EXIT_SUCCESS;
}

Producción :

exp2(4) = 16
exp2(0.5) = 1.41421
exp2(10) = 1024
exp2(-0) = 1
exp2(+Inf) = inf
exp2(NaN) = nan
exp2(-Inf) = 0

Utilice la función std::pow para calcular las potencias del número dado

La función std::pow se utiliza para calcular el valor del número elevado a la potencia dada. Tanto el número base como el valor de potencia se especifican como primer y segundo argumento, respectivamente.

std::pow tiene múltiples sobrecargas para tipos de punto flotante así como valores integrales, pero los últimos se convierten al tipo double e incluso se pueden promover al long double si uno de los argumentos es también long double. Además, tenga en cuenta que std::pow no se puede utilizar para calcular la raíz de un número negativo.

#include <cmath>
#include <iomanip>
#include <iostream>

using std::cout;
using std::endl;

int main() {
  cout << "pow(2, 10) = " << std::pow(2, 10) << '\n'
       << "pow(10, 0.5) = " << std::pow(10, 0.5) << '\n'
       << "pow(-25, -2) = " << std::pow(-25, -2) << '\n';

  cout << "pow(-1, NAN) = " << std::pow(-1, NAN) << '\n'
       << "pow(+1, NAN) = " << std::pow(+1, NAN) << '\n'
       << "pow(INFINITY, 2) = " << std::pow(INFINITY, 2) << '\n'
       << "pow(INFINITY, -1) = " << std::pow(INFINITY, -1) << '\n';

  return EXIT_SUCCESS;
}

Producción :

pow(2, 10) = 1024
pow(10, 0.5) = 3.16228
pow(-25, -2) = 0.0016
pow(-1, NAN) = nan
pow(+1, NAN) = 1
pow(INFINITY, 2) = inf
pow(INFINITY, -1) = 0

Utilice la función std::log para calcular el logaritmo natural del número dado

La familia de funciones std::log también se proporciona en <cmath> para calcular varios logaritmos para los valores numéricos dados. La función std::log calcula el logaritmo natural y, al igual que las funciones anteriores, tiene múltiples sobrecargas para los tipos de punto flotante e integrales.

#include <cmath>
#include <iomanip>
#include <iostream>

using std::cout;
using std::endl;

int main() {
  cout << "log(10) = " << std::log(10) << '\n'
       << "log(100) = " << std::log(100) << '\n';

  cout << "log(1) = " << std::log(1) << '\n'
       << "log(+Inf) = " << std::log(INFINITY) << '\n';

  return EXIT_SUCCESS;
}

Producción :

log(10) = 2.30259
log(100) = 4.60517
log(1) = 0
log(+Inf) = inf
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - C++ Math