[issue5593] test_math.testFsum failure on release30-maint

Mark Dickinson report at bugs.python.org
Sun Mar 29 14:55:35 CEST 2009


Mark Dickinson <dickinsm at gmail.com> added the comment:

> Sorry for the noise.

Not noise.  I'd still be interested in understanding where this is coming 
from;  I seem to recall someone else having exactly the same experience 
(reported bug, then found that it disappeared after a clean compile).

My best guess is that you somehow ended up in a situation where the math 
module was using the x87 FPU for floating-point, while the interpreter 
core was using SSE2.  Is this possible?

Explanation: the x87 FPU has problems with double rounding (because it 
uses 80-bit extended precision registers internally) while SSE2 doesn't.  fsum is a bit broken on systems with double rounding problems.  So there's 
a pair of lines in testFsum that look like:

if 1e16+2.0 != 1e16+2.9999:
    return

These lines are supposed to skip all these tests on platforms with the 
double rounding problem.  But if the core is using SSE2 then the test will 
fail and all the fsum tests will be executed, which is a problem if fsum 
is using x87.

----------

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue5593>
_______________________________________


More information about the Python-bugs-list mailing list