@kenshirriff As always, thanks for covering such topics!
Is there any implementation of the buggy fdiv algorithm in a high level language, so that you could run a numeric program and get the "buggy pentium" result rather than the correct result?
When I hear that 5 of 2048 table entries are wrong, that makes me expect that 5 out of 2048 results would be wrong if the table is consulted just once per division (and isn't it consulted multiple times?)
Is there an intuitive way to understand why the proportion of wrong results (about 1 in 8.77 billion double precision operand pairs according to one source) is so small relative to 5/2048?
@stylus It's kind of complicated and depends on a very unlikely sequence of carries. The bad cells are almost but not quite impossible to reach. The divider uses a carry save adder, which holds the carry bits instead of propagating them . If these bits are just right, you hit the bug.