diff options
author | Joseph Myers <joseph@codesourcery.com> | 2016-05-26 20:55:03 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2016-05-26 20:55:03 +0000 |
commit | d73e7bdb3a9284eb437b6cd84923658e25f922f2 (patch) | |
tree | b20ec5c3fed4bd7d27fc4412044b6980241fceaf | |
parent | 960be82cc2b256eded9242bd428ddd2dc4f89275 (diff) | |
download | glibc-d73e7bdb3a9284eb437b6cd84923658e25f922f2.tar glibc-d73e7bdb3a9284eb437b6cd84923658e25f922f2.tar.gz glibc-d73e7bdb3a9284eb437b6cd84923658e25f922f2.tar.bz2 glibc-d73e7bdb3a9284eb437b6cd84923658e25f922f2.zip |
Fix ldbl-128 j0l, j1l, y0l, y1l for sNaN argument (bug 20151).
The ldbl-128 implementations of j0l, j1l, y0l, y1l (also used for
ldbl-128ibm) return an sNaN argument unchanged. This patch fixes them
to add a NaN argument to itself to quiet it before return.
Tested for mips64.
[BZ #20151]
* sysdeps/ieee754/ldbl-128/e_j0l.c (__ieee754_j0l): Add NaN
argument to itself before returning result.
(__ieee754_y0l): Likewise.
* sysdeps/ieee754/ldbl-128/e_j1l.c (__ieee754_j1l): Likewise.
(__ieee754_y1l).
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/e_j0l.c | 4 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/e_j1l.c | 4 |
3 files changed, 11 insertions, 4 deletions
@@ -1,5 +1,12 @@ 2016-05-26 Joseph Myers <joseph@codesourcery.com> + [BZ #20151] + * sysdeps/ieee754/ldbl-128/e_j0l.c (__ieee754_j0l): Add NaN + argument to itself before returning result. + (__ieee754_y0l): Likewise. + * sysdeps/ieee754/ldbl-128/e_j1l.c (__ieee754_j1l): Likewise. + (__ieee754_y1l). + * math/libm-test.inc (acosh_test_data): Add sNaN tests. (atan_test_data): Likewise. (ceil_test_data): Likewise. diff --git a/sysdeps/ieee754/ldbl-128/e_j0l.c b/sysdeps/ieee754/ldbl-128/e_j0l.c index c208916a79..ddc82143dc 100644 --- a/sysdeps/ieee754/ldbl-128/e_j0l.c +++ b/sysdeps/ieee754/ldbl-128/e_j0l.c @@ -683,7 +683,7 @@ __ieee754_j0l (long double x) if (! isfinite (x)) { if (x != x) - return x; + return x + x; else return 0.0L; } @@ -831,7 +831,7 @@ long double if (! isfinite (x)) { if (x != x) - return x; + return x + x; else return 0.0L; } diff --git a/sysdeps/ieee754/ldbl-128/e_j1l.c b/sysdeps/ieee754/ldbl-128/e_j1l.c index f5b04c073d..32652049ab 100644 --- a/sysdeps/ieee754/ldbl-128/e_j1l.c +++ b/sysdeps/ieee754/ldbl-128/e_j1l.c @@ -690,7 +690,7 @@ __ieee754_j1l (long double x) if (! isfinite (x)) { if (x != x) - return x; + return x + x; else return 0.0L; } @@ -849,7 +849,7 @@ __ieee754_y1l (long double x) if (! isfinite (x)) { if (x != x) - return x; + return x + x; else return 0.0L; } |