mirror of
https://github.com/python/cpython.git
synced 2025-07-29 06:05:00 +00:00
Issue #2487. math.ldexp(x, n) raised OverflowError when n was large and
negative; fix to return an (appropriately signed) zero instead.
This commit is contained in:
parent
8bd5334a9e
commit
f8476c1573
3 changed files with 78 additions and 13 deletions
|
@ -374,6 +374,24 @@ class MathTests(unittest.TestCase):
|
|||
self.assertEquals(math.ldexp(NINF, -213), NINF)
|
||||
self.assert_(math.isnan(math.ldexp(NAN, 0)))
|
||||
|
||||
# large second argument
|
||||
for n in [10**5, 10L**5, 10**10, 10L**10, 10**20, 10**40]:
|
||||
self.assertEquals(math.ldexp(INF, -n), INF)
|
||||
self.assertEquals(math.ldexp(NINF, -n), NINF)
|
||||
self.assertEquals(math.ldexp(1., -n), 0.)
|
||||
self.assertEquals(math.ldexp(-1., -n), -0.)
|
||||
self.assertEquals(math.ldexp(0., -n), 0.)
|
||||
self.assertEquals(math.ldexp(-0., -n), -0.)
|
||||
self.assert_(math.isnan(math.ldexp(NAN, -n)))
|
||||
|
||||
self.assertRaises(OverflowError, math.ldexp, 1., n)
|
||||
self.assertRaises(OverflowError, math.ldexp, -1., n)
|
||||
self.assertEquals(math.ldexp(0., n), 0.)
|
||||
self.assertEquals(math.ldexp(-0., n), -0.)
|
||||
self.assertEquals(math.ldexp(INF, n), INF)
|
||||
self.assertEquals(math.ldexp(NINF, n), NINF)
|
||||
self.assert_(math.isnan(math.ldexp(NAN, n)))
|
||||
|
||||
def testLog(self):
|
||||
self.assertRaises(TypeError, math.log)
|
||||
self.ftest('log(1/e)', math.log(1/math.e), -1)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue