From c67c5d23114e079f9f5bd79f782b6c87dd73c640 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20N=C3=A1jera?= Date: Mon, 5 Apr 2021 18:24:19 +0200 Subject: Define FieldElement substraction and multiplication --- ecc.hs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/ecc.hs b/ecc.hs index 6271864..200b613 100644 --- a/ecc.hs +++ b/ecc.hs @@ -13,3 +13,32 @@ add :: FieldElement -> FieldElement -> FieldElement add (FieldElement a b) (FieldElement c d) | b /= d = error "Distinct Fields" | otherwise = FieldElement (mod (a + c) b) b + +sub :: FieldElement -> FieldElement -> FieldElement +sub (FieldElement a b) (FieldElement c d) + | b /= d = error "Distinct Fields" + | otherwise = FieldElement (mod (a - c) b) b + +mul :: FieldElement -> FieldElement -> FieldElement +mul (FieldElement a b) (FieldElement c d) + | b /= d = error "Distinct Fields" + | otherwise = FieldElement (mod (a * c) b) b + +assert :: Bool -> Bool +assert False = error "WRONG" +assert x = x + +aa = + let a = FieldElement 2 31 + b = FieldElement 15 31 + in assert + (and + [ add a b == FieldElement 17 31 + , a /= b + , sub a b == FieldElement 18 31 + ]) + +bb = + let a = FieldElement 19 31 + b = FieldElement 24 31 + in mul a b -- cgit v1.2.3