Strange g+ 3.1.1 double behavior

Gunther Weber weber@informatik.uni-kl.de
Mon Aug 5 08:23:00 GMT 2002


Nathan Sidwell wrote:

>>    
>>
>Not necesarily. floating point calculations can be performed at a
>higher precision, and this happens on i86 hardware. IIRC the return value
>will be in an i86 floating point register at 80 bits precision. One
>return value must be stored on the stack (in a 64 bit double, hence
>rounded), the other return value need not be, so is not rounded. The
>result you see is the rounding error. This spilling of intermediates
>at a lower precision is a quality of implementation thing.
>
>-mfloat-store might help you here.
>
>nathan
>
>  
>
Thank you for your answer. That explains how this problem occurs. 
-float-store (-mfloat-store does not exist) does not help, but 
|-mno-fp-ret-in-387 helps. Anyway, I will not use these options. Insted 
I will get rid of my misconception that identical floating point 
calculations yield identical results and |write my programs accordingly. 
So thank you for explaining this to me as it may help to prevent future 
grief that would have resulted from holding on to my misconception :-)

Gunther





More information about the Gcc mailing list