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-7-g2b7dc4c


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  2b7dc4c868553db14f439ee4b49873f6ca3ef71f (commit)
      from  95b2e07fafddc57d818dd408e5ab1e0eb26cd9f1 (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=2b7dc4c868553db14f439ee4b49873f6ca3ef71f

commit 2b7dc4c868553db14f439ee4b49873f6ca3ef71f
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Mon Feb 6 17:55:59 2017 +0000

    Do not hardcode list of libm functions in libm-err-tab.pl.
    
    manual/libm-err-tab.pl contains a hardcoded list of libm functions for
    which ulps are listed in the manual, and another hardcoded list in a
    comment of functions deliberately excluded because of an expected lack
    of ulps (and the two together are not in fact an exhaustive list of
    libm functions tested through the libm-test machinery).
    
    This patch removes these hardcoded lists, so eliminating this from the
    places needing updating when a new libm function is added.  Instead,
    ulps are tabulated for functions for which they are seen in
    libm-test-ulps files, in alphabetical order.  The pseudo-function
    names such as *_downward and *_vlen* are excluded since they are
    excluded from the existing lists, and the description in the manual is
    updated to explain how those entries are excluded and if a function is
    not listed at all it does not have known errors.
    
    Tested for x86_64.
    
    	* manual/libm-err-tab.pl (@all_functions): Change to
    	%all_functions.  Initialize as empty.
    	(parse_ulps): Add to %all_functions based on functions found in
    	ulps files.  Ignore results for non-default rounding modes and
    	vector functions.
    	(print_platforms): Use %all_platforms.
    	* manual/math.texi (Errors in Math Functions): Document omissions
    	from the table.

diff --git a/ChangeLog b/ChangeLog
index 433261a..e4b1a86 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 2017-02-06  Joseph Myers  <joseph@codesourcery.com>
 
+	* manual/libm-err-tab.pl (@all_functions): Change to
+	%all_functions.  Initialize as empty.
+	(parse_ulps): Add to %all_functions based on functions found in
+	ulps files.  Ignore results for non-default rounding modes and
+	vector functions.
+	(print_platforms): Use %all_platforms.
+	* manual/math.texi (Errors in Math Functions): Document omissions
+	from the table.
+
 	* math/Makefile (before-compile): Remove.
 
 2017-02-06  Ivo Raisr <ivo.raisr@oracle.com>
diff --git a/manual/libm-err-tab.pl b/manual/libm-err-tab.pl
index d902830..75f5e5b 100755
--- a/manual/libm-err-tab.pl
+++ b/manual/libm-err-tab.pl
@@ -35,7 +35,7 @@ use File::Find;
 use strict;
 
 use vars qw ($sources @platforms %pplatforms);
-use vars qw (%results @all_floats %suffices @all_functions);
+use vars qw (%results @all_floats %suffices %all_functions);
 
 
 # all_floats is in output order and contains all recognised float types that
@@ -50,27 +50,7 @@ use vars qw (%results @all_floats %suffices @all_functions);
 # Pretty description of platform
 %pplatforms = ();
 
-@all_functions =
-  ( "acos", "acosh", "asin", "asinh", "atan", "atanh",
-    "atan2", "cabs", "cacos", "cacosh", "carg", "casin", "casinh",
-    "catan", "catanh", "cbrt", "ccos", "ccosh", "ceil", "cexp", "cimag",
-    "clog", "clog10", "conj", "copysign", "cos", "cosh", "cpow", "cproj",
-    "creal", "csin", "csinh", "csqrt", "ctan", "ctanh", "erf", "erfc",
-    "exp", "exp10", "exp2", "expm1", "fabs", "fdim", "floor", "fma",
-    "fmax", "fmaxmag", "fmin", "fminmag", "fmod", "frexp", "fromfp", "fromfpx",
-    "gamma", "hypot",
-    "ilogb", "j0", "j1", "jn", "lgamma", "llogb", "lrint",
-    "llrint", "log", "log10", "log1p", "log2", "logb", "lround",
-    "llround", "modf", "nearbyint", "nextafter", "nextdown", "nexttoward",
-    "nextup", "pow", "remainder", "remquo", "rint", "round", "roundeven",
-    "scalb", "scalbn", "sin", "sincos", "sinh", "sqrt", "tan", "tanh",
-    "tgamma", "trunc", "ufromfp", "ufromfpx", "y0", "y1", "yn" );
-# canonicalize, fpclassify, getpayload, iscanonical, isnormal,
-# isfinite, isinf, isnan, issignaling, issubnormal, iszero, signbit,
-# iseqsig, isgreater, isgreaterequal, isless, islessequal,
-# islessgreater, isunordered, setpayload, setpayloadsig,
-# totalorder, totalordermag
-# are not tabulated.
+%all_functions = ();
 
 if ($#ARGV == 0) {
   $sources = $ARGV[0];
@@ -102,7 +82,7 @@ sub find_files {
 # Parse ulps file
 sub parse_ulps {
   my ($file, $platform) = @_;
-  my ($test, $type, $float, $eps);
+  my ($test, $type, $float, $eps, $ignore_fn);
 
   # $type has the following values:
   # "normal": No complex variable
@@ -127,9 +107,17 @@ sub parse_ulps {
       ($test) = ($_ =~ /^Function:\s*\"([a-zA-Z0-9_]+)\"/);
       next;
     }
+    if ($test =~ /_(downward|towardzero|upward|vlen)/) {
+      $ignore_fn = 1;
+    } else {
+      $ignore_fn = 0;
+      $all_functions{$test} = 1;
+    }
     if (/^i?(float|double|ldouble):/) {
       ($float, $eps) = split /\s*:\s*/,$_,2;
-      if ($eps eq 'fail') {
+      if ($ignore_fn) {
+	next;
+      } elsif ($eps eq 'fail') {
 	$results{$test}{$platform}{$type}{$float} = 'fail';
       } elsif ($eps eq "0") {
 	# ignore
@@ -175,7 +163,7 @@ sub print_platforms {
   print "\n";
 
 
-  foreach $fct (@all_functions) {
+  foreach $fct (sort keys %all_functions) {
     foreach $float (@all_floats) {
       print "\@item $fct$suffices{$float} ";
       foreach $platform (@p) {
diff --git a/manual/math.texi b/manual/math.texi
index 9b699f1..69a0ace 100644
--- a/manual/math.texi
+++ b/manual/math.texi
@@ -1417,7 +1417,9 @@ figure) but this is often not achieved due to the large search space.
 The table lists the ULP values for different architectures.  Different
 architectures have different results since their hardware support for
 floating-point operations varies and also the existing hardware support
-is different.
+is different.  Only the round-to-nearest rounding mode is covered by
+this table, and vector versions of functions are not covered.
+Functions not listed do not have known errors.
 
 @page
 @c This multitable does not fit on a single page

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

Summary of changes:
 ChangeLog              |    9 +++++++++
 manual/libm-err-tab.pl |   38 +++++++++++++-------------------------
 manual/math.texi       |    4 +++-
 3 files changed, 25 insertions(+), 26 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]