[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Patches] Remove OPTION_EGLIBC_LIBM_BIG option group



The OPTION_EGLIBC_LIBM_BIG option group is problematic for merges from 
glibc, reportedly bitrotten, and fundamentally ill-conceived.  (An option 
group that completely removes long double, or double and long double, libm 
functions, so that programs using them fail to compile or link, would be 
reasonable.  One that changes their semantics so that any program that 
correctly chose to use them rather than the float versions no longer 
receives the semantics it requires isn't reasonable.)

I've committed this reversion of that option group.  The other option 
group I think is similarly ill-conceived and needs removing on those 
grounds is OPTION_POSIX_REGEXP_GLIBC, which adds a whole separate, old, 
buggy and probably full of security holes implementation of some 
functionality.  Option groups should disable well-defined subsets of API 
features, not randomly reintroduce bugs removed from glibc many years ago 
by reusing an old implementation of regular expressions.

Although the other options groups are better-defined, option groups in 
general are effectively unmaintained and it's likely many of them are 
bitrotten; they also cause more trouble for merges from glibc than all the 
other local changes put together.  I don't know if anyone is still using 
option groups (and if so, which option groups), but if so, the user 
community really needs to step up to (a) updating Steve Longerbeam's 
patches, writing ChangeLog entries for them and getting them in, (b) 
fixing bitrot issues and (c) working with the glibc community on the right 
ways to get such feature configurability into glibc.  (This does of course 
require getting an FSF copyright assignment for any substantial work, if 
not already covered by a corporate assignment.)

Index: option-groups.def
===================================================================
--- option-groups.def	(revision 23089)
+++ option-groups.def	(working copy)
@@ -464,19 +464,6 @@
        group, you will not be able to build 'libstdc++' against the
        resulting EGLIBC installation.
 
-config OPTION_EGLIBC_LIBM_BIG
-   bool "Math library size"
-   help
-       This option group enables default configuration of the math library.
-       Not selecting this option group removes most of the extended and
-       double precision math functions and replaces them with wrappers
-       to the single precision couterparts.
-       Doing so greatly degrades quality of calculations carried
-       out by the functions of the math library, but also significantly
-       reduces the size of the libm.
-       This option group is useful for systems that do not rely on precise
-       floating point math.
-
 config OPTION_EGLIBC_LOCALES
    bool "Locale definitions"
    help
Index: configure.in
===================================================================
--- configure.in	(revision 23089)
+++ configure.in	(working copy)
@@ -796,11 +796,6 @@
 
 # We have now validated the configuration.
 
-# Peek into option-groups.config to check if sysdeps/ieee754/[l]dbl-wrap needs
-# to be included into $sysnames.
-grep "OPTION_EGLIBC_LIBM_BIG = n" option-groups.config > /dev/null 2>&1
-use_dbl_wrap=$?
-
 # Expand the list of system names into a full list of directories
 # from each element's parent name and Implies file (if present).
 set $sysnames
@@ -835,14 +830,6 @@
       for x in $implied_candidate; do
 	found=no
 	if test -d $xsrcdir$name_base/$x; then
-	  # If !OPTION_EGLIBC_LIBM_BIG, add ieee754/dbl-wrap just before
-	  # ieee754/dbl-64.
-	  if test "$use_dbl_wrap" = "0"; then
-	    case $x in
-	      ieee754/dbl-64) eval "${implies_type}=\"\$${implies_type} \$name_base/ieee754/dbl-wrap\"" ;;
-	      ieee754/ldbl-*) eval "${implies_type}=\"\$${implies_type} \$name_base/ieee754/ldbl-wrap\"" ;;
-	    esac
-	  fi
 	  eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\""
 	  found=yes
 	fi
@@ -856,16 +843,6 @@
 	   echo "[DEBUG]: $name $implies_file $x try($d) {$try_srcdir}$try" >&2
 	  if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
 	  then
-	    # If !OPTION_EGLIBC_LIBM_BIG, add ieee754/dbl-wrap just before
-	    # ieee754/dbl-64.
-	    if test "$use_dbl_wrap" = "0"; then
-	      case $try in
-	      sysdeps/ieee754/dbl-64)
-	        eval "${implies_type}=\"\$${implies_type} sysdeps/ieee754/dbl-wrap\"" ;;
-	      sysdeps/ieee754/ldbl-*)
-	        eval "${implies_type}=\"\$${implies_type} sysdeps/ieee754/ldbl-wrap\"" ;;
-	      esac
-	    fi
 	    eval "${implies_type}=\"\$${implies_type} \$try\""
 	    found=yes
 	    case "$sysnames_add_ons" in
Index: option-groups.defaults
===================================================================
--- option-groups.defaults	(revision 23089)
+++ option-groups.defaults	(working copy)
@@ -28,7 +28,6 @@
 OPTION_EGLIBC_INET = y
 OPTION_EGLIBC_INET_ANL = y
 OPTION_EGLIBC_LIBM = y
-OPTION_EGLIBC_LIBM_BIG = y
 OPTION_EGLIBC_LOCALES = y
 OPTION_EGLIBC_LOCALE_CODE = y
 OPTION_EGLIBC_MEMUSAGE = y
Index: math/test-dbl-wrap.c
===================================================================
--- math/test-dbl-wrap.c	(revision 23089)
+++ math/test-dbl-wrap.c	(working copy)
@@ -1,110 +0,0 @@
-#include <math.h>
-#include <stdio.h>
-
-#define N 4
-
-static int
-do_test (int argc, char *argv[])
-{
-  int i;
-  int result = 0;
-
-  const double eps = 0.01, pi = 3.14;
-  const double sin_data[N][2]
-    = {{0.0, 0.0}, {pi / 6, 0.5}, {pi / 4, 0.707}, {pi / 3, 0.866}};
-  const double exp_data[N][2]
-    = {{0.0, 1.0}, {0.5, 1.649}, {1.0, 2.718}, {2.718, 15.150}};
-
-  for (i = 0; i < N; ++i)
-    {
-      double x, y;
-      double s1, c1, t1, e1;
-      double s2, c2, t2, as2, ac2, at2, e2, l2;
-
-      x = sin_data[i][0];
-      s1 = sin_data[i][1];
-      c1 = sqrt (1 - s1 * s1);
-      t1 = s1 / c1;
-
-      s2 = sin (x);
-      c2 = cos (x);
-      t2 = tan (x);
-      as2 = asin (s1);
-      ac2 = acos (c1);
-      at2 = atan (t1);
-
-      y = exp_data[i][0];
-      e1 = exp_data[i][1];
-
-      e2 = exp (y);
-      l2 = log (e1);
-
-      if (fabs (s1 - s2) > eps)
-	{
-	  result |= 1;
-#if PRINT
-	  printf ("sin(%.3lf) = %.3lf\n", x, s2);
-#endif
-	}
-
-      if (fabs (c1 - c2) > eps)
-	{
-	  result |= 2;
-#if PRINT
-	  printf ("cos(%.3lf) = %.3lf\n", x, c2);
-#endif
-	}
-
-      if (fabs (t1 - t2) > eps)
-	{
-	  result |= 4;
-#if PRINT
-	  printf ("tan(%.3lf) = %.3lf\n", x, t2);
-#endif
-	}
-
-      if (fabs (x - as2) > eps)
-	{
-	  result |= 8;
-#if PRINT
-	  printf ("asin(%.3lf) = %.3lf\n", s1, as2);
-#endif
-	}
-
-      if (fabs (x - ac2) > eps)
-	{
-	  result |= 16;
-#if PRINT
-	  printf ("acos(%.3lf) = %.3lf\n", c1, ac2);
-#endif
-	}
-
-      if (fabs (x - at2) > eps)
-	{
-	  result |= 32;
-#if PRINT
-	  printf ("atan(%.3lf) = %.3lf\n", t1, at2);
-#endif
-	}
-
-      if (fabs (e1 - e2) > eps)
-	{
-	  result |= 64;
-#if PRINT
-	  printf ("exp(%.3lf) = %.3lf\n", y, e2);
-#endif
-	}
-
-      if (fabs (y - l2) > eps)
-	{
-	  result |= 128;
-#if PRINT
-	  printf ("log(%.3lf) = %.3lf\n", e1, l2);
-#endif
-	}
-    }
-
-  return result;
-}
-
-#include "../test-skeleton.c"
Index: math/Makefile
===================================================================
--- math/Makefile	(revision 23089)
+++ math/Makefile	(working copy)
@@ -87,11 +87,10 @@
 long-c-yes = $(calls:=l)
 
 # Rules for the test suite.
-tests = test-matherr test-fenv basic-test \
+tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \
 	test-misc test-fpucw tst-definitions test-tgmath test-tgmath-ret \
-	bug-nextafter bug-nexttoward bug-tgmath1 test-tgmath-int test-tgmath2 \
-	test-dbl-wrap test-powl tst-CMPLX tst-CMPLX2 test-snan
-tests-$(OPTION_EGLIBC_LIBM_BIG) += atest-exp atest-sincos atest-exp2
+	bug-nextafter bug-nexttoward bug-tgmath1 test-tgmath-int \
+	test-tgmath2 test-powl tst-CMPLX tst-CMPLX2 test-snan
 # We do the `long double' tests only if this data type is available and
 # distinct from `double'.
 test-longdouble-yes = test-ldouble test-ildoubl
@@ -112,12 +111,9 @@
 
 $(addprefix $(objpfx), $(libm-tests-generated)): $(objpfx)libm-test.stmp
 
-ifeq (n,$(OPTION_EGLIBC_LIBM_BIG))
-default_ulp = -d 1
-endif
 $(objpfx)libm-test.stmp: $(ulps-file) libm-test.inc gen-libm-test.pl
 	$(make-target-directory)
-	$(PERL) gen-libm-test.pl -u $< $(default_ulp) -o "$(objpfx)"
+	$(PERL) gen-libm-test.pl -u $< -o "$(objpfx)"
 	@echo > $@
 
 $(objpfx)test-float.o: $(objpfx)libm-test.stmp
Index: math/libm-test.inc
===================================================================
--- math/libm-test.inc	(revision 23089)
+++ math/libm-test.inc	(working copy)
@@ -132,7 +132,6 @@
 #include <string.h>
 #include <argp.h>
 #include <tininess.h>
-#include <gnu/option-groups.h>
 
 /* Allow platforms without all rounding modes to test properly,
    assuming they provide an __FE_UNDEFINED in <bits/fenv.h> which
@@ -247,15 +246,8 @@
      __retval; })
 
 
-#if __OPTION_EGLIBC_LIBM_BIG
 #define MANT_DIG CHOOSE ((LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1),  \
 			 (LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1))
-#else
-/* Reduce precision to which the results are checked against
-   expected values.  */
-#define MANT_DIG CHOOSE ((FLT_MANT_DIG-3), (FLT_MANT_DIG-4), (FLT_MANT_DIG-1), \
-                         (FLT_MANT_DIG-3), (FLT_MANT_DIG-4), (FLT_MANT_DIG-1))
-#endif
 
 static void
 init_max_error (void)
@@ -6823,12 +6815,7 @@
 #ifdef TEST_LDOUBLE
   /* The result can only be represented in long double.  */
 # if LDBL_MIN_10_EXP < -319
-#  if __OPTION_EGLIBC_LIBM_BIG
   TEST_f_f (erfc, 27.0L, 0.523704892378925568501606768284954709e-318L);
-#  else
-  /* ldbl-wrap uses single-precision erfc, so it can't handle e-318 values.  */
-  TEST_f_f (erfc, 27.0L, 0.0L);
-#  endif
 # endif
 # if LDBL_MANT_DIG >= 106
   TEST_f_f (erfc, 0x1.ffff56789abcdef0123456789a8p+2L, 1.123161416304655390092138725253789378459e-29L);
Index: math/gen-libm-test.pl
===================================================================
--- math/gen-libm-test.pl	(revision 23089)
+++ math/gen-libm-test.pl	(working copy)
@@ -47,7 +47,7 @@
 use vars qw (@tests @functions);
 use vars qw ($count);
 use vars qw (%beautify @all_floats);
-use vars qw ($output_dir $ulps_file $default_ulp);
+use vars qw ($output_dir $ulps_file);
 
 # all_floats is sorted and contains all recognised float types
 @all_floats = ('double', 'float', 'idouble',
@@ -85,12 +85,11 @@
 # h: help
 # o: output-directory
 # n: generate new ulps file
-use vars qw($opt_u $opt_h $opt_o $opt_n $opt_d);
-getopts('u:o:d:nh');
+use vars qw($opt_u $opt_h $opt_o $opt_n);
+getopts('u:o:nh');
 
 $ulps_file = 'libm-test-ulps';
 $output_dir = '';
-$default_ulp = '0';
 
 if ($opt_h) {
   print "Usage: gen-libm-test.pl [OPTIONS]\n";
@@ -98,13 +97,11 @@
   print " -o DIR     directory where generated files will be placed\n";
   print " -n         only generate sorted file NewUlps from libm-test-ulps\n";
   print " -u FILE    input file with ulps\n";
-  print " -d NUM     set the default value for ulp to NUM\n";
   exit 0;
 }
 
 $ulps_file = $opt_u if ($opt_u);
 $output_dir = $opt_o if ($opt_o);
-$default_ulp = $opt_d if ($opt_d);
 
 $input = "libm-test.inc";
 $output = "${output_dir}libm-test.c";
@@ -458,11 +455,7 @@
       if (exists $results{$fct}{'has_ulps'}) {
 	$line .= "DELTA$fct";
       } else {
-	if ($type eq 'complex') {
-	  $line .= "BUILD_COMPLEX ($default_ulp, $default_ulp)";
-	} else {
-	  $line .= "$default_ulp";
-	}
+	$line .= '0';
       }
       if (exists $results{$fct}{'has_fails'}) {
 	$line .= ", FAIL$fct";
@@ -641,21 +634,22 @@
 
   if ($type eq 'complex') {
     my ($res);
+    # Return 0 instead of BUILD_COMPLEX (0,0)
     if (!exists $results{$test}{'real'}{'ulp'}{$float} &&
 	!exists $results{$test}{'imag'}{'ulp'}{$float}) {
-      return "BUILD_COMPLEX ($default_ulp, $default_ulp)";
+      return "0";
     }
     $res = 'BUILD_COMPLEX (';
     $res .= (exists $results{$test}{'real'}{'ulp'}{$float}
-	     ? $results{$test}{'real'}{'ulp'}{$float} : "$default_ulp");
+	     ? $results{$test}{'real'}{'ulp'}{$float} : "0");
     $res .= ', ';
     $res .= (exists $results{$test}{'imag'}{'ulp'}{$float}
-	     ? $results{$test}{'imag'}{'ulp'}{$float} : "$default_ulp");
+	     ? $results{$test}{'imag'}{'ulp'}{$float} : "0");
     $res .= ')';
     return $res;
   }
   return (exists $results{$test}{'normal'}{'ulp'}{$float}
-	  ? $results{$test}{'normal'}{'ulp'}{$float} : "$default_ulp");
+	  ? $results{$test}{'normal'}{'ulp'}{$float} : "0");
 }
 
 sub get_failure {
Index: ChangeLog.eglibc
===================================================================
--- ChangeLog.eglibc	(revision 23089)
+++ ChangeLog.eglibc	(working copy)
@@ -1,5 +1,22 @@
 2013-05-17  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
+	* configure.in, math/Makefile, math/gen-libm-test.pl,
+	math/libm-test.inc, option-groups.def, option-groups.defaults,
+	sysdeps/ieee754/ldbl-128/s_erfl.c,
+	sysdeps/ieee754/ldbl-128/s_log1pl.c,
+	sysdeps/ieee754/ldbl-128ibm/s_erfl.c,
+	sysdeps/ieee754/ldbl-128ibm/s_log1pl.c,
+	sysdeps/ieee754/ldbl-96/s_erfl.c,
+	sysdeps/ieee754/ldbl-opt/s_atan.c,
+	sysdeps/ieee754/ldbl-opt/s_sin.c,
+	sysdeps/ieee754/ldbl-opt/s_tan.c: Revert OPTION_EGLIBC_LIBM_BIG
+	support.
+	* configure: Regenerated.
+	* math/test-dbl-wrap.c, sysdeps/ieee754/dbl-wrap,
+	sysdeps/ieee754/ldbl-wrap: Remove.
+
+2013-05-17  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
 	* math/complex.h, math/math.h: Revert differences from glibc.
 
 2012-11-17  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
Index: configure
===================================================================
--- configure	(revision 23089)
+++ configure	(working copy)
@@ -4181,11 +4181,6 @@
 
 # We have now validated the configuration.
 
-# Peek into option-groups.config to check if sysdeps/ieee754/[l]dbl-wrap needs
-# to be included into $sysnames.
-grep "OPTION_EGLIBC_LIBM_BIG = n" option-groups.config > /dev/null 2>&1
-use_dbl_wrap=$?
-
 # Expand the list of system names into a full list of directories
 # from each element's parent name and Implies file (if present).
 set $sysnames
@@ -4220,14 +4215,6 @@
       for x in $implied_candidate; do
 	found=no
 	if test -d $xsrcdir$name_base/$x; then
-	  # If !OPTION_EGLIBC_LIBM_BIG, add ieee754/dbl-wrap just before
-	  # ieee754/dbl-64.
-	  if test "$use_dbl_wrap" = "0"; then
-	    case $x in
-	      ieee754/dbl-64) eval "${implies_type}=\"\$${implies_type} \$name_base/ieee754/dbl-wrap\"" ;;
-	      ieee754/ldbl-*) eval "${implies_type}=\"\$${implies_type} \$name_base/ieee754/ldbl-wrap\"" ;;
-	    esac
-	  fi
 	  eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\""
 	  found=yes
 	fi
@@ -4241,16 +4228,6 @@
 	   echo "DEBUG: $name $implies_file $x try($d) {$try_srcdir}$try" >&2
 	  if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
 	  then
-	    # If !OPTION_EGLIBC_LIBM_BIG, add ieee754/dbl-wrap just before
-	    # ieee754/dbl-64.
-	    if test "$use_dbl_wrap" = "0"; then
-	      case $try in
-	      sysdeps/ieee754/dbl-64)
-	        eval "${implies_type}=\"\$${implies_type} sysdeps/ieee754/dbl-wrap\"" ;;
-	      sysdeps/ieee754/ldbl-*)
-	        eval "${implies_type}=\"\$${implies_type} sysdeps/ieee754/ldbl-wrap\"" ;;
-	      esac
-	    fi
 	    eval "${implies_type}=\"\$${implies_type} \$try\""
 	    found=yes
 	    case "$sysnames_add_ons" in
Index: sysdeps/ieee754/ldbl-128ibm/s_log1pl.c
===================================================================
--- sysdeps/ieee754/ldbl-128ibm/s_log1pl.c	(revision 23089)
+++ sysdeps/ieee754/ldbl-128ibm/s_log1pl.c	(working copy)
@@ -56,10 +56,7 @@
 #include <math.h>
 #include <math_private.h>
 #include <math_ldbl_opt.h>
-#include <gnu/option-groups.h>
 
-#if __OPTION_EGLIBC_LIBM_BIG
-
 /* Coefficients for log(1+x) = x - x^2 / 2 + x^3 P(x)/Q(x)
  * 1/sqrt(2) <= 1+x < sqrt(2)
  * Theoretical peak relative error = 5.3e-37,
@@ -251,8 +248,4 @@
   return (z);
 }
 
-#else /* !__OPTION_EGLIBC_LIBM_BIG */
-# include <sysdeps/ieee754/ldbl-wrap/s_log1pl-wrap.c>
-#endif /* __OPTION_EGLIBC_LIBM_BIG */
-
 long_double_symbol (libm, __log1pl, log1pl);
Index: sysdeps/ieee754/ldbl-128ibm/s_erfl.c
===================================================================
--- sysdeps/ieee754/ldbl-128ibm/s_erfl.c	(revision 23089)
+++ sysdeps/ieee754/ldbl-128ibm/s_erfl.c	(working copy)
@@ -104,10 +104,7 @@
 #include <math.h>
 #include <math_private.h>
 #include <math_ldbl_opt.h>
-#include <gnu/option-groups.h>
 
-#if __OPTION_EGLIBC_LIBM_BIG
-
 /* Evaluate P[n] x^n  +  P[n-1] x^(n-1)  +  ...  +  P[0] */
 
 static long double
@@ -957,9 +954,4 @@
     }
 }
 
-#else /* !__OPTION_EGLIBC_LIBM_BIG */
-# include <sysdeps/ieee754/ldbl-wrap/s_erfl-wrap.c>
-long_double_symbol (libm, __erfl, erfl);
-#endif /* __OPTION_EGLIBC_LIBM_BIG */
-
 long_double_symbol (libm, __erfcl, erfcl);
Index: sysdeps/ieee754/ldbl-opt/s_tan.c
===================================================================
--- sysdeps/ieee754/ldbl-opt/s_tan.c	(revision 23089)
+++ sysdeps/ieee754/ldbl-opt/s_tan.c	(working copy)
@@ -1,10 +1,5 @@
 #include <math_ldbl_opt.h>
-#include <gnu/option-groups.h>
-#if __OPTION_EGLIBC_LIBM_BIG
-# include <sysdeps/ieee754/dbl-64/s_tan.c>
-#else
-# include <sysdeps/ieee754/dbl-wrap/s_tan.c>
-#endif
+#include <sysdeps/ieee754/dbl-64/s_tan.c>
 #if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
 compat_symbol (libm, tan, tanl, GLIBC_2_0);
 #endif
Index: sysdeps/ieee754/ldbl-opt/s_sin.c
===================================================================
--- sysdeps/ieee754/ldbl-opt/s_sin.c	(revision 23089)
+++ sysdeps/ieee754/ldbl-opt/s_sin.c	(working copy)
@@ -1,14 +1,9 @@
 /* dbl-64/s_sin.c uses NAN and sincos identifiers internally.  */
 #define sincos sincos_disable
 #include <math_ldbl_opt.h>
-#include <gnu/option-groups.h>
 #undef NAN
 #undef sincos
-#if __OPTION_EGLIBC_LIBM_BIG
-# include <sysdeps/ieee754/dbl-64/s_sin.c>
-#else
-# include <sysdeps/ieee754/dbl-wrap/s_sin.c>
-#endif
+#include <sysdeps/ieee754/dbl-64/s_sin.c>
 #if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
 compat_symbol (libm, __sin, sinl, GLIBC_2_0);
 compat_symbol (libm, __cos, cosl, GLIBC_2_0);
Index: sysdeps/ieee754/ldbl-opt/s_atan.c
===================================================================
--- sysdeps/ieee754/ldbl-opt/s_atan.c	(revision 23089)
+++ sysdeps/ieee754/ldbl-opt/s_atan.c	(working copy)
@@ -1,10 +1,5 @@
 #include <math_ldbl_opt.h>
-#include <gnu/option-groups.h>
-#if __OPTION_EGLIBC_LIBM_BIG
-# include <sysdeps/ieee754/dbl-64/s_atan.c>
-#else
-# include <sysdeps/ieee754/dbl-wrap/s_atan.c>
-#endif
+#include <sysdeps/ieee754/dbl-64/s_atan.c>
 #if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
 compat_symbol (libm, atan, atanl, GLIBC_2_0);
 #endif
Index: sysdeps/ieee754/ldbl-wrap/e_asinl.c
===================================================================
--- sysdeps/ieee754/ldbl-wrap/e_asinl.c	(revision 23089)
+++ sysdeps/ieee754/ldbl-wrap/e_asinl.c	(working copy)
@@ -1,9 +0,0 @@
-#include "ldbl-wrap.h"
-
-wrap_type_t WRAP_FUNC (__ieee754_asin) (wrap_type_t);
-
-long double
-__ieee754_asinl (long double x)
-{
-  return (long double) WRAP_FUNC (__ieee754_asin) ((wrap_type_t) x);
-}
Index: sysdeps/ieee754/ldbl-wrap/e_j1l.c
===================================================================
--- sysdeps/ieee754/ldbl-wrap/e_j1l.c	(revision 23089)
+++ sysdeps/ieee754/ldbl-wrap/e_j1l.c	(working copy)
@@ -1,17 +0,0 @@
-#include "ldbl-wrap.h"
-
-wrap_type_t WRAP_FUNC (__ieee754_j1) (wrap_type_t);
-
-long double
-__ieee754_j1l (long double x)
-{
-  return (long double) WRAP_FUNC (__ieee754_j1) ((wrap_type_t) x);
-}
-
-wrap_type_t WRAP_FUNC (__ieee754_y1) (wrap_type_t);
-
-long double
-__ieee754_y1l (long double x)
-{
-  return (long double) WRAP_FUNC (__ieee754_y1) ((wrap_type_t) x);
-}
Index: sysdeps/ieee754/ldbl-wrap/e_expl.c
===================================================================
--- sysdeps/ieee754/ldbl-wrap/e_expl.c	(revision 23089)
+++ sysdeps/ieee754/ldbl-wrap/e_expl.c	(working copy)
@@ -1,9 +0,0 @@
-#include "ldbl-wrap.h"
-
-wrap_type_t WRAP_FUNC (__ieee754_exp) (wrap_type_t);
-
-long double
-__ieee754_expl (long double x)
-{
-  return (long double) WRAP_FUNC (__ieee754_exp) ((wrap_type_t) x);
-}
Index: sysdeps/ieee754/ldbl-wrap/e_lgammal_r.c
===================================================================
--- sysdeps/ieee754/ldbl-wrap/e_lgammal_r.c	(revision 23089)
+++ sysdeps/ieee754/ldbl-wrap/e_lgammal_r.c	(working copy)
@@ -1,9 +0,0 @@
-#include "ldbl-wrap.h"
-
-wrap_type_t WRAP_FUNC2 (__ieee754_lgamma, _r) (wrap_type_t, int *);
-
-long double
-__ieee754_lgammal_r (long double x, int *s)
-{
-  return (long double) WRAP_FUNC2 (__ieee754_lgamma, _r) ((wrap_type_t) x, s);
-}
Index: sysdeps/ieee754/ldbl-wrap/s_erfl-wrap.c
===================================================================
--- sysdeps/ieee754/ldbl-wrap/s_erfl-wrap.c	(revision 23089)
+++ sysdeps/ieee754/ldbl-wrap/s_erfl-wrap.c	(working copy)
@@ -1,17 +0,0 @@
-#include "ldbl-wrap.h"
-
-wrap_type_t WRAP_FUNC (__erf) (wrap_type_t);
-
-long double
-__erfl (long double x)
-{
-  return (long double) WRAP_FUNC (__erf) ((wrap_type_t) x);
-}
-
-wrap_type_t WRAP_FUNC (__erfc) (wrap_type_t);
-
-long double
-__erfcl (long double x)
-{
-  return (long double) WRAP_FUNC (__erfc) ((wrap_type_t) x);
-}
Index: sysdeps/ieee754/ldbl-wrap/e_acosl.c
===================================================================
--- sysdeps/ieee754/ldbl-wrap/e_acosl.c	(revision 23089)
+++ sysdeps/ieee754/ldbl-wrap/e_acosl.c	(working copy)
@@ -1,9 +0,0 @@
-#include "ldbl-wrap.h"
-
-wrap_type_t WRAP_FUNC (__ieee754_acos) (wrap_type_t);
-
-long double
-__ieee754_acosl (long double x)
-{
-  return (long double) WRAP_FUNC (__ieee754_acos) ((wrap_type_t) x);
-}
Index: sysdeps/ieee754/ldbl-wrap/e_powl.c
===================================================================
--- sysdeps/ieee754/ldbl-wrap/e_powl.c	(revision 23089)
+++ sysdeps/ieee754/ldbl-wrap/e_powl.c	(working copy)
@@ -1,10 +0,0 @@
-#include "ldbl-wrap.h"
-
-wrap_type_t WRAP_FUNC (__ieee754_pow) (wrap_type_t, wrap_type_t);
-
-long double
-__ieee754_powl (long double x, long double y)
-{
-  return (long double) WRAP_FUNC (__ieee754_pow) ((wrap_type_t) x,
-						  (wrap_type_t) y);
-}
Index: sysdeps/ieee754/ldbl-wrap/s_log1pl-wrap.c
===================================================================
--- sysdeps/ieee754/ldbl-wrap/s_log1pl-wrap.c	(revision 23089)
+++ sysdeps/ieee754/ldbl-wrap/s_log1pl-wrap.c	(working copy)
@@ -1,9 +0,0 @@
-#include "ldbl-wrap.h"
-
-wrap_type_t WRAP_FUNC (__log1p) (wrap_type_t);
-
-long double
-__log1pl (long double x)
-{
-  return (long double) WRAP_FUNC (__log1p) ((wrap_type_t) x);
-}
Index: sysdeps/ieee754/ldbl-wrap/e_j0l.c
===================================================================
--- sysdeps/ieee754/ldbl-wrap/e_j0l.c	(revision 23089)
+++ sysdeps/ieee754/ldbl-wrap/e_j0l.c	(working copy)
@@ -1,17 +0,0 @@
-#include "ldbl-wrap.h"
-
-wrap_type_t WRAP_FUNC (__ieee754_j0) (wrap_type_t);
-
-long double
-__ieee754_j0l (long double x)
-{
-  return (long double) WRAP_FUNC (__ieee754_j0) ((wrap_type_t) x);
-}
-
-wrap_type_t WRAP_FUNC (__ieee754_y0) (wrap_type_t);
-
-long double
-__ieee754_y0l (long double x)
-{
-  return (long double) WRAP_FUNC (__ieee754_y0) ((wrap_type_t) x);
-}
Index: sysdeps/ieee754/ldbl-wrap/ldbl-wrap.h
===================================================================
--- sysdeps/ieee754/ldbl-wrap/ldbl-wrap.h	(revision 23089)
+++ sysdeps/ieee754/ldbl-wrap/ldbl-wrap.h	(working copy)
@@ -1,3 +0,0 @@
-typedef float wrap_type_t;
-#define WRAP_FUNC(func) func ## f
-#define WRAP_FUNC2(func, suffix) func ## f ## suffix
Index: sysdeps/ieee754/ldbl-128/s_log1pl.c
===================================================================
--- sysdeps/ieee754/ldbl-128/s_log1pl.c	(revision 23089)
+++ sysdeps/ieee754/ldbl-128/s_log1pl.c	(working copy)
@@ -55,10 +55,7 @@
 
 #include <math.h>
 #include <math_private.h>
-#include <gnu/option-groups.h>
 
-#if __OPTION_EGLIBC_LIBM_BIG
-
 /* Coefficients for log(1+x) = x - x^2 / 2 + x^3 P(x)/Q(x)
  * 1/sqrt(2) <= 1+x < sqrt(2)
  * Theoretical peak relative error = 5.3e-37,
@@ -254,8 +251,4 @@
   return (z);
 }
 
-#else /* !__OPTION_EGLIBC_LIBM_BIG */
-# include <sysdeps/ieee754/ldbl-wrap/s_log1pl-wrap.c>
-#endif /* __OPTION_EGLIBC_LIBM_BIG */
-
 weak_alias (__log1pl, log1pl)
Index: sysdeps/ieee754/ldbl-128/s_erfl.c
===================================================================
--- sysdeps/ieee754/ldbl-128/s_erfl.c	(revision 23089)
+++ sysdeps/ieee754/ldbl-128/s_erfl.c	(working copy)
@@ -98,10 +98,7 @@
 
 #include <math.h>
 #include <math_private.h>
-#include <gnu/option-groups.h>
 
-#if __OPTION_EGLIBC_LIBM_BIG
-
 /* Evaluate P[n] x^n  +  P[n-1] x^(n-1)  +  ...  +  P[0] */
 
 static long double
@@ -934,9 +931,4 @@
     }
 }
 
-#else /* !__OPTION_EGLIBC_LIBM_BIG */
-# include <sysdeps/ieee754/ldbl-wrap/s_erfl-wrap.c>
-weak_alias (__erfl, erfl)
-#endif /* __OPTION_EGLIBC_LIBM_BIG */
-
 weak_alias (__erfcl, erfcl)
Index: sysdeps/ieee754/dbl-wrap/e_exp2.c
===================================================================
--- sysdeps/ieee754/dbl-wrap/e_exp2.c	(revision 23089)
+++ sysdeps/ieee754/dbl-wrap/e_exp2.c	(working copy)
@@ -1,9 +0,0 @@
-#include "dbl-wrap.h"
-
-wrap_type_t WRAP_FUNC (__ieee754_exp2) (wrap_type_t);
-
-double
-__ieee754_exp2 (double x)
-{
-  return (double) WRAP_FUNC (__ieee754_exp2) ((wrap_type_t) x);
-}
Index: sysdeps/ieee754/dbl-wrap/s_tan.c
===================================================================
--- sysdeps/ieee754/dbl-wrap/s_tan.c	(revision 23089)
+++ sysdeps/ieee754/dbl-wrap/s_tan.c	(working copy)
@@ -1,13 +0,0 @@
-#include "dbl-wrap.h"
-
-wrap_type_t WRAP_FUNC (tan) (wrap_type_t);
-
-double
-tan (double x)
-{
-  return (double) WRAP_FUNC (tan) ((wrap_type_t) x);
-}
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (tan, tanl)
-#endif
Index: sysdeps/ieee754/dbl-wrap/e_log.c
===================================================================
--- sysdeps/ieee754/dbl-wrap/e_log.c	(revision 23089)
+++ sysdeps/ieee754/dbl-wrap/e_log.c	(working copy)
@@ -1,8 +0,0 @@
-#include "dbl-wrap.h"
-
-wrap_type_t WRAP_FUNC (__ieee754_log) (wrap_type_t);
-
-double __ieee754_log (double x)
-{
-  return (double) WRAP_FUNC (__ieee754_log) ((wrap_type_t) x);
-}
Index: sysdeps/ieee754/dbl-wrap/s_atan.c
===================================================================
--- sysdeps/ieee754/dbl-wrap/s_atan.c	(revision 23089)
+++ sysdeps/ieee754/dbl-wrap/s_atan.c	(working copy)
@@ -1,13 +0,0 @@
-#include "dbl-wrap.h"
-
-wrap_type_t WRAP_FUNC (atan) (wrap_type_t);
-
-double
-atan (double x)
-{
-  return (double) WRAP_FUNC (atan) ((wrap_type_t) x);
-}
-
-#ifdef NO_LONG_DOUBLE
-weak_alias (atan, atanl)
-#endif
Index: sysdeps/ieee754/dbl-wrap/e_atan2.c
===================================================================
--- sysdeps/ieee754/dbl-wrap/e_atan2.c	(revision 23089)
+++ sysdeps/ieee754/dbl-wrap/e_atan2.c	(working copy)
@@ -1,9 +0,0 @@
-#include "dbl-wrap.h"
-
-wrap_type_t WRAP_FUNC (__ieee754_atan2) (wrap_type_t, wrap_type_t);
-
-double
-__ieee754_atan2 (double y, double x)
-{
-  return (double) WRAP_FUNC (__ieee754_atan2) ((wrap_type_t) y, (wrap_type_t) x);
-}
Index: sysdeps/ieee754/dbl-wrap/e_pow.c
===================================================================
--- sysdeps/ieee754/dbl-wrap/e_pow.c	(revision 23089)
+++ sysdeps/ieee754/dbl-wrap/e_pow.c	(working copy)
@@ -1,9 +0,0 @@
-#include "dbl-wrap.h"
-
-wrap_type_t WRAP_FUNC (__ieee754_pow) (wrap_type_t, wrap_type_t);
-
-double
-__ieee754_pow (double x, double y)
-{
-  return (double) WRAP_FUNC (__ieee754_pow) ((wrap_type_t) x, (wrap_type_t) y);
-}
Index: sysdeps/ieee754/dbl-wrap/s_sin.c
===================================================================
--- sysdeps/ieee754/dbl-wrap/s_sin.c	(revision 23089)
+++ sysdeps/ieee754/dbl-wrap/s_sin.c	(working copy)
@@ -1,27 +0,0 @@
-#include "dbl-wrap.h"
-
-wrap_type_t WRAP_FUNC (__sin) (wrap_type_t);
-
-double
-__sin (double x)
-{
-  return (double) WRAP_FUNC (__sin) ((wrap_type_t) x);
-}
-
-wrap_type_t WRAP_FUNC (__cos) (wrap_type_t);
-
-double
-__cos (double x)
-{
-  return (double) WRAP_FUNC (__cos) ((wrap_type_t) x);
-}
-
-weak_alias (__cos, cos)
-weak_alias (__sin, sin)
-
-#ifdef NO_LONG_DOUBLE
-strong_alias (__sin, __sinl)
-weak_alias (__sin, sinl)
-strong_alias (__cos, __cosl)
-weak_alias (__cos, cosl)
-#endif
Index: sysdeps/ieee754/dbl-wrap/dbl-wrap.h
===================================================================
--- sysdeps/ieee754/dbl-wrap/dbl-wrap.h	(revision 23089)
+++ sysdeps/ieee754/dbl-wrap/dbl-wrap.h	(working copy)
@@ -1,2 +0,0 @@
-typedef float wrap_type_t;
-#define WRAP_FUNC(func) func ## f
Index: sysdeps/ieee754/dbl-wrap/e_asin.c
===================================================================
--- sysdeps/ieee754/dbl-wrap/e_asin.c	(revision 23089)
+++ sysdeps/ieee754/dbl-wrap/e_asin.c	(working copy)
@@ -1,17 +0,0 @@
-#include "dbl-wrap.h"
-
-wrap_type_t WRAP_FUNC (__ieee754_asin) (wrap_type_t);
-
-double
-__ieee754_asin (double x)
-{
-  return (double) WRAP_FUNC (__ieee754_asin) ((wrap_type_t) x);
-}
-
-wrap_type_t WRAP_FUNC (__ieee754_acos) (wrap_type_t);
-
-double
-__ieee754_acos (double x)
-{
-  return (double) WRAP_FUNC (__ieee754_acos) ((wrap_type_t) x);
-}
Index: sysdeps/ieee754/dbl-wrap/e_exp.c
===================================================================
--- sysdeps/ieee754/dbl-wrap/e_exp.c	(revision 23089)
+++ sysdeps/ieee754/dbl-wrap/e_exp.c	(working copy)
@@ -1,9 +0,0 @@
-#include "dbl-wrap.h"
-
-wrap_type_t WRAP_FUNC (__ieee754_exp) (wrap_type_t);
-
-double
-__ieee754_exp (double x)
-{
-  return (double) WRAP_FUNC (__ieee754_exp) ((wrap_type_t) x);
-}
Index: sysdeps/ieee754/dbl-wrap/dosincos.c
===================================================================
--- sysdeps/ieee754/dbl-wrap/dosincos.c	(revision 23089)
+++ sysdeps/ieee754/dbl-wrap/dosincos.c	(working copy)
@@ -1 +0,0 @@
-/* empty */
Index: sysdeps/ieee754/ldbl-96/s_erfl.c
===================================================================
--- sysdeps/ieee754/ldbl-96/s_erfl.c	(revision 23089)
+++ sysdeps/ieee754/ldbl-96/s_erfl.c	(working copy)
@@ -106,10 +106,7 @@
 
 #include <math.h>
 #include <math_private.h>
-#include <gnu/option-groups.h>
 
-#if __OPTION_EGLIBC_LIBM_BIG
-
 static const long double
 tiny = 1e-4931L,
   half = 0.5L,
@@ -438,9 +435,4 @@
     }
 }
 
-#else /* !__OPTION_EGLIBC_LIBM_BIG */
-# include <sysdeps/ieee754/ldbl-wrap/s_erfl-wrap.c>
-weak_alias (__erfl, erfl)
-#endif /* __OPTION_EGLIBC_LIBM_BIG */
-
 weak_alias (__erfcl, erfcl)

-- 
Joseph S. Myers
joseph@xxxxxxxxxxxxxxxx
_______________________________________________
Patches mailing list
Patches@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/patches