mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
On int to the negative integral 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:
parent
e9880c81b9
commit
b82fedc7d8
1 changed files with 5 additions and 7 deletions
|
@ -510,13 +510,11 @@ int_pow(PyIntObject *v, PyIntObject *w, PyIntObject *z)
|
|||
CONVERT_TO_LONG(v, iv);
|
||||
CONVERT_TO_LONG(w, iw);
|
||||
if (iw < 0) {
|
||||
if (iv)
|
||||
PyErr_SetString(PyExc_ValueError,
|
||||
"cannot raise integer to a negative power");
|
||||
else
|
||||
PyErr_SetString(PyExc_ZeroDivisionError,
|
||||
"cannot raise 0 to a negative power");
|
||||
return NULL;
|
||||
/* Return a float. This works because we know that
|
||||
this calls float_pow() which converts its
|
||||
arguments to double. */
|
||||
return PyFloat_Type.tp_as_number->nb_power(
|
||||
(PyObject *)v, (PyObject *)w, (PyObject *)z);
|
||||
}
|
||||
if ((PyObject *)z != Py_None) {
|
||||
CONVERT_TO_LONG(z, iz);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue