std::pow, std::powf, std::powl
Definido en el archivo de encabezado <cmath> | ||
(1) | ||
float pow (float base, float exp ); | ||
float powf(float base, float exp ); | (desde C++11) | |
double pow (double base, double exp ); | (2) | |
(3) | ||
longdouble pow (longdouble base, longdouble exp ); | ||
longdouble powl(longdouble base, longdouble exp ); | (desde C++11) | |
float pow (float base, int iexp ); | (4) | (hasta C++11) |
double pow (double base, int iexp ); | (5) | (hasta C++11) |
longdouble pow (longdouble base, int iexp ); | (6) | (hasta C++11) |
Promovido pow ( Aritmético1 base, Aritmético2 exp ); | (7) | (desde C++11) |
base
elevada a la potencia exp
o iexp
.Promovido
también es longdouble, de lo contrario el tipo de retorno es siempre double.Contenido |
[editar]Parámetros
base | - | La base como un valor de tipo flotante o un tipo entero. |
exp | - | El exponente como un valor de tipo flotante o un tipo entero. |
iexp | - | El exponente como un valor entero. |
[editar]Valor de retorno
Si no se producen errores, se devuelve base
elevada a la potencia exp
(o iexp
) (baseexp
).
Si se produce un error de dominio, se devuelve un valor definido por la implementación (NaN donde se dé apoyo).
Si se produce un error de plo o un error de rango debido a desbordamiento, se devuelve ±HUGE_VAL, ±HUGE_VALF
, o ±HUGE_VALL
.
Si se produce un error debido a subdesbordamiento, se devuelve el resultado correcto (después del redondeo).
[editar]Manejo de errores
Los errores se informan como se especifica en math_errhandling.
Si base
es finita y negativa y exp
es finito y no entero, se produce un error de dominio y se puede producir un error de rango.
Si base
es cero y exp
es cero, se puede producir un error de dominio.
Si base
es cero y exp
es negativo, se puede producir un error de dominio o un error de polo.
Si la implementación admite la aritmética de punto flotante IEEE (IEC 60559):
- pow(+0, exp), donde
exp
es un entero non negativo, devuelve +∞ y genera FE_DIVBYZERO. - pow(-0, exp), donde
exp
es un entero non negativo, devuelve -∞ y genera FE_DIVBYZERO. - pow(±0, exp), donde
exp
es negativo, finito, y es un entero par o no entero, devuelve +∞ y genera FE_DIVBYZERO. - pow(±0, -∞) devuelve +∞ y puede generar FE_DIVBYZERO.
- pow(+0, exp), donde
exp
es un entero par positivo, devuelve +0. - pow(-0, exp), donde
exp
es un entero par positivo, devuelve -0. - pow(±0, exp), donde
exp
es un no entero positivo o un entero par negativo, devuelve +0. - pow(-1, ±∞) devuelve
1
. - pow(+1, exp) devuelve
1
para cualquierexp
, incluso cuandoexp
esNaN
. - pow(base, ±0) devuelve
1
para cualquierbase
, incluso cuandobase
esNaN
. - pow(base, exp) devuelve
NaN
y genera FE_INVALID sibase
es finita y negative yexp
es finito y no entero. - pow(base, -∞) devuelve +∞ para cualquier
|base|<1
. - pow(base, -∞) devuelve +0 para cualquier
|base|>1
. - pow(base, +∞) devuelve +0 para cualquier
|base|<1
. - pow(base, +∞) devuelve +∞ para cualquier
|base|>1
. - pow(-∞, exp) devuelve -0 si
exp
es un entero non negativo - pow(-∞, exp) devuelve +0 si
exp
es un no entero negativo o un entero par negativo. - pow(-∞, exp) devuelve -∞ si
exp
es un entero par positivo. - pow(-∞, exp) devuelve +∞ si
exp
es no entero positivo o un entero par positivo. - pow(+∞, exp) devuelve +0 para cualquier
exp
negativo. - pow(+∞, exp) devuelve +∞ para cualquier
exp
positivo. - excepto donde se especifique anteriormente, si cualquier argumento es NaN, se devuelve NaN.
[editar]Notas
pow(float, int)
devuelve float hasta C++11 (de acuerdo con la sobrecarga 4) pero devuelve double desde C++11 (de acuerdo con la sobrecarga 7).
Aunque std::pow
no se puede usar para obtener una raíz de un número negativo, std::cbrt se proporciona para el caso común donde exp
es 1/3.
[editar]Ejemplo
#include <iostream>#include <cmath>#include <cerrno>#include <cfenv>#include <cstring> #pragma STDC FENV_ACCESS ONint main(){// uso típicostd::cout<<"pow(2, 10) = "<< std::pow(2,10)<<'\n'<<"pow(2, 0.5) = "<< std::pow(2,0.5)<<'\n'<<"pow(-2, -3) = "<< std::pow(-2,-3)<<'\n';// valores especialesstd::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';// manejo de erroreserrno=0;std::feclearexcept(FE_ALL_EXCEPT);std::cout<<"pow(-1, 1/3) = "<< std::pow(-1, 1.0/3)<<'\n';if(errno==EDOM)std::cout<<" errno == EDOM "<<std::strerror(errno)<<'\n';if(std::fetestexcept(FE_INVALID))std::cout<<" Se generó FE_INVALID\n"; std::feclearexcept(FE_ALL_EXCEPT);std::cout<<"pow(-0, -3) = "<< std::pow(-0.0, -3)<<'\n';if(std::fetestexcept(FE_DIVBYZERO))std::cout<<" Se generó FE_DIVBYZERO\n";}
Posible salida:
pow(2, 10) = 1024 pow(2, 0.5) = 1.41421 pow(-2, -3) = -0.125 pow(-1, NAN) = nan pow(+1, NAN) = 1 pow(INFINITY, 2) = inf pow(INFINITY, -1) = 0 pow(-1, 1/3) = -nan errno == EDOM Argumento numérico fuera de dominio Se generó FE_INVALID pow(-0, -3) = -inf Se generó FE_DIVBYZERO
[editar]Véase también
(C++11)(C++11) | Calcula la raíz cuadrada (√x) (función) |
(C++11)(C++11)(C++11) | Calcula la raíz cúbica (3√x) (función) |
(C++11)(C++11)(C++11) | Calcula la raíz cuadrada de la suma de los cuadrados de dos o tres (C++17) números dados (√x2 +y2 ), (√x2 +y2 +z2 ) (función) |
Potencia compleja; uno o ambos argumentos pueden ser un número complejo. (plantilla de función) | |
aplica la función std::pow a dos o valarrays valarray una y un valor Original: applies the function std::pow to two valarrays or a valarray and a value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (plantilla de función) | |
Documentación de C para pow |