<div dir="ltr">On Wed, Dec 7, 2016 at 5:36 PM, Roland Haas <span dir="ltr">&lt;<a href="mailto:rhaas@illinois.edu" target="_blank">rhaas@illinois.edu</a>&gt;</span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello Erik,<br>
<span class=""><br>
&gt; Cactus offers functions &quot;CCTK_isnan&quot; etc. that always do what the name<br>
&gt; suggests, so that compilers can optimize &quot;isnan&quot; away if they want.<br>
</span>Are you sure about this? I have (in src/util/Math.c):<br>
<br>
--8&lt;--<br>
int CCTK_isnan(double x)<br>
{<br>
#ifdef HAVE_ISNAN<br>
  return isnan(x);<br>
#else<br>
  return 0;                     /* default */<br>
#endif<br>
}<br>
--8&lt;--<br>
and -ffinite-math-only turns isnan into a no-op that always returns<br>
&quot;true&quot;.<br>
<br>
HAVE_ISNAN is set by the configure script. NaNChecker uses CCTK_isnan<br>
yet it failed on machines using unbuntu.cfg which uses -ffast-math<br>
(which includes -ffinite-math-only).<br></blockquote><div><br></div><div>When I checked, only C++ compilers replaced &quot;isnan&quot;, not C compilers, thus redirecting C++ calls to this C function worked fine. If this doesn&#39;t work any more then we&#39;ll have to be more clever and examine the bit pattern. (We can do this even in a header file, we then don&#39;t need the C implementation file any more.)</div><div><br></div><div>-erik</div><div><br></div></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Erik Schnetter &lt;<a href="mailto:schnetter@cct.lsu.edu" target="_blank">schnetter@cct.lsu.edu</a>&gt;<br><a href="http://www.perimeterinstitute.ca/personal/eschnetter/" target="_blank">http://www.perimeterinstitute.ca/personal/eschnetter/</a></div>
</div></div>