numeric-prelude-0.4.3.3: test/Test/Algebra/PrincipalIdealDomain.hs
-- Do not edit! Automatically created with doctest-extract from src/Algebra/PrincipalIdealDomain.hs
{-# LINE 64 "src/Algebra/PrincipalIdealDomain.hs" #-}
module Test.Algebra.PrincipalIdealDomain where
import Test.DocTest.Base
import qualified Test.DocTest.Driver as DocTest
{-# LINE 65 "src/Algebra/PrincipalIdealDomain.hs" #-}
import qualified Algebra.PrincipalIdealDomain as PID
import Test.NumericPrelude.Utility ((/\))
import qualified Test.QuickCheck as QC
genResidueClass :: QC.Gen (Integer,Integer)
genResidueClass = do
m <- fmap QC.getNonZero $ QC.arbitrary
a <- QC.choose (min 0 $ 1+m, max 0 $ m-1)
return (m,a)
test :: DocTest.T ()
test = do
DocTest.printPrefix "Algebra.PrincipalIdealDomain:305: "
{-# LINE 305 "src/Algebra/PrincipalIdealDomain.hs" #-}
DocTest.property
{-# LINE 305 "src/Algebra/PrincipalIdealDomain.hs" #-}
(QC.listOf genResidueClass /\ \xs -> case PID.chineseRemainderMulti xs of Nothing -> True; Just (n,b) -> abs n == abs (foldl lcm 1 (map fst xs)) && map snd xs == map (mod b . fst) xs)
DocTest.printPrefix "Algebra.PrincipalIdealDomain:306: "
{-# LINE 306 "src/Algebra/PrincipalIdealDomain.hs" #-}
DocTest.property
{-# LINE 306 "src/Algebra/PrincipalIdealDomain.hs" #-}
(\(QC.NonEmpty ms) b -> let xs = map (\(QC.NonZero m) -> (m, mod b m)) ms in case PID.chineseRemainderMulti xs of Nothing -> False; Just (n,c) -> abs n == abs (foldl lcm 1 (map QC.getNonZero ms)) && mod b n == (c::Integer))
DocTest.printPrefix "Algebra.PrincipalIdealDomain:298: "
{-# LINE 298 "src/Algebra/PrincipalIdealDomain.hs" #-}
DocTest.example
{-# LINE 298 "src/Algebra/PrincipalIdealDomain.hs" #-}
(PID.chineseRemainderMulti [(100,21), (10000,2021::Integer)])
[ExpectedLine [LineChunk "Just (10000,2021)"]]
DocTest.printPrefix "Algebra.PrincipalIdealDomain:300: "
{-# LINE 300 "src/Algebra/PrincipalIdealDomain.hs" #-}
DocTest.example
{-# LINE 300 "src/Algebra/PrincipalIdealDomain.hs" #-}
(PID.chineseRemainderMulti [(97,90),(99,10),(100,0::Integer)])
[ExpectedLine [LineChunk "Just (960300,100000)"]]
DocTest.printPrefix "Algebra.PrincipalIdealDomain:302: "
{-# LINE 302 "src/Algebra/PrincipalIdealDomain.hs" #-}
DocTest.example
{-# LINE 302 "src/Algebra/PrincipalIdealDomain.hs" #-}
(PID.chineseRemainderMulti [(95,30),(97,27),(98,8),(99,1::Integer)])
[ExpectedLine [LineChunk "Just (89403930,1000000)"]]