From: Guido van Rossum Date: Fri, 9 Aug 1996 20:50:14 +0000 (+0000) Subject: Correct wrong calculation of pow(0.0, 0.0, negative_number) X-Git-Tag: v1.4b3~173 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=86c04c252b9ec1cb682d9fd52bdd48b61434c4b3;p=python Correct wrong calculation of pow(0.0, 0.0, negative_number) --- diff --git a/Objects/floatobject.c b/Objects/floatobject.c index 0a6aa486e7..74ef26e417 100644 --- a/Objects/floatobject.c +++ b/Objects/floatobject.c @@ -367,12 +367,8 @@ float_pow(v, w, z) iw = ((floatobject *)w)->ob_fval; intw = (long)iw; if (iw == intw) { - errno = 0; - ix = powi(iv, intw); - } - else { /* Sort out special cases here instead of relying on pow() */ - if (iw == 0.0) { /* x**0 is 1, even 0**0 */ + if (intw == 0) { /* x**0 is 1, even 0**0 */ if ((object *)z!=None) { ix=fmod(1.0, z->ob_fval); if (ix!=0 && z->ob_fval<0) ix+=z->ob_fval; @@ -380,6 +376,11 @@ float_pow(v, w, z) else ix=1.0; return newfloatobject(ix); } + errno = 0; + ix = powi(iv, intw); + } + else { + /* Sort out special cases here instead of relying on pow() */ if (iv == 0.0) { if (iw < 0.0) { err_setstr(ValueError, "0.0 to a negative power");