<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">On Mar 15, 2017, at 12:52 PM, Hal Finkel <<a href="mailto:hfinkel@anl.gov" class="">hfinkel@anl.gov</a>> wrote:<br class=""><div><blockquote type="cite" class=""><div class=""><div bgcolor="#FFFFFF" text="#000000" class=""><p class="">On 03/15/2017 11:39 AM, Stephen Canon
      wrote:</p>
    <blockquote cite="mid:BC20889E-9FA0-4DB7-836D-33E214002A1B@apple.com" type="cite" class="">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" class="">
      <div class="">We should default to pragma STDC FP_CONTRACT ON, not
        ‘fast’.</div>
      <div class=""><br class="">
      </div>
      <div class="">‘on’ is the most aggressive mode that conforms to
        C11. ‘fast’ should be opt-in (like ‘fast-math’ is).</div>
    </blockquote>
    <br class="">
    Why? Other compilers default to 'fast', and 'on' does not play well
    with C++ code (where inlining is really important, and so the
    statement boundaries that restrict contraction encourage bad coding
    style).</div></div></blockquote><br class=""></div><div>I’m fine with defaulting to fast in C++ (it’s allowed by the C++ arithmetic model IIRC).</div><div><br class=""></div><div>Personally, I think the bar for not defaulting to the standards-conforming mode should be high. In particular, ‘fast’ doesn’t respect the pragma control, so it is unsafe—if someone copy-pastes code that uses the documented C semantics into a file compiled with ‘fast' set, they will get incorrect behavior, even if they use the pragmas.</div><div><br class=""></div><div>“Other compilers are doing it” is not convincing, at all, especially where hard-to-analyze floating-point rounding behavior is concerned. GCC defaulted to preserving extra precision on x87 for decades, and that wasn’t a good idea either. We can do better.</div><div><br class=""></div><div>– Steve</div></div></body></html>