<HTML>
<HEAD>
<TITLE>Re: [vtk-developers] Adding IsNan() to vtkMath</TITLE>
</HEAD>
<BODY>
<FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>OK.  That seems like a good idea to me, and pretty close to what I figured in the first place.  But that does not look like what the VXL example you sent is doing.  In there, it looks like it is only using isnan on the Intel and Borland compilers.  On most other it is doing an x != x comparison, and as a fallback doing a bit comparison.<BR>
<BR>
Would it be better for VTK to have a CMake do a TRY_COMPILE on isnan?  If that fails, do a TRY_COMPILE on x != x?<BR>
<BR>
That said, what is the right way to generate a NaN (or Inf or –Inf) in the first place?  I imagine you should get one doing division by zero, but would that cause floating exceptions on some platforms?<BR>
<BR>
-Ken<BR>
<BR>
<BR>
On 7/21/09 6:16 AM, "Brad King" <<a href="brad.king@kitware.com">brad.king@kitware.com</a>> wrote:<BR>
<BR>
</SPAN></FONT><BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>Moreland, Kenneth wrote:<BR>
> The source code you sent has as one of its cases a check of the bits of<BR>
> an IEEE-754 number.  I see that vtkMath already has a Nan function that<BR>
> returns an IEEE NaN.  If VTK is only supporting IEEE-754 in the first<BR>
> place, is there any problem with just performing the bit check?<BR>
<BR>
We likely only support IEEE-754, but only by accident.  New code should<BR>
be as generic as possible.  Calling the native isnan() is the documented<BR>
way to perform this test in C and C++.<BR>
<BR>
-Brad<BR>
<BR>
<BR>
</SPAN></FONT></BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
</SPAN></FONT><FONT SIZE="2"><FONT FACE="Consolas, Courier New, Courier"><SPAN STYLE='font-size:10pt'><BR>
   ****      Kenneth Moreland<BR>
    ***      Sandia National Laboratories<BR>
***********  <BR>
*** *** ***  email: <a href="kmorel@sandia.gov">kmorel@sandia.gov</a><BR>
**  ***  **  phone: (505) 844-8919<BR>
    ***      web:   <a href="http://www.cs.unm.edu/~kmorel">http://www.cs.unm.edu/~kmorel</a><BR>
</SPAN></FONT></FONT><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
</SPAN></FONT>
</BODY>
</HTML>