r51530 - in python/trunk: Lib/test/test_float.py Objects/floatobject.c
Author: alex.martelli Date: Thu Aug 24 00:17:59 2006 New Revision: 51530 Modified: python/trunk/Lib/test/test_float.py python/trunk/Objects/floatobject.c Log: Reverting the patch that tried to fix the issue whereby x**2 raises OverflowError while x*x succeeds and produces infinity; apparently these inconsistencies cannot be fixed across ``all'' platforms and there's a widespread feeling that therefore ``every'' platform should keep suffering forevermore. Ah well. Modified: python/trunk/Lib/test/test_float.py ============================================================================== --- python/trunk/Lib/test/test_float.py (original) +++ python/trunk/Lib/test/test_float.py Thu Aug 24 00:17:59 2006 @@ -99,25 +99,12 @@ ('<f', LE_FLOAT_NAN)]: struct.unpack(fmt, data) -# on an IEEE platform, "overflowing" operations produce infinity - -class IEEEOperationsTestCase(unittest.TestCase): - if float.__getformat__("double").startswith("IEEE"): - def test_double_infinity(self): - big = 4.8e159 - pro = big*big - self.assertEquals(repr(pro), 'inf') - sqr = big**2 - self.assertEquals(repr(sqr), 'inf') - def test_main(): test_support.run_unittest( FormatFunctionsTestCase, UnknownFormatTestCase, - IEEEFormatTestCase, - IEEEOperationsTestCase, - ) + IEEEFormatTestCase) if __name__ == '__main__': test_main() Modified: python/trunk/Objects/floatobject.c ============================================================================== --- python/trunk/Objects/floatobject.c (original) +++ python/trunk/Objects/floatobject.c Thu Aug 24 00:17:59 2006 @@ -821,12 +821,12 @@ ix = pow(iv, iw); PyFPE_END_PROTECT(ix) Py_ADJUST_ERANGE1(ix); - /* we need to ignore ERANGE here and just return inf */ - if (errno != 0 && errno != ERANGE) { + if (errno != 0) { /* We don't expect any errno value other than ERANGE, but * the range of libm bugs appears unbounded. */ - PyErr_SetFromErrno(PyExc_ValueError); + PyErr_SetFromErrno(errno == ERANGE ? PyExc_OverflowError : + PyExc_ValueError); return NULL; } return PyFloat_FromDouble(ix);
participants (1)
-
alex.martelli