After being shocked at reading this:
"The long double data type (80-bit, 10-byte precision) is mapped directly to double (64-bit, 8- byte precision) in Windows NT and Windows 95."
from the MSDN for Data Type Ranges, I looked it up further and found this:
"Previous 16-bit versions of Microsoft C/C++ and Microsoft Visual C++ supported the long double, 80-bit precision data type. In Win32 programming, however, the long double data type maps to the double, 64-bit precision data type. The Microsoft run-time library provides long double versions of the math functions only for backward compatibility. The long double function prototypes are identical to the prototypes for their double counterparts, except that the long double data type replaces the double data type. The long double versions of these functions should not be used in new code."
This is ridiculous. It must have something to do with ANSI standards. I know that the FPU uses 10-byte floating point numbers internally. Is there any way to use 10-byte floats in MSVC++ without having to code in assembly?