From 4ccc137affe960741c3f6758ce00277d15409665 Mon Sep 17 00:00:00 2001 From: Mark Dickinson Date: Sat, 20 Nov 2010 11:08:27 +0000 Subject: Issue #9920: Skip tests for cmath.atan and cmath.atanh applied to complex zeros on systems where the log1p function fails to respect the sign of zero. This fixes a test failure on AIX. --- Lib/test/cmath_testcases.txt | 18 ++++++++++-------- Lib/test/test_cmath.py | 18 ++++++++++++++++++ Misc/NEWS | 4 ++++ 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/Lib/test/cmath_testcases.txt b/Lib/test/cmath_testcases.txt index ce03232..9b08653 100644 --- a/Lib/test/cmath_testcases.txt +++ b/Lib/test/cmath_testcases.txt @@ -733,10 +733,11 @@ asinh1036 asinh -inf inf -> -inf 0.78539816339744828 --------------------------- -- zeros -atan0000 atan 0.0 0.0 -> 0.0 0.0 -atan0001 atan 0.0 -0.0 -> 0.0 -0.0 -atan0002 atan -0.0 0.0 -> -0.0 0.0 -atan0003 atan -0.0 -0.0 -> -0.0 -0.0 +-- These are tested in testAtanSign in test_cmath.py +-- atan0000 atan 0.0 0.0 -> 0.0 0.0 +-- atan0001 atan 0.0 -0.0 -> 0.0 -0.0 +-- atan0002 atan -0.0 0.0 -> -0.0 0.0 +-- atan0003 atan -0.0 -0.0 -> -0.0 -0.0 -- values along both sides of imaginary axis atan0010 atan 0.0 -9.8813129168249309e-324 -> 0.0 -9.8813129168249309e-324 @@ -896,10 +897,11 @@ atan1040 atan -inf -inf -> -1.5707963267948966 -0.0 --------------------------------------- -- zeros -atanh0000 atanh 0.0 0.0 -> 0.0 0.0 -atanh0001 atanh 0.0 -0.0 -> 0.0 -0.0 -atanh0002 atanh -0.0 0.0 -> -0.0 0.0 -atanh0003 atanh -0.0 -0.0 -> -0.0 -0.0 +-- These are tested in testAtanhSign in test_cmath.py +-- atanh0000 atanh 0.0 0.0 -> 0.0 0.0 +-- atanh0001 atanh 0.0 -0.0 -> 0.0 -0.0 +-- atanh0002 atanh -0.0 0.0 -> -0.0 0.0 +-- atanh0003 atanh -0.0 -0.0 -> -0.0 -0.0 -- values along both sides of real axis atanh0010 atanh -9.8813129168249309e-324 0.0 -> -9.8813129168249309e-324 0.0 diff --git a/Lib/test/test_cmath.py b/Lib/test/test_cmath.py index 0d12635..168b513 100644 --- a/Lib/test/test_cmath.py +++ b/Lib/test/test_cmath.py @@ -514,6 +514,24 @@ class CMathTests(unittest.TestCase): for z in complex_zeros: self.assertComplexIdentical(cmath.tanh(z), z) + # The algorithm used for atan and atanh makes use of the system + # log1p function; If that system function doesn't respect the sign + # of zero, then atan and atanh will also have difficulties with + # the sign of complex zeros. + @requires_IEEE_754 + @unittest.skipIf(sysconfig.get_config_var('LOG1P_DROPS_ZERO_SIGN'), + "system log1p() function doesn't preserve the sign") + def testAtanSign(self): + for z in complex_zeros: + self.assertComplexIdentical(cmath.atan(z), z) + + @requires_IEEE_754 + @unittest.skipIf(sysconfig.get_config_var('LOG1P_DROPS_ZERO_SIGN'), + "system log1p() function doesn't preserve the sign") + def testAtanhSign(self): + for z in complex_zeros: + self.assertComplexIdentical(cmath.atanh(z), z) + def test_main(): run_unittest(CMathTests) diff --git a/Misc/NEWS b/Misc/NEWS index 917b7cd..672d918 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -21,6 +21,10 @@ Core and Builtins Library ------- +- Issue #9920: Skip tests for cmath.atan and cmath.atanh applied to + complex zeros on systems where the log1p function fails to respect + the sign of zero. This fixes a test failure on AIX. + - Issue #10446: Module documentation generated by pydoc now links to a version-specific online reference manual. -- cgit v0.12