| Date: | Mon, 13 May 1996 20:09:09 +0500 |
| Reply-To: | eppard@nando.net |
| Sender: | "SAS(r) Discussion" <SAS-L@UGA.CC.UGA.EDU> |
| From: | Andy Barnett <eppard@NANDO.NET> |
| Subject: | Re: SAS-L Digest - 13 May 1996 - Special issue |
|---|
John's version of underflow is the one I've always read/heard about. The =
large=0D
negative number is actually an overflow. It is the characteristic (expone=
nt) of=0D
the number that determines underflow/overflow: a large enough positive ex=
ponent=0D
(whether mantissa is negative or positive) is overflow, while a large eno=
ugh=0D
negative exponent (in terms of absolute magnitude) is underflow. Thus, fo=
r IEEE=0D
numbers, an exponent of +400 would be an overflow, and -400 an underflow.=
Since=0D
underflows are essentially zero, they can be often treated as zero. Howev=
er,=0D
(although SAS apparently does not do this) IEEE has representations for b=
oth =0D
+ and - infinity, so it would be possible to keep track of overflows like=
1/0 or=0D
-1/0 (I'm not sure what happens when an IEEE FPU multiplies an infinity b=
y 0, but=0D
I would think it should produce either another exception or some form of =
special=0D
representation -- the IEEE notation uses denormalized numbers for special=
numbers=0D
that software can determine how to use, such as SAS' missings). Other for=
mats,=0D
like VAX D-floating, do not match in all details with IEEE. (PC's use IEE=
E FPUs.)=0D
In any case, underflows are near zero, whereas overflows are far from zer=
o in =0D
either direction.=0D
=0D
//---------------original message follows -------------------------------=
------=0D
Date: Mon, 13 May 1996 10:11:01 PDT=0D
From: TWB2%Rates%FAR@GO50.COMP.PGE.COM=0D
Subject: Re: sas help needed=0D
=0D
I would not call this underflow, nor would I expect notice of it. I woul=
d=0D
call creation of an excessively large negative number an underflow. Loos=
ing=0D
digits far out to the right of the decimal is just loss of precision whet=
her=0D
the remaining digits are all zeros or have some other value. For instanc=
e, if=0D
I store 1/3, I do not expect a warning that I actually stored 0.333...333=
for=0D
some number of digits, rather than an infinite string of 3's.=0D
=0D
BTW, it would amuse me if the original poster achieved his overflow by=0D=
dividing by almost zero, rather than by multipying by a huge number.=0D
=0D
Tim Berryhill - Contract Programmer and General Wizard=0D
TWB2@PGE.COM or http://www.lookup.com/Homepages/92062/home.html=0D
Frequently at Pacific Gas & Electric Co., San Francisco=0D
The correlation coefficient between their views and=0D
my postings is slightly less than 0=0D
----------------------=FFReply - Original Message=FF---------------------=
-=0D
Sent by:John Whittington <johnw@MAG-NET.CO.UK>=0D
>The other interesting point is that 'underflowing' produces no error mes=
sage=0D
>at all, and excution continues normally; if a value becomes too small t=
o=0D
>represent, it seems to just be treated as zero.=0D
=0D
=0D
=0D
//-----------------------------------------------------------------------=
---=0D
Andy E. Barnett=0D
eppard@nando.net=0D
Raleigh, NC, USA=
|