summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2009-04-25 08:12:24 +0000
committerUlrich Drepper <drepper@redhat.com>2009-04-25 08:12:24 +0000
commite971e76d8d248ce128641983e90b7cf6e81f2e4e (patch)
tree7ae73bbc23f891972dc747bd5c29a42855982ff3
parentdb6edfb341b4d15a24c80bf4113462203bd2dfc8 (diff)
downloadglibc-e971e76d8d248ce128641983e90b7cf6e81f2e4e.tar.gz
glibc-e971e76d8d248ce128641983e90b7cf6e81f2e4e.tar.xz
glibc-e971e76d8d248ce128641983e90b7cf6e81f2e4e.zip
* sysdeps/ieee754/k_standard.c (__kernel_standard): Pole errors
	for lgamma should se errno to ERANGE, not EDOM.
	* math/libm-test.inc (lgamma_test): Check errno for pole errors.
-rw-r--r--ChangeLog4
-rw-r--r--math/libm-test.inc2
-rw-r--r--sysdeps/ieee754/k_standard.c4
3 files changed, 8 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 2d0c7cc99e..26cb92cc00 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2009-04-25  Ulrich Drepper  <drepper@redhat.com>
 
+	* sysdeps/ieee754/k_standard.c (__kernel_standard): Pole errors
+	for lgamma should se errno to ERANGE, not EDOM.
+	* math/libm-test.inc (lgamma_test): Check errno for pole errors.
+
 	* sysdeps/generic/stdint.h (WINT_MAX): Define as 2147483647 since
 	this is the maximum UCS4 value.
 
diff --git a/math/libm-test.inc b/math/libm-test.inc
index 6d9a3ec6cb..68f2f05a70 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -3241,7 +3241,9 @@ lgamma_test (void)
   TEST_f_f (lgamma, nan_value, nan_value);
 
   /* lgamma (x) == +inf plus divide by zero exception for integer x <= 0.  */
+  errno = 0;
   TEST_f_f (lgamma, -3, plus_infty, DIVIDE_BY_ZERO_EXCEPTION);
+  check_int ("errno for lgamma(-integer) == ERANGE", errno, ERANGE, 0, 0, 0);
   TEST_f_f (lgamma, minus_infty, plus_infty);
 
   TEST_f_f1 (lgamma, 1, 0, 1);
diff --git a/sysdeps/ieee754/k_standard.c b/sysdeps/ieee754/k_standard.c
index d8fa2a4493..a81da13b8c 100644
--- a/sysdeps/ieee754/k_standard.c
+++ b/sysdeps/ieee754/k_standard.c
@@ -383,7 +383,7 @@ static double zero = 0.0;	/* used as const */
                 else
                   exc.retval = HUGE_VAL;
 		if (_LIB_VERSION == _POSIX_)
-		  __set_errno (EDOM);
+		  __set_errno (ERANGE);
 		else if (!matherr(&exc)) {
 		  if (_LIB_VERSION == _SVID_) {
 			(void) WRITE2("lgamma: SING error\n", 19);
@@ -990,7 +990,7 @@ static double zero = 0.0;	/* used as const */
 		  __set_errno (ERANGE);
 		}
 		break;
-		
+
 		/* #### Last used is 50/150/250 ### */
 	}
 	return exc.retval;