On 10/14/23 05:53, Bruno Haible wrote:
* Programs that need to distinguish QNaN and SNaN, and that do
floating-point operations.
In these cases the 'union' workaround is typically too clumsy.
So, for this case, there is typically no good workaround.
Example: Code that wants to rely on the FE_INVALID flag.
Yes, my impression is that signaling NaNs have never been that reliable.
The idea of signaling NaNs was introduced relatively late in the
original IEEE-754 standardization effort, to pacify dissenters who
wanted something like the reserved operands on the VAX.[1] (The VAX
contingent was the major obstacle to IEEE-754.) W. Kahan later wrote
that signaling NaNs "exist mainly for political reasons and are rarely
used"[2], and he was pretty much on target.
PS. At a dinner with Kahan in 1980 I got into an argument with him about
merits and drawbacks of the IEEE floating point design. I suppose it was
an argument I lost, since I didn't get the job at Berkeley that I was
applying for....
[1]: https://people.eecs.berkeley.edu/~wkahan/ieee754status/754story.html
[2]: https://people.eecs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF