Remove real type

Walter Bright newshound1 at digitalmars.com
Fri Apr 23 03:32:10 PDT 2010


Bob Jones wrote:
> "Walter Bright" <newshound1 at digitalmars.com> wrote in message 
> news:hqq3qv$2sp5$2 at digitalmars.com...
>> Bob Jones wrote:
>>> You can set the internal precision of the x87 unit to 32, 64 or 80 bits, 
>>> it just defaults to 80, and as there's little if any performance 
>>> difference between the 3 modes, thats how it's usualy set.
>> Despite those settings, the fpu still holds intermediate calculations to 
>> 80 bits. The only way to get it to round to the lower precision is to 
>> write it out to memory then read it back in. This, of course, is 
>> disastrously slow.
> 
> Not true. If you load from memory it will keep the precision of what it 
> loads, but the results of any calculations will be rounded to the lower 
> precision.
> 
> For example...
> 
> ====
> 
> long double a = 1.0/3.0;
>  long double b = 0.0;
> 
> SetCtrlWord(GetCtrlWord() & 0xFCFF); // Set single precision
> 
> __asm
> {
>     FLD  [a]            // ST(0) == +3.3333333333333331e-0001
>     FADD [b]         // ST(0) == +3.3333334326744079e-0001
>     FSTP ST(0)
> }

Then there was something else that wasn't rounded down, as the Java people found 
out.



More information about the Digitalmars-d mailing list