Date: Mon, 06 Mar 2000 20:19:10 +0100 From: Poul-Henning Kamp <phk@critter.freebsd.dk> To: iang@systemics.com Cc: current@FreeBSD.ORG, perl5-porters@perl.org Subject: Re: [ID 20000306.004] unpack(NaN) big baddaboom Message-ID: <9874.952370350@critter.freebsd.dk> In-Reply-To: Your message of "Mon, 06 Mar 2000 15:10:20 -0400." <200003061910.PAA75240@systemics.com>
next in thread | previous in thread | raw e-mail | index | archive | help
In message <200003061910.PAA75240@systemics.com>, Ian Grigg writes: >> Depending on your religion the bug is either in perl itself which >> should be more careful about NaN and Inf values, or in the perl >> script you supply which does something which is patently bogus, >> but nothing which should provoke a FP trap according to IEEE. > >I don't know much about religion, but this feels like >a Perl bug to me. I feed a highlevel command a number >I read off the wire, and it blows up. As I have no >control over the wire (it's a network) I cannot *not* >handle the number. I would agree with that. >> I would argue that as long as your perl script doesn't use the NaN >> in an operation which IEEE documents as giving a trap ( compare of >> two floats for ordered magnitude for instance) then your perl >> interpreter shouldn't either. > >Well, in that sense, this is my workaround: > > my $data = $is->read(4); > # > # Damn, FreeBSD throws Floating Point Exception on NaN! > # > my $long = unpack("N", $data); > if ($long == 2143289344) > { > return "NaN"; > } That is not enough, NaN has multiple binary representations. isnan(3) is your friend. -- Poul-Henning Kamp FreeBSD coreteam member phk@FreeBSD.ORG "Real hackers run -current on their laptop." FreeBSD -- It will take a long time before progress goes too far! To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9874.952370350>