diff options
Diffstat (limited to 'math/s_clog.c')
-rw-r--r-- | math/s_clog.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/math/s_clog.c b/math/s_clog.c index e2b5846f2f..15f04594e9 100644 --- a/math/s_clog.c +++ b/math/s_clog.c @@ -1,5 +1,5 @@ /* Compute complex natural logarithm. - Copyright (C) 1997-2014 Free Software Foundation, Inc. + Copyright (C) 1997-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. @@ -29,7 +29,7 @@ __clog (__complex__ double x) int rcls = fpclassify (__real__ x); int icls = fpclassify (__imag__ x); - if (__builtin_expect (rcls == FP_ZERO && icls == FP_ZERO, 0)) + if (__glibc_unlikely (rcls == FP_ZERO && icls == FP_ZERO)) { /* Real and imaginary part are 0.0. */ __imag__ result = signbit (__real__ x) ? M_PI : 0.0; @@ -37,7 +37,7 @@ __clog (__complex__ double x) /* Yes, the following line raises an exception. */ __real__ result = -1.0 / fabs (__real__ x); } - else if (__builtin_expect (rcls != FP_NAN && icls != FP_NAN, 1)) + else if (__glibc_likely (rcls != FP_NAN && icls != FP_NAN)) { /* Neither real nor imaginary part is NaN. */ double absx = fabs (__real__ x), absy = fabs (__imag__ x); @@ -68,12 +68,9 @@ __clog (__complex__ double x) double absy2 = absy * absy; if (absy2 <= DBL_MIN * 2.0) { -#if __FLT_EVAL_METHOD__ == 0 - __real__ result = absy2 / 2.0 - absy2 * absy2 / 4.0; -#else - volatile double force_underflow = absy2 * absy2 / 4.0; - __real__ result = absy2 / 2.0 - force_underflow; -#endif + double force_underflow = absy2 * absy2; + __real__ result = absy2 / 2.0; + math_force_eval (force_underflow); } else __real__ result = __log1p (absy2) / 2.0; |