From ab444d0a3e2521495eaaa589027283f1a667b014 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81rni=20Dagur?= Date: Thu, 22 Oct 2020 02:35:52 +0000 Subject: [PATCH] Correct value of sys.float_info.min --- Lib/test/test_complex.py | 6 ++++++ Lib/test/test_math.py | 24 +++++++++++------------- vm/src/sysmodule.rs | 2 +- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/Lib/test/test_complex.py b/Lib/test/test_complex.py index 7a3a88578..982e00ea2 100644 --- a/Lib/test/test_complex.py +++ b/Lib/test/test_complex.py @@ -416,6 +416,8 @@ class ComplexTest(unittest.TestCase): self.assertEqual(complex(complex1(1j)), 2j) self.assertRaises(TypeError, complex, complex2(1j)) + # TODO: RUSTPYTHON + @unittest.expectedFailure @support.requires_IEEE_754 def test_constructor_special_numbers(self): class complex2(complex): @@ -495,6 +497,8 @@ class ComplexTest(unittest.TestCase): self.assertEqual(-6j,complex(repr(-6j))) self.assertEqual(6j,complex(repr(6j))) + # TODO: RUSTPYTHON + @unittest.expectedFailure @support.requires_IEEE_754 def test_negative_zero_repr_str(self): def test(v, expected, test_fn=self.assertEqual): @@ -567,6 +571,8 @@ class ComplexTest(unittest.TestCase): self.assertEqual(complex("-1e500j"), complex(0.0, -INF)) self.assertEqual(complex("-1e500+1.8e308j"), complex(-INF, INF)) + # TODO: RUSTPYTHON + @unittest.expectedFailure @support.requires_IEEE_754 def test_repr_roundtrip(self): vals = [0.0, 1e-500, 1e-315, 1e-200, 0.0123, 3.1415, 1e50, INF, NAN] diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py index 6762ff44c..7f744ba6b 100644 --- a/Lib/test/test_math.py +++ b/Lib/test/test_math.py @@ -1970,16 +1970,15 @@ class MathTests(unittest.TestCase): self.assertEqualSign(math.nextafter(+0.0, -0.0), -0.0) # around 0.0 - # TODO: RUSTPYTHON - # smallest_subnormal = sys.float_info.min * sys.float_info.epsilon - # self.assertEqual(math.nextafter(+0.0, INF), smallest_subnormal) - # self.assertEqual(math.nextafter(-0.0, INF), smallest_subnormal) - # self.assertEqual(math.nextafter(+0.0, -INF), -smallest_subnormal) - # self.assertEqual(math.nextafter(-0.0, -INF), -smallest_subnormal) - # self.assertEqualSign(math.nextafter(smallest_subnormal, +0.0), +0.0) - # self.assertEqualSign(math.nextafter(-smallest_subnormal, +0.0), -0.0) - # self.assertEqualSign(math.nextafter(smallest_subnormal, -0.0), +0.0) - # self.assertEqualSign(math.nextafter(-smallest_subnormal, -0.0), -0.0) + smallest_subnormal = sys.float_info.min * sys.float_info.epsilon + self.assertEqual(math.nextafter(+0.0, INF), smallest_subnormal) + self.assertEqual(math.nextafter(-0.0, INF), smallest_subnormal) + self.assertEqual(math.nextafter(+0.0, -INF), -smallest_subnormal) + self.assertEqual(math.nextafter(-0.0, -INF), -smallest_subnormal) + self.assertEqualSign(math.nextafter(smallest_subnormal, +0.0), +0.0) + self.assertEqualSign(math.nextafter(-smallest_subnormal, +0.0), -0.0) + self.assertEqualSign(math.nextafter(smallest_subnormal, -0.0), +0.0) + self.assertEqualSign(math.nextafter(-smallest_subnormal, -0.0), -0.0) # around infinity largest_normal = sys.float_info.max @@ -2002,9 +2001,8 @@ class MathTests(unittest.TestCase): self.assertEqual(math.ulp(2 ** 64), 4096.0) # min and max - # TODO: RUSTPYTHON - # self.assertEqual(math.ulp(0.0), - # sys.float_info.min * sys.float_info.epsilon) + self.assertEqual(math.ulp(0.0), + sys.float_info.min * sys.float_info.epsilon) self.assertEqual(math.ulp(FLOAT_MAX), FLOAT_MAX - math.nextafter(FLOAT_MAX, -INF)) diff --git a/vm/src/sysmodule.rs b/vm/src/sysmodule.rs index 23425e5fc..837477fda 100644 --- a/vm/src/sysmodule.rs +++ b/vm/src/sysmodule.rs @@ -457,7 +457,7 @@ impl PyFloatInfo { max: f64::MAX, max_exp: f64::MAX_EXP, max_10_exp: f64::MAX_10_EXP, - min: f64::MIN, + min: f64::MIN_POSITIVE, min_exp: f64::MIN_EXP, min_10_exp: f64::MIN_10_EXP, dig: f64::DIGITS,