develooper Front page | perl.perl5.porters | Postings from August 2001

Re: inf handling in Perl incomplete

Thread Previous | Thread Next
From:
Piers Cawley
Date:
August 13, 2001 06:34
Subject:
Re: inf handling in Perl incomplete
Message ID:
m3k808kruj.fsf@iest.bofh.org.uk
"Kurt D. Starsinic" <kstar@wolfetech.com> writes:

> On Wed, Aug 08, 2001 at 11:26:42PM +0200, Tels wrote:
> > On 08-Aug-01 Kurt D. Starsinic tried to scribble about:
> > > On Wed, Aug 08, 2001 at 09:11:56AM +0100, Piers Cawley wrote:
> > >> Jarkko Hietaniemi <jhi@iki.fi> writes:
> > >> > While that someone is at it, "NaN" also needs fixing.  In there one
> > >> > needs to move more carefully, since there usually are two kinds:
> > >> > "signaling" and "quiet" NaNs.  The first kind gives SIGFPEs, the
> > >> > second doesn't.
> > >> > 
> > >> >    $x = NaN;
> > >> >    print "goofy\n" if 0/0 == NaN;  # should always print
> 
>     My reading of IEEE is that 0/0 is NaN, and semantically, NaN != NaN, so
> the above should never print.
> 
> > >> >    print "spooky\n" if NaN == NaN; # should never print
> > >>     print "ooky\n" if NaN == 1;     # should never print. But does.
> > > 
> > >     I don't believe that the Perl documentation claims that the bareword
> > > `NaN' becomes an IEEE NaN in numeric context.  It just suggests that
> > > an IEEE NaN is `NaN' in string context.  Do you believe otherwise,
> > > or are you proposing a change?
> > 
> > Incidentily, up until today (well, 2 hours ago), I believed and would have
> > swonr that 'NaN' becomes an IEEE NaN. Oups. Can (read: is it possible) to
> > change that?
> 
>     Anything's possible.  I'm not in favor of it, because it will surprise
> too many numerically-casual people who expect any string that doesn't look
> like an everyday number to be numerically zero.

Well, something *is* happening because C<'NaN' == 1> is returning true,
whereas <'foo' == 1> returns false (under Mandrake linux, glib-2.2).
I'd suggest that either NaN get fixed to work properly or that this
special casing get removed entirely.

[...]

>     I don't want to see bareword NaN and Inf upgrade automagically.  I think
> it's more cruft, and there isn't just one NaN anyway.  I wouldn't mind a
> pragma that made, e.g., 0/0 or sqrt(-1) return the appropriate NaN instead
> of throwing an exception, though.

sqrt(-1) is a number, but it's a complex one. 0/0 emphatically isn't a
number. 

-- 
Piers Cawley
www.iterative-software.com


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About