GCC and Floating-Point

chris jefferson caj@cs.york.ac.uk
Wed May 25 14:59:00 GMT 2005


Vincent Lefevre wrote:

>On 2005-05-24 09:04:11 +0200, Uros Bizjak wrote:
>  
>
>>  I would like to point out that for applications that crunch data
>>from real world (no infinites or nans, where precision is not
>>critical) such as various simulations, -ffast-math is something that
>>can speed up application a lot.
>>    
>>
>
>But note that even when precision is not critical, you may get
>consistency problems or annoying unintuitive side effects. For
>instance, see
>
>  http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15134
>
>where
>
>float x = 30.0;
>int main()
>{
>  if ( 90.0/x != 3.0)
>    abort();
>  return 0;
>}
>
>fails with -ffast-math (on x86). I would not recommend it, unless
>the user knows all the consequences.
>
>  
>
On the other hand, in general using != and == on floating point numbers 
is always dangerous if you do not know all the consequences. For 
example, on your above program if I use 30.1 and 90.3, the program fails 
without -ffast-math.

Chris



More information about the Gcc mailing list