]> granicus.if.org Git - python/commitdiff
Reverting to rev 1.2. Apparently gcc doesn't use the extended-precision
authorTim Peters <tim.peters@gmail.com>
Thu, 6 Sep 2001 23:00:21 +0000 (23:00 +0000)
committerTim Peters <tim.peters@gmail.com>
Thu, 6 Sep 2001 23:00:21 +0000 (23:00 +0000)
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.

Lib/test/test_complex.py

index 0e268ab2d6c047c9674966d16afff711c3a3234f..9faab71d83058fbdea36927404db8cd05cd8442d 100644 (file)
@@ -1,13 +1,26 @@
-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."""