On Sun, Dec 19, 2004 at 03:01:19PM -0800, Yitzchak Scott-Thoennes <[EMAIL 
PROTECTED]> wrote:
> On Sun, Dec 19, 2004 at 03:22:54PM -0500, John Peacock <[EMAIL PROTECTED]> 
> wrote:
> >  Binary "<=>" returns -1, 0, or 1 depending on whether the left
> >  argument is numerically less than, equal to, or greater than the right
> >  argument.  If your platform supports NaNs (not-a-numbers) as numeric
> > -values, using them with "<=>" (or any other numeric comparison)
> > -returns undef.
> > +values, using them with "<=>" returns undef.  NaN is not "<", "==", ">",
> > +"<=" or ">=" anything (even NaN), so those 5 return false. NaN != NaN
> > +returns true, as does NaN != anything else. If your platform doesn't
> > +support NaNs then NaN is just a string with numeric value 0.
> > +
> > +    perl -le '$a = NaN; print "No NaN support here" if $a == $a'
> > +    perl -le '$a = NaN; print "NaN support here" if $a != $a'
> 
> Unfortunately it seems the part to suppress numeric warnings for
> inf/nan-looking strings is there, but not the part to actually make
> them be non-zero numbers.  Don't know if this was always the case, or
> if the code to make the above snippet work was once present but now
> broken.

Aha!  In 5.6.x, perl uses the libc atof/strtold/atofl to parse numbers;
at some point in 5.8.x it was changed to use a replacement in numeric.c
(unless on Unicos or configured with -Accflags=-DUSE_PERL_ATOF=0).

And the numeric.c atof doesn't support nan/inf.

Reply via email to