[Cfp-interest] problem with fmaxmag code
Jim Thomas
jaswthomas at sbcglobal.net
Mon Oct 15 14:38:06 PDT 2012
Our Part 1 draft has
------------------------------------------------
[3] The body of the fmaxmag function might be[1]
{ return (isgreaterequal(fabs(x), fabs(y)) || isnan(y)) ? x : y; }
[1] This implementation does not handle signaling NaNs as required of implementations that define FP_SNANS_ALWAYS_SIGNAL.
------------------------------------------------
isgreaterequal might or might not raise the "invalid" floating-point exception if the implementation does not define FP_SNANS_ALWAYS_SIGNAL. Suppose it does. Suppose also that same-format conversions are copy operations. Then if x is a signaling NaN, the code would raise "invalid" but return a signaling NaN, violating F.2.1[4]. A fix would be to change the code to
{ return canonicalize((isgreaterequal(fabs(x), fabs(y)) || isnan(y)) ? x : y); }
Then we could remove the footnote. The change would also serve to produce a canonical result.
Any better ideas?
-Jim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.oakapple.net/pipermail/cfp-interest/attachments/20121015/4d97faef/attachment.html
More information about the Cfp-interest
mailing list