about summary refs log tree commit diff
path: root/sysdeps/libm-ieee754/k_standard.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1997-03-17 03:04:18 +0000
committerUlrich Drepper <drepper@redhat.com>1997-03-17 03:04:18 +0000
commit81e9dad67243a2ba7c4344e05a5e48b54efe991a (patch)
tree59f0642026a98ec415938a66395a1fcc85d90676 /sysdeps/libm-ieee754/k_standard.c
parent0d8733c4fc3695c7987548d10c344445f3eb552d (diff)
downloadglibc-81e9dad67243a2ba7c4344e05a5e48b54efe991a.tar.gz
glibc-81e9dad67243a2ba7c4344e05a5e48b54efe991a.tar.xz
glibc-81e9dad67243a2ba7c4344e05a5e48b54efe991a.zip
Update.
1997-03-17 04:00  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/libmieee754/w_atan2.c: Don't ignore exception if library
	type is SVID.
	* sysdeps/libmieee754/w_atan2f.c: Likewise.
	* sysdeps/libmieee754/w_atan2l.c: Likewise.

	* sysdeps/unix/sysv/linux/sys/mman.h (msync): Add descrption for
	FLAGS parameter.

1997-03-16 20:28  Philip Blundell  <phil@london.uk.eu.org>

	* sysdeps/unix/sysv/linux/socketbits.h: Add more SOL_ values.
	Change msg_iovlen and msg_controllen (in struct msghdr) to
	`size_t' to keep in step with kernel.

	* manual/examples/dir2.c: New example for scandir.
	* math/test/float.c: New file.  Frontend for float tests.
	* math/test/double.c: New file.  Frontend for double tests.
	* math/test/longdouble.c: New file.  Frontend for long double  tests.
	* sysdeps/ieee754/huge_val.h: Remove definition of long double
	* sysdeps/libm-i387/s_scalbn.S: Likewise.
	* sysdeps/libm-i387/s_scalbnf.S: Likewise.
	* sysdeps/libm-i387/s_scalbnl.S: Likewise.
	* sysdeps/libm-i387/s_expm1.S: Change return value for -inf
	* sysdeps/libm-i387/s_expm1f.S: Likewise.
	* sysdeps/libm-i387/s_expm1l.S: Likewise.
	* sysdeps/libm-i387/s_isinfl.c: Return -1 for -inf.
	* sysdeps/libm-i387/s_logbl.S: Correct return value.  Discard first
	* sysdeps/libm-ieee754/w_powf.c: Likewise.
	* sysdeps/libm-ieee754/w_powl.c: Likewise.
	* sysdeps/unix/sysv/linux/alpha/statbuf.h: Likewise.
	* nss/nss_files/files-hosts.c: Likewise.
	Based on a patch by H.J. Lu <hjl@gnu.ai.mit.edu>.
	* nis/ypclnt.c (__yp_bind): Fix possible buffer overflow.
	* posix/unistd.h: Add prototype for __euidaccess.
	* sysdeps/stub/euidaccess.c: Likewise.
Diffstat (limited to 'sysdeps/libm-ieee754/k_standard.c')
-rw-r--r--sysdeps/libm-ieee754/k_standard.c42
1 files changed, 36 insertions, 6 deletions
diff --git a/sysdeps/libm-ieee754/k_standard.c b/sysdeps/libm-ieee754/k_standard.c
index 35026faa9d..ada1df1a99 100644
--- a/sysdeps/libm-ieee754/k_standard.c
+++ b/sysdeps/libm-ieee754/k_standard.c
@@ -18,6 +18,8 @@ static char rcsid[] = "$NetBSD: k_standard.c,v 1.6 1995/05/10 20:46:35 jtc Exp $
 #include "math_private.h"
 #include <errno.h>
 
+#include <assert.h>
+
 #ifndef _USE_WRITE
 #include <stdio.h>			/* fputs(), stderr */
 #define	WRITE2(u,v)	fputs(u, stderr)
@@ -109,7 +111,10 @@ static double zero = 0.0;	/* used as const */
 		exc.type = DOMAIN;
 		exc.name = type < 100 ? "acos" : (type < 200
 						  ? "acosf" : "acosl");;
-		exc.retval = zero;
+		if (_LIB_VERSION == _SVID_)
+		  exc.retval = HUGE;
+		else
+		  exc.retval = NAN;
 		if (_LIB_VERSION == _POSIX_)
 		  __set_errno (EDOM);
 		else if (!__matherr(&exc)) {
@@ -126,7 +131,10 @@ static double zero = 0.0;	/* used as const */
 		exc.type = DOMAIN;
 		exc.name = type < 100 ? "asin" : (type < 200
 						  ? "asinf" : "asinl");
-		exc.retval = zero;
+		if (_LIB_VERSION == _SVID_)
+		  exc.retval = HUGE;
+		else
+		  exc.retval = NAN;
 		if(_LIB_VERSION == _POSIX_)
 		  __set_errno (EDOM);
 		else if (!__matherr(&exc)) {
@@ -145,7 +153,8 @@ static double zero = 0.0;	/* used as const */
 		exc.type = DOMAIN;
 		exc.name = type < 100 ? "atan2" : (type < 200
 						   ? "atan2f" : "atan2l");
-		exc.retval = zero;
+		assert (_LIB_VERSION == _SVID_);
+		exc.retval = HUGE;
 		if(_LIB_VERSION == _POSIX_)
 		  __set_errno (EDOM);
 		else if (!__matherr(&exc)) {
@@ -399,7 +408,7 @@ static double zero = 0.0;	/* used as const */
 		if (_LIB_VERSION == _SVID_)
 		  exc.retval = -HUGE;
 		else
-		  exc.retval = -HUGE_VAL;
+		  exc.retval = NAN;
 		if (_LIB_VERSION == _POSIX_)
 		  __set_errno (EDOM);
 		else if (!__matherr(&exc)) {
@@ -439,7 +448,7 @@ static double zero = 0.0;	/* used as const */
 		if (_LIB_VERSION == _SVID_)
 		  exc.retval = -HUGE;
 		else
-		  exc.retval = -HUGE_VAL;
+		  exc.retval = NAN;
 		if (_LIB_VERSION == _POSIX_)
 		  __set_errno (EDOM);
 		else if (!__matherr(&exc)) {
@@ -500,7 +509,7 @@ static double zero = 0.0;	/* used as const */
 	    case 23:
 	    case 123:
 	    case 223:
-		/* 0**neg */
+		/* -0**neg */
 		exc.type = DOMAIN;
 		exc.name = type < 100 ? "pow" : (type < 200 ? "powf" : "powl");
 		if (_LIB_VERSION == _SVID_)
@@ -516,6 +525,25 @@ static double zero = 0.0;	/* used as const */
 		  __set_errno (EDOM);
 		}
 		break;
+	    case 43:
+	    case 143:
+	    case 243:
+		/* +0**neg */
+		exc.type = DOMAIN;
+		exc.name = type < 100 ? "pow" : (type < 200 ? "powf" : "powl");
+		if (_LIB_VERSION == _SVID_)
+		  exc.retval = zero;
+		else
+		  exc.retval = HUGE_VAL;
+		if (_LIB_VERSION == _POSIX_)
+		  __set_errno (EDOM);
+		else if (!__matherr(&exc)) {
+		  if (_LIB_VERSION == _SVID_) {
+			(void) WRITE2("pow(0,neg): DOMAIN error\n", 25);
+		      }
+		  __set_errno (EDOM);
+		}
+		break;
 	    case 24:
 	    case 124:
 	    case 224:
@@ -842,6 +870,8 @@ static double zero = 0.0;	/* used as const */
 			__set_errno (EDOM);
 		}
 		break;
+
+		/* #### Last used is 43/143/243 ### */
 	}
 	return exc.retval;
 }