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.17-459-ge42a38d


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  e42a38dd9dd4bbeb0fbd6e99f35d796ba37b6879 (commit)
      from  2e0fb52187504fad6657c9462ce650a540d5e387 (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://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=e42a38dd9dd4bbeb0fbd6e99f35d796ba37b6879

commit e42a38dd9dd4bbeb0fbd6e99f35d796ba37b6879
Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Date:   Fri Mar 22 12:39:10 2013 -0300

    BZ#13889: expl (709.75) wrongly overflows for ldbl-128ibm
    
    The patch increase the high value to check if expl overflows. Current
    high mark value is not really correct, the algorithm accepts high values.
    It also adds a correct wrapper function to check for overflow and underflow.

diff --git a/ChangeLog b/ChangeLog
index de9e54e..13c26f1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2013-03-19  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+
+	[BZ #13889]
+	* sysdeps/ieee754/ldbl-128ibm/e_expl.c (__ieee754_expl): Increase the
+	high value to check if expl overflow.
+	* sysdeps/ieee754/ldbl-128ibm/w_expl.c (__expl): Fix threshold constants
+	to check for underflow and overflow.
+	* math/libm-test.inc: Add exp test.
+
 2013-03-21  Dmitry V. Levin  <ldv@altlinux.org>
 
 	[BZ #11120]
diff --git a/NEWS b/NEWS
index f0965d6..8bb43ec 100644
--- a/NEWS
+++ b/NEWS
@@ -9,10 +9,10 @@ Version 2.18
 
 * The following bugs are resolved with this release:
 
-  11120, 11561, 12723, 13550, 13951, 14142, 14176, 14200, 14317, 14327,
-  14496, 14812, 14920, 14964, 14981, 14982, 14985, 14994, 14996, 15003,
-  15006, 15020, 15023, 15036, 15054, 15055, 15062, 15078, 15160, 15232,
-  15234, 15283, 15285, 15287.
+  11120, 11561, 12723, 13550, 13889, 13951, 14142, 14176, 14200, 14317,
+  14327, 14496, 14812, 14920, 14964, 14981, 14982, 14985, 14994, 14996,
+  15003, 15006, 15020, 15023, 15036, 15054, 15055, 15062, 15078, 15160,
+  15232, 15234, 15283, 15285, 15287.
 
 * Add support for calling C++11 thread_local object destructors on thread
   and program exit.  This needs compiler support for offloading C++11
diff --git a/math/libm-test.inc b/math/libm-test.inc
index 1b70c35..85ae23f 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -4564,6 +4564,9 @@ exp_test (void)
   TEST_f_f (exp, 0.75L, 2.11700001661267466854536981983709561L);
   TEST_f_f (exp, 50.0L, 5184705528587072464087.45332293348538L);
   TEST_f_f (exp, 88.72269439697265625L, 3.40233126623160774937554134772290447915e38L);
+#ifndef TEST_FLOAT
+  TEST_f_f (exp, 709.75L, 1.739836873264160557698252711673830393864768e+308L);
+#endif
 #if defined TEST_LDOUBLE && __LDBL_MAX_EXP__ > 1024
   /* The result can only be represented in sane long double.  */
   TEST_f_f (exp, 1000.0L, 0.197007111401704699388887935224332313e435L);
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_expl.c b/sysdeps/ieee754/ldbl-128ibm/e_expl.c
index 8236390..9fd6198 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_expl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_expl.c
@@ -70,11 +70,11 @@
 static const long double C[] = {
 /* Smallest integer x for which e^x overflows.  */
 #define himark C[0]
- 709.08956571282405153382846025171462914L,
+ 709.78271289338399678773454114191496482L,
 
 /* Largest integer x for which e^x underflows.  */
 #define lomark C[1]
--744.44007192138121808966388925909996033L,
+-744.44007192138126231410729844608163411L,
 
 /* 3x2^96 */
 #define THREEp96 C[2]
diff --git a/sysdeps/ieee754/ldbl-128ibm/w_expl.c b/sysdeps/ieee754/ldbl-128ibm/w_expl.c
index a5e72b2..70fe5f6 100644
--- a/sysdeps/ieee754/ldbl-128ibm/w_expl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/w_expl.c
@@ -1,6 +1,24 @@
-/* Looks like we can use ieee854 w_expl.c as is for IBM extended format. */
+#include <math.h>
+#include <math_private.h>
 #include <math_ldbl_opt.h>
-#undef weak_alias
-#define weak_alias(n,a)
-#include <sysdeps/ieee754/ldbl-128/w_expl.c>
+
+static const long double o_thres = 709.78271289338399678773454114191496482L;
+static const long double u_thres = -744.44007192138126231410729844608163411L;
+
+long double __expl(long double x)	/* wrapper exp  */
+{
+  long double z;
+  z = __ieee754_expl(x);
+  if (_LIB_VERSION == _IEEE_)
+    return z;
+  if (__finitel(x))
+    {
+      if (x >= o_thres)
+	return __kernel_standard_l(x,x,206); /* exp overflow  */
+      else if (x <= u_thres)
+	return __kernel_standard_l(x,x,207); /* exp underflow  */
+    }
+  return z;
+}
+hidden_def (__expl)
 long_double_symbol (libm, __expl, expl);

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

Summary of changes:
 ChangeLog                            |    9 +++++++++
 NEWS                                 |    8 ++++----
 math/libm-test.inc                   |    3 +++
 sysdeps/ieee754/ldbl-128ibm/e_expl.c |    4 ++--
 sysdeps/ieee754/ldbl-128ibm/w_expl.c |   26 ++++++++++++++++++++++----
 5 files changed, 40 insertions(+), 10 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]