source: public/doc/gnu-c/Further-Reading.html@ 02598c2

Last change on this file since 02598c2 was 02598c2, checked in by Mikhail Kirillov <w96k@…>, on Oct 6, 2022 at 12:36:29 PM

Add gnu-c

  • Property mode set to 100644
File size: 11.9 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html>
3<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
4
5(The work of Trevis Rothwell and Nelson Beebe has been assigned or
6licensed to the FSF.)
7
8Permission is granted to copy, distribute and/or modify this document
9under the terms of the GNU Free Documentation License, Version 1.3 or
10any later version published by the Free Software Foundation; with the
11Invariant Sections being "GNU General Public License," with the
12Front-Cover Texts being "A GNU Manual," and with the Back-Cover
13Texts as in (a) below. A copy of the license is included in the
14section entitled "GNU Free Documentation License."
15
16(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
17modify this GNU manual. Buying copies from the FSF supports it in
18developing GNU and promoting software freedom." -->
19<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
20<head>
21<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
22<title>Further Reading (GNU C Language Manual)</title>
23
24<meta name="description" content="Further Reading (GNU C Language Manual)">
25<meta name="keywords" content="Further Reading (GNU C Language Manual)">
26<meta name="resource-type" content="document">
27<meta name="distribution" content="global">
28<meta name="Generator" content="makeinfo">
29<link href="index.html" rel="start" title="Top">
30<link href="Symbol-Index.html" rel="index" title="Symbol Index">
31<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
32<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
33<link href="Compilation.html" rel="next" title="Compilation">
34<link href="Round_002dTrip-Base-Conversion.html" rel="prev" title="Round-Trip Base Conversion">
35<style type="text/css">
36<!--
37a.summary-letter {text-decoration: none}
38blockquote.indentedblock {margin-right: 0em}
39div.display {margin-left: 3.2em}
40div.example {margin-left: 3.2em}
41div.lisp {margin-left: 3.2em}
42kbd {font-style: oblique}
43pre.display {font-family: inherit}
44pre.format {font-family: inherit}
45pre.menu-comment {font-family: serif}
46pre.menu-preformatted {font-family: serif}
47span.nolinebreak {white-space: nowrap}
48span.roman {font-family: initial; font-weight: normal}
49span.sansserif {font-family: sans-serif; font-weight: normal}
50ul.no-bullet {list-style: none}
51-->
52</style>
53
54
55</head>
56
57<body lang="en">
58<span id="Further-Reading"></span><div class="header">
59<p>
60Previous: <a href="Round_002dTrip-Base-Conversion.html" accesskey="p" rel="prev">Round-Trip Base Conversion</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Index.html" title="Index" rel="index">Index</a>]</p>
61</div>
62<hr>
63<span id="Further-Reading-1"></span><h3 class="section">28.21 Further Reading</h3>
64
65<p>The subject of floating-point arithmetic is much more complex
66than many programmers seem to think, and few books on programming
67languages spend much time in that area. In this chapter, we have
68tried to expose the reader to some of the key ideas, and to warn
69of easily overlooked pitfalls that can soon lead to nonsensical
70results. There are a few good references that we recommend
71for further reading, and for finding other important material
72about computer arithmetic:
73</p>
74
75<ul>
76<li> Paul H. Abbott and 15 others, <cite>Architecture and software support
77in IBM S/390 Parallel Enterprise Servers for IEEE Floating-Point
78arithmetic</cite>, IBM Journal of Research and Development <b>43</b>(5/6)
79723&ndash;760 (1999),
80<a href="https://doi.org/10.1147/rd.435.0723">https://doi.org/10.1147/rd.435.0723</a>. This article gives
81a good description of IBM&rsquo;s algorithm for exact decimal-to-binary
82conversion, complementing earlier ones by Clinger and others.
83
84</li><li> Nelson H. F. Beebe, <cite>The Mathematical-Function Computation Handbook:
85Programming Using the MathCW Portable Software Library</cite>,
86Springer (2017), ISBN 3-319-64109-3 (hardcover), 3-319-64110-7 (e-book)
87(xxxvi + 1114 pages),
88<a href="https://doi.org/10.1007/978-3-319-64110-2">https://doi.org/10.1007/978-3-319-64110-2</a>.
89This book describes portable implementations of a large superset
90of the mathematical functions available in many programming
91languages, extended to a future 256-bit format (70 decimal
92digits), for both binary and decimal floating point. It includes
93a substantial portion of the functions described in the famous
94<cite>NIST Handbook of Mathematical Functions</cite>, Cambridge (2018),
95ISBN 0-521-19225-0.
96See
97<a href="http://www.math.utah.edu/pub/mathcw">http://www.math.utah.edu/pub/mathcw</a>
98for compilers and libraries.
99
100</li><li> William D. Clinger, <cite>How to Read Floating Point Numbers
101Accurately</cite>, ACM SIGPLAN Notices <b>25</b>(6) 92&ndash;101 (June 1990),
102<a href="https://doi.org/10.1145/93548.93557">https://doi.org/10.1145/93548.93557</a>.
103See also the papers by Steele &amp; White.
104
105</li><li> William D. Clinger, <cite>Retrospective: How to read floating
106point numbers accurately</cite>, ACM SIGPLAN Notices <b>39</b>(4) 360&ndash;371 (April 2004),
107<a href="http://doi.acm.org/10.1145/989393.989430">http://doi.acm.org/10.1145/989393.989430</a>. Reprint of 1990 paper,
108with additional commentary.
109
110</li><li> I. Bennett Goldberg, <cite>27 Bits Are Not Enough For 8-Digit Accuracy</cite>,
111Communications of the ACM <b>10</b>(2) 105&ndash;106 (February 1967),
112<a href="http://doi.acm.org/10.1145/363067.363112">http://doi.acm.org/10.1145/363067.363112</a>. This paper,
113and its companions by David Matula, address the base-conversion
114problem, and show that the naive formulas are wrong by one or
115two digits.
116
117</li><li> David Goldberg, <cite>What Every Computer Scientist Should Know
118About Floating-Point Arithmetic</cite>, ACM Computing Surveys <b>23</b>(1)
1195&ndash;58 (March 1991), corrigendum <b>23</b>(3) 413 (September 1991),
120<a href="https://doi.org/10.1145/103162.103163">https://doi.org/10.1145/103162.103163</a>.
121This paper has been widely distributed, and reissued in vendor
122programming-language documentation. It is well worth reading,
123and then rereading from time to time.
124
125</li><li> Norbert Juffa and Nelson H. F. Beebe, <cite>A Bibliography of
126Publications on Floating-Point Arithmetic</cite>,
127<a href="http://www.math.utah.edu/pub/tex/bib/fparith.bib">http://www.math.utah.edu/pub/tex/bib/fparith.bib</a>.
128This is the largest known bibliography of publications about
129floating-point, and also integer, arithmetic. It is actively
130maintained, and in mid 2019, contains more than 6400 references to
131original research papers, reports, theses, books, and Web sites on the
132subject matter. It can be used to locate the latest research in the
133field, and the historical coverage dates back to a 1726 paper on
134signed-digit arithmetic, and an 1837 paper by Charles Babbage, the
135intellectual father of mechanical computers. The entries for the
136Abbott, Clinger, and Steele &amp; White papers cited earlier contain
137pointers to several other important related papers on the
138base-conversion problem.
139
140</li><li> William Kahan, <cite>Branch Cuts for Complex Elementary Functions, or
141Much Ado About Nothing&rsquo;s Sign Bit</cite>, (1987),
142<a href="http://people.freebsd.org/~das/kahan86branch.pdf">http://people.freebsd.org/~das/kahan86branch.pdf</a>.
143This Web document about the fine points of complex arithmetic
144also appears in the volume edited by A. Iserles and
145M. J. D. Powell, <cite>The State of the Art in Numerical
146Analysis: Proceedings of the Joint IMA/SIAM Conference on the
147State of the Art in Numerical Analysis held at the University of
148Birmingham, 14&ndash;18 April 1986</cite>, Oxford University Press (1987),
149ISBN 0-19-853614-3 (xiv + 719 pages). Its author is the famous
150chief architect of the IEEE 754 arithmetic system, and one of the
151world&rsquo;s greatest experts in the field of floating-point
152arithmetic. An entire generation of his students at the
153University of California, Berkeley, have gone on to careers in
154academic and industry, spreading the knowledge of how to do
155floating-point arithmetic right.
156
157</li><li> Donald E. Knuth, <cite>A Simple Program Whose Proof Isn&rsquo;t</cite>,
158in <cite>Beauty is our business: a birthday salute to Edsger
159W. Dijkstra</cite>, W. H. J. Feijen, A. J. M. van Gasteren,
160D. Gries, and J. Misra (eds.), Springer (1990), ISBN
1611-4612-8792-8,
162<a href="https://doi.org/10.1007/978-1-4612-4476-9">https://doi.org/10.1007/978-1-4612-4476-9</a>. This book
163chapter supplies a correctness proof of the decimal to
164binary, and binary to decimal, conversions in fixed-point
165arithmetic in the TeX typesetting system. The proof evaded
166its author for a dozen years.
167
168</li><li> David W. Matula, <cite>In-and-out conversions</cite>,
169Communications of the ACM <b>11</b>(1) 57&ndash;50 (January 1968),
170<a href="https://doi.org/10.1145/362851.362887">https://doi.org/10.1145/362851.362887</a>.
171
172</li><li> David W. Matula, <cite>The Base Conversion Theorem</cite>,
173Proceedings of the American Mathematical Society <b>19</b>(3)
174716&ndash;723 (June 1968). See also other papers here by this author,
175and by I. Bennett Goldberg.
176
177</li><li> David W. Matula, <cite>A Formalization of Floating-Point Numeric
178Base Conversion</cite>, IEEE Transactions on Computers <b>C-19</b>(8)
179681&ndash;692 (August 1970),
180<a href="https://doi.org/10.1109/T-C.1970.223017">https://doi.org/10.1109/T-C.1970.223017</a>.
181
182</li><li> Jean-Michel Muller and eight others, <cite>Handbook of
183Floating-Point Arithmetic</cite>, Birkh&auml;user-Boston (2010), ISBN
1840-8176-4704-X (xxiii + 572 pages),
185<a href="https://doi.org/10.1007/978-0-8176-4704-9">https://doi.org/10.1007/978-0-8176-4704-9</a>. This is a
186comprehensive treatise from a French team who are among the
187world&rsquo;s greatest experts in floating-point arithmetic, and among
188the most prolific writers of research papers in that field. They
189have much to teach, and their book deserves a place on the
190shelves of every serious numerical programmer.
191
192</li><li> Jean-Michel Muller and eight others, <cite>Handbook of
193Floating-Point Arithmetic</cite>, Second edition, Birkh&auml;user-Boston (2018), ISBN
1943-319-76525-6 (xxv + 627 pages),
195<a href="https://doi.org/10.1007/978-3-319-76526-6">https://doi.org/10.1007/978-3-319-76526-6</a>. This is a new
196edition of the preceding entry.
197
198</li><li> Michael Overton, <cite>Numerical Computing with IEEE Floating
199Point Arithmetic, Including One Theorem, One Rule of Thumb, and
200One Hundred and One Exercises</cite>, SIAM (2001), ISBN 0-89871-482-6
201(xiv + 104 pages),
202<a href="http://www.ec-securehost.com/SIAM/ot76.html">http://www.ec-securehost.com/SIAM/ot76.html</a>.
203This is a small volume that can be covered in a few hours.
204
205</li><li> Guy L. Steele Jr. and Jon L. White, <cite>How to Print
206Floating-Point Numbers Accurately</cite>, ACM SIGPLAN Notices
207<b>25</b>(6) 112&ndash;126 (June 1990),
208<a href="https://doi.org/10.1145/93548.93559">https://doi.org/10.1145/93548.93559</a>.
209See also the papers by Clinger.
210
211</li><li> Guy L. Steele Jr. and Jon L. White, <cite>Retrospective: How to
212Print Floating-Point Numbers Accurately</cite>, ACM SIGPLAN Notices
213<b>39</b>(4) 372&ndash;389 (April 2004),
214<a href="http://doi.acm.org/10.1145/989393.989431">http://doi.acm.org/10.1145/989393.989431</a>. Reprint of 1990
215paper, with additional commentary.
216
217</li><li> Pat H. Sterbenz, <cite>Floating Point Computation</cite>, Prentice-Hall
218(1974), ISBN 0-13-322495-3 (xiv + 316 pages). This often-cited book
219provides solid coverage of what floating-point arithmetic was like
220<em>before</em> the introduction of IEEE 754 arithmetic.
221
222</li></ul>
223
224<hr>
225<div class="header">
226<p>
227Previous: <a href="Round_002dTrip-Base-Conversion.html" accesskey="p" rel="prev">Round-Trip Base Conversion</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Index.html" title="Index" rel="index">Index</a>]</p>
228</div>
229
230
231
232</body>
233</html>
Note: See TracBrowser for help on using the repository browser.