William Kahan on the design of the 8087 FPU

A classic, by Prof. William Kahan, the co-designer or co-architect (with John Palmer) of the original 8087 Intel FPU:
“On the Advantages of the 8087’s Stack” (pdf)

Therefore, the 8087 was destined to have preponderantly One-operand instructions; the designer’s task was to make a Virtue of this Necessity.

When the 8087 was designed, I knew that stack over/underflow was an issue of more aesthetic than practical importance. I still regret that the 8087’s stack implementation was not quite so neat as my original intention described in the accompanying note. If the original design had been realized, compilers to-day would use the 8087 and its descendants more efficiently, and Intel’s competitors could more easily market faster but compatible 80x87 imitations. Back in 1979 we did not appreciate how difficult it would become, both technically and commercially, to disseminate appropriate stack over/underflow handling software; far less did we appreciate how clumsily the early compilers would handle stack over/underflow, nor how long they would take to do better.

Lots more on Kahan and the history of floating point:
A Conversation with William Kahan
An Interview with the Old Man of Floating-Point
Historical Perspective and Further Reading

Kahan learned to program during the summer of 1953 as an undergraduate majoring in mathematics at the University of Toronto. The university was a center of early computer development and use, and owned FERUT, one of the world’s first commercially manufactured computers –the second Manchester Ferranti Mark I ever built. Remaining at Toronto as a graduate student, he focused his studies on numerical analysis and explored the new possibilities in applied mathematics that were opened up by the use of computers. He made extended visits to two other computing centers: he spent the summer of 1957 working on the ILLIAC I at the University of Illinois, and after completing his Ph.D. in 1958 spent two years with the EDSAC-2 at Cambridge University’s Mathematical Laboratory.

(Previously posted over on anycpu.)

[Edited to fix some broken links - thanks to @RichardP for letting me know.]