[ 
https://issues.apache.org/jira/browse/MESOS-1187?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14738336#comment-14738336
 ] 

Klaus Ma commented on MESOS-1187:
---------------------------------

Thanks very much for your input :); and you're right about the precision. And 
the following two article give some advise.

http://stackoverflow.com/questions/17333/most-effective-way-for-float-and-double-comparison
http://en.cppreference.com/w/cpp/types/numeric_limits/epsilon
http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm

And the following code, from cppreference, will resolve your case. But, check 
whether two double is equal is a complex and lots of discussion. I'd suggest to 
commit the following patch firstly; if any new case, let's handle it case by 
case.

{code}
bool almost_equal(double x, double y, int ulp = 2)
{
   // the machine epsilon has to be scaled to the magnitude of the values used
   // and multiplied by the desired precision in ULPs (units in the last place)
   return fabs(x-y) < numeric_limits<double>::epsilon() * fabs(x+y) * ulp
   // unless the result is subnormal
      || fabs(x-y) < numeric_limits<double>::min();
}
{code}

> precision errors with allocation calculations
> ---------------------------------------------
>
>                 Key: MESOS-1187
>                 URL: https://issues.apache.org/jira/browse/MESOS-1187
>             Project: Mesos
>          Issue Type: Bug
>          Components: allocation, master
>            Reporter: aniruddha sathaye
>            Assignee: Klaus Ma
>
> As allocations are stored/transmitted as doubles many a times precision 
> errors creep in. 
> we have seen erroneous share calculations happen only because of floating 
> point arithmetic. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to