From: donassbr Date: Tue, 29 Sep 2009 12:42:00 +0000 (+0000) Subject: Fix problem when comparing two doubles. X-Git-Tag: SVN~1028 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/ae9cb1a80506c00479fa84f8a56cdce227704628 Fix problem when comparing two doubles. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@6683 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/src/include/surf/maxmin.h b/src/include/surf/maxmin.h index c8580a0325..bf6f577de1 100644 --- a/src/include/surf/maxmin.h +++ b/src/include/surf/maxmin.h @@ -8,6 +8,7 @@ #ifndef _SURF_MAXMIN_H #define _SURF_MAXMIN_H +#include #include "portable.h" #include "xbt/misc.h" #include "surf/datatypes.h" @@ -25,6 +26,11 @@ static XBT_INLINE int double_positive(double value) return (value > MAXMIN_PRECISION); } +static XBT_INLINE int double_equals(double value1, double value2) +{ + return (fabs(value1 - value2) < MAXMIN_PRECISION); +} + XBT_PUBLIC(lmm_system_t) lmm_system_new(void); XBT_PUBLIC(void) lmm_system_free(lmm_system_t sys); void lmm_variable_disable(lmm_system_t sys, lmm_variable_t var); diff --git a/src/surf/cpu_im.c b/src/surf/cpu_im.c index 0a65e33600..2b3b5be83f 100644 --- a/src/surf/cpu_im.c +++ b/src/surf/cpu_im.c @@ -272,7 +272,7 @@ static void update_actions_state(double now, double delta) surf_action_cpu_Cas01_im_t action; while ((xbt_heap_size(action_heap) > 0) - && (xbt_heap_maxkey(action_heap) <= now)) { + && (double_equals(xbt_heap_maxkey(action_heap), now))) { action = xbt_heap_pop(action_heap); DEBUG1("Action %p: finish", action); GENERIC_ACTION(action).finish = surf_get_clock();