diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | math/s_ccosh_template.c | 10 | ||||
-rw-r--r-- | math/s_cexp_template.c | 5 | ||||
-rw-r--r-- | math/s_csin_template.c | 11 | ||||
-rw-r--r-- | math/s_csinh_template.c | 10 |
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 |