summaryrefslogtreecommitdiff
path: root/math/s_clog.c
diff options
context:
space:
mode:
Diffstat (limited to 'math/s_clog.c')
-rw-r--r--math/s_clog.c15
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;