]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix ldbl-128ibm coshl spurious overflows (bug 16407).
authorJoseph Myers <joseph@codesourcery.com>
Tue, 7 Jan 2014 22:00:04 +0000 (22:00 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Tue, 7 Jan 2014 22:00:04 +0000 (22:00 +0000)
This patch fixes bug 16407, spurious overflows from ldbl-128ibm coshl.
The implementation assumed that a high part (reinterpreted as an
integer) of the absolute value of the argument of 0x408633ce8fb9f87dLL
or more meant overflow, but the actual threshold has high part
0x408633ce8fb9f87eLL (and a negative low part).  The patch adjusts the
threshold accordingly.

sinhl probably has the same issue, but I didn't get that far in adding
tests of special cases (such as just below and above overflow) before
the freeze and during the freeze is not a suitable time to add them
(as they'd require ulps to be regenerated again), so I'm not changing
that function for now; when I add more tests of special cases, we'll
discover whether sinhl indeed has this problem.

Tested powerpc32.

* sysdeps/ieee754/ldbl-128ibm/e_coshl.c (__ieee754_coshl):
Increase overflow threshold.

ChangeLog
NEWS
sysdeps/ieee754/ldbl-128ibm/e_coshl.c

index be41012fd1ef7fe9eb36e592ebda795a878b8fef..ce828b42222224df2e5ab4ab92bc6b09bec60117 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2014-01-07  Joseph Myers  <joseph@codesourcery.com>
+
+       [BZ #16407]
+       * sysdeps/ieee754/ldbl-128ibm/e_coshl.c (__ieee754_coshl):
+       Increase overflow threshold.
+
 2014-01-07  Ondřej Bílka  <neleai@seznam.cz>
 
        [BZ #14286]
diff --git a/NEWS b/NEWS
index d674772247e2ee7510725221fbfa85d4a393554d..366e1d4f432f9bb8b6d8e538622bfdd223c08954 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -24,7 +24,7 @@ Version 2.19
   16103, 16112, 16143, 16144, 16146, 16150, 16151, 16153, 16167, 16172,
   16195, 16214, 16245, 16271, 16274, 16283, 16289, 16293, 16314, 16316,
   16330, 16337, 16338, 16356, 16365, 16366, 16369, 16372, 16375, 16379,
-  16384, 16385, 16386, 16387, 16390, 16400.
+  16384, 16385, 16386, 16387, 16390, 16400, 16407.
 
 * Slovenian translations for glibc messages have been contributed by the
   Translation Project's Slovenian team of translators.
index 05683bc02feaec95eea92d2129c4b24e499fa60c..92313e25e236b1d5a5445b9f4d9d87e8719ccfe6 100644 (file)
@@ -69,7 +69,7 @@ __ieee754_coshl (long double x)
        if (ix < 0x40862e42fefa39efLL)  return half*__ieee754_expl(fabsl(x));
 
     /* |x| in [log(maxdouble), overflowthresold] */
-       if (ix < 0x408633ce8fb9f87dLL) {
+       if (ix < 0x408633ce8fb9f87fLL) {
            w = __ieee754_expl(half*fabsl(x));
            t = half*w;
            return t*w;