import Numeric.Decimal import Test.QuickCheck main :: IO () main = putStrLn "Test suite not yet implemented" infinity :: (Precision p, Rounding r) => Number p r infinity = read "Infinity" instance (Precision p, Rounding r) => Arbitrary (Number p r) where arbitrary = frequency [(85, genNum), (10, genInf)] genNum :: (Precision p, Rounding r) => Gen (Number p r) genNum = do c <- choose (-(10^10), 10^10) :: Gen Integer e <- choose (-99, 99) :: Gen Integer return $ read (show c ++ 'E' : show e) genInf :: (Precision p, Rounding r) => Gen (Number p r) genInf = do s <- elements [-1, 1] return (s * infinity) genNaN :: (Precision p, Rounding r) => Gen (Number p r) genNaN = oneof [nan "", nan "s"] where nan kind = do s <- elements ["", "-"] p <- choose (0, 10000) :: Gen Integer return $ read (s ++ kind ++ "NaN" ++ show p)