mirror of
https://github.com/RustPython/RustPython.git
synced 2026-10-28 18:59:04 +08:00
Update test_complex.py to 3.14.4 (#7803)
This commit is contained in:
1 parent
002fc1122e
commit
6ed17c3cb5
1 file changed
+20
-21
Vendored
+20
-21
@@ -72,8 +72,8 @@ class ComplexTest(ComplexesAreIdenticalMixin, unittest.TestCase):
|
||||
else:
|
||||
unittest.TestCase.assertAlmostEqual(self, a, b)
|
||||
|
||||
def assertCloseAbs(self, x, y, eps=1e-9):
|
||||
"""Return true iff floats x and y "are close"."""
|
||||
def assertClose(self, x, y, eps=1e-9):
|
||||
"""Return true iff complexes x and y "are close"."""
|
||||
# put the one with larger magnitude second
|
||||
if abs(x) > abs(y):
|
||||
x, y = y, x
|
||||
@@ -82,26 +82,15 @@ class ComplexTest(ComplexesAreIdenticalMixin, unittest.TestCase):
|
||||
if x == 0:
|
||||
return abs(y) < eps
|
||||
# check that relative difference < eps
|
||||
self.assertTrue(abs((x-y)/y) < eps)
|
||||
|
||||
def assertClose(self, x, y, eps=1e-9):
|
||||
"""Return true iff complexes x and y "are close"."""
|
||||
self.assertCloseAbs(x.real, y.real, eps)
|
||||
self.assertCloseAbs(x.imag, y.imag, eps)
|
||||
self.assertTrue(abs(x-y)/abs(y) < eps)
|
||||
|
||||
def check_div(self, x, y):
|
||||
"""Compute complex z=x*y, and check that z/x==y and z/y==x."""
|
||||
z = x * y
|
||||
if x != 0:
|
||||
q = z / x
|
||||
self.assertClose(q, y)
|
||||
q = z.__truediv__(x)
|
||||
self.assertClose(q, y)
|
||||
if y != 0:
|
||||
q = z / y
|
||||
self.assertClose(q, x)
|
||||
q = z.__truediv__(y)
|
||||
self.assertClose(q, x)
|
||||
if x:
|
||||
self.assertClose(z / x, y)
|
||||
if y:
|
||||
self.assertClose(z / y, x)
|
||||
|
||||
@unittest.expectedFailure # TODO: RUSTPYTHON; AssertionError: floats nan and inf are not identical
|
||||
def test_truediv(self):
|
||||
@@ -116,10 +105,20 @@ class ComplexTest(ComplexesAreIdenticalMixin, unittest.TestCase):
|
||||
self.check_div(complex(1e200, 1e200), 1+0j)
|
||||
self.check_div(complex(1e-200, 1e-200), 1+0j)
|
||||
|
||||
# Smith's algorithm has several sources of inaccuracy
|
||||
# for components of the result. In examples below,
|
||||
# it's cancellation of digits in computation of sum.
|
||||
self.check_div(1e-09+1j, 1+1j)
|
||||
self.check_div(8.289760544677449e-09+0.13257307440728516j,
|
||||
0.9059966714925808+0.5054864708672686j)
|
||||
|
||||
# Just for fun.
|
||||
for i in range(100):
|
||||
self.check_div(complex(random(), random()),
|
||||
complex(random(), random()))
|
||||
x = complex(random(), random())
|
||||
y = complex(random(), random())
|
||||
self.check_div(x, y)
|
||||
y = complex(1e10*y.real, y.imag)
|
||||
self.check_div(x, y)
|
||||
|
||||
self.assertAlmostEqual(complex.__truediv__(2+0j, 1+1j), 1-1j)
|
||||
self.assertRaises(TypeError, operator.truediv, 1j, None)
|
||||
@@ -457,7 +456,7 @@ class ComplexTest(ComplexesAreIdenticalMixin, unittest.TestCase):
|
||||
self.assertTrue(1j)
|
||||
|
||||
def test_conjugate(self):
|
||||
self.assertClose(complex(5.3, 9.8).conjugate(), 5.3-9.8j)
|
||||
self.assertEqual(complex(5.3, 9.8).conjugate(), 5.3-9.8j)
|
||||
|
||||
@unittest.expectedFailure # TODO: RUSTPYTHON; AssertionError: DeprecationWarning not triggered
|
||||
def test_constructor(self):
|
||||
|
||||
Reference in new issue
Block a user