* 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:
parent
c06a49c551
commit
41713d4e8c
@ -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
|
||||
|
@ -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
90
manual/freemanuals.texi
Normal 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}.
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user