GCC beaten by ICC in stupid trig test!

Richard Guenther rguenth@tat.physik.uni-tuebingen.de
Wed Mar 24 19:14:00 GMT 2004


Robert Dewar wrote:
> Joe Buck wrote:
> 
>> On Tue, Mar 23, 2004 at 10:32:13PM -0500, Robert Dewar wrote:
>>
>>> Well I don't know exactly what stuff is in -ffast-math, but I suspect 
>>> it is a mistake to just think in terms of rounding error vs the 
>>> mantissa length. 
>>
>>  
>> Most of the optimizations have to do with ignoring the need to 
>> distinguish
>> +0 and -0, or handle NaNs.
>>
>>> For example, if -ffast-math is so sloppy as to consider
>>> that (a+b)+c can be replaced by a+(b+c), then all bets are off.
>>
>>
>> That's why -ffast-math doesn't do that; such a transformation would be
>> massively brain-damaged.
> 
> 
> It would be a useful achievement in this thread if everyone understood
> the truth of the above sentence. Clearly that is not the case from other
> contributions to the thread :-)

Well, first this (transforming (a+b)+c to a+(b+c)) would be a question 
of if the language standard permits this.  After this, I personally 
would like to have a way to override associativity, and I cannot see
a clearer way as to write (a+b)+c instead of a+b+c.  But that may be a 
language standard question again.  If (a+b)+c doesn't do it, I cannot 
see another way of really forcing evaluation order.

Another question would be, if a+b+c is always (a+b)+c, or if it is 
(a+(b+c)) or if this is (should be) unspecified.  Maybe we'd need
-fpreserve-left-to-right-evaluation-order?  This way 1.0+a+1.0 should 
not be transformed to 2.0+a or a+2.0.

Richard.



More information about the Gcc mailing list