pow¶
- pow(x1: array | int | float | complex, x2: array | int | float | complex, /) array¶
Calculates an implementation-dependent approximation of exponentiation by raising each element
x1_i(the base) of the input arrayx1to the power ofx2_i(the exponent), wherex2_iis the corresponding element of the input arrayx2.- Parameters:
x1 (Union[array, int, float, complex]) – first input array whose elements correspond to the exponentiation base. Should have a numeric data type.
x2 (Union[array, int, float, complex]) – second input array whose elements correspond to the exponentiation exponent. Must be compatible with
x1(see Broadcasting). Should have a numeric data type.
- Returns:
out (array) – an array containing the element-wise results. The returned array must have a data type determined by Type Promotion Rules.
Notes
At least one of
x1orx2must be an array.If both
x1andx2have integer data types, the result ofpowwhenx2_iis negative (i.e., less than zero) is unspecified and thus implementation-dependent.If
x1has an integer data type andx2has a floating-point data type, behavior is implementation-dependent (type promotion between data type “kinds” (integer versus floating-point) is unspecified).By convention, the branch cut of the natural logarithm is the negative real axis \((-\infty, 0)\).
The natural logarithm is a continuous function from above the branch cut, taking into account the sign of the imaginary component. As special cases involving complex floating-point operands should be handled according to
exp(x2*log(x1)), exponentiation has the same branch cut forx1as the natural logarithm (seelog()).Note: branch cuts follow C99 and have provisional status (see Branch Cuts).
Special cases
For real-valued floating-point operands,
If
x1_iis not equal to1andx2_iisNaN, the result isNaN.If
x2_iis+0, the result is1, even ifx1_iisNaN.If
x2_iis-0, the result is1, even ifx1_iisNaN.If
x1_iisNaNandx2_iis not equal to0, the result isNaN.If
abs(x1_i)is greater than1andx2_iis+infinity, the result is+infinity.If
abs(x1_i)is greater than1andx2_iis-infinity, the result is+0.If
abs(x1_i)is1andx2_iis+infinity, the result is1.If
abs(x1_i)is1andx2_iis-infinity, the result is1.If
x1_iis1andx2_iis notNaN, the result is1.If
abs(x1_i)is less than1andx2_iis+infinity, the result is+0.If
abs(x1_i)is less than1andx2_iis-infinity, the result is+infinity.If
x1_iis+infinityandx2_iis greater than0, the result is+infinity.If
x1_iis+infinityandx2_iis less than0, the result is+0.If
x1_iis-infinity,x2_iis greater than0, andx2_iis an odd integer value, the result is-infinity.If
x1_iis-infinity,x2_iis greater than0, andx2_iis not an odd integer value, the result is+infinity.If
x1_iis-infinity,x2_iis less than0, andx2_iis an odd integer value, the result is-0.If
x1_iis-infinity,x2_iis less than0, andx2_iis not an odd integer value, the result is+0.If
x1_iis+0andx2_iis greater than0, the result is+0.If
x1_iis+0andx2_iis less than0, the result is+infinity.If
x1_iis-0,x2_iis greater than0, andx2_iis an odd integer value, the result is-0.If
x1_iis-0,x2_iis greater than0, andx2_iis not an odd integer value, the result is+0.If
x1_iis-0,x2_iis less than0, andx2_iis an odd integer value, the result is-infinity.If
x1_iis-0,x2_iis less than0, andx2_iis not an odd integer value, the result is+infinity.If
x1_iis less than0,x1_iis a finite number,x2_iis a finite number, andx2_iis not an integer value, the result isNaN.
For complex floating-point operands, special cases should be handled as if the operation is implemented as
exp(x2*log(x1)).Note
Conforming implementations are allowed to treat special cases involving complex floating-point operands more carefully than as described in this specification.
Changed in version 2022.12: Added complex data type support.
Changed in version 2024.12: Added scalar argument support.