Sturla Molden wrote: > Charles R Harris wrote: > >> #include <math.h> >> #include <stdio.h> >> >> int main() { >> double nan = sqrt(-1); >> printf("%f\n", nan); >> printf("%i\n", bool(nan)); >> return 0; >> } >> >> $ ./nan >> nan >> 1 >> >> >> So resolved, it is True. >> > Unless specified in the ISO C standard, I'd say this is system and > compiler dependent. > > Should NumPy rely on a specific binary representation of NaN? > > A related issue is the boolean value of Inf and -Inf. > > Sturla Molden > _______________________________________________ > Numpy-discussion mailing list > Numpy-discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > This is one link that shows the different representation of these numbers in IEEE 754: http://www.psc.edu/general/software/packages/ieee/ieee.php It is a little clearer than Wikipedia: http://en.wikipedia.org/wiki/IEEE_754-1985
Numpy's nan/NaN/NAN, inf/Inf/PINF, and NINF are not nothing so not zero. Also, I think that conversion to an integer should be an error for all of these because there is no equivalent representation of these floating point numbers as integers and I think that using zero for NaN is wrong. Now for the other two special representations, I would presume that Numpy's PZERO (positive zero) and NZERO (negative zero) are treated as nothing. Conversion to integer for these should be zero. However, I noticed that the standard has just been revised that may eventually influence Numpy: http://en.wikipedia.org/wiki/IEEE_754r http://en.wikipedia.org/wiki/IEEE_754-2008 Note this defines the min/max behavior: * |min(x,NaN) = min(NaN,x) = x| * |max(x,NaN) = max(NaN,x) = x| Bruce _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion