Floating point woes

Ingo Krabbe ikrabbe@earthling.net
Tue Jun 5 13:40:00 GMT 2001


On Sat, 2 Jun 2001, Rafael Herrera wrote:

> Hello,
>
> I've inherited a program wich has started to crash after attempting to
> compare floating point numbers (doubles to be precise). For example, a
> construct like this:
>
>   if (a/2 > b)
>     {
> 	<..>
>     }
>
> would be true, even though the a/2 and b are equal.
>
> What is the recommended procedure to compare two doubles? If not
> recommended, is there a tool that can scan the sources and report the
> instances in which these potentially problematic constructs occur?
>
> Thank you
> --
>      Rafael
>
Its common to compare equality of floats against an epsilon distance,
because of internal rounding troubles.

if ( abs(a/2-b) > epsilon )

with epsilon in a range which fits into precision and to our experiment:

	epsilon = 1e-5 for example.

CU INGO




More information about the Gcc-help mailing list