Anonymous committed c97dda2

Reverting to rev 1.2. Apparently gcc doesn't use the extended-precision
capabilities of the Pentium FPU, so what should have been (and were on
Windows) exact results got fuzzy. Then it turns out test_support.fcmp()
isn't tolerant of tiny errors when *one* of the comparands is 0, but
test_complex's old check_close_real() is. Rather than fix gcc <wink>,
easier to revert this test and revisit after the release.

Comments (0)

Files changed (1)


-from test_support import TestFailed, fcmp
+from test_support import TestFailed
 from random import random
 # XXX need many, many more tests here.
 nerrors = 0
-def check_close(x, y):
+def check_close_real(x, y, eps=1e-9):
+    """Return true iff floats x and y "are close\""""
+    # put the one with larger magnitude second
+    if abs(x) > abs(y):
+        x, y = y, x
+    if y == 0:
+        return abs(x) < eps
+    if x == 0:
+        return abs(y) < eps
+    # check that relative difference < eps
+    return abs((x-y)/y) < eps
+def check_close(x, y, eps=1e-9):
     """Return true iff complexes x and y "are close\""""
-    return fcmp(x.real, y.real) == 0 == fcmp(x.imag, y.imag)
+    return check_close_real(x.real, y.real, eps) and \
+           check_close_real(x.imag, y.imag, eps)
 def test_div(x, y):
     """Compute complex z=x*y, and check that z/x==y and z/y==x."""