Add additional support for GCD on signed numbers.

This commit is contained in:
2018-12-30 17:13:01 -08:00
parent 14fd156d3c
commit a6a82773d3
3 changed files with 85 additions and 16 deletions

View File

@@ -271,13 +271,17 @@ sigmulTest size memory0 =
egcdTest :: Test
egcdTest size memory0 =
let (x, memory1) = generateNum memory0 "x" size
(y, memory2) = generateNum memory1 "y" size
(a, b, v) = extendedGCD x y
let (x, memory1) = genSign (generateNum memory0 "x" size)
(y, memory2) = genSign (generateNum memory1 "y" size)
(a, b, v) = if (x >= 0) && (y >= 0)
then extendedGCD x y
else safeGCD x y
res = Map.fromList [("x", showX x), ("y", showX y),
("a", showX a), ("b", showX b),
("v", showX v)]
in assert (v == gcd x y) (res, v, memory2)
in assert (((a * x) + (b * y)) == v) $
assert (v == gcd x y) $
(res, v, memory2)
moddivTest :: Test
moddivTest size memoryIn =