about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--manual/Makefile3
-rw-r--r--manual/contrib.texi2
-rw-r--r--manual/freemanuals.texi90
-rw-r--r--manual/libc-texinfo.sh1
-rw-r--r--manual/libc.texinfo24
-rwxr-xr-xmanual/libm-err-tab.pl53
-rw-r--r--manual/math.texi8
7 files changed, 157 insertions, 24 deletions
diff --git a/manual/Makefile b/manual/Makefile
index 52c12aea6a..be7d0e1245 100644
--- a/manual/Makefile
+++ b/manual/Makefile
@@ -58,7 +58,8 @@ chapters = $(addsuffix .texi, \
 		       resource setjmp signal startup process job nss	\
 		       users sysinfo conf crypt debug)
 add-chapters = $(wildcard $(foreach d, $(add-ons), ../$d/$d.texi))
-appendices = lang.texi header.texi install.texi maint.texi contrib.texi
+appendices = lang.texi header.texi install.texi maint.texi contrib.texi \
+	     freemanuals.texi
 
 -include texis
 texis: texis.awk $(chapters) $(add-chapters) $(appendices) lesser.texi fdl.texi
diff --git a/manual/contrib.texi b/manual/contrib.texi
index c339d2aaac..f983cb54e3 100644
--- a/manual/contrib.texi
+++ b/manual/contrib.texi
@@ -1,4 +1,4 @@
-@node Contributors, Copying, Maintenance, Top
+@node Contributors, Free Manuals, Maintenance, Top
 @c %MENU% Who wrote what parts of the GNU C library
 @appendix Contributors to the GNU C Library
 
diff --git a/manual/freemanuals.texi b/manual/freemanuals.texi
new file mode 100644
index 0000000000..a424e8aa3e
--- /dev/null
+++ b/manual/freemanuals.texi
@@ -0,0 +1,90 @@
+@appendix Free Software Needs Free Documentation
+@cindex free documentation
+
+The biggest deficiency in the free software community today is not in
+the software---it is the lack of good free documentation that we can
+include with the free software.  Many of our most important
+programs do not come with free reference manuals and free introductory
+texts.  Documentation is an essential part of any software package;
+when an important free software package does not come with a free
+manual and a free tutorial, that is a major gap.  We have many such
+gaps today.
+
+Consider Perl, for instance.  The tutorial manuals that people
+normally use are non-free.  How did this come about?  Because the
+authors of those manuals published them with restrictive terms---no
+copying, no modification, source files not available---which exclude
+them from the free software world.
+
+That wasn't the first time this sort of thing happened, and it was far
+from the last.  Many times we have heard a GNU user eagerly describe a
+manual that he is writing, his intended contribution to the community,
+only to learn that he had ruined everything by signing a publication
+contract to make it non-free.
+
+Free documentation, like free software, is a matter of freedom, not
+price.  The problem with the non-free manual is not that publishers
+charge a price for printed copies---that in itself is fine.  (The Free
+Software Foundation sells printed copies of manuals, too.)  The
+problem is the restrictions on the use of the manual.  Free manuals
+are available in source code form, and give you permission to copy and
+modify.  Non-free manuals do not allow this.
+
+The criteria of freedom for a free manual are roughly the same as for
+free software.  Redistribution (including the normal kinds of
+commercial redistribution) must be permitted, so that the manual can
+accompany every copy of the program, both on-line and on paper.
+
+Permission for modification of the technical content is crucial too.
+When people modify the software, adding or changing features, if they
+are conscientious they will change the manual too---so they can
+provide accurate and clear documentation for the modified program.  A
+manual that leaves you no choice but to write a new manual to document
+a changed version of the program is not really available to our
+community.
+
+Some kinds of limits on the way modification is handled are
+acceptable.  For example, requirements to preserve the original
+author's copyright notice, the distribution terms, or the list of
+authors, are ok.  It is also no problem to require modified versions
+to include notice that they were modified.  Even entire sections that
+may not be deleted or changed are acceptable, as long as they deal
+with nontechnical topics (like this one).  These kinds of restrictions
+are acceptable because they don't obstruct the community's normal use
+of the manual.
+
+However, it must be possible to modify all the @emph{technical}
+content of the manual, and then distribute the result in all the usual
+media, through all the usual channels.  Otherwise, the restrictions
+obstruct the use of the manual, it is not free, and we need another
+manual to replace it.
+
+Please spread the word about this issue.  Our community continues to
+lose manuals to proprietary publishing.  If we spread the word that
+free software needs free reference manuals and free tutorials, perhaps
+the next person who wants to contribute by writing documentation will
+realize, before it is too late, that only free manuals contribute to
+the free software community.
+
+If you are writing documentation, please insist on publishing it under
+the GNU Free Documentation License or another free documentation
+license.  Remember that this decision requires your approval---you
+don't have to let the publisher decide.  Some commercial publishers
+will use a free license if you insist, but they will not propose the
+option; it is up to you to raise the issue and say firmly that this is
+what you want.  If the publisher you are dealing with refuses, please
+try other publishers.  If you're not sure whether a proposed license
+is free, write to @email{licensing@@gnu.org}.
+
+You can encourage commercial publishers to sell more free, copylefted
+manuals and tutorials by buying them, and particularly by buying
+copies from the publishers that paid for their writing or for major
+improvements.  Meanwhile, try to avoid buying non-free documentation
+at all.  Check the distribution terms of a manual before you buy it,
+and insist that whoever seeks your business must respect your freedom.
+Check the history of the book, and try reward the publishers that have
+paid or pay the authors to work on it.
+
+The Free Software Foundation maintains a list of free documentation
+published by other publishers, at
+@url{http://www.fsf.org/doc/other-free-books.html}.
diff --git a/manual/libc-texinfo.sh b/manual/libc-texinfo.sh
index e564ebceb2..2e6b32d3f4 100644
--- a/manual/libc-texinfo.sh
+++ b/manual/libc-texinfo.sh
@@ -68,6 +68,7 @@ mv -f incl.$$ chapters.texi
   !/^\*/ { print; }
  ' smenu.$$
  cat <<EOF
+* Free Manuals::		 Free Software Needs Free Documentation.
 * Copying::                      The GNU Lesser General Public License says
                                   how you can copy and share the GNU C Library.
 * Documentation License::        This manual is under the GNU Free
diff --git a/manual/libc.texinfo b/manual/libc.texinfo
index f5bfbcde36..507447c834 100644
--- a/manual/libc.texinfo
+++ b/manual/libc.texinfo
@@ -33,10 +33,12 @@ Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001 Free Software Found
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.1 or
 any later version published by the Free Software Foundation; with the
-Invariant Sections being "GNU Lesser General Public License", the
-Front-Cover texts being (a) (see below), and with the Back-Cover Texts
-being (b) (see below).  A copy of the license is included in the section
-entitled "GNU Free Documentation License".
+Invariant Sections being "Free Software Needs Free Documentation" and
+"GNU Lesser General Public License", the Front-Cover texts being (a)
+(see below), and with the Back-Cover Texts being (b) (see below).  A
+copy of the license is included in the section entitled "GNU Free
+Documentation License".
+
 
 (a) The FSF's Front-Cover Text is:
 
@@ -78,10 +80,11 @@ ISBN @value{ISBN} @*
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.1 or
 any later version published by the Free Software Foundation; with the
-Invariant Sections being "GNU Lesser General Public License", the
-Front-Cover texts being (a) (see below), and with the Back-Cover Texts
-being (b) (see below).  A copy of the license is included in the section
-entitled "GNU Free Documentation License".
+Invariant Sections being "Free Software Needs Free Documentation" and
+"GNU Lesser General Public License", the Front-Cover texts being (a)
+(see below), and with the Back-Cover Texts being (b) (see below).  A
+copy of the license is included in the section entitled "GNU Free
+Documentation License".
 
 (a) The FSF's Front-Cover Text is:
 
@@ -110,8 +113,11 @@ of the GNU C Library.
 @include top-menu.texi
 @include chapters.texi
 
+@node Free Manuals, Copying, Contributors, Top
+@include freemanuals.texi
+
 @set lgpl-appendix
-@node Copying, Documentation License, Contributors, Top
+@node Copying, Documentation License, Free Manuals, Top
 @include lesser.texi
 
 @node Documentation License, Concept Index, Copying, Top
diff --git a/manual/libm-err-tab.pl b/manual/libm-err-tab.pl
index 3357d1855e..799c5b85ff 100755
--- a/manual/libm-err-tab.pl
+++ b/manual/libm-err-tab.pl
@@ -52,10 +52,19 @@ use vars qw (%results @all_floats %suffices @all_functions);
 %pplatforms =
   ( "i386/fpu" => "ix86",
     "generic" => "Generic",
-    "alpha" => "Alpha"
+    "alpha/fpu" => "Alpha",
+    "ia64/fpu" => "IA64",
+    "m68k/fpu" => "M68k",
+    "mips/fpu" => "MIPS",
+    "powerpc/fpu" => "PowerPC",
+    "sparc/sparc32/fpu" => "Sparc 32-bit",
+    "sparc/sparc64/fpu" => "Sparc 64-bit",
+    "sh/sh4/fpu" => "SH4",
+    "s390/fpu" => "S/390",
+    "arm" => "ARM"
   );
 
-@all_functions = 
+@all_functions =
   ( "acos", "acosh", "asin", "asinh", "atan", "atanh",
     "atan2", "cabs", "cacos", "cacosh", "carg", "casin", "casinh",
     "catan", "catanh", "cbrt", "ccos", "ccosh", "ceil", "cexp", "cimag",
@@ -79,6 +88,8 @@ if ($#ARGV == 0) {
 
 find (\&find_files, $sources);
 
+@platforms = sort by_platforms @platforms;
+
 &print_all;
 
 sub find_files {
@@ -131,7 +142,7 @@ sub parse_ulps {
       } elsif ($eps eq "0") {
 	# ignore
 	next;
-      } elsif (!exists $results{$test}{$platform}{$type}{$float} 
+      } elsif (!exists $results{$test}{$platform}{$type}{$float}
 	    || $results{$test}{$platform}{$type}{$float} ne 'fail') {
 	$results{$test}{$platform}{$type}{$float} = $eps;
       }
@@ -150,7 +161,7 @@ sub parse_ulps {
 sub get_value {
   my ($fct, $platform, $type, $float) = @_;
 
-  return (exists $results{$fct}{$platform}{$type}{$float} 
+  return (exists $results{$fct}{$platform}{$type}{$float}
 	  ? $results{$fct}{$platform}{$type}{$float} : "0");
 }
 
@@ -163,27 +174,28 @@ sub canonicalize_platform {
   return exists $pplatforms{$platform} ? $pplatforms{$platform} : $platform;
 }
 
-sub print_all {
-  my ($fct, $platform, $float, $first, $i);
+sub print_platforms {
+  my (@p) = @_;
+  my ($fct, $platform, $float, $first, $i, $platform_no, $platform_total);
 
   print '@multitable {nexttowardf} ';
-  foreach (@platforms) {
+  foreach (@p) {
     print ' {1000 + i 1000}';
   }
   print "\n";
 
   print '@item Function ';
-  foreach (@platforms) {
+  foreach (@p) {
     print ' @tab ';
     print &canonicalize_platform ($_);
   }
   print "\n";
 
-  
+
   foreach $fct (@all_functions) {
     foreach $float (@all_floats) {
       print "\@item $fct$suffices{$float} ";
-      foreach $platform (@platforms) {
+      foreach $platform (@p) {
 	print ' @tab ';
 	if (exists $results{$fct}{$platform}{'normal'}{$float}
 	    || exists $results{$fct}{$platform}{'real'}{$float}
@@ -204,3 +216,24 @@ sub print_all {
 
   print "\@end multitable\n";
 }
+
+sub print_all {
+  my ($i, $max);
+
+  my ($columns) = 5;
+
+  # Print only 5 platforms at a time.
+  for ($i=0; $i < $#platforms; $i+=$columns) {
+    $max = $i+$columns-1 > $#platforms ? $#platforms : $i+$columns-1;
+    print_platforms (@platforms[$i .. $max]);
+  }
+}
+
+sub by_platforms {
+  my ($pa, $pb);
+
+  $pa = $pplatforms{$a} ? $pplatforms{$a} : $a;
+  $pb = $pplatforms{$b} ? $pplatforms{$b} : $b;
+  
+  return $pa cmp $pb;
+}
diff --git a/manual/math.texi b/manual/math.texi
index 6eba775cde..7ebcddee3f 100644
--- a/manual/math.texi
+++ b/manual/math.texi
@@ -1230,12 +1230,12 @@ floating-point number representation.  Ideally the error for all
 functions is always less than 0.5ulps.  Using rounding bits this is also
 possible and normally implemented for the basic operations.  To achieve
 the same for the complex math functions requires a lot more work and
-this was not spend so far.
+this has not yet been done.
 
 Therefore many of the functions in the math library have errors.  The
 table lists the maximum error for each function which is exposed by one
-of the existing tests in the test suite.  It is tried to cover as much
-as possible and really list the maximum error (or at least a ballpark
+of the existing tests in the test suite.  The table tries to cover as much
+as possible and list the actual maximum error (or at least a ballpark
 figure) but this is often not achieved due to the large search space.
 
 The table lists the ULP values for different architectures.  Different
@@ -1243,6 +1243,8 @@ architectures have different results since their hardware support for
 floating-point operations varies and also the existing hardware support
 is different.
 
+@page
+@c This multitable does not fit on a single page
 @include libm-err.texi
 
 @node Pseudo-Random Numbers