From bba873e633f0f1e88ea12fb935cbd58faa77f976 Mon Sep 17 00:00:00 2001 From: Mark Dickinson Date: Mon, 9 Dec 2019 08:36:34 -0600 Subject: bpo-38992: avoid fsum test failure from constant-folding (GH-17513) * Issue 38992: avoid fsum test failure * Add NEWS entry --- Lib/test/test_math.py | 8 +++++++- Misc/NEWS.d/next/Tests/2019-12-08-15-11-06.bpo-38992.cVoHOZ.rst | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Tests/2019-12-08-15-11-06.bpo-38992.cVoHOZ.rst diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py index f832246..5c35c8c 100644 --- a/Lib/test/test_math.py +++ b/Lib/test/test_math.py @@ -676,7 +676,6 @@ class MathTests(unittest.TestCase): float.fromhex('0x1.df11f45f4e61ap+2')), ([(-1.)**n/n for n in range(1, 1001)], float.fromhex('-0x1.62a2af1bd3624p-1')), - ([1.7**(i+1)-1.7**i for i in range(1000)] + [-1.7**1000], -1.0), ([1e16, 1., 1e-16], 10000000000000002.0), ([1e16-2., 1.-2.**-53, -(1e16-2.), -(1.-2.**-53)], 0.0), # exercise code for resizing partials array @@ -685,6 +684,13 @@ class MathTests(unittest.TestCase): float.fromhex('0x1.5555555555555p+970')), ] + # Telescoping sum, with exact differences (due to Sterbenz) + terms = [1.7**i for i in range(1001)] + test_values.append(( + [terms[i+1] - terms[i] for i in range(1000)] + [-terms[1000]], + -terms[0] + )) + for i, (vals, expected) in enumerate(test_values): try: actual = math.fsum(vals) diff --git a/Misc/NEWS.d/next/Tests/2019-12-08-15-11-06.bpo-38992.cVoHOZ.rst b/Misc/NEWS.d/next/Tests/2019-12-08-15-11-06.bpo-38992.cVoHOZ.rst new file mode 100644 index 0000000..815ae0f --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2019-12-08-15-11-06.bpo-38992.cVoHOZ.rst @@ -0,0 +1 @@ +Fix a test for :func:`math.fsum` that was failing due to constant folding. -- cgit v0.12