Mercurial > cpython-lru_cache-weakref
diff Modules/mathmodule.c @ 47752:ca074232b879 legacy-trunk
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.
| author | Mark Dickinson <dickinsm@gmail.com> |
|---|---|
| date | Tue, 17 Jun 2008 21:16:55 +0000 |
| parents | 6cfa297c6555 |
| children | 564c29a0fab1 |
line wrap: on
line diff
--- a/Modules/mathmodule.c Tue Jun 17 17:38:02 2008 +0000 +++ b/Modules/mathmodule.c Tue Jun 17 21:16:55 2008 +0000 @@ -82,12 +82,17 @@ * 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 */
