This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch, master, updated. glibc-2.14-573-gb27e24b


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  b27e24b8746b20d9ded426f202b79c3b7aeb953e (commit)
      from  60e8585f2a2aa288a403a581f1dc8d3fc373598b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=b27e24b8746b20d9ded426f202b79c3b7aeb953e

commit b27e24b8746b20d9ded426f202b79c3b7aeb953e
Author: Richard B. Kreckel <kreckel@ginac.de>
Date:   Wed Dec 21 21:01:29 2011 -0500

    Fix sign errr in some cacosh results

diff --git a/ChangeLog b/ChangeLog
index 51f148d..1ccc3dd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2011-11-18  Richard B. Kreckel  <kreckel@ginac.de>
+
+	[BZ #13305]
+	* math/s_cacosh.c: Fix rare miscomputation in cacosh().
+	* math/s_cacoshf.c: Likewise.
+	* math/s_cacoshl.c: Likewise.
+
 2011-12-21  Ulrich Drepper  <drepper@gmail.com>
 
 	[BZ #13439]
diff --git a/NEWS b/NEWS
index aba4a8d..7e4e169 100644
--- a/NEWS
+++ b/NEWS
@@ -12,8 +12,8 @@ Version 2.15
   6779, 6783, 9696, 10103, 10709, 11589, 12403, 12847, 12868, 12852, 12874,
   12885, 12892, 12907, 12922, 12935, 13007, 13021, 13067, 13068, 13090,
   13092, 13114, 13118, 13123, 13134, 13138, 13147, 13150, 13179, 13192,
-  13268, 13276, 13291, 13335, 13337, 13344, 13358, 13367, 13439, 13446,
-  13472, 13484, 13506, 13515, 13524
+  13268, 13276, 13291, 13305, 13335, 13337, 13344, 13358, 13367, 13439,
+  13446, 13472, 13484, 13506, 13515, 13524
 
 * New program pldd to list loaded object of a process
   Implemented by Ulrich Drepper.
diff --git a/math/s_cacosh.c b/math/s_cacosh.c
index bec6d38..df5ce69 100644
--- a/math/s_cacosh.c
+++ b/math/s_cacosh.c
@@ -74,17 +74,13 @@ __cacosh (__complex__ double x)
 
       y = __csqrt (y);
 
-      if (__real__ x < 0.0)
+      if (signbit (__real__ x))
 	y = -y;
 
       __real__ y += __real__ x;
       __imag__ y += __imag__ x;
 
       res = __clog (y);
-
-      /* We have to use the positive branch.  */
-      if (__real__ res < 0.0)
-	res = -res;
     }
 
   return res;
diff --git a/math/s_cacoshf.c b/math/s_cacoshf.c
index 0d6bd75..aa4696f 100644
--- a/math/s_cacoshf.c
+++ b/math/s_cacoshf.c
@@ -1,5 +1,5 @@
 /* Return arc hyperbole cosine for float value.
-   Copyright (C) 1997, 2006 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2006, 2011 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -67,7 +67,6 @@ __cacoshf (__complex__ float x)
     }
   else
     {
-#if 1
       __complex__ float y;
 
       __real__ y = (__real__ x - __imag__ x) * (__real__ x + __imag__ x) - 1.0;
@@ -75,30 +74,13 @@ __cacoshf (__complex__ float x)
 
       y = __csqrtf (y);
 
-      if (__real__ x < 0.0)
+      if (signbit (__real__ x))
 	y = -y;
 
       __real__ y += __real__ x;
       __imag__ y += __imag__ x;
 
       res = __clogf (y);
-#else
-      float re2 = __real__ x * __real__ x;
-      float im2 = __imag__ x * __imag__ x;
-      float sq = re2 - im2 - 1.0;
-      float ro = __ieee754_sqrtf (sq * sq + 4 * re2 * im2);
-      float a = __ieee754_sqrtf ((sq + ro) / 2.0);
-      float b = __ieee754_sqrtf ((-sq + ro) / 2.0);
-
-      __real__ res = 0.5 * __ieee754_logf (re2 + __real__ x * 2 * a
-					   + im2 + __imag__ x * 2 * b
-					   + ro);
-      __imag__ res = __ieee754_atan2f (__imag__ x + b, __real__ x + a);
-#endif
-
-      /* We have to use the positive branch.  */
-      if (__real__ res < 0.0)
-	res = -res;
     }
 
   return res;
diff --git a/math/s_cacoshl.c b/math/s_cacoshl.c
index 36f7a5f..b90b196 100644
--- a/math/s_cacoshl.c
+++ b/math/s_cacoshl.c
@@ -74,17 +74,13 @@ __cacoshl (__complex__ long double x)
 
       y = __csqrtl (y);
 
-      if (__real__ x < 0.0)
+      if (signbit (__real__ x))
 	y = -y;
 
       __real__ y += __real__ x;
       __imag__ y += __imag__ x;
 
       res = __clogl (y);
-
-      /* We have to use the positive branch.  */
-      if (__real__ res < 0.0)
-	res = -res;
     }
 
   return res;

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog        |    7 +++++++
 NEWS             |    4 ++--
 math/s_cacosh.c  |    6 +-----
 math/s_cacoshf.c |   22 ++--------------------
 math/s_cacoshl.c |    6 +-----
 5 files changed, 13 insertions(+), 32 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]