Abstract
The Pentium computer chip's division algorithm relies on a table from which five entries were inadvertently omitted, with the result that 1738 single precision dividend-divisor pairs yield relative errors whose most significant bit is uniformly distributed from the 14th to the 23rd (least significant) bit. This corresponds to a rate of one error every 40 billion random single precision divisions. The same general pattern appears at double precision, with an error rate of one in every 9 billion divisions or 75 minutes of division time.
These rates assume randomly distributed data. The distribution of the faulty pairs themselves however is far from random, with the effect that if the data is so nonrandom as to be just the constant 1, then random calculations started from that constant produce a division error once every few minutes, and these errors will sometimes propagate many more steps. A much higher rate yet is obtained when dividing small (<100) integers “bruised” by subtracting one millionth, where every 400 divisions will see a relative error of at least one in a million.
The software engineering implications of the bug include the observations that the method of exercising reachable components cannot detect reachable components mistakenly believed unreachable, and that hand-checked proofs build false confidence.
This work was supported by ONR under grant number N00014-92-J-1974
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
D.E. Atkins. Higher-radix division using estimates of the divisor and partial remainders. IEEE Transactions on Computers, C-17(10), October 1968.
T. Coe, T. Mathisen, G. Moler, and V. Pratt. Computational aspects of the Pentium affair. IEEE J. Computational Sci. and Eng., March 1995.
J.E. Robertson. A new class of digital division methods. IRE Transactions on Electronic Computers, EC-7:218–222, September 1958.
H.P. Sharangpani and M.L. Barton. Statistical analysis of floating point flaw in the Pentium™ processor (1994). Available on World-Wide Web as http://www.intel.com/product/pentium/white11/index.html, November 1994.
T.D. Tocher. Techniques of multiplication and division for binary computers. Quarterly J. of Applied Math, 2:364–384, 1958.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1995 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Pratt, V. (1995). Anatomy of the Pentium bug. In: Mosses, P.D., Nielsen, M., Schwartzbach, M.I. (eds) TAPSOFT '95: Theory and Practice of Software Development. CAAP 1995. Lecture Notes in Computer Science, vol 915. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-59293-8_189
Download citation
DOI: https://doi.org/10.1007/3-540-59293-8_189
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-59293-8
Online ISBN: 978-3-540-49233-7
eBook Packages: Springer Book Archive