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.25-327-g7620dc1


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  7620dc123570e2c8080a4dcc51d220a9d92c8841 (commit)
      from  ad2f35cb396d24391150675fb55311c98d1e1592 (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=7620dc123570e2c8080a4dcc51d220a9d92c8841

commit 7620dc123570e2c8080a4dcc51d220a9d92c8841
Author: Gabriel F. T. Gomes <gftg@linux.vnet.ibm.com>
Date:   Tue May 16 13:34:34 2017 -0300

    Convert e_exp2l.c into a template
    
    This patch converts the implementation of exp2l in math/e_exp2l.c into
    a template in math/e_exp2_template.c, then adjusts Makefile to use
    this template for long double (the implementations for float and
    double in sysdeps have higher precedence and are not used).  This
    template can also be used for float128, thus reducing the amount of
    duplicated code that gets added when adding support the new type.
    
    Tested for powerpc64le and s390x.
    
    	* math/Makefile (libm-calls): Move e_exp2F to gen-libm-calls.
    	(gen-libm-calls): Add e_exp2F to use the template.
    	* math/e_exp2l.c: Rename to math/e_exp2_template.c.
    	* math/e_exp2_template.c: New file, renamed from
    	math/e_exp2l.c, and made into a template.
    	* sysdeps/generic/math-type-macros.h (M_MIN_EXP): New macro.

diff --git a/ChangeLog b/ChangeLog
index 2570bf4..ef28409 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2017-05-17  Gabriel F. T. Gomes  <gftg@linux.vnet.ibm.com>
+
+	* math/Makefile (libm-calls): Move e_exp2F to gen-libm-calls.
+	(gen-libm-calls): Add e_exp2F to use the template.
+	* math/e_exp2l.c: Rename to math/e_exp2_template.c.
+	* math/e_exp2_template.c: New file, renamed from
+	math/e_exp2l.c, and made into a template.
+	* sysdeps/generic/math-type-macros.h (M_MIN_EXP): New macro.
+
 2017-05-17  Siddhesh Poyarekar  <siddhesh@sourceware.org>
 
 	* elf/dl-tunable-types.h (tunable_type_code_t): New type
diff --git a/math/Makefile b/math/Makefile
index ff4aa00..9aca4e0 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -59,7 +59,7 @@ gen-libm-calls = cargF conjF cimagF crealF cabsF s_cacosF		  \
 		 w_acoshF w_asinF w_atan2F w_atanhF w_coshF w_exp10F	  \
 		 w_exp2F w_fmodF w_hypotF w_j0F w_j1F w_jnF w_logF	  \
 		 w_log10F w_log2F w_powF w_remainderF w_sinhF w_sqrtF	  \
-		 w_tgammaF w_lgammaF w_lgammaF_r w_expF
+		 w_tgammaF w_lgammaF w_lgammaF_r w_expF e_exp2F
 
 libm-calls =								  \
 	e_acosF e_acoshF e_asinF e_atan2F e_atanhF e_coshF e_expF e_fmodF \
@@ -72,7 +72,7 @@ libm-calls =								  \
 	s_nextafterF s_nexttowardF s_rintF s_scalblnF			  \
 	s_significandF s_sinF s_tanF s_tanhF				  \
 	s_fpclassifyF s_truncF						  \
-	s_remquoF e_log2F e_exp2F s_roundF s_nearbyintF s_sincosF	  \
+	s_remquoF e_log2F s_roundF s_nearbyintF s_sincosF		  \
 	s_fmaF s_lrintF s_llrintF s_lroundF s_llroundF e_exp10F		  \
 	s_issignalingF $(calls:s_%=m_%) x2y2m1F				  \
 	gamma_productF lgamma_negF lgamma_productF			  \
diff --git a/math/e_exp2l.c b/math/e_exp2_template.c
similarity index 59%
rename from math/e_exp2l.c
rename to math/e_exp2_template.c
index bd68e62..f1b3488 100644
--- a/math/e_exp2l.c
+++ b/math/e_exp2_template.c
@@ -20,29 +20,28 @@
 #include <math_private.h>
 #include <float.h>
 
-/* To avoid spurious underflows, use this definition to treat IBM long
-   double as approximating an IEEE-style format.  */
-#if LDBL_MANT_DIG == 106
-# undef LDBL_EPSILON
-# define LDBL_EPSILON 0x1p-106L
-#endif
+#define declare_mgen_finite_alias_x(from, to) \
+	strong_alias (from, to ## _finite)
+#define declare_mgen_finite_alias_s(from,to) \
+	declare_mgen_finite_alias_x (from, to)
+#define declare_mgen_finite_alias(from, to) \
+	declare_mgen_finite_alias_s (M_SUF (from), M_SUF (to))
 
-long double
-__ieee754_exp2l (long double x)
+FLOAT
+M_DECL_FUNC (__ieee754_exp2) (FLOAT x)
 {
-  if (__glibc_likely (isless (x, (long double) LDBL_MAX_EXP)))
+  if (__glibc_likely (isless (x, (FLOAT) M_MAX_EXP)))
     {
-      if (__builtin_expect (isgreaterequal (x, (long double) (LDBL_MIN_EXP
-							      - LDBL_MANT_DIG
-							      - 1)), 1))
+      if (__builtin_expect (isgreaterequal (x, (FLOAT) (M_MIN_EXP - M_MANT_DIG
+							- 1)), 1))
 	{
 	  int intx = (int) x;
-	  long double fractx = x - intx;
-	  long double result;
-	  if (fabsl (fractx) < LDBL_EPSILON / 4.0L)
-	    result = __scalbnl (1.0L + fractx, intx);
+	  FLOAT fractx = x - intx;
+	  FLOAT result;
+	  if (M_FABS (fractx) < M_EPSILON / 4)
+	    result = M_SCALBN (1 + fractx, intx);
 	  else
-	    result = __scalbnl (__ieee754_expl (M_LN2l * fractx), intx);
+	    result = M_SCALBN (M_EXP (M_SUF (M_LN2) * fractx), intx);
 	  math_check_force_underflow_nonneg (result);
 	  return result;
 	}
@@ -52,11 +51,11 @@ __ieee754_exp2l (long double x)
 	  if (isinf (x))
 	    return 0;
 	  else
-	    return LDBL_MIN * LDBL_MIN;
+	    return M_MIN * M_MIN;
 	}
     }
   else
     /* Infinity, NaN or overflow.  */
-    return LDBL_MAX * x;
+    return M_MAX * x;
 }
-strong_alias (__ieee754_exp2l, __exp2l_finite)
+declare_mgen_finite_alias (__ieee754_exp2, __exp2)
diff --git a/sysdeps/generic/math-type-macros.h b/sysdeps/generic/math-type-macros.h
index 1b462b1..b4c2aee 100644
--- a/sysdeps/generic/math-type-macros.h
+++ b/sysdeps/generic/math-type-macros.h
@@ -78,6 +78,7 @@
 #define __M_CONCATX(a,b) __M_CONCAT(a,b)
 
 #define M_NAN M_SUF (__builtin_nan) ("")
+#define M_MIN_EXP __M_CONCATX (M_PFX, _MIN_EXP)
 #define M_MAX_EXP __M_CONCATX (M_PFX, _MAX_EXP)
 #define M_MIN __M_CONCATX (M_PFX, _MIN)
 #define M_MAX __M_CONCATX (M_PFX, _MAX)

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

Summary of changes:
 ChangeLog                             |    9 +++++++
 math/Makefile                         |    4 +-
 math/{e_exp2l.c => e_exp2_template.c} |   39 ++++++++++++++++-----------------
 sysdeps/generic/math-type-macros.h    |    1 +
 4 files changed, 31 insertions(+), 22 deletions(-)
 rename math/{e_exp2l.c => e_exp2_template.c} (59%)


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]