我正在使用QuickCheck来测试我的代码以进行一些数值计算。基本上我有一个确切的函数和几个近似值,效率更高。
我目前正在实现我想要测试的属性:
prop_blah input = (abs $ (exact input)-(approx input)) < threshold
但是,确切地知道每种近似算法的精确程度并将它们相互比较真的很不错。一种简单的方法是获得不等式左侧的均值和标准差的报告。这有可能吗?
答案 0 :(得分:2)
如果您只需打印出来,则应检查单次测试后执行的QuickCheck回调。他们的定义位于Test.QuickCheck.Property
否则,您可以使用位于Test.QuickCheck.Property中的函数collect :: (Show a, Testable prop) => a -> prop -> Property
。
let a = (abs $ (exact input)-(approx input))
in collect a (a < threshold)
通过这种方式,您至少可以对该近似值进行字符串表示,并且还可以了解有多少单个测试给出相同的近似值。
您甚至可以摆脱近似质量,只需按以下方式列出因素:
prop = collect (abs $ (exact input)-(approx input)) True