diff options
author | Joseph Myers <joseph@codesourcery.com> | 2012-04-30 09:37:01 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2012-04-30 09:37:01 +0000 |
commit | 9568c0c2255045456a09b441f89c6641e27a4bec (patch) | |
tree | 880b9ddc21a1bc83fbb5ec3af9c57db5365eef35 /math/e_exp10f.c | |
parent | 6c1ff08cf8734e77b9201d968ae8bbc0626d09a4 (diff) | |
download | glibc-9568c0c2255045456a09b441f89c6641e27a4bec.zip glibc-9568c0c2255045456a09b441f89c6641e27a4bec.tar.gz glibc-9568c0c2255045456a09b441f89c6641e27a4bec.tar.bz2 |
Fix exp10 spurious overflows (bug 13924).
Diffstat (limited to 'math/e_exp10f.c')
-rw-r--r-- | math/e_exp10f.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/math/e_exp10f.c b/math/e_exp10f.c index 7b94005..582824f 100644 --- a/math/e_exp10f.c +++ b/math/e_exp10f.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 <drepper@cygnus.com>, 1998. @@ -23,8 +23,10 @@ float __ieee754_exp10f (float arg) { - /* This is a very stupid and inprecise implementation. It'll get - replaced sometime (soon?). */ - return __ieee754_expf (M_LN10 * arg); + /* The argument to exp needs to be calculated in enough precision + that the fractional part has as much precision as float, in + addition to the bits in the integer part; using double ensures + this. */ + return __ieee754_exp (M_LN10 * arg); } strong_alias (__ieee754_exp10f, __exp10f_finite) |