我想在一个测试Maclaurin系列是否等于1/x
,x>1
和x<2
的函数中使用quickcheck。但是,对于较小的n值,quickcheck会返回false测试。另外,如果我提出n>100
限制,例如,quickcheck会返回:
&#34;放弃!仅通过了0次测试。&#34;。
这是我的代码:
prop_inv :: Float -> Int -> Property
prop_inv x n = (x>1 && x<2) && n>100 ==> inv x n == 1/x
(inv x n
是计算Maclaurin系列的函数。)
答案 0 :(得分:1)
通常的方法是创建一个只生成所需范围内值的小型newtype。例如:
newtype BetweenOneAndTwo = BOAT Float deriving Show
instance Arbitrary BetweenOneAndTwo where
arbitrary = BOAT <$> Test.QuickCheck.choose (1, 2)
prop_inv (BOAT x) (NonNegative n) = inv x (n+100) == 1/x