From 3363e1cb05d0d19ed172ea63606d8cb6268747fc Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Thu, 9 Dec 2021 18:31:54 +0000 Subject: bpo-46018: Ensure that math.expm1 does not raise on underflow (GH-29997) --- Modules/mathmodule.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'Modules/mathmodule.c') diff --git a/Modules/mathmodule.c b/Modules/mathmodule.c index 84b5b954b1..011ce0afd3 100644 --- a/Modules/mathmodule.c +++ b/Modules/mathmodule.c @@ -985,9 +985,13 @@ is_error(double x) * On some platforms (Ubuntu/ia64) it seems that errno can be * set to ERANGE for subnormal results that do *not* underflow * to zero. So to be safe, we'll ignore ERANGE whenever the - * function result is less than one in absolute value. + * function result is less than 1.5 in absolute value. + * + * bpo-46018: Changed to 1.5 to ensure underflows in expm1() + * are correctly detected, since the function may underflow + * toward -1.0 rather than 0.0. */ - if (fabs(x) < 1.0) + if (fabs(x) < 1.5) result = 0; else PyErr_SetString(PyExc_OverflowError, -- cgit v1.2.1