From 9568c0c2255045456a09b441f89c6641e27a4bec Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Mon, 30 Apr 2012 09:37:01 +0000 Subject: Fix exp10 spurious overflows (bug 13924). --- math/e_exp10.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'math/e_exp10.c') diff --git a/math/e_exp10.c b/math/e_exp10.c index 75185836b8..ce319fdcd2 100644 --- a/math/e_exp10.c +++ b/math/e_exp10.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998, 2011 Free Software Foundation, Inc. +/* Copyright (C) 1998-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. @@ -18,13 +18,16 @@ #include #include - +#include double __ieee754_exp10 (double arg) { - /* This is a very stupid and inprecise implementation. It'll get - replaced sometime (soon?). */ - return __ieee754_exp (M_LN10 * arg); + if (__finite (arg) && arg < DBL_MIN_10_EXP - DBL_DIG - 10) + return DBL_MIN * DBL_MIN; + else + /* This is a very stupid and inprecise implementation. It'll get + replaced sometime (soon?). */ + return __ieee754_exp (M_LN10 * arg); } strong_alias (__ieee754_exp10, __exp10_finite) -- cgit 1.4.1