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
|
---|
6 | licensed to the FSF.)
|
---|
7 |
|
---|
8 | Permission is granted to copy, distribute and/or modify this document
|
---|
9 | under the terms of the GNU Free Documentation License, Version 1.3 or
|
---|
10 | any later version published by the Free Software Foundation; with the
|
---|
11 | Invariant Sections being "GNU General Public License," with the
|
---|
12 | Front-Cover Texts being "A GNU Manual," and with the Back-Cover
|
---|
13 | Texts as in (a) below. A copy of the license is included in the
|
---|
14 | section entitled "GNU Free Documentation License."
|
---|
15 |
|
---|
16 | (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
|
---|
17 | modify this GNU manual. Buying copies from the FSF supports it in
|
---|
18 | developing 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 | <!--
|
---|
37 | a.summary-letter {text-decoration: none}
|
---|
38 | blockquote.indentedblock {margin-right: 0em}
|
---|
39 | div.display {margin-left: 3.2em}
|
---|
40 | div.example {margin-left: 3.2em}
|
---|
41 | div.lisp {margin-left: 3.2em}
|
---|
42 | kbd {font-style: oblique}
|
---|
43 | pre.display {font-family: inherit}
|
---|
44 | pre.format {font-family: inherit}
|
---|
45 | pre.menu-comment {font-family: serif}
|
---|
46 | pre.menu-preformatted {font-family: serif}
|
---|
47 | span.nolinebreak {white-space: nowrap}
|
---|
48 | span.roman {font-family: initial; font-weight: normal}
|
---|
49 | span.sansserif {font-family: sans-serif; font-weight: normal}
|
---|
50 | ul.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>
|
---|
60 | Previous: <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> [<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
|
---|
66 | than many programmers seem to think, and few books on programming
|
---|
67 | languages spend much time in that area. In this chapter, we have
|
---|
68 | tried to expose the reader to some of the key ideas, and to warn
|
---|
69 | of easily overlooked pitfalls that can soon lead to nonsensical
|
---|
70 | results. There are a few good references that we recommend
|
---|
71 | for further reading, and for finding other important material
|
---|
72 | about computer arithmetic:
|
---|
73 | </p>
|
---|
74 |
|
---|
75 | <ul>
|
---|
76 | <li> Paul H. Abbott and 15 others, <cite>Architecture and software support
|
---|
77 | in IBM S/390 Parallel Enterprise Servers for IEEE Floating-Point
|
---|
78 | arithmetic</cite>, IBM Journal of Research and Development <b>43</b>(5/6)
|
---|
79 | 723–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
|
---|
81 | a good description of IBM’s algorithm for exact decimal-to-binary
|
---|
82 | conversion, complementing earlier ones by Clinger and others.
|
---|
83 |
|
---|
84 | </li><li> Nelson H. F. Beebe, <cite>The Mathematical-Function Computation Handbook:
|
---|
85 | Programming Using the MathCW Portable Software Library</cite>,
|
---|
86 | Springer (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>.
|
---|
89 | This book describes portable implementations of a large superset
|
---|
90 | of the mathematical functions available in many programming
|
---|
91 | languages, extended to a future 256-bit format (70 decimal
|
---|
92 | digits), for both binary and decimal floating point. It includes
|
---|
93 | a substantial portion of the functions described in the famous
|
---|
94 | <cite>NIST Handbook of Mathematical Functions</cite>, Cambridge (2018),
|
---|
95 | ISBN 0-521-19225-0.
|
---|
96 | See
|
---|
97 | <a href="http://www.math.utah.edu/pub/mathcw">http://www.math.utah.edu/pub/mathcw</a>
|
---|
98 | for compilers and libraries.
|
---|
99 |
|
---|
100 | </li><li> William D. Clinger, <cite>How to Read Floating Point Numbers
|
---|
101 | Accurately</cite>, ACM SIGPLAN Notices <b>25</b>(6) 92–101 (June 1990),
|
---|
102 | <a href="https://doi.org/10.1145/93548.93557">https://doi.org/10.1145/93548.93557</a>.
|
---|
103 | See also the papers by Steele & White.
|
---|
104 |
|
---|
105 | </li><li> William D. Clinger, <cite>Retrospective: How to read floating
|
---|
106 | point numbers accurately</cite>, ACM SIGPLAN Notices <b>39</b>(4) 360–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,
|
---|
108 | with additional commentary.
|
---|
109 |
|
---|
110 | </li><li> I. Bennett Goldberg, <cite>27 Bits Are Not Enough For 8-Digit Accuracy</cite>,
|
---|
111 | Communications of the ACM <b>10</b>(2) 105–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,
|
---|
113 | and its companions by David Matula, address the base-conversion
|
---|
114 | problem, and show that the naive formulas are wrong by one or
|
---|
115 | two digits.
|
---|
116 |
|
---|
117 | </li><li> David Goldberg, <cite>What Every Computer Scientist Should Know
|
---|
118 | About Floating-Point Arithmetic</cite>, ACM Computing Surveys <b>23</b>(1)
|
---|
119 | 5–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>.
|
---|
121 | This paper has been widely distributed, and reissued in vendor
|
---|
122 | programming-language documentation. It is well worth reading,
|
---|
123 | and then rereading from time to time.
|
---|
124 |
|
---|
125 | </li><li> Norbert Juffa and Nelson H. F. Beebe, <cite>A Bibliography of
|
---|
126 | Publications 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>.
|
---|
128 | This is the largest known bibliography of publications about
|
---|
129 | floating-point, and also integer, arithmetic. It is actively
|
---|
130 | maintained, and in mid 2019, contains more than 6400 references to
|
---|
131 | original research papers, reports, theses, books, and Web sites on the
|
---|
132 | subject matter. It can be used to locate the latest research in the
|
---|
133 | field, and the historical coverage dates back to a 1726 paper on
|
---|
134 | signed-digit arithmetic, and an 1837 paper by Charles Babbage, the
|
---|
135 | intellectual father of mechanical computers. The entries for the
|
---|
136 | Abbott, Clinger, and Steele & White papers cited earlier contain
|
---|
137 | pointers to several other important related papers on the
|
---|
138 | base-conversion problem.
|
---|
139 |
|
---|
140 | </li><li> William Kahan, <cite>Branch Cuts for Complex Elementary Functions, or
|
---|
141 | Much Ado About Nothing’s Sign Bit</cite>, (1987),
|
---|
142 | <a href="http://people.freebsd.org/~das/kahan86branch.pdf">http://people.freebsd.org/~das/kahan86branch.pdf</a>.
|
---|
143 | This Web document about the fine points of complex arithmetic
|
---|
144 | also appears in the volume edited by A. Iserles and
|
---|
145 | M. J. D. Powell, <cite>The State of the Art in Numerical
|
---|
146 | Analysis: Proceedings of the Joint IMA/SIAM Conference on the
|
---|
147 | State of the Art in Numerical Analysis held at the University of
|
---|
148 | Birmingham, 14–18 April 1986</cite>, Oxford University Press (1987),
|
---|
149 | ISBN 0-19-853614-3 (xiv + 719 pages). Its author is the famous
|
---|
150 | chief architect of the IEEE 754 arithmetic system, and one of the
|
---|
151 | world’s greatest experts in the field of floating-point
|
---|
152 | arithmetic. An entire generation of his students at the
|
---|
153 | University of California, Berkeley, have gone on to careers in
|
---|
154 | academic and industry, spreading the knowledge of how to do
|
---|
155 | floating-point arithmetic right.
|
---|
156 |
|
---|
157 | </li><li> Donald E. Knuth, <cite>A Simple Program Whose Proof Isn’t</cite>,
|
---|
158 | in <cite>Beauty is our business: a birthday salute to Edsger
|
---|
159 | W. Dijkstra</cite>, W. H. J. Feijen, A. J. M. van Gasteren,
|
---|
160 | D. Gries, and J. Misra (eds.), Springer (1990), ISBN
|
---|
161 | 1-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
|
---|
163 | chapter supplies a correctness proof of the decimal to
|
---|
164 | binary, and binary to decimal, conversions in fixed-point
|
---|
165 | arithmetic in the TeX typesetting system. The proof evaded
|
---|
166 | its author for a dozen years.
|
---|
167 |
|
---|
168 | </li><li> David W. Matula, <cite>In-and-out conversions</cite>,
|
---|
169 | Communications of the ACM <b>11</b>(1) 57–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>,
|
---|
173 | Proceedings of the American Mathematical Society <b>19</b>(3)
|
---|
174 | 716–723 (June 1968). See also other papers here by this author,
|
---|
175 | and by I. Bennett Goldberg.
|
---|
176 |
|
---|
177 | </li><li> David W. Matula, <cite>A Formalization of Floating-Point Numeric
|
---|
178 | Base Conversion</cite>, IEEE Transactions on Computers <b>C-19</b>(8)
|
---|
179 | 681–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
|
---|
183 | Floating-Point Arithmetic</cite>, Birkhäuser-Boston (2010), ISBN
|
---|
184 | 0-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
|
---|
186 | comprehensive treatise from a French team who are among the
|
---|
187 | world’s greatest experts in floating-point arithmetic, and among
|
---|
188 | the most prolific writers of research papers in that field. They
|
---|
189 | have much to teach, and their book deserves a place on the
|
---|
190 | shelves of every serious numerical programmer.
|
---|
191 |
|
---|
192 | </li><li> Jean-Michel Muller and eight others, <cite>Handbook of
|
---|
193 | Floating-Point Arithmetic</cite>, Second edition, Birkhäuser-Boston (2018), ISBN
|
---|
194 | 3-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
|
---|
196 | edition of the preceding entry.
|
---|
197 |
|
---|
198 | </li><li> Michael Overton, <cite>Numerical Computing with IEEE Floating
|
---|
199 | Point Arithmetic, Including One Theorem, One Rule of Thumb, and
|
---|
200 | One 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>.
|
---|
203 | This 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
|
---|
206 | Floating-Point Numbers Accurately</cite>, ACM SIGPLAN Notices
|
---|
207 | <b>25</b>(6) 112–126 (June 1990),
|
---|
208 | <a href="https://doi.org/10.1145/93548.93559">https://doi.org/10.1145/93548.93559</a>.
|
---|
209 | See also the papers by Clinger.
|
---|
210 |
|
---|
211 | </li><li> Guy L. Steele Jr. and Jon L. White, <cite>Retrospective: How to
|
---|
212 | Print Floating-Point Numbers Accurately</cite>, ACM SIGPLAN Notices
|
---|
213 | <b>39</b>(4) 372–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
|
---|
215 | paper, 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
|
---|
219 | provides 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>
|
---|
227 | Previous: <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> [<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>
|
---|