<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br><div><div>On Dec 12, 2013, at 4:57 PM, Philip Reames <<a href="mailto:listmail@philipreames.com">listmail@philipreames.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); float: none; display: inline !important;">undef + any == NaN (since undef can be NaN) or undef + any (since undef could be zero)</span></blockquote></div><br><div>undef + non-NaN is still undef.  The compiler is free to choose any value of the type it wishes when simplifying an undef expression.  The important point is that it still has to be a value <i>of that type.  </i>Hence, predicates that are true for <i>any</i> choice of value must still be respected.  This is the case for NaN + undef == NaN: while the compiler is free to choose any value for the undef, there is no such value for which the result is not NaN.</div><div><br></div><div>—Owen</div></body></html>