]> granicus.if.org Git - python/commitdiff
Issue #9920: Skip tests for cmath.atan and cmath.atanh applied to
authorMark Dickinson <dickinsm@gmail.com>
Sat, 20 Nov 2010 11:08:27 +0000 (11:08 +0000)
committerMark Dickinson <dickinsm@gmail.com>
Sat, 20 Nov 2010 11:08:27 +0000 (11:08 +0000)
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
Lib/test/test_cmath.py
Misc/NEWS

index ce03232992ef5460ab0ae19d891885ed0af6316b..9b0865302ec01dff93ebe2e39c45a2c6de23b593 100644 (file)
@@ -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
index 0d12635295fbf3b8fd0dcf1e30eb2d68dd109fc5..168b513bbd54d9538a2c7d2de2cb36badf8af0c9 100644 (file)
@@ -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)
index 917b7cd3b094169f40dccb8aee01763b5ec3f24f..672d9183c8d58538d4d3d6428da5911d55e4910d 100644 (file)
--- 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.