Mail Archives: djgpp/1994/11/14/00:17:41
As previously recommended, I tried running Paranoia with DJGPP (and a few
other DOS products...):
DJGPP (no optimization, double precision): Certain basic operations
(multiplication, etc.) neither truncate nor round correctly [actually, this
occurs in _all_ the double-precision cases I could test]. Crashes with
untrapped floating point exception when calculating Z^i for small values of Z
and i.
DJGPP (optimization): Gets _very_ confused. First thinks base is 4096 (!),
then 0. Dies because 1 - 1/2 - (base) >= 1/2.
DJGPP(no opt., single prec): Crashes on computing Z^i.
TC++ 1.01 (double) truncation/rounding problem; dividing by 0 yields
(trapped) exceptions. Displays message about arguments to pow() being out
of its domain, but doesn't tell Paranoia. Double precision thing only
problem.
TC++ 1.01 (single) pow() message only--rated perfect (!)
QBasic 6.20 [no flames, please--I just wanted to see what would happen]
Choked on "next" being conditional--had to be kluged around. Complained
about various semi-trapped overflows.
QB (double) trunc/round problem; overflow problems [Overflowed to max
_single_-precision # (!)]
I have not yet tested with QC or QP, as I don't have them installed right
now. The general conclusion, though, seems to be that the 8087/287/387/486+
does _not_ round correctly in double-precision mode.
--- Aaron Ucko (ucko AT vax1 DOT rockhurst DOT edu; finger for PGP public key) -=- httyp!
-=*=-Just because you're paranoid doesn't mean they aren't out to get you.-=*=-
Geek code 2.1 [finger hayden AT vax1 DOT mankato DOT msus DOT edu for explanation]:
GCS/M/S d(-) H s g+ p? !au a-- w+ v+ C++(+++)>++++ U-(S+)>++++ P+ L>++ 3(-)
E-(----) !N>++ K- W(--) M-(--) V(--) po-(--) Y+(++) t(+) !5 j R G tv--(-)
b+++ !D(--) B--(---) e>++++(*) u++(@) h!() f(+) r-(--)>+++ n+(-) y?
- Raw text -