summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--math/s_ccosh_template.c10
-rw-r--r--math/s_cexp_template.c5
-rw-r--r--math/s_csin_template.c11
-rw-r--r--math/s_csinh_template.c10
5 files changed, 16 insertions, 29 deletions
diff --git a/ChangeLog b/ChangeLog
index 5b8443bf84..b3332bcb40 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2016-10-13 Joseph Myers <joseph@codesourcery.com>
+
+ * math/s_ccosh_template.c (M_DECL_FUNC (__ccosh)): Instead of
+ raising FE_INVALID with feraisexcept in case where part of
+ argument is infinite, subtract that part of argument from itself.
+ * math/s_cexp_template.c (M_DECL_FUNC (__cexp)): Likewise.
+ * math/s_csin_template.c (M_DECL_FUNC (__csin)): Likewise.
+ * math/s_csinh_template.c (M_DECL_FUNC (__csinh)): Likewise.
+
2016-10-12 Joseph Myers <joseph@codesourcery.com>
* math/libm-test.inc (totalorder_test_data): Add more tests.
diff --git a/math/s_ccosh_template.c b/math/s_ccosh_template.c
index 7fea5c9f57..5240724392 100644
--- a/math/s_ccosh_template.c
+++ b/math/s_ccosh_template.c
@@ -88,10 +88,7 @@ M_DECL_FUNC (__ccosh) (CFLOAT x)
else
{
__imag__ retval = __real__ x == 0 ? 0 : M_NAN;
- __real__ retval = M_NAN;
-
- if (icls == FP_INFINITE)
- feraiseexcept (FE_INVALID);
+ __real__ retval = __imag__ x - __imag__ x;
}
}
else if (rcls == FP_INFINITE)
@@ -125,10 +122,7 @@ M_DECL_FUNC (__ccosh) (CFLOAT x)
else
{
__real__ retval = M_HUGE_VAL;
- __imag__ retval = M_NAN;
-
- if (icls == FP_INFINITE)
- feraiseexcept (FE_INVALID);
+ __imag__ retval = __imag__ x - __imag__ x;
}
}
else
diff --git a/math/s_cexp_template.c b/math/s_cexp_template.c
index a60afe0cac..dd46d96a32 100644
--- a/math/s_cexp_template.c
+++ b/math/s_cexp_template.c
@@ -121,10 +121,7 @@ M_DECL_FUNC (__cexp) (CFLOAT x)
else if (signbit (__real__ x) == 0)
{
__real__ retval = M_HUGE_VAL;
- __imag__ retval = M_NAN;
-
- if (icls == FP_INFINITE)
- feraiseexcept (FE_INVALID);
+ __imag__ retval = __imag__ x - __imag__ x;
}
else
{
diff --git a/math/s_csin_template.c b/math/s_csin_template.c
index 59d887693c..2fe0b157cb 100644
--- a/math/s_csin_template.c
+++ b/math/s_csin_template.c
@@ -96,11 +96,8 @@ M_DECL_FUNC (__csin) (CFLOAT x)
if (icls == FP_ZERO)
{
/* Imaginary part is 0.0. */
- __real__ retval = M_NAN;
+ __real__ retval = __real__ x - __real__ x;
__imag__ retval = __imag__ x;
-
- if (rcls == FP_INFINITE)
- feraiseexcept (FE_INVALID);
}
else
{
@@ -145,12 +142,8 @@ M_DECL_FUNC (__csin) (CFLOAT x)
}
else
{
- /* The addition raises the invalid exception. */
- __real__ retval = M_NAN;
+ __real__ retval = __real__ x - __real__ x;
__imag__ retval = M_HUGE_VAL;
-
- if (rcls == FP_INFINITE)
- feraiseexcept (FE_INVALID);
}
}
else
diff --git a/math/s_csinh_template.c b/math/s_csinh_template.c
index 45fbb36fd9..e5fd4d5857 100644
--- a/math/s_csinh_template.c
+++ b/math/s_csinh_template.c
@@ -97,10 +97,7 @@ M_DECL_FUNC (__csinh) (CFLOAT x)
{
/* Real part is 0.0. */
__real__ retval = M_COPYSIGN (0, negate ? -1 : 1);
- __imag__ retval = M_NAN;
-
- if (icls == FP_INFINITE)
- feraiseexcept (FE_INVALID);
+ __imag__ retval = __imag__ x - __imag__ x;
}
else
{
@@ -144,10 +141,7 @@ M_DECL_FUNC (__csinh) (CFLOAT x)
else
{
__real__ retval = M_HUGE_VAL;
- __imag__ retval = M_NAN;
-
- if (icls == FP_INFINITE)
- feraiseexcept (FE_INVALID);
+ __imag__ retval = __imag__ x - __imag__ x;
}
}
else