From 968f4b16e85d647415f4ac4e4ac358d98dda50f0 Mon Sep 17 00:00:00 2001 From: Aurelien Rebourg Date: Wed, 11 Dec 2019 20:36:55 +0100 Subject: [PATCH] avance --- Source/builtin/builtin.ml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Source/builtin/builtin.ml b/Source/builtin/builtin.ml index e45a167..226fe51 100644 --- a/Source/builtin/builtin.ml +++ b/Source/builtin/builtin.ml @@ -9,7 +9,8 @@ primitives to suit maths conventions. (** Sign function @param x integer *) -let sign x = 0 +let sign x = + if x >= 0 then 1 else -1;; (* Integer quotient implementation ; main use is in case of quotient of an integer by a natural number. @@ -20,7 +21,10 @@ let sign x = 0 @param a dividend @param b natural number you divide by. *) -let quot a b = 0 +let quot a b = + match sign a = -1 && a mod b <> 0 with + true -> a/b - 1 + | _ -> (a/b);; (* Integer modulo implementations. Negative case need be taken into account ; representant is expected non-negative. This is not OCAML @@ -35,7 +39,10 @@ let quot a b = 0 @param a input integer @param b moduli a natural number. *) -let modulo a b = 0 +let modulo a b = + match sign a = -1 && a mod b != 0 with + true -> a mod b + b + | _ -> a mod b;; (* Integer modulo implementations. Negative case need be taken into account ; representant is expected non-negative. This is not OCAML @@ -48,4 +55,5 @@ let modulo a b = 0 @param a dividend @param b integer you divide by. *) -let div a b = (0, 0) + +let div a b = (quot a b, modulo a b);;