about summary refs log tree commit diff
path: root/sysdeps/ieee754/dbl-64
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2007-10-06 18:37:30 +0000
committerUlrich Drepper <drepper@redhat.com>2007-10-06 18:37:30 +0000
commitc039eedd66aff3706fede2188d920e173543b8e8 (patch)
tree7caae3bc57aa7ff2781e7e32c4dc4c8925ad096a /sysdeps/ieee754/dbl-64
parent718946816cf60374f9d8f674d3ed649fdb33205a (diff)
downloadglibc-c039eedd66aff3706fede2188d920e173543b8e8.tar.gz
glibc-c039eedd66aff3706fede2188d920e173543b8e8.tar.xz
glibc-c039eedd66aff3706fede2188d920e173543b8e8.zip
[BZ #4407]
	* sysdeps/ieee754/dbl-64/e_lgamma_r.c: Fix *signgamp for -0.0.
	* sysdeps/ieee754/flt-32/e_lgammaf_r.c: Likewise.
	* sysdeps/ieee754/ldbl-96/e_lgammal_r.c: Likewise.
	* math/libm-test.inc: Add test for this case.

	Half the patch by Christian Iseli <christian.iseli@licr.org>.
Diffstat (limited to 'sysdeps/ieee754/dbl-64')
-rw-r--r--sysdeps/ieee754/dbl-64/e_lgamma_r.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sysdeps/ieee754/dbl-64/e_lgamma_r.c b/sysdeps/ieee754/dbl-64/e_lgamma_r.c
index cc44b048f4..a298a5a2a4 100644
--- a/sysdeps/ieee754/dbl-64/e_lgamma_r.c
+++ b/sysdeps/ieee754/dbl-64/e_lgamma_r.c
@@ -228,7 +228,12 @@ static double zero=  0.00000000000000000000e+00;
 	*signgamp = 1;
 	ix = hx&0x7fffffff;
 	if(ix>=0x7ff00000) return x*x;
-	if((ix|lx)==0) return one/fabs(x);
+	if((ix|lx)==0)
+	  {
+	    if (hx < 0)
+	      *signgamp = -1;
+	    return one/fabs(x);
+	  }
 	if(ix<0x3b900000) {	/* |x|<2**-70, return -log(|x|) */
 	    if(hx<0) {
 	        *signgamp = -1;