Exemplo n.º 1
0
        def test_exceptions(self):
            try:
                x = math.exp(-1000000000)
            except:
                # mathmodule.c is failing to weed out underflows from libm, or
                # we've got an fp format with huge dynamic range
                self.fail("underflowing exp() should not have raised "
                          "an exception")
            if x != 0:
                self.fail("underflowing exp() should have returned 0")

            # If this fails, probably using a strict IEEE-754 conforming libm, and x
            # is +Inf afterwards.  But Python wants overflows detected by default.
            try:
                x = math.exp(1000000000)
            except OverflowError:
                pass
            else:
                self.fail("overflowing exp() didn't trigger OverflowError")

            # If this fails, it could be a puzzle.  One odd possibility is that
            # mathmodule.c's macros are getting confused while comparing
            # Inf (HUGE_VAL) to a NaN, and artificially setting errno to ERANGE
            # as a result (and so raising OverflowError instead).
            try:
                x = math.sqrt(-1.0)
            except ValueError:
                pass
            else:
                self.fail("sqrt(-1) didn't raise ValueError")
Exemplo n.º 2
0
        def test_exceptions(self):
            try:
                x = math.exp(-1000000000)
            except:
                # mathmodule.c is failing to weed out underflows from libm, or
                # we've got an fp format with huge dynamic range
                self.fail("underflowing exp() should not have raised "
                          "an exception")
            if x != 0:
                self.fail("underflowing exp() should have returned 0")

            # If this fails, probably using a strict IEEE-754 conforming libm, and x
            # is +Inf afterwards.  But Python wants overflows detected by default.
            try:
                x = math.exp(1000000000)
            except OverflowError:
                pass
            else:
                self.fail("overflowing exp() didn't trigger OverflowError")

            # If this fails, it could be a puzzle.  One odd possibility is that
            # mathmodule.c's macros are getting confused while comparing
            # Inf (HUGE_VAL) to a NaN, and artificially setting errno to ERANGE
            # as a result (and so raising OverflowError instead).
            try:
                x = math.sqrt(-1.0)
            except ValueError:
                pass
            else:
                self.fail("sqrt(-1) didn't raise ValueError")
Exemplo n.º 3
0
 def testExp(self):
     self.assertRaises(TypeError, math.exp)
     self.ftest('exp(-1)', math.exp(-1), 1/math.e)
     self.ftest('exp(0)', math.exp(0), 1)
     self.ftest('exp(1)', math.exp(1), math.e)
     self.assertEqual(math.exp(INF), INF)
     self.assertEqual(math.exp(NINF), 0.)
     self.assertTrue(math.isnan(math.exp(NAN)))
Exemplo n.º 4
0
 def testExp(self):
     self.assertRaises(TypeError, math.exp)
     self.ftest('exp(-1)', math.exp(-1), 1/math.e)
     self.ftest('exp(0)', math.exp(0), 1)
     self.ftest('exp(1)', math.exp(1), math.e)
     self.assertEqual(math.exp(INF), INF)
     self.assertEqual(math.exp(NINF), 0.)
     self.assertTrue(math.isnan(math.exp(NAN)))