Issue #11888: Add log2 function to math module. Patch written by Mark
Dickinson.
diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py
index 1bbc22d..3b80bb6 100644
--- a/Lib/test/test_math.py
+++ b/Lib/test/test_math.py
@@ -649,6 +649,28 @@
n= 2**90
self.assertAlmostEqual(math.log1p(n), math.log1p(float(n)))
+ @requires_IEEE_754
+ def testLog2(self):
+ self.assertRaises(TypeError, math.log2)
+ # Check that we get exact equality for log2 of powers of 2.
+ actual = [math.log2(2.0**n) for n in range(-324, 1024)]
+ expected = [float(n) for n in range(-324, 1024)]
+ self.assertEqual(actual, expected)
+
+ # Check some integer values
+ self.assertEqual(math.log2(1), 0.0)
+ self.assertEqual(math.log2(2), 1.0)
+ self.assertEqual(math.log2(4), 2.0)
+
+ # Large integer values
+ self.assertEqual(math.log2(2**1023), 1023.0)
+ self.assertEqual(math.log2(2**1024), 1024.0)
+ self.assertEqual(math.log2(2**2000), 2000.0)
+
+ self.assertRaises(ValueError, math.log2, -1.5)
+ self.assertRaises(ValueError, math.log2, NINF)
+ self.assertTrue(math.isnan(math.log2(NAN)))
+
def testLog10(self):
self.assertRaises(TypeError, math.log10)
self.ftest('log10(0.1)', math.log10(0.1), -1)