[Python-3000-checkins] r64355 - in python/branches/py3k: Modules/mathmodule.c

benjamin.peterson python-3000-checkins at python.org
Wed Jun 18 00:39:26 CEST 2008


Author: benjamin.peterson
Date: Wed Jun 18 00:39:26 2008
New Revision: 64355

Log:
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.
........


Modified:
   python/branches/py3k/   (props changed)
   python/branches/py3k/Modules/mathmodule.c

Modified: python/branches/py3k/Modules/mathmodule.c
==============================================================================
--- python/branches/py3k/Modules/mathmodule.c	(original)
+++ python/branches/py3k/Modules/mathmodule.c	Wed Jun 18 00:39:26 2008
@@ -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 */


More information about the Python-3000-checkins mailing list