[Numpy-discussion] comparing arrays with NaN in them.
tim.hochberg at ieee.org
Fri Aug 24 12:40:51 EDT 2007
On 8/24/07, Timothy Hochberg <tim.hochberg at ieee.org> wrote:
> On 8/24/07, Christopher Barker <Chris.Barker at noaa.gov> wrote:
> > You can have several different NaN,
> > You can? I thought NaN was defined by IEEE 754 as a particular bit
> > pattern (one for each precision, anyway).
> There's more than one way to spell NaN in binary and they tend to mean
> different things IIRC. Signalling NaNs and quiet NaNs and all of that. (Can
> you tell how superficial my knowledge is here, good).
> However, if you are inserting the NaNs yourself as placeholders, then they
> should all be the same kind and a binary comparison should be fine.
To beat this horse a little more:
IEEE 754 NaNs are represented with the exponential field filled with ones
and some non-zero number in the mantissa. A bit-wise example of a IEEE
precision NaN: x11111111axxxxxxxxxxxxxxxxxxxxxx. x = undefined. If a
= 1, it is a *quiet NaN*, otherwise it is a *signalling NaN*.
That's from http://en.wikipedia.org/wiki/NaN#NaN_encodings.
So there a bunch of undefined bits that could be set for the private use of
whoever is producing the NaNs for their own purposes. I don't know how often
those bits vary in practice, but in principle it's not safe to rely on NaNs
being bitwise equal.
. tim.hochberg at ieee.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the NumPy-Discussion