mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
[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 28aea5d07d
)
Co-authored-by: Sergey B Kirpichev <skirpichev@gmail.com>
This commit is contained in:
parent
99185bd649
commit
5e2711775e
1 changed files with 10 additions and 0 deletions
|
@ -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 @@ class MathTests(unittest.TestCase):
|
|||
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
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue