[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