On Sat, 22 Apr 2006, Tom Lane wrote:

> Jeremy Drake <[EMAIL PROTECTED]> writes:
> > On Fri, 21 Apr 2006, Tom Lane wrote:
> >> Yeah.  NaN == 0 is just silly ...
> > From what I can tell from the instruction set docs and test programs, the
> > actual bug/misoptimization is that NaN == anything.  Which is even
> > sillier.
> It's been a very long time since I studied the IEEE arithmetic spec, but
> my recollection is that comparisons involving NaN are supposed to yield
> the result "unordered", which is not any of the normal possibilities
> "less", "equal", or "greater".  The problem for C compiler authors is
> how to wedge that behavior into a language that only admits the three
> normal possibilities.  It sounds like the ICC authors have decided that
> it's OK to behave randomly, ie, not check for unordered at all, by
> default.  I suspect that whether NaN appears to be "equal" or "unequal"
> or "less" or "greater" depends tremendously on the details of the
> assembly code the compiler chances to emit (ie, which arm of the IF it
> chooses to branch to instead of fall through to).  So basically, the
> default behavior is completely unusable in programs that allow NaN to
> appear in their computations.

Not quite.  The C99 standard specifies that all compares with NaN are
false (rather like sql null).  But with the code the intel compiler
generates, all three flags ZF, CF, and PF are set.  This means that all
numbers are greater AND equal to NaN unless the parity flag is checked
(this indicates an unordered result).  But that behavior is decidedly
nonstandard, and thus completely unusable in portable code.  It would
probably be better described as "arbitrary" rather than "random" though.

> Given that we've already got a test for ICC in there as of today, I'd
> vote for adding -mp1 to CFLAGS if we see it's ICC.
> BTW, does anyone want to set up a buildfarm member running ICC?

Yeah, I was planning to set one up once that patch was committed.  I was
just getting the stuff together on my box to run it.

>                       regards, tom lane
> ---------------------------(end of broadcast)---------------------------
> TIP 6: explain analyze is your friend

has management potential:
        Because of his intimate relationship with inanimate objects, the
        reviewee has been appointed to the critical position of department
        pencil monitor.

        A true inspiration to others.  ("There, but for the grace of God,
        go I.")

adapts to stress:
        Passes wind, water, or out depending upon the severity of the

goal oriented:
        Continually sets low goals for himself, and usually fails
        to meet them.

---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?


Reply via email to