Date: Sun, 13 Nov 1994 19:32:31 -0500 (CDT) From: Aaron Ucko Subject: Paranoia To: djgpp AT sun DOT soe DOT clarkson DOT edu Organization: Rockhurst College; Kansas City, MO 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?