<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 11, 2013, at 12:33 PM, Tim Northover <<a href="mailto:t.p.northover@gmail.com">t.p.northover@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">On 11 December 2013 20:25, Raoux, Thomas F <<a href="mailto:thomas.f.raoux@intel.com">thomas.f.raoux@intel.com</a>> wrote:<br><blockquote type="cite">Well in IEEE-754 Nan + any value returns Nan, so doing Nan + undef -> undef is wrong.<br></blockquote><br>I see what you mean having re-read the language reference. It looks<br>like LLVM's "undef" has to be *some* bitpattern at any point, and that<br>allows IEEE room to come in and say what the result is.<br></blockquote></div><br><div>To generalize this, undef can be any bit pattern, but it still has to respect universal constraints of its type. This means that predicates that are true <i>for all</i> <i>values of a type</i> must also be true for undef. Because NaN + x == NaN is true for all values of x, it must also be true for undef.</div><div><br></div><div>—Owen</div></body></html>