Hello List!

On 64-bit mingw-w64:

   g++ (rubenvb-4.8-stdthread) 4.8.1 20130324 (prerelease)

on 64-bit windows 7, I'm seeing that long doubles have a precision of about
18 decimal digits.  I would guess that this is a legacy of the old 8087 80-bit
internal floating-point number.

>From a quick test program (no explicit compiler flags):

   numeric_limits<float>::digits10 = 6
   numeric_limits<double>::digits10 = 15
   numeric_limits<long double>::digits10 = 18

   numeric_limits<float>::max_digits10 = 9
   numeric_limits<double>::max_digits10 = 17
   numeric_limits<long double>::max_digits10 = 21

   sizeof(float) = 4
   sizeof(double) = 8
   sizeof(long double) = 16

As you can see, long double offers only a modest increase in precision over
double, but takes fully twice the space.

Also, Intel's old 80-bit floating-point format fits in five 16-bit
words (which fits in
three 32-bit words).  I am guessing that alignment issues on a 64-bit machine
make it not worth the bother to use less than a full two 64-bit words to hold a
long double, even though (if I'm right about the 80-bit
representation), there's a
fair amount of wasted space.

Does this all sound right?


Thanks for any thoughts.


K. Frank

------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to