From: Guido van Rossum Date: Tue, 28 May 1991 21:57:39 +0000 (+0000) Subject: Fix special cases in pow() X-Git-Tag: v0.9.8~934 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=70d934601f743afe0f9a75fef95d6c3e65ec9bfd;p=thirdparty%2FPython%2Fcpython.git Fix special cases in pow() --- diff --git a/Objects/floatobject.c b/Objects/floatobject.c index 0549990a1b16..e2095d723cb2 100644 --- a/Objects/floatobject.c +++ b/Objects/floatobject.c @@ -223,8 +223,20 @@ float_pow(v, w) } iv = v->ob_fval; iw = ((floatobject *)w)->ob_fval; + /* Sort out special cases here instead of relying on pow() */ if (iw == 0.0) return newfloatobject(1.0); /* x**0 is 1, even 0**0 */ + if (iv == 0.0) { + if (iw < 0.0) { + err_setstr(RuntimeError, "0.0 to the negative power"); + return NULL; + } + return newfloatobject(0.0); + } + if (iv < 0.0) { + err_setstr(RuntimeError, "negative float to float power"); + return NULL; + } errno = 0; ix = pow(iv, iw); if (errno != 0) {