<HTML>
<HEAD>
<TITLE>Re: [vtk-developers] vtkMath inline choices...</TITLE>
</HEAD>
<BODY>
<FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>I don’t know of any systems we are currently running on that don’t use IEEE-754 numbers, but it’s a bad idea to assume that they are.  There is nothing in any compiler standard specifying the bit layout of floating point numbers.<BR>
<BR>
I can’t remember what dashboards didn’t have the isnan function, but there definitely were some at the time I write the vtkMath functions (which was not that long ago).  The isnan function was relatively recently added to the C standard (C99), so I would expect to run into non-conforming compilers for some time.<BR>
<BR>
-Ken<BR>
<BR>
<BR>
On 9/15/10 9:42 AM, "Sean McBride" <<a href="sean@rogue-research.com">sean@rogue-research.com</a>> wrote:<BR>
<BR>
</SPAN></FONT><BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>On Wed, 15 Sep 2010 09:24:14 -0600, Moreland, Kenneth said:<BR>
<BR>
>I can speak to why IsNan is not inlined.  The IsNan (and similar non-<BR>
>finite tests) rely on some non-portable functionality.  Depending on<BR>
>whether the isnan function is provided, IEEE-754 numbers are used, or if<BR>
>operations on NaNs are trapped, different implementations are provided.<BR>
>Over time this can get even more complicated as we encounter computers<BR>
>and compilers that treat NaNs differently.  Quite simply, I did not want<BR>
>to expose all of this complexity in the header file.<BR>
<BR>
Ken,<BR>
<BR>
Thanks for your informative reply.<BR>
<BR>
There are systems VTK supports that don't use IEEE-754 numbers?  Didn't<BR>
know that... Out of curiosity, which?<BR>
<BR>
Similarly, where would VTK_HAS_ISNAN be 0?  I was kinda hoping it was<BR>
only with old compilers for which support was recently dropped. :)<BR>
<BR>
>If you plan to go through the trouble of moving that to the header file,<BR>
>you should do performance tests to make sure that there is a clear<BR>
>advantage to inlining the function.<BR>
<BR>
Certainly.  As I said, I am in the middle of doing many profiling tests.<BR>
<BR>
>I've been surprised in the past to<BR>
>find an inline function did not really perform any better than a<BR>
>function call.  The fact of the matter is that function calls are cheap<BR>
>operations nowadays.<BR>
<BR>
And inlining can make code bigger, and thus bloat caches.  Certainly<BR>
there are trade offs.  And making something faster in one usage can make<BR>
it slower in another.  Optimisation in the general case is tricky with a<BR>
general and portable framework like VTK. :(<BR>
<BR>
OTOH, marking a method inline only makes it eligible for inline, it's<BR>
not an obligation.  One hopes that the compiler can make a good decision.<BR>
<BR>
--<BR>
____________________________________________________________<BR>
Sean McBride, B. Eng                 <a href="sean@rogue-research.com">sean@rogue-research.com</a><BR>
Rogue Research                        www.rogue-research.com<BR>
Mac Software Developer              Montréal, Québec, Canada<BR>
<BR>
<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>