Date: Wed, 3 Feb 88 23:39:04 EST From: Mike Muuss (SECAD) This evening I have been working on a program which compares floating point numbers over the network (part of something much bigger). I encountered a rather perplexing phenomenon. The Cray-2 and XMP seem to give very slightly different answers for floating point divisions. I would have expected them to give the same answers. For example, the calculation 196.0 / 112.0 gives "1.75" on both machines, but differing by one bit, i.e.: XMP 4001E00000000000 Cray-2 4001DFFFFFFFFFFF ^__^ exp It looks like the XMP is rounding UP, and the Cray-2 is rounding DOWN. This is easy to check for yourself with this C program: main() { double f; f = 196.0 / 112.0; printf("f = %g, x%x\n", f, f ); } Here is the output: bob> c f = 1.75, x4001dfffffffffff patton> c f = 1.75, x4001e00000000000 ISSUES *) Is this behavior intrinsic to the "hardware" (reciprocal) divide units, or is the rounding behavior programmable? *) For this particular calculation, the LSB behavior is not significant. However, for some iterative calculations, the LSB behavior may be significant. It would be useful to understand why the two Crays give differing results. I can live with a difference, as long as I know what to expect. However, if the difference can be resolved, that would be even better. Best, -Mike