Fix ldbl-128ibm coshl spurious overflows (bug 16407).
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.
This commit is contained in:
parent
196f456b84
commit
b821f414e4
|
@ -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]
|
||||
|
|
2
NEWS
2
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.
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue