aboutsummaryrefslogtreecommitdiff
path: root/src/ModularArithmetic/ModularBaseSystem.v
diff options
context:
space:
mode:
Diffstat (limited to 'src/ModularArithmetic/ModularBaseSystem.v')
-rw-r--r--src/ModularArithmetic/ModularBaseSystem.v21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/ModularArithmetic/ModularBaseSystem.v b/src/ModularArithmetic/ModularBaseSystem.v
index 1769f86c4..ff2c23ab8 100644
--- a/src/ModularArithmetic/ModularBaseSystem.v
+++ b/src/ModularArithmetic/ModularBaseSystem.v
@@ -60,9 +60,22 @@ Section ModularBaseSystem.
(* Placeholder *)
Definition div (x y : digits) : digits := encode (F.div (decode x) (decode y)).
+ Definition carry_ (carry_chain : list nat) (us : digits) : digits :=
+ from_list (carry_sequence carry_chain [[us]]) (length_carry_sequence length_to_list).
+
+ Definition carry_add (carry_chain : list nat) (us vs : digits) : digits :=
+ carry_ carry_chain (add us vs).
Definition carry_mul (carry_chain : list nat) (us vs : digits) : digits :=
- from_list (carry_sequence carry_chain [[mul us vs]]) (length_carry_sequence length_to_list).
-
+ carry_ carry_chain (mul us vs).
+ Definition carry_sub (carry_chain : list nat) (modulus_multiple: digits)
+ (modulus_multiple_correct : decode modulus_multiple = 0%F)
+ (us vs : digits) : digits :=
+ carry_ carry_chain (sub modulus_multiple modulus_multiple_correct us vs).
+ Definition carry_opp (carry_chain : list nat) (modulus_multiple : digits)
+ (modulus_multiple_correct : decode modulus_multiple = 0%F)
+ (x : digits) : digits :=
+ carry_ carry_chain (opp modulus_multiple modulus_multiple_correct x).
+
Definition rep (us : digits) (x : F modulus) := decode us = x.
Local Notation "u ~= x" := (rep u x).
Local Hint Unfold rep.
@@ -102,8 +115,8 @@ Section ModularBaseSystem.
Definition pack (x : digits) : target_digits :=
from_list (pack target_widths_nonneg bits_eq [[x]]) length_pack.
-
+
Definition unpack (x : target_digits) : digits :=
from_list (unpack target_widths_nonneg bits_eq [[x]]) length_unpack.
-End ModularBaseSystem. \ No newline at end of file
+End ModularBaseSystem.