pow, powf, powl
|
Definido en el encabezado
<math.h>
|
||
|
float
powf
(
float
base,
float
exponent
)
;
|
(1) | (desde C99) |
|
double
pow
(
double
base,
double
exponent
)
;
|
(2) | |
|
long
double
powl
(
long
double
base,
long
double
exponent
)
;
|
(3) | (desde C99) |
|
Definido en el encabezado
<tgmath.h>
|
||
|
#define pow( base, exponent )
|
(4) | (desde C99) |
powl
es llamado. De lo contrario, si algún argumento tiene tipo entero o tiene tipo
double
,
pow
es llamado. De lo contrario,
powf
es llamado. Si al menos un argumento es complejo o imaginario, entonces el macro invoca la función compleja correspondiente (
cpowf
,
cpow
,
cpowl
).
Contenidos |
Parámetros
| base | - | base como valor de punto flotante |
| exponent | - | exponente como valor de punto flotante |
Valor de retorno
Si no ocurren errores,
base
elevado a la potencia de
exponent
(
base
exponent
) es devuelto.
Si ocurre un error de dominio, se devuelve un valor definido por la implementación (NaN donde esté soportado).
Si ocurre un error de polo o un error de rango debido a desbordamiento,
±
HUGE_VAL
,
±HUGE_VALF
, o
±HUGE_VALL
es devuelto.
Si ocurre un error de rango debido a desbordamiento inferior, se devuelve el resultado correcto (después del redondeo).
Manejo de errores
Los errores se reportan como se especifica en
math_errhandling
.
Si base es finito y negativo y exponent es finito y no entero, ocurre un error de dominio y puede ocurrir un error de rango.
Si base es cero y exponent es cero, puede ocurrir un error de dominio.
Si base es cero y exponent es negativo, puede ocurrir un error de dominio o un error de polo.
Si la implementación soporta aritmética de punto flotante IEEE (IEC 60559),
-
pow
(
+
0
, exponent
)
, donde
exponent
es un entero impar negativo, retorna
+∞y genera FE_DIVBYZERO -
pow
(
-
0
, exponent
)
, donde
exponent
es un entero impar negativo, retorna
-∞y genera FE_DIVBYZERO - pow ( ± 0 , exponent ) , donde exponent es negativo, finito, y es un entero par o un no entero, retorna +∞ y genera FE_DIVBYZERO
- pow ( ± 0 , - ∞ ) devuelve +∞ y puede generar FE_DIVBYZERO (hasta C23)
- pow ( + 0 , exponent ) , donde exponent es un entero impar positivo, retorna +0
- pow ( - 0 , exponent ) , donde exponent es un entero positivo impar, retorna -0
- pow ( ± 0 , exponent ) , donde exponent es un número positivo no entero o un entero par positivo, retorna +0
- pow ( - 1 , ±∞ ) devuelve 1
-
pow
(
+
1
, exponent
)
devuelve
1
para cualquier
exponent
, incluso cuando
exponent
es
NaN -
pow
(
base, ±
0
)
devuelve
1
para cualquier
base
, incluso cuando
base
es
NaN -
pow
(
base, exponent
)
devuelve
NaNy genera FE_INVALID si base es finita y negativa y exponent 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 ( - ∞, exponent ) devuelve -0 si exponent es un entero impar negativo
- pow ( - ∞, exponente ) retorna +0 si exponente es un no entero negativo o un entero par negativo
- pow ( - ∞, exponent ) devuelve -∞ si exponent es un entero impar positivo
- pow ( - ∞, exponent ) devuelve +∞ si exponent es un número positivo no entero o un entero par positivo
- pow ( + ∞, exponent ) devuelve +0 para cualquier exponent negativo
- pow ( + ∞, exponent ) devuelve +∞ para cualquier exponent positivo
- excepto donde se especifique anteriormente, si cualquier argumento es NaN, se devuelve NaN.
Notas
Aunque
pow
no puede utilizarse para obtener una raíz de un número negativo,
cbrt
se proporciona para el caso común donde
exponent
es
1
/
3
.
Ejemplo
#include <errno.h> #include <fenv.h> #include <math.h> #include <stdio.h> // #pragma STDC FENV_ACCESS ON int main(void) { // uso típico printf("pow(2, 10) = %f\n", pow(2, 10)); printf("pow(2, 0.5) = %f\n", pow(2, 0.5)); printf("pow(-2, -3) = %f\n", pow(-2, -3)); // valores especiales printf("pow(-1, NAN) = %f\n", pow(-1, NAN)); printf("pow(+1, NAN) = %f\n", pow(+1, NAN)); printf("pow(INFINITY, 2) = %f\n", pow(INFINITY, 2)); printf("pow(INFINITY, -1) = %f\n", pow(INFINITY, -1)); // manejo de errores errno = 0; feclearexcept(FE_ALL_EXCEPT); printf("pow(-1, 1/3) = %f\n", pow(-1, 1.0 / 3)); if (errno == EDOM) perror(" errno == EDOM"); if (fetestexcept(FE_INVALID)) puts(" FE_INVALID raised"); feclearexcept(FE_ALL_EXCEPT); printf("pow(-0, -3) = %f\n", pow(-0.0, -3)); if (fetestexcept(FE_DIVBYZERO)) puts(" FE_DIVBYZERO raised"); }
Salida posible:
pow(2, 10) = 1024.000000
pow(2, 0.5) = 1.414214
pow(-2, -3) = -0.125000
pow(-1, NAN) = nan
pow(+1, NAN) = 1.000000
pow(INFINITY, 2) = inf
pow(INFINITY, -1) = 0.000000
pow(-1, 1/3) = -nan
errno == EDOM: Numerical argument out of domain
FE_INVALID raised
pow(-0, -3) = -inf
FE_DIVBYZERO raised
Referencias
- Estándar C23 (ISO/IEC 9899:2024):
-
- 7.12.7.5 Las funciones pow
-
- 7.27 Matemáticas genéricas de tipo <tgmath.h>
-
- F.10.4.5 Las funciones pow (p: 524-525)
- Estándar C17 (ISO/IEC 9899:2018):
-
- 7.12.7.4 Las funciones pow (p: 248-249)
-
- 7.25 Matemáticas genéricas de tipos <tgmath.h> (p: 373-375)
-
- F.10.4.4 Las funciones pow (p: 524-525)
- Estándar C11 (ISO/IEC 9899:2011):
-
- 7.12.7.4 Las funciones pow (p: 248-249)
-
- 7.25 Matemáticas genéricas de tipos <tgmath.h> (p: 373-375)
-
- F.10.4.4 Las funciones pow (p: 524-525)
- Estándar C99 (ISO/IEC 9899:1999):
-
- 7.12.7.4 Las funciones pow (p: 229)
-
- 7.22 Matemáticas genéricas de tipo <tgmath.h> (p: 335-337)
-
- F.9.4.4 Las funciones pow (p: 461)
- Estándar C89/C90 (ISO/IEC 9899:1990):
-
- 4.5.5.1 La función pow
Véase también
|
(C99)
(C99)
|
calcula la raíz cuadrada (
√
x
)
(función) |
|
(C99)
(C99)
(C99)
|
calcula la raíz cúbica (
3
√
x
)
(función) |
|
(C99)
(C99)
(C99)
|
calcula la raíz cuadrada de la suma de los cuadrados de dos números dados (
√
x
2
+y 2 ) (función) |
|
(C99)
(C99)
(C99)
|
calcula la función de potencia compleja
(función) |
|
Documentación de C++
para
pow
|
|