If checking epsilon is not good enough, you might look at using 
 rational arithmetic (see 
 https://secure.wikimedia.org/wikipedia/en/wiki/Rational_number)

   EBo --

 On Fri, 31 Dec 2010 10:57:39 -0500, Kenneth Lerman wrote:
> To compare to zero:
>
>
>     EPSILON = .0001 // how close do we need to be
>     if (abs(aFloatingPointValue) < EPSILON)...
>
> Ken
>
> On 12/31/2010 5:40 AM, Michael Büsch wrote:
>> On Fri, 2010-12-31 at 10:11 +0000, Chris Morley wrote:
>>> So I found one problem with the g10 l2 patch :
>>> p-1 is accepted as p0 even if I check for p<  0
>>> The reason is when the p number is converted to an integer:
>>>
>>> p_int = (int) (block->p_number + 0.0001);
>>>
>>> -1 +.0001 is (rightfully) truncated to zero.
>>> If I remove the  +0.0001 then -1 stays -1 and the error is
>>> caught.
>>> My question is the reason for the 0.0001 and can I remove
>>>   it without problems ?
>>>
>> Well, no. The reason for it seems to be that floating point
>> numbers come with some inaccuracies.
>> So the number 1 in floating point might be 1.0000001 or 0.99999998
>> or something like that, depending on the CPU architecture
>> and/or the operations that were done to the number before.
>> However, when converted to int the 1.0000001 converts as 1 and
>> the 0.99999998 converts as 0. And thus we have to add a "safe" value
>> to it before casting it. 0.0001 is pretty safe for doubles and
>> also seems to be safe for floats.
>> This is also the reason why floating point numbers cannot be
>> compared with ==. They often wouldn't match, even if it's
>> actually the same number, due to inaccuracies.
>>
>
> --
> Kenneth Lerman
> 55 Main Street
> Newtown, CT 06470
> 203-426-3769
>
> 
> ------------------------------------------------------------------------------
> Learn how Oracle Real Application Clusters (RAC) One Node allows 
> customers
> to consolidate database storage, standardize their database
> environment, and,
> should the need arise, upgrade to a full multi-node Oracle RAC 
> database
> without downtime or disruption
> http://p.sf.net/sfu/oracle-sfdevnl
> _______________________________________________
> Emc-developers mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/emc-developers


------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and, 
should the need arise, upgrade to a full multi-node Oracle RAC database 
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
Emc-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to