From fb9bb05ae50ab3c7191ef5ba27e033fd6b97958e Mon Sep 17 00:00:00 2001 From: Kathy Gray Date: Tue, 25 Nov 2014 13:10:50 +0000 Subject: refine quot and mod --- src/lem_interp/interp_lib.lem | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/lem_interp/interp_lib.lem b/src/lem_interp/interp_lib.lem index 8115f3d6..3589c84f 100644 --- a/src/lem_interp/interp_lib.lem +++ b/src/lem_interp/interp_lib.lem @@ -12,11 +12,16 @@ declare ocaml target_rep function quomod = `Big_int.quomod_big_int` let hardware_mod a b = let (q,r) = quomod a b in - if q < 0 then r-b else r + if q < 0 then r-b + else + if a > b && a < 0 + then a else r let hardware_quot a b = let (q,r) = quomod a b in - if q < 0 then q+1 else q + if q < 0 then q+1 + else if a > b && a < 0 + then 0 else q let ignore_sail x = V_lit (L_aux L_unit Unknown) ;; -- cgit v1.2.3