* manual/libc-texinfo.sh: Add entry about free manuals.

* manual/contrib.texi (Contributors): Fix cross reference.

	* manual/libc.texinfo (Copying): Include freemanuals.

	* manual/Makefile (appendices): Add freemanuals.

	* manual/freemanuals.texi: New file.
	Patch by Brian Youmans <3diff@gnu.org>.

	* manual/libm-err-tab.pl: Pretty print more platforms, print a
	smaller table.

	* manual/math.texi (Errors in Math Functions): Fix grammar, start
	table on separate page.
	Patch by Brian Youmans <3diff@gnu.org>.
This commit is contained in:
Andreas Jaeger 2001-08-28 08:05:41 +00:00
parent c06a49c551
commit 41713d4e8c
7 changed files with 157 additions and 24 deletions

View File

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

View File

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

90
manual/freemanuals.texi Normal file
View File

@ -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}.

View File

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

View File

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

View File

@ -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;
}

View File

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