summaryrefslogtreecommitdiff
path: root/testsuite/tests/lib/integer/integerGmpInternals.hs
diff options
context:
space:
mode:
authorKavon Farvardin <kavon@farvard.in>2018-09-23 15:29:37 -0500
committerKavon Farvardin <kavon@farvard.in>2018-09-23 15:29:37 -0500
commit84c2ad99582391005b5e873198b15e9e9eb4f78d (patch)
treecaa8c2f2ec7e97fbb4977263c6817c9af5025cf4 /testsuite/tests/lib/integer/integerGmpInternals.hs
parent8ddb47cfcf5776e9a3c55fd37947c8a95e00fa12 (diff)
parente68b439fe5de61b9a2ca51af472185c62ccb8b46 (diff)
downloadhaskell-wip/T13904.tar.gz
update to current master againwip/T13904
Diffstat (limited to 'testsuite/tests/lib/integer/integerGmpInternals.hs')
-rw-r--r--testsuite/tests/lib/integer/integerGmpInternals.hs28
1 files changed, 24 insertions, 4 deletions
diff --git a/testsuite/tests/lib/integer/integerGmpInternals.hs b/testsuite/tests/lib/integer/integerGmpInternals.hs
index 628f8e00fc..e45c6f4a48 100644
--- a/testsuite/tests/lib/integer/integerGmpInternals.hs
+++ b/testsuite/tests/lib/integer/integerGmpInternals.hs
@@ -20,13 +20,11 @@ import qualified GHC.Integer.GMP.Internals as I
recipModInteger :: Integer -> Integer -> Integer
recipModInteger = I.recipModInteger
--- FIXME: Lacks GMP2 version
gcdExtInteger :: Integer -> Integer -> (Integer, Integer)
gcdExtInteger a b = case I.gcdExtInteger a b of (# g, s #) -> (g, s)
--- FIXME: Lacks GMP2 version
powModSecInteger :: Integer -> Integer -> Integer -> Integer
-powModSecInteger = powModInteger
+powModSecInteger = I.powModSecInteger
powModInteger :: Integer -> Integer -> Integer -> Integer
powModInteger = I.powModInteger
@@ -81,14 +79,36 @@ main = do
print $ powModInteger b e m
print $ powModInteger b e (m-1)
print $ powModSecInteger b e (m-1)
+
+ putStrLn "\n# gcdExtInteger"
print $ gcdExtInteger b e
print $ gcdExtInteger e b
print $ gcdExtInteger x y
print $ gcdExtInteger y x
+ print $ gcdExtInteger x (-y)
+ print $ gcdExtInteger (-x) y
+ print $ gcdExtInteger (-x) (-y)
+
+ -- see Trac #15350
+ do
+ let a = 2
+ b = 2^65 + 1
+ print $ gcdExtInteger a b
+ print $ gcdExtInteger a (-b)
+ print $ gcdExtInteger (-a) b
+ print $ gcdExtInteger (-a) (-b)
+ print $ gcdExtInteger b a
+ print $ gcdExtInteger b (-a)
+ print $ gcdExtInteger (-b) a
+ print $ gcdExtInteger (-b) (-a)
+
+ putStrLn "\n# powInteger"
print $ powInteger 12345 0
print $ powInteger 12345 1
print $ powInteger 12345 30
- print $ [ (x,i) | x <- [0..71], let i = recipModInteger x (2*3*11*11*17*17), i /= 0 ]
+ print $ [ (x,i) | x <- [-7..71], let i = recipModInteger x (2*3*11*11*17*17), i /= 0 ]
+
+ putStrLn "\n# nextPrimeInteger"
print $ I.nextPrimeInteger b
print $ I.nextPrimeInteger e
print $ [ k | k <- [ 0 .. 200 ], S# (I.testPrimeInteger k 25#) `elem` [1,2] ]