3 Dec

A crazed gunmen is loose, THREE students are dead...

Date: Sat, 3 Dec 94 12:44:41 PST To: Fun_People Subject: A crazed gunmen is loose, THREE students are dead... Forwarded-by: bostic@CS.Berkeley.EDU (Keith Bostic) Forwarded-by: Wendell Craig Baker <wbaker@splat.baker.com> From: pratt@Sunburn.Stanford.EDU (Vaughan R. Pratt) 1 Dec 1994 08:53:56 GMT Computer Science Department, Stanford University. One-liner with incorrect integer quotient It's easy to get an incorrect integer answer on the Pentium if one resorts to subtraction. However this tends to mask the seriousness of the error since subtraction can greatly magnify small relative errors. Here's a one-liner that is squeaky clean in that regard: it uses nothing but a single division. main(){double x=137489121280.0, y=3145727.0; printf("%.0f\n", x/y);} This prints 43704 when other machines deliver 43707. Observation: integers have a certain immediacy somehow lacking in reals. Imagine you are one of the 43707 students at Giant State U., and a crazed gunman shoots three of your fellow students and then escapes a police cordon. Do you regard this decrease in the student population as insignificant, or do you stay at home the next day? Question: what is the least quotient of two integers which when rounded to the nearest integer (the effect of formatting with "%.0f") is off by at least 2 on the Pentium? (The bug is not very convincing when only off by 1: you might have obtained 123.499999 when the right answer is 123.5000001, which rounding makes respectively 123 and 124.) In particular is there a four digit such quotient? Such a quotient would mean that the bug is even worse than anyone imagined. My own concern with these errors has to do with my work on curve fitting in digital typography, which for reasons discussed near the bottom of column 1 of page 149 of my SIGRAPH'87 article is unstable at single precision but nicely robust at double precision. I am currently using Suns plus one very newly acquired Pentium (with the bug, unfortunately) for this work. I should mention in this context that I hold Sun stock.

© 1994 Peter Langston