about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/ieee754/dbl-64/s_sincos.c3
-rw-r--r--sysdeps/ieee754/flt-32/s_sincosf.c3
-rw-r--r--sysdeps/ieee754/ldbl-128/s_sincosl.c3
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_sincosl.c3
-rw-r--r--sysdeps/ieee754/ldbl-96/s_sincosl.c3
5 files changed, 15 insertions, 0 deletions
diff --git a/sysdeps/ieee754/dbl-64/s_sincos.c b/sysdeps/ieee754/dbl-64/s_sincos.c
index 7d3b10139f..c8a99991cc 100644
--- a/sysdeps/ieee754/dbl-64/s_sincos.c
+++ b/sysdeps/ieee754/dbl-64/s_sincos.c
@@ -17,6 +17,7 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <errno.h>
 #include <math.h>
 
 #include <math_private.h>
@@ -36,6 +37,8 @@ __sincos (double x, double *sinx, double *cosx)
     {
       /* sin(Inf or NaN) is NaN */
       *sinx = *cosx = x - x;
+      if (__isinf_ns (x))
+	__set_errno (EDOM);
     }
   else
     {
diff --git a/sysdeps/ieee754/flt-32/s_sincosf.c b/sysdeps/ieee754/flt-32/s_sincosf.c
index 5cf5db03cb..596e076609 100644
--- a/sysdeps/ieee754/flt-32/s_sincosf.c
+++ b/sysdeps/ieee754/flt-32/s_sincosf.c
@@ -17,6 +17,7 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <errno.h>
 #include <math.h>
 
 #include <math_private.h>
@@ -46,6 +47,8 @@ SINCOSF_FUNC (float x, float *sinx, float *cosx)
     {
       /* sin(Inf or NaN) is NaN */
       *sinx = *cosx = x - x;
+      if (ix == 0x7f800000)
+	__set_errno (EDOM);
     }
   else
     {
diff --git a/sysdeps/ieee754/ldbl-128/s_sincosl.c b/sysdeps/ieee754/ldbl-128/s_sincosl.c
index 175a617d1a..6c4cbd7237 100644
--- a/sysdeps/ieee754/ldbl-128/s_sincosl.c
+++ b/sysdeps/ieee754/ldbl-128/s_sincosl.c
@@ -18,6 +18,7 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <errno.h>
 #include <math.h>
 
 #include <math_private.h>
@@ -38,6 +39,8 @@ __sincosl (long double x, long double *sinx, long double *cosx)
     {
       /* sin(Inf or NaN) is NaN */
       *sinx = *cosx = x - x;
+      if (__isinf_nsl (x))
+	__set_errno (EDOM);
     }
   else
     {
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_sincosl.c b/sysdeps/ieee754/ldbl-128ibm/s_sincosl.c
index f52e73385d..8a49c54d6c 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_sincosl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_sincosl.c
@@ -18,6 +18,7 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <errno.h>
 #include <math.h>
 
 #include <math_private.h>
@@ -41,6 +42,8 @@ __sincosl (long double x, long double *sinx, long double *cosx)
     {
       /* sin(Inf or NaN) is NaN */
       *sinx = *cosx = x - x;
+      if (__isinf_nsl (x))
+	__set_errno (EDOM);
     }
   else
     {
diff --git a/sysdeps/ieee754/ldbl-96/s_sincosl.c b/sysdeps/ieee754/ldbl-96/s_sincosl.c
index c7a161a770..37067bdaeb 100644
--- a/sysdeps/ieee754/ldbl-96/s_sincosl.c
+++ b/sysdeps/ieee754/ldbl-96/s_sincosl.c
@@ -17,6 +17,7 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <errno.h>
 #include <math.h>
 
 #include <math_private.h>
@@ -41,6 +42,8 @@ __sincosl (long double x, long double *sinx, long double *cosx)
     {
       /* sin(Inf or NaN) is NaN */
       *sinx = *cosx = x - x;
+      if (__isinf_nsl (x))
+	__set_errno (EDOM);
     }
   else
     {