https://github.com/python/cpython/commit/28aea5d07d163105b42acd81c1651397ef95ea57
commit: 28aea5d07d163105b42acd81c1651397ef95ea57
branch: main
author: Sergey B Kirpichev <[email protected]>
committer: vstinner <[email protected]>
date: 2024-09-17T10:22:40+02:00
summary:
gh-123836: Check zero signs in math_testcases.txt (#123854)
Just like cmath_testcases.txt. These tests require IEEE 754 anyway.
Correct zero sign for sqrt tests to match math.h convention.
files:
M Lib/test/test_math.py
diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py
index eabab2805f8110..cf452960729aba 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"
@@ -2067,6 +2070,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]