On int/long to the negative int/long power, let float handle it

instead of raising an error.  This was one of the two issues that the
VPython folks were particularly problematic for their students.  (The
other one was integer division...)  This implements (my) SF patch
#440487.
This commit is contained in:
Guido van Rossum 2001-07-12 11:27:16 +00:00
parent 0ec9abaa2b
commit bf5a774bcb

View file

@ -494,13 +494,16 @@ the interpreter.
\begin{funcdesc}{pow}{x, y\optional{, z}} \begin{funcdesc}{pow}{x, y\optional{, z}}
Return \var{x} to the power \var{y}; if \var{z} is present, return Return \var{x} to the power \var{y}; if \var{z} is present, return
\var{x} to the power \var{y}, modulo \var{z} (computed more \var{x} to the power \var{y}, modulo \var{z} (computed more
efficiently than \code{pow(\var{x}, \var{y}) \%\ \var{z}}). efficiently than \code{pow(\var{x}, \var{y}) \%\ \var{z}}). The
The arguments must have arguments must have numeric types. With mixed operand types, the
numeric types. With mixed operand types, the rules for binary coercion rules for binary arithmetic operators apply. For int and
arithmetic operators apply. The effective operand type is also the long int operands, the result has the same type as the operands
type of the result; if the result is not expressible in this type, the (after coercion) unless the second argument is negative; in that
function raises an exception; for example, \code{pow(2, -1)} or case, all arguments are converted to float and a float result is
\code{pow(2, 35000)} is not allowed. delivered. For example, \code{10**2} returns \code{100}, but
\code{10**-2} returns \code{0.01}. (This last feature was added in
Python 2.2. In Python 2.1 and before, a negative second argument
would raise an exception.)
\end{funcdesc} \end{funcdesc}
\begin{funcdesc}{range}{\optional{start,} stop\optional{, step}} \begin{funcdesc}{range}{\optional{start,} stop\optional{, step}}