INF: Results Differ for Alternate & Coprocessor/Emulator Math

ID Number: Q36069

4.00 5.00 5.10 6.00 6.00a 6.00ax 7.00 | 5.10 6.00 6.00a

MS-DOS | OS/2

Summary:

In Microsoft C versions 5.1, 6.0, 6.0a, 6.0ax, and C/C++ version 7.0,

there may be differences between the floating point results you get when

you use coprocessor/emulator math and when you use the alternate math

package.

More Information:

When you do any floating point arithmetic with the coprocessor, all

values are pushed onto the coprocessor stack. The coprocessor stack

only holds 10-byte reals. This means that all real*4 and/or real*8

(real/double) are expanded to 10-byte reals, then all of the

arithmetic is done on these 10-byte reals. The emulator package does

this same expansion. The results of floating point calculations are

then rounded back down to real*4 or real*8 format.

Alternate math calculations are performed using real*4 or real*8

format, which can result in less precision than that available with

coprocessor/emulator math.

Additional reference words: 5.10 6.00 6.00a 6.00ax 7.00