From: Mark Dickinson Date: Tue, 17 Jun 2008 21:16:55 +0000 (+0000) Subject: Issue 3118: make test_math pass on Ubuntu/ia64. exp(-745.0) was raising X-Git-Tag: v2.6b1~13 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fb1c4b98e9bfd3b5f799b5991081d3e4ea78d0eb;p=thirdparty%2FPython%2Fcpython.git Issue 3118: make test_math pass on Ubuntu/ia64. exp(-745.0) was raising OverflowError incorrectly on this platform, presumably as a result of the libm setting errno = ERANGE for this call. --- diff --git a/Modules/mathmodule.c b/Modules/mathmodule.c index 32c2400f4cc8..1066702f1a9e 100644 --- a/Modules/mathmodule.c +++ b/Modules/mathmodule.c @@ -82,12 +82,17 @@ is_error(double x) * should return a zero on underflow, and +- HUGE_VAL on * overflow, so testing the result for zero suffices to * distinguish the cases). + * + * On some platforms (Ubuntu/ia64) it seems that errno can be + * set to ERANGE for subnormal results that do *not* underflow + * to zero. So to be safe, we'll ignore ERANGE whenever the + * function result is less than one in absolute value. */ - if (x) + if (fabs(x) < 1.0) + result = 0; + else PyErr_SetString(PyExc_OverflowError, "math range error"); - else - result = 0; } else /* Unexpected math error */