<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">On 12/11/13 12:40 PM, Owen Anderson
wrote:<br>
</div>
<blockquote cite="mid:B86BCF07-0482-44F7-96EE-3498E8AEF317@mac.com"
type="cite">
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<br>
<div>
<div>On Dec 11, 2013, at 12:33 PM, Tim Northover <<a
moz-do-not-send="true" 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 moz-do-not-send="true"
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>
</blockquote>
Seems like this might be another pattern to consider adding (if we
don't already have it.)<br>
<br>
Just to review the patterns which we've discussed so far:<br>
NaN + any == NaN<br>
undef + any == NaN (since undef can be NaN) or undef + any (since
undef could be zero)<br>
<br>
Philip<br>
</body>
</html>