diff options
author | Ulrich Drepper <drepper@redhat.com> | 1997-03-17 03:04:18 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1997-03-17 03:04:18 +0000 |
commit | 81e9dad67243a2ba7c4344e05a5e48b54efe991a (patch) | |
tree | 59f0642026a98ec415938a66395a1fcc85d90676 /sysdeps/libm-ieee754/k_standard.c | |
parent | 0d8733c4fc3695c7987548d10c344445f3eb552d (diff) | |
download | glibc-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.c | 42 |
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; } |