summaryrefslogtreecommitdiff
path: root/math/s_catan.c
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2016-08-20 19:50:45 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2016-08-20 19:50:45 +0200
commit4dd9e35bfd35d3138bc44169baba098005bad51e (patch)
treea4939c43a9c3fe00eb27f023e14acc5e1fe8808c /math/s_catan.c
parentbd42a4599d1b6f77bcfe1e4f67b7cbd9e1cb2dfd (diff)
parentf76453c31593957fec1a99b986bfa5506618b79c (diff)
Merge commit 'refs/top-bases/t/bigmem' into t/bigmem
Diffstat (limited to 'math/s_catan.c')
-rw-r--r--math/s_catan.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/math/s_catan.c b/math/s_catan.c
index 87cdd31295..880473ba44 100644
--- a/math/s_catan.c
+++ b/math/s_catan.c
@@ -1,5 +1,5 @@
/* Return arc tangent of complex double value.
- 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 @@ __catan (__complex__ double x)
int rcls = fpclassify (__real__ x);
int icls = fpclassify (__imag__ x);
- if (__builtin_expect (rcls <= FP_INFINITE || icls <= FP_INFINITE, 0))
+ if (__glibc_unlikely (rcls <= FP_INFINITE || icls <= FP_INFINITE))
{
if (rcls == FP_INFINITE)
{
@@ -55,7 +55,7 @@ __catan (__complex__ double x)
__imag__ res = __nan ("");
}
}
- else if (__builtin_expect (rcls == FP_ZERO && icls == FP_ZERO, 0))
+ else if (__glibc_unlikely (rcls == FP_ZERO && icls == FP_ZERO))
{
res = x;
}
@@ -89,7 +89,11 @@ __catan (__complex__ double x)
}
if (absy < DBL_EPSILON / 2.0)
- den = (1.0 - absx) * (1.0 + absx);
+ {
+ den = (1.0 - absx) * (1.0 + absx);
+ if (den == -0.0)
+ den = 0.0;
+ }
else if (absx >= 1.0)
den = (1.0 - absx) * (1.0 + absx) - absy * absy;
else if (absx >= 0.75 || absy >= 0.5)