6

我正在使用 QuickCheck 来测试我的代码以进行一些数值计算。基本上我有一个精确的函数和几个更有效的近似值。

我目前正在实现我想要测试的属性,例如:

prop_blah input = (abs $ (exact input)-(approx input)) < threshold

但是,如果能准确地知道每种近似算法的准确度并将它们相互比较,那就太好了。一种简单的方法是获取不等式左侧的均值和标准差的报告。这有可能吗?

4

1 回答 1

2

如果您只需要打印出来,您应该检查在单次测试后执行的 QuickCheck Callbacks。它们的定义位于 Test.QuickCheck.P​​roperty

否则,您可以使用collect :: (Show a, Testable prop) => a -> prop -> Property位于 Test.QuickCheck.P​​roperty 中的函数。

let a = (abs $ (exact input)-(approx input))
in collect a (a < threshold)

通过这种方式,您至少可以确定近似值的字符串表示形式,并且还可以了解有多少单个测试给出了相同的近似值。

您甚至可以摆脱近似质量,只需通过以下方式列出因素:

prop = collect (abs $ (exact input)-(approx input)) True
于 2012-08-23T12:46:04.563 回答