On 27 October 2011 20:13, Kenneth Graunke <span dir="ltr">&lt;<a href="mailto:kenneth@whitecape.org" target="_blank">kenneth@whitecape.org</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div>On 10/26/2011 06:42 PM, Paul Berry wrote:<br>
&gt; In order to implement the GLSL 1.30 isinf() function, it will be<br>
&gt; necessary to be able to represent infinity in the GLSL IR s-expression<br>
&gt; format.  This patch extends the s-expression parser so that it treats<br>
&gt; the string &quot;#inf&quot; as a floating point value representing positive<br>
&gt; infinity.<br>
&gt; ---<br>
&gt;  src/glsl/s_expression.cpp |   33 +++++++++++++++++++--------------<br>
&gt;  1 files changed, 19 insertions(+), 14 deletions(-)<br>
<br>
</div>Two kind of stupid comments:<br>
<br>
Scheme represents infinity as +inf.0 or -inf.0 and NaN as +nan.0.  If<br>
you wanted to be more Scheme-like, you could do that (and also gain a<br>
representation of -infinity if you wanted...)<br>
<br>
Also...strtod() already accepts &quot;INF&quot;/&quot;INFINITY&quot; and &quot;NAN&quot; for these<br>
cases.  Which actually kind of sucks because somebody could totally name<br>
their variables that (unlike #inf or +inf.0).<br></blockquote><div><br>Interesting, I wasn&#39;t aware of that.  According to <a href="http://pubs.opengroup.org/onlinepubs/007904975/functions/strtod.html" target="_blank">http://pubs.opengroup.org/onlinepubs/007904975/functions/strtod.html</a>, &quot;+INFINITY&quot; and &quot;+INF&quot; are also allowed as a representation of infinity; likewise for &quot;+NAN&quot;.<br>

 </div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">
<br>
That should be fixed someday.  But there are a lot of things the reader<br>
can&#39;t do (like structs), so...not terribly important.  It works well<br>
enough for now and we can always fix it when it actually matters.<br></blockquote><div><br>Agreed.  In particular, if we ever decide to use the s-expression IR representation to support ARB_get_program_binary, we&#39;ll need to fix this.  I&#39;ll put a comment in the function as a reminder. <br>

 </div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">
<br>
So, I guess you&#39;ve got a few options:<br>
1. Keep patch as is (#inf)<br>
2. Switch to +inf.0, -inf.0, +nan.0 to be like Scheme<br>
3. Drop this patch and just use INFINITY in the built-in files.<br></blockquote><div><br>Ok, I&#39;m now favoring a fourth option:<br><br>4. drop this patch and use &quot;+INF&quot; in the built-in files.<br><br>That has the advantage that it can&#39;t be confused with a variable name.<br>

<br>I was going to push the patch series today, but I&#39;m not in any rush.  I&#39;ll leave it open for another day in case anyone else wants to comment.  If no one comments by Monday I&#39;ll go with option 4.<br></div>

</div>