From 1f5e6637a1a9cd7f795a08ff0cef02fd0ca182c1 Mon Sep 17 00:00:00 2001
From: EdouardParis <mail@edouard.paris>
Date: Wed, 25 May 2016 15:20:42 +0200
Subject: [PATCH] zpzpolynome with p = 701

---
 Makefile       |  3 ++-
 main.ml        | 34 ++++++++++++++++++++++++++++++++++
 zpzpolynome.ml | 18 ++++++++++++++++++
 3 files changed, 54 insertions(+), 1 deletion(-)
 create mode 100644 zpzpolynome.ml

diff --git a/Makefile b/Makefile
index d54bb92..524cf98 100644
--- a/Makefile
+++ b/Makefile
@@ -2,9 +2,10 @@ all:
 	mkdir bin
 	ocamlc -c polynome.ml 
 	ocamlc -c simplepolynome.ml 
+	ocamlc -c zpzpolynome.ml 
 	ocamlc -c nums.cma main.ml 
 	ocamlc -c nums.cma stats_big_int.ml 
-	ocamlc -o bin/main nums.cma polynome.cmo simplepolynome.cmo main.cmo
+	ocamlc -o bin/main nums.cma polynome.cmo simplepolynome.cmo zpzpolynome.cmo main.cmo
 	ocamlc -o bin/stats_big_int nums.cma polynome.cmo simplepolynome.cmo stats_big_int.cmo
 
 test:
diff --git a/main.ml b/main.ml
index 295328f..ac53fcc 100644
--- a/main.ml
+++ b/main.ml
@@ -4,6 +4,7 @@
 open Big_int;;
 open Polynome;;
 open Simplepolynome;;
+open Zpzpolynome;;
 
 (*big num avec simple variable*)
 print_string "**********************************\n";
@@ -42,3 +43,36 @@ print_string "\n";
 print_string "diff\n naive_mul - karatsuba = ";;
 print_string (P.print(P.sub naive karatsuba));;
 print_string "\n";
+
+
+module ZpZ = Polynome(ZpZCoeff)(SimpleDegree);;
+(*base monomiale pour la construction du polynĂ´me*)
+let p1 = P.generate 4;;
+
+print_string "P1 = ";
+print_string (P.print p1);
+print_string "\n";;
+
+let p2 = P.generate 4;;
+
+print_string "P2 = ";
+print_string (P.print p2);
+print_string "\n";
+
+print_string "addition polynome:\np1 + p2 = ";
+print_string (P.print(P.add p1 p2));;
+print_string "\n";
+
+print_string "naive multiplication:\np1 x p2 = ";;
+let naive = P.naive_mul p2 p1;;
+print_string (P.print(naive));;
+print_string "\n";
+
+print_string "karatsuba multiplication:\np1 x p2 = ";;
+let karatsuba = (P.karatsuba_mul p1 p2);;
+print_string (P.print(karatsuba));;
+print_string "\n";
+
+print_string "diff\n naive_mul - karatsuba = ";;
+print_string (P.print(P.sub naive karatsuba));;
+print_string "\n";
diff --git a/zpzpolynome.ml b/zpzpolynome.ml
new file mode 100644
index 0000000..1d6fb9c
--- /dev/null
+++ b/zpzpolynome.ml
@@ -0,0 +1,18 @@
+(* projet AP 2016 Edouard Paris*)
+(*corps premier Z/pZ avec le nombre premier 701*)
+open Big_int;;
+open Random;;
+
+module ZpZCoeff=
+  struct 
+    type coeff = big_int
+    let print c = (string_of_big_int c)
+    let add c1 c2 = mod_big_int (add_big_int c1 c2) (big_int_of_int 701)
+    let sub c1 c2 = sub_big_int c1 c2
+    let equal c1 c2 = eq_big_int c1 c2
+    let is_null c = eq_big_int c zero_big_int
+    let mul c1 c2 = mod_big_int (mult_big_int c1 c2) (big_int_of_int 701)
+    let minus c = minus_big_int c
+    let generate i = mod_big_int (big_int_of_int (Random.int (701-i))) (big_int_of_int 701)
+  end
+;;
-- 
GitLab