Skip to content

Comment on An Interview with the Old Man of Floating-Point (1998)parent

Comments

A lot of the design tradeoffs are not really relevant anymore[0]. There are some ways in which 754 effectively makes a "this is UB, up to the manufacturer" choice (to appease manufacturers of the day) which these days would probably not fly; it's a much easier sell to declare "no ub" (or the equivalent for hw) because we have retrospective power over all the times those were problems, and the hw manufacturers have far LESS power than the application consumer these days.

[0] for example iirc cray had a wonky multiplier, don't remember if it was 754, that (I guess) they thought made it faster but resulted in noncommutative multiplication for many cases.

Some (a lot?) of those got cleaned up in the 2008 revision [1]. And for many practical purposes, once x87 went away as part of x86-64, we now have a world of much more sensible agreement.

We're likely coming back into a period of divergence with ARM vs x86 parts on edge case handling that aren't strictly stated as MUST in the standard (various things related to qNaNs, sNaNs, denormal handling, +-0) but they're minor compared to the "old days".

[1] https://en.m.wikipedia.org/wiki/IEEE_754-2008_revision

noncommutative multiplication? what the hell were they doing?

My guess is they were chunking the multiplier cascade and handling using parallel circuits so that the waveform could be independent across the chunks and not be dependent?

Edit: found it.

2240004 3-24 C (you will want to search by this key, it's a long document!)

http://ed-thelen.org/comp-hist/CRAY-1-HardRefMan/CRAY-1-HRM....

"Note that reversing the multiplier and multiplicand operands could cause slightly different results, that is, A x B is not necessarily the same as [B] x A"

Looks like I have some weekend reading to do. Thanks!

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.