]> granicus.if.org Git - python/commitdiff
Correct wrong calculation of pow(0.0, 0.0, negative_number)
authorGuido van Rossum <guido@python.org>
Fri, 9 Aug 1996 20:50:14 +0000 (20:50 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 9 Aug 1996 20:50:14 +0000 (20:50 +0000)
Objects/floatobject.c

index 0a6aa486e78de0314eb70d37f1849fc30d19d07a..74ef26e41720ae13421d0cea4a72f199ef54aabc 100644 (file)
@@ -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");