mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-26 06:50:07 +00:00
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.
This commit is contained in:
parent
add144786f
commit
1f510b3faa
20
ChangeLog
20
ChangeLog
@ -1,5 +1,25 @@
|
|||||||
2003-12-28 Andreas Jaeger <aj@suse.de>
|
2003-12-28 Andreas Jaeger <aj@suse.de>
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
* sysdeps/ieee754/dbl-64/e_exp.c (__ieee754_exp): Do not raise
|
* sysdeps/ieee754/dbl-64/e_exp.c (__ieee754_exp): Do not raise
|
||||||
execptions for exp(NaN).
|
execptions for exp(NaN).
|
||||||
|
|
||||||
|
@ -185,10 +185,10 @@ V[] = {1.27304834834123699328e-02, /* 0x3F8A1270, 0x91C9C71A */
|
|||||||
|
|
||||||
EXTRACT_WORDS(hx,lx,x);
|
EXTRACT_WORDS(hx,lx,x);
|
||||||
ix = 0x7fffffff&hx;
|
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>=0x7ff00000) return one/(x+x*x);
|
||||||
if((ix|lx)==0) return -one/zero;
|
if((ix|lx)==0) return -HUGE_VAL+x; /* -inf and overflow exception. */
|
||||||
if(hx<0) return zero/zero;
|
if(hx<0) return zero/(zero*x);
|
||||||
if(ix >= 0x40000000) { /* |x| >= 2.0 */
|
if(ix >= 0x40000000) { /* |x| >= 2.0 */
|
||||||
/* y0(x) = sqrt(2/(pi*x))*(p0(x)*sin(x0)+q0(x)*cos(x0))
|
/* y0(x) = sqrt(2/(pi*x))*(p0(x)*sin(x0)+q0(x)*cos(x0))
|
||||||
* where x0 = x-pi/4
|
* where x0 = x-pi/4
|
||||||
|
@ -190,8 +190,8 @@ static double V0[5] = {
|
|||||||
ix = 0x7fffffff&hx;
|
ix = 0x7fffffff&hx;
|
||||||
/* if Y1(NaN) is NaN, Y1(-inf) is NaN, Y1(inf) is 0 */
|
/* if Y1(NaN) is NaN, Y1(-inf) is NaN, Y1(inf) is 0 */
|
||||||
if(ix>=0x7ff00000) return one/(x+x*x);
|
if(ix>=0x7ff00000) return one/(x+x*x);
|
||||||
if((ix|lx)==0) return -one/zero;
|
if((ix|lx)==0) return -HUGE_VAL+x; /* -inf and overflow exception. */;
|
||||||
if(hx<0) return zero/zero;
|
if(hx<0) return zero/(zero*x);
|
||||||
if(ix >= 0x40000000) { /* |x| >= 2.0 */
|
if(ix >= 0x40000000) { /* |x| >= 2.0 */
|
||||||
__sincos (x, &s, &c);
|
__sincos (x, &s, &c);
|
||||||
ss = -s-c;
|
ss = -s-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
|
* of order n
|
||||||
*
|
*
|
||||||
* Special cases:
|
* 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.
|
* y0(-ve)=y1(-ve)=yn(n,-ve) are NaN with invalid signal.
|
||||||
* Note 2. About jn(n,x), yn(n,x)
|
* Note 2. About jn(n,x), yn(n,x)
|
||||||
* For n=0, j0(x) is called,
|
* For n=0, j0(x) is called,
|
||||||
@ -236,8 +236,8 @@ static double zero = 0.00000000000000000000e+00;
|
|||||||
ix = 0x7fffffff&hx;
|
ix = 0x7fffffff&hx;
|
||||||
/* if Y(n,NaN) is NaN */
|
/* if Y(n,NaN) is NaN */
|
||||||
if((ix|((u_int32_t)(lx|-lx))>>31)>0x7ff00000) return x+x;
|
if((ix|((u_int32_t)(lx|-lx))>>31)>0x7ff00000) return x+x;
|
||||||
if((ix|lx)==0) return -one/zero;
|
if((ix|lx)==0) return -HUGE_VAL+x; /* -inf and overflow exception. */;
|
||||||
if(hx<0) return zero/zero;
|
if(hx<0) return zero/(zero*x);
|
||||||
sign = 1;
|
sign = 1;
|
||||||
if(n<0){
|
if(n<0){
|
||||||
n = -n;
|
n = -n;
|
||||||
|
@ -131,10 +131,10 @@ v04 = 4.4111031494e-10; /* 0x2ff280c2 */
|
|||||||
|
|
||||||
GET_FLOAT_WORD(hx,x);
|
GET_FLOAT_WORD(hx,x);
|
||||||
ix = 0x7fffffff&hx;
|
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>=0x7f800000) return one/(x+x*x);
|
if(ix>=0x7f800000) return one/(x+x*x);
|
||||||
if(ix==0) return -one/zero;
|
if(ix==0) return -HUGE_VALF+x; /* -inf and overflow exception. */
|
||||||
if(hx<0) return zero/zero;
|
if(hx<0) return zero/(zero*x);
|
||||||
if(ix >= 0x40000000) { /* |x| >= 2.0 */
|
if(ix >= 0x40000000) { /* |x| >= 2.0 */
|
||||||
/* y0(x) = sqrt(2/(pi*x))*(p0(x)*sin(x0)+q0(x)*cos(x0))
|
/* y0(x) = sqrt(2/(pi*x))*(p0(x)*sin(x0)+q0(x)*cos(x0))
|
||||||
* where x0 = x-pi/4
|
* where x0 = x-pi/4
|
||||||
|
@ -134,8 +134,8 @@ static float V0[5] = {
|
|||||||
ix = 0x7fffffff&hx;
|
ix = 0x7fffffff&hx;
|
||||||
/* if Y1(NaN) is NaN, Y1(-inf) is NaN, Y1(inf) is 0 */
|
/* if Y1(NaN) is NaN, Y1(-inf) is NaN, Y1(inf) is 0 */
|
||||||
if(ix>=0x7f800000) return one/(x+x*x);
|
if(ix>=0x7f800000) return one/(x+x*x);
|
||||||
if(ix==0) return -one/zero;
|
if(ix==0) return -HUGE_VALF+x; /* -inf and overflow exception. */
|
||||||
if(hx<0) return zero/zero;
|
if(hx<0) return zero/(zero*x);
|
||||||
if(ix >= 0x40000000) { /* |x| >= 2.0 */
|
if(ix >= 0x40000000) { /* |x| >= 2.0 */
|
||||||
__sincosf (x, &s, &c);
|
__sincosf (x, &s, &c);
|
||||||
ss = -s-c;
|
ss = -s-c;
|
||||||
|
@ -187,8 +187,8 @@ static float zero = 0.0000000000e+00;
|
|||||||
ix = 0x7fffffff&hx;
|
ix = 0x7fffffff&hx;
|
||||||
/* if Y(n,NaN) is NaN */
|
/* if Y(n,NaN) is NaN */
|
||||||
if(ix>0x7f800000) return x+x;
|
if(ix>0x7f800000) return x+x;
|
||||||
if(ix==0) return -one/zero;
|
if(ix==0) return -HUGE_VALF+x; /* -inf and overflow exception. */
|
||||||
if(hx<0) return zero/zero;
|
if(hx<0) return zero/(zero*x);
|
||||||
sign = 1;
|
sign = 1;
|
||||||
if(n<0){
|
if(n<0){
|
||||||
n = -n;
|
n = -n;
|
||||||
|
@ -827,8 +827,8 @@ long double
|
|||||||
if (x <= 0.0L)
|
if (x <= 0.0L)
|
||||||
{
|
{
|
||||||
if (x < 0.0L)
|
if (x < 0.0L)
|
||||||
return (zero / zero);
|
return (zero / (zero * x));
|
||||||
return 1.0L / zero;
|
return -HUGE_VALL + x;
|
||||||
}
|
}
|
||||||
xx = fabsl (x);
|
xx = fabsl (x);
|
||||||
if (xx <= 2.0L)
|
if (xx <= 2.0L)
|
||||||
|
@ -834,8 +834,8 @@ __ieee754_y1l (long double x)
|
|||||||
if (x <= 0.0L)
|
if (x <= 0.0L)
|
||||||
{
|
{
|
||||||
if (x < 0.0L)
|
if (x < 0.0L)
|
||||||
return (zero / zero);
|
return (zero / (zero * x));
|
||||||
return -1.0L / zero;
|
return -HUGE_VALL + x;
|
||||||
}
|
}
|
||||||
xx = fabsl (x);
|
xx = fabsl (x);
|
||||||
if (xx <= 2.0L)
|
if (xx <= 2.0L)
|
||||||
|
@ -323,9 +323,9 @@ __ieee754_ynl (n, x)
|
|||||||
if (x <= 0.0L)
|
if (x <= 0.0L)
|
||||||
{
|
{
|
||||||
if (x == 0.0L)
|
if (x == 0.0L)
|
||||||
return -one / zero;
|
return -HUGE_VALL + x;
|
||||||
if (se & 0x80000000)
|
if (se & 0x80000000)
|
||||||
return zero / zero;
|
return zero / (zero * x);
|
||||||
}
|
}
|
||||||
sign = 1;
|
sign = 1;
|
||||||
if (n < 0)
|
if (n < 0)
|
||||||
|
@ -232,11 +232,11 @@ __ieee754_y0l (x)
|
|||||||
ix = se & 0x7fff;
|
ix = se & 0x7fff;
|
||||||
/* Y0(NaN) is NaN, y0(-inf) is Nan, y0(inf) is 0 */
|
/* Y0(NaN) is NaN, y0(-inf) is Nan, y0(inf) is 0 */
|
||||||
if (se & 0x8000)
|
if (se & 0x8000)
|
||||||
return zero / zero;
|
return zero / (zero * x);
|
||||||
if (ix >= 0x7fff)
|
if (ix >= 0x7fff)
|
||||||
return one / (x + x * x);
|
return one / (x + x * x);
|
||||||
if ((i0 | i1) == 0)
|
if ((i0 | i1) == 0)
|
||||||
return -one / zero;
|
return -HUGE_VALL + x; /* -inf and overflow exception. */
|
||||||
if (ix >= 0x4000)
|
if (ix >= 0x4000)
|
||||||
{ /* |x| >= 2.0 */
|
{ /* |x| >= 2.0 */
|
||||||
|
|
||||||
|
@ -224,11 +224,11 @@ __ieee754_y1l (x)
|
|||||||
ix = se & 0x7fff;
|
ix = se & 0x7fff;
|
||||||
/* if Y1(NaN) is NaN, Y1(-inf) is NaN, Y1(inf) is 0 */
|
/* if Y1(NaN) is NaN, Y1(-inf) is NaN, Y1(inf) is 0 */
|
||||||
if (se & 0x8000)
|
if (se & 0x8000)
|
||||||
return zero / zero;
|
return zero / (zero * x);
|
||||||
if (ix >= 0x7fff)
|
if (ix >= 0x7fff)
|
||||||
return one / (x + x * x);
|
return one / (x + x * x);
|
||||||
if ((i0 | i1) == 0)
|
if ((i0 | i1) == 0)
|
||||||
return -one / zero;
|
return -HUGE_VALL + x; /* -inf and overflow exception. */
|
||||||
if (ix >= 0x4000)
|
if (ix >= 0x4000)
|
||||||
{ /* |x| >= 2.0 */
|
{ /* |x| >= 2.0 */
|
||||||
__sincosl (x, &s, &c);
|
__sincosl (x, &s, &c);
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
* of order n
|
* of order n
|
||||||
*
|
*
|
||||||
* Special cases:
|
* 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.
|
* y0(-ve)=y1(-ve)=yn(n,-ve) are NaN with invalid signal.
|
||||||
* Note 2. About jn(n,x), yn(n,x)
|
* Note 2. About jn(n,x), yn(n,x)
|
||||||
* For n=0, j0(x) is called,
|
* For n=0, j0(x) is called,
|
||||||
@ -312,9 +312,9 @@ __ieee754_ynl (n, x)
|
|||||||
if ((ix == 0x7fff) && ((i0 & 0x7fffffff) != 0))
|
if ((ix == 0x7fff) && ((i0 & 0x7fffffff) != 0))
|
||||||
return x + x;
|
return x + x;
|
||||||
if ((ix | i0 | i1) == 0)
|
if ((ix | i0 | i1) == 0)
|
||||||
return -one / zero;
|
return -HUGE_VALL + x; /* -inf and overflow exception. */
|
||||||
if (se & 0x8000)
|
if (se & 0x8000)
|
||||||
return zero / zero;
|
return zero / (zero * x);
|
||||||
sign = 1;
|
sign = 1;
|
||||||
if (n < 0)
|
if (n < 0)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user