From ffd3f7d7bcbaefc0910b5e9c7f1ad08c59bf81d6 Mon Sep 17 00:00:00 2001
From: Erwan Jahier <erwan.jahier@univ-grenoble-alpes.fr>
Date: Tue, 19 Apr 2022 15:28:09 +0200
Subject: [PATCH] fix: -is/-gis avoid a division by 0 when used with a #simu <
 100

---
 lib/sasacore/worstInit.ml | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/lib/sasacore/worstInit.ml b/lib/sasacore/worstInit.ml
index 9021b74a..93ee105a 100644
--- a/lib/sasacore/worstInit.ml
+++ b/lib/sasacore/worstInit.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 14/04/2022 (at 17:20) by Erwan Jahier> *)
+(* Time-stamp: <modified the 19/04/2022 (at 15:20) by Erwan Jahier> *)
 
 open Register
 
@@ -221,7 +221,8 @@ let (fchc : out_channel -> ('v SimuState.t -> int) -> 'v SimuState.t -> int
             map_local_fold
               ~f: (fun p -> cost p, p)
               ~fold:(fun (cpt,nl) (c,p) ->
-                  let n_percent_done = cpt / (dmax / 100) in
+                  assert(dmax <> 0);
+                  let n_percent_done = if dmax < 100 then 1 else cpt / (dmax / 100) in
                   if n_percent_done <> !percent_done then (
                     percent_done := n_percent_done;
                     Printf.printf "%d%% of the %d simulations have been tryied so far...\r%!"
@@ -321,7 +322,7 @@ let (global : out_channel -> ('v SimuState.t -> int) -> 'v SimuState.t -> int
       else
         ss_worst, worst
     in
-    let n_percent_done = cpt / (dmax / 100) in
+    let n_percent_done = if dmax < 100 then 1 else cpt / (dmax / 100) in
     if n_percent_done <> !percent_done then (
       percent_done := n_percent_done;
       Printf.printf "%d%% of the %d simulations have been tryied so far...\r%!"
-- 
GitLab