mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-28 20:23:35 +08:00
Fix errno for boundary conditions in 128-bit long double.
Similar to the changes which went already in for the other formats, follow POSIX rules for errno.
This commit is contained in:
parent
b8bb339f7d
commit
7f3394bdf3
11
ChangeLog
11
ChangeLog
@ -1,3 +1,14 @@
|
||||
2009-05-29 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* sysdeps/ieee754/ldbl-128/s_expm1l.c: Include <errno.h>.
|
||||
(__expm1l): Set errno to ERANGE on overflow.
|
||||
* sysdeps/ieee754/ldbl-128/s_tanl.c: Include <errno.h>.
|
||||
(__tanl): Set errno to EDOM for ±Inf.
|
||||
* sysdeps/ieee754/ldbl-128/s_cosl.c: Include <errno.h>.
|
||||
(__cosl): Set errno to EDOM for ±Inf.
|
||||
* sysdeps/ieee754/ldbl-128/s_sinl.c: Include <errno.h>.
|
||||
(__sinl): Set errno to EDOM for ±Inf.
|
||||
|
||||
2009-05-29 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* sysdeps/s390/s390-32/__longjmp.c (__longjmp): If CHECK_SP is
|
||||
|
@ -44,6 +44,7 @@
|
||||
* TRIG(x) returns trig(x) nearly rounded
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
@ -66,7 +67,14 @@
|
||||
return __kernel_cosl(x,z);
|
||||
|
||||
/* cos(Inf or NaN) is NaN */
|
||||
else if (ix>=0x7fff000000000000LL) return x-x;
|
||||
else if (ix>=0x7fff000000000000LL) {
|
||||
if (ix == 0x7fff000000000000LL) {
|
||||
GET_LDOUBLE_LSW64(n,x);
|
||||
if (n == 0)
|
||||
__set_errno (EDOM);
|
||||
}
|
||||
return x-x;
|
||||
}
|
||||
|
||||
/* argument reduction needed */
|
||||
else {
|
||||
|
@ -53,6 +53,7 @@
|
||||
|
||||
|
||||
|
||||
#include <errno.h>
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
@ -121,7 +122,10 @@ __expm1l (long double x)
|
||||
|
||||
/* Overflow. */
|
||||
if (x > maxlog)
|
||||
{
|
||||
__set_errno (ERANGE);
|
||||
return (big * big);
|
||||
}
|
||||
|
||||
/* Minimum value. */
|
||||
if (x < minarg)
|
||||
|
@ -44,6 +44,7 @@
|
||||
* TRIG(x) returns trig(x) nearly rounded
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
@ -66,7 +67,14 @@
|
||||
return __kernel_sinl(x,z,0);
|
||||
|
||||
/* sin(Inf or NaN) is NaN */
|
||||
else if (ix>=0x7fff000000000000LL) return x-x;
|
||||
else if (ix>=0x7fff000000000000LL) {
|
||||
if (ix == 0x7fff000000000000LL) {
|
||||
GET_LDOUBLE_LSW64(n,x);
|
||||
if (n == 0)
|
||||
__set_errno (EDOM);
|
||||
}
|
||||
return x-x;
|
||||
}
|
||||
|
||||
/* argument reduction needed */
|
||||
else {
|
||||
|
@ -44,6 +44,7 @@
|
||||
* TRIG(x) returns trig(x) nearly rounded
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
@ -65,7 +66,14 @@
|
||||
if(ix <= 0x3ffe921fb54442d1LL) return __kernel_tanl(x,z,1);
|
||||
|
||||
/* tanl(Inf or NaN) is NaN */
|
||||
else if (ix>=0x7fff000000000000LL) return x-x; /* NaN */
|
||||
else if (ix>=0x7fff000000000000LL) {
|
||||
if (ix == 0x7fff000000000000LL) {
|
||||
GET_LDOUBLE_LSW64(n,x);
|
||||
if (n == 0)
|
||||
__set_errno (EDOM);
|
||||
}
|
||||
return x-x; /* NaN */
|
||||
}
|
||||
|
||||
/* argument reduction needed */
|
||||
else {
|
||||
|
Loading…
Reference in New Issue
Block a user