As noted by one of our CompSci professors at UTC, Pentiums aren't the only
things to be worried about:
> I sent out a calculation which causes the Pentium to produce answer
> 256 when the "correct" answer is 0. If you run the same computation
> on our IBM ES9000 (in either FORTRAN or C) you get the following
> results:
>
> INTEGER REAL LONGINT DOUBLE
> 4195835 4195835.000000 4195835 4195835.000000
> 3145727 3145727.000000 3145727 3145727.000000
> 1050108 1.000000 1050108 0.000000
>
> Bottom row should produce value 0
Of course the integer calculations would be wrong, but it misses the
boat on single-precision reals! (The ES9000 is this machine, utcvm.utc.edu)
The calculation is: 4195835 - ( (4195835/3145727) * 3145727 )
Our HP960 does it correctly with both float and double, as did one
of our Suns.
Apparently it's a function of IEEE floating point versus the IBM's
goofy floating point format (wonder what a classic 3000 would say?)
[\] Jeff Kell, [log in to unmask]