Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Workaround problem with excess precision on i387 FPU.
[simgrid.git] / src / surf / maxmin.c
index de1750b..0470043 100644 (file)
@@ -366,6 +366,8 @@ static XBT_INLINE int saturated_constraint_set_update(lmm_system_t sys,
                                                       cnst,
                                                       double *min_usage)
 {
+  volatile double usage;
+
   XBT_IN("sys=%p, cnst=%p, min_usage=%f", sys, cnst, *min_usage);
   if (cnst->usage <= 0) {
     XBT_OUT();
@@ -375,13 +377,14 @@ static XBT_INLINE int saturated_constraint_set_update(lmm_system_t sys,
     XBT_OUT();
     return 1;
   }
-  if ((*min_usage < 0) || (*min_usage > cnst->remaining / cnst->usage)) {
-    *min_usage = cnst->remaining / cnst->usage;
+  usage = cnst->remaining / cnst->usage;
+  if (*min_usage < 0 || *min_usage > usage) {
+    *min_usage = usage;
     XBT_HERE(" min_usage=%f (cnst->remaining=%f, cnst->usage=%f)",
              *min_usage, cnst->remaining, cnst->usage);
     xbt_swag_reset(&sys->saturated_constraint_set);
     xbt_swag_insert(cnst, &sys->saturated_constraint_set);
-  } else if (*min_usage == cnst->remaining / cnst->usage) {
+  } else if (*min_usage == usage) {
     xbt_swag_insert(cnst, &sys->saturated_constraint_set);
   }
   XBT_OUT();