Dave Korn wrote:
... or it's a bug in the libc/crt-startup, which is where the hardware rounding mode is (or should be) set up ...
Well if you think that the operations should reflect IEEE 64-bit semantics (which is the only rationale for mucking with the rounding mode in the startup), then this is only an approximate fix, since the intermediate values still have excessive range, so you don't get infinities when expected.