Returns x
to the power of exponent
.
If x
is an int and exponent
is a non-negative int, the result is
an int, otherwise both arguments are converted to doubles first, and the
result is a double.
For integers, the power is always equal to the mathematical result of x
to
the power exponent
, only limited by the available memory.
For doubles, pow(x, y)
handles edge cases as follows:
y
is zero (0.0 or -0.0), the result is always 1.0.x
is 1.0, the result is always 1.0.x
or y
is NaN then the result is NaN.x
is negative (but not -0.0) and y
is a finite non-integer, the
result is NaN.x
is Infinity and y
is negative, the result is 0.0.x
is Infinity and y
is positive, the result is Infinity.x
is 0.0 and y
is negative, the result is Infinity.x
is 0.0 and y
is positive, the result is 0.0.x
is -Infinity or -0.0 and y
is an odd integer, then the result is
-pow(-x ,y)
.x
is -Infinity or -0.0 and y
is not an odd integer, then the result
is the same as pow(-x , y)
.y
is Infinity and the absolute value of x
is less than 1, the
result is 0.0.y
is Infinity and x
is -1, the result is 1.0.y
is Infinity and the absolute value of x
is greater than 1,
the result is Infinity.y
is -Infinity, the result is 1/pow(x, Infinity)
.This corresponds to the pow
function defined in the IEEE Standard 754-2008.
Notice that the result may overflow. If integers are represented as 64-bit numbers, an integer result may be truncated, and a double result may overflow to positive or negative double.infinity.
external num pow(num x, num exponent);