From: Benjamin Peterson Date: Tue, 17 Jun 2008 22:39:26 +0000 (+0000) Subject: Merged revisions 64349 via svnmerge from X-Git-Tag: v3.0b1~14 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c2c5e00d9da5cfb01e2c84043669de3d0c6fe35b;p=python Merged revisions 64349 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r64349 | mark.dickinson | 2008-06-17 16:16:55 -0500 (Tue, 17 Jun 2008) | 4 lines 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 fa607e3f1e..4c820c5848 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 */