serge@pacific.UUCP (serge) (01/09/86)
Is there some sort of standard in unix or IEEE for how to deal with the
following floating point issues. If there is no standard, what is the
"preferred" action? I am especially interested in how 68000-based
systems behave, but would also be interested in knowing how other Unix
systems deal with it.
double a, b, c;
[assignment to b and c]
c = a / b;
1) If `a' == 1.0 and `b' == 0.0 , should the divide-by-zero cause
a SIGFPE? (on some Unix systems it does not). If a signal
should not be generated, then what value should be
assigned to `c'?
2) If SIGFPE is being ignored or caught (perhaps there are two
answers), what value should be assigned to `c'? I suppose the
possibilities are infinity, a NaN, or some random value since
one could claim that dividing by zero produces an undefined result.
3) If `a' and `b' above both contain infinity, then what should
happen (infinity divided by infinity is a Nan)? Should SIGFPE
be generated in this case? What if it is ignored or caught?
4) If you manage to get the value of infinity or a nan into a
a float or double variable, what should printf(3) do with it
if you pass this value to it? I have seen various Unix systems
deal with this in one of three ways:
a) generate a SIGFPE
b) print a large number (for infinity)
c) go into an infinite loop (usually in ecvt(3))
Please respond by E-mail and I will post a summary if there is enough
interest. I apologize if this has all been discussed before (if it
has, would someone please let me know what, if anything, was decided).
Thanks!
Serge Issakow
--
sdcsvax \
>!pacific!serge
s3sun /
spaf@gatech.CSNET (Gene Spafford) (01/14/86)
You can obtain a copy of ANSI/IEEE Standard 754-1985, "IEEE Standard for Binary Floating Point Arithmetic" by sending $6.50 plus $2 handling to: IEEE Service Center 445 Hoes Lane Piscataway, NJ 08854 NJ residents must add 6% sales tax to the $6.50 (= $6.89). IEEE members get a 10% discount (on the $6.50, *not* on the $2 handling) if you include your member number with the order. Canadian orders can be mailed to: IEEE Canadian Regional Office 7061 Yonge St. Thornhill, Ont. L3T 2A6 and the conversion rate is US$ * 1.33 = CDN$ There are quantity discounts for 10 or more copies. Details can be directed to +1 201 981 0060. I have all this information handy because I just ordered a copy.... -- Gene "the end is in sight" Spafford The Clouds Project, School of ICS, Georgia Tech, Atlanta GA 30332-0280 CSNet: Spaf @ GATech ARPA: Spaf%GATech.CSNet @ Relay.CS.NET uucp: ...!{akgua,decvax,hplabs,ihnp4,linus,seismo,ulysses}!gatech!spaf