https://github.com/python/cpython/commit/5e2711775e4c8fa8f5af854888e88311e04d2069 commit: 5e2711775e4c8fa8f5af854888e88311e04d2069 branch: 3.13 author: Miss Islington (bot) <[email protected]> committer: Yhg1s <[email protected]> date: 2024-09-29T18:14:44-07:00 summary:
[3.13] gh-123836: Check zero signs in math_testcases.txt (GH-123854) (#124161) gh-123836: Check zero signs in math_testcases.txt (GH-123854) Just like cmath_testcases.txt. These tests require IEEE 754 anyway. Correct zero sign for sqrt tests to match math.h convention. (cherry picked from commit 28aea5d07d163105b42acd81c1651397ef95ea57) Co-authored-by: Sergey B Kirpichev <[email protected]> files: M Lib/test/test_math.py diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py index f50b2ebb6fd6d0..541ccdb3d09ccd 100644 --- a/Lib/test/test_math.py +++ b/Lib/test/test_math.py @@ -187,6 +187,9 @@ def result_check(expected, got, ulp_tol=5, abs_tol=0.0): # Check exactly equal (applies also to strings representing exceptions) if got == expected: + if not got and not expected: + if math.copysign(1, got) != math.copysign(1, expected): + return f"expected {expected}, got {got} (zero has wrong sign)" return None failure = "not equal" @@ -2053,6 +2056,13 @@ def test_testfile(self): except OverflowError: result = 'OverflowError' + # C99+ says for math.h's sqrt: If the argument is +∞ or ±0, it is + # returned, unmodified. On another hand, for csqrt: If z is ±0+0i, + # the result is +0+0i. Lets correct zero sign of er to follow + # first convention. + if id in ['sqrt0002', 'sqrt0003', 'sqrt1001', 'sqrt1023']: + er = math.copysign(er, ar) + # Default tolerances ulp_tol, abs_tol = 5, 0.0 _______________________________________________ Python-checkins mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3/lists/python-checkins.python.org/ Member address: [email protected]
