about summary refs log tree commit diff
path: root/sysdeps/ieee754/ldbl-128/s_sinl.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2009-05-29 12:00:22 -0700
committerUlrich Drepper <drepper@redhat.com>2009-05-29 12:00:22 -0700
commit7f3394bdf34e28b374e5569a7a74ddac734fb172 (patch)
tree70e5277461d3299d9706f79077843710dddbd177 /sysdeps/ieee754/ldbl-128/s_sinl.c
parentb8bb339f7d684654295aca2dedb69c2c069a7cab (diff)
downloadglibc-7f3394bdf34e28b374e5569a7a74ddac734fb172.tar.gz
glibc-7f3394bdf34e28b374e5569a7a74ddac734fb172.tar.xz
glibc-7f3394bdf34e28b374e5569a7a74ddac734fb172.zip
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.
Diffstat (limited to 'sysdeps/ieee754/ldbl-128/s_sinl.c')
-rw-r--r--sysdeps/ieee754/ldbl-128/s_sinl.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/sysdeps/ieee754/ldbl-128/s_sinl.c b/sysdeps/ieee754/ldbl-128/s_sinl.c
index 446a75f126..dc509e72e5 100644
--- a/sysdeps/ieee754/ldbl-128/s_sinl.c
+++ b/sysdeps/ieee754/ldbl-128/s_sinl.c
@@ -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 {