diff options
author | Andreas Jaeger <aj@suse.de> | 2003-12-28 20:51:20 +0000 |
---|---|---|
committer | Andreas Jaeger <aj@suse.de> | 2003-12-28 20:51:20 +0000 |
commit | 1f510b3faa316bf025ce9544fd90ece3549bac05 (patch) | |
tree | 3ba1bc94e82d3f745a12cb37703a1242da39e72c /sysdeps/ieee754/dbl-64 | |
parent | add144786f959da569ca4ad3a89c6efd409e762e (diff) | |
download | glibc-1f510b3faa316bf025ce9544fd90ece3549bac05.tar glibc-1f510b3faa316bf025ce9544fd90ece3549bac05.tar.gz glibc-1f510b3faa316bf025ce9544fd90ece3549bac05.tar.bz2 glibc-1f510b3faa316bf025ce9544fd90ece3549bac05.zip |
Update.
* sysdeps/ieee754/dbl-64/e_j0.c (__ieee754_y0): Raise only
overflow for 0 as argument. Raise Invalid exception for negative
args.
* sysdeps/ieee754/dbl-64/e_jn.c (__ieee754_yn): Likewise.
* sysdeps/ieee754/dbl-64/e_j1.c (__ieee754_y0): Likewise.
* sysdeps/ieee754/ldb-128/e_jnl.c (__ieee754_ynl): Likewise.
* sysdeps/ieee754/ldb-128/e_j0l.c (__ieee754_y0l): Likewise.
* sysdeps/ieee754/ldb-128/e_j1l.c (__ieee754_y1l): Likewise.
* sysdeps/ieee754/ldb-96/e_jnl.c (__ieee754_ynl): Likewise.
* sysdeps/ieee754/ldb-96/e_j0l.c (__ieee754_y0l): Likewise.
* sysdeps/ieee754/ldb-96/e_j1l.c (__ieee754_y1l): Likewise.
* sysdeps/ieee754/flt-32/e_jnf.c (__ieee754_ynf): Likewise.
* sysdeps/ieee754/flt-32/e_j0f.c (__ieee754_y0f): Likewise.
* sysdeps/ieee754/flt-32/e_j1f.c (__ieee754_y1f): Likewise.
* math/libm-test.inc (yn_test): Expect invalid exception for
negative arguments.
(y0_test): Likewise.
(y1_test): Likewise.
Diffstat (limited to 'sysdeps/ieee754/dbl-64')
-rw-r--r-- | sysdeps/ieee754/dbl-64/e_j0.c | 6 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/e_j1.c | 4 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/e_jn.c | 6 |
3 files changed, 8 insertions, 8 deletions
diff --git a/sysdeps/ieee754/dbl-64/e_j0.c b/sysdeps/ieee754/dbl-64/e_j0.c index 77af5fd18c..302df49d62 100644 --- a/sysdeps/ieee754/dbl-64/e_j0.c +++ b/sysdeps/ieee754/dbl-64/e_j0.c @@ -185,10 +185,10 @@ V[] = {1.27304834834123699328e-02, /* 0x3F8A1270, 0x91C9C71A */ EXTRACT_WORDS(hx,lx,x); ix = 0x7fffffff&hx; - /* Y0(NaN) is NaN, y0(-inf) is Nan, y0(inf) is 0 */ + /* Y0(NaN) is NaN, y0(-inf) is Nan, y0(inf) is 0, y0(0) is -inf. */ if(ix>=0x7ff00000) return one/(x+x*x); - if((ix|lx)==0) return -one/zero; - if(hx<0) return zero/zero; + if((ix|lx)==0) return -HUGE_VAL+x; /* -inf and overflow exception. */ + if(hx<0) return zero/(zero*x); if(ix >= 0x40000000) { /* |x| >= 2.0 */ /* y0(x) = sqrt(2/(pi*x))*(p0(x)*sin(x0)+q0(x)*cos(x0)) * where x0 = x-pi/4 diff --git a/sysdeps/ieee754/dbl-64/e_j1.c b/sysdeps/ieee754/dbl-64/e_j1.c index 260492ae67..8a3b2ffd19 100644 --- a/sysdeps/ieee754/dbl-64/e_j1.c +++ b/sysdeps/ieee754/dbl-64/e_j1.c @@ -190,8 +190,8 @@ static double V0[5] = { ix = 0x7fffffff&hx; /* if Y1(NaN) is NaN, Y1(-inf) is NaN, Y1(inf) is 0 */ if(ix>=0x7ff00000) return one/(x+x*x); - if((ix|lx)==0) return -one/zero; - if(hx<0) return zero/zero; + if((ix|lx)==0) return -HUGE_VAL+x; /* -inf and overflow exception. */; + if(hx<0) return zero/(zero*x); if(ix >= 0x40000000) { /* |x| >= 2.0 */ __sincos (x, &s, &c); ss = -s-c; diff --git a/sysdeps/ieee754/dbl-64/e_jn.c b/sysdeps/ieee754/dbl-64/e_jn.c index 64ba79929d..bf4a13d974 100644 --- a/sysdeps/ieee754/dbl-64/e_jn.c +++ b/sysdeps/ieee754/dbl-64/e_jn.c @@ -20,7 +20,7 @@ static char rcsid[] = "$NetBSD: e_jn.c,v 1.9 1995/05/10 20:45:34 jtc Exp $"; * of order n * * Special cases: - * y0(0)=y1(0)=yn(n,0) = -inf with division by zero signal; + * y0(0)=y1(0)=yn(n,0) = -inf with overflow signal; * y0(-ve)=y1(-ve)=yn(n,-ve) are NaN with invalid signal. * Note 2. About jn(n,x), yn(n,x) * For n=0, j0(x) is called, @@ -236,8 +236,8 @@ static double zero = 0.00000000000000000000e+00; ix = 0x7fffffff&hx; /* if Y(n,NaN) is NaN */ if((ix|((u_int32_t)(lx|-lx))>>31)>0x7ff00000) return x+x; - if((ix|lx)==0) return -one/zero; - if(hx<0) return zero/zero; + if((ix|lx)==0) return -HUGE_VAL+x; /* -inf and overflow exception. */; + if(hx<0) return zero/(zero*x); sign = 1; if(n<0){ n = -n; |