From eb3bf57345cb1451a5d2578dc3f7fbe5aff3b8b5 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 22 Oct 1999 15:30:17 +0000 Subject: Update. * sysdeps/ieee754/ldbl-96/s_nexttoward.c: If x == y, return y. * sysdeps/ieee754/dbl-64/e_lgamma_r.c: Don't handle -Inf special. * sysdeps/ieee754/dbl-64/e_gamma_r.c (__ieee754_gamma_r): Check for -Inf and return NaN. --- sysdeps/ieee754/dbl-64/e_gamma_r.c | 3 +++ sysdeps/ieee754/dbl-64/e_lgamma_r.c | 2 -- sysdeps/ieee754/ldbl-96/s_nexttoward.c | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) (limited to 'sysdeps/ieee754') diff --git a/sysdeps/ieee754/dbl-64/e_gamma_r.c b/sysdeps/ieee754/dbl-64/e_gamma_r.c index bd802c24f1..eff40463be 100644 --- a/sysdeps/ieee754/dbl-64/e_gamma_r.c +++ b/sysdeps/ieee754/dbl-64/e_gamma_r.c @@ -45,6 +45,9 @@ __ieee754_gamma_r (double x, int *signgamp) *signgamp = 0; return (x - x) / (x - x); } + if ((unsigned int) hx == 0xfff00000 && lx==0) + /* x == -Inf. According to ISO this is NaN. */ + return x - x; /* XXX FIXME. */ return __ieee754_exp (__ieee754_lgamma_r (x, signgamp)); diff --git a/sysdeps/ieee754/dbl-64/e_lgamma_r.c b/sysdeps/ieee754/dbl-64/e_lgamma_r.c index 92e9556568..ad775c616a 100644 --- a/sysdeps/ieee754/dbl-64/e_lgamma_r.c +++ b/sysdeps/ieee754/dbl-64/e_lgamma_r.c @@ -226,8 +226,6 @@ static double zero= 0.00000000000000000000e+00; /* purge off +-inf, NaN, +-0, and negative arguments */ *signgamp = 1; - if ((unsigned int) hx==0xfff00000&&lx==0) - return x-x; ix = hx&0x7fffffff; if(ix>=0x7ff00000) return x*x; if((ix|lx)==0) return one/fabs(x); diff --git a/sysdeps/ieee754/ldbl-96/s_nexttoward.c b/sysdeps/ieee754/ldbl-96/s_nexttoward.c index debbb86a3c..941383e281 100644 --- a/sysdeps/ieee754/ldbl-96/s_nexttoward.c +++ b/sysdeps/ieee754/ldbl-96/s_nexttoward.c @@ -47,7 +47,7 @@ static char rcsid[] = "$NetBSD: $"; if(((ix>=0x7ff00000)&&((ix-0x7ff00000)|lx)!=0) || /* x is nan */ ((iy>=0x7fff)&&((hy|ly)|-(hy|ly))!=0)) /* y is nan */ return x+y; - if((long double) x==y) return x; /* x=y, return x */ + if((long double) x==y) return y; /* x=y, return y */ if((ix|lx)==0) { /* x == 0 */ double x2; INSERT_WORDS(x,esy&0x8000?0x80000000:0,1);/* return +-minsub */ -- cgit v1.2.3