Home Libraries People FAQ More

相對誤差以及測試(Relative Error and Testing)

概要

```#include <boost/math/tools/test.hpp>
```

```template <class T>
T relative_error(T a, T b);

template <class A, class F1, class F2>
test_result<see-below> test(const A& a, F1 test_func, F2 expect_func);
```
說明
```template <class T>
T relative_error(T a, T v);
```

• av 都是無限值。
• av 都是 denormalised numbers 或者為0。

```template <class A, class F1, class F2>
test_result<see-below> test(const A& a, F1 test_func, F2 expect_func);
```

```unsigned worst()const;```

```T min()const;```

```T max()const;```

```T mean()const;```

```boost::uintmax_t count()const;```

```T variance()const;```

```T variance1()const;```

```T rms()const```

```test_result& operator+=(const test_result& t)```

test_result的模板參數與傳遞給函數test的二維數組的類型是一樣的，,粗略地說就是`A::value_type::value_type`.

例子

```static const boost::array<boost::array<TestType, 3>, NumberOfTests>
factorials = {
/*大量的測試數據 */
};
```

```using namespace boost::math::tools;
using namespace boost::lambda;

// 獲取正在測試的函數的指針:
TestType (*funcp)(TestType) = boost::math::tgamma;

// 聲明一個對像來存儲結果:
test_result<TestType> result;
//
//測試tgamma函數:
//
result = test(
factorials,
bind(funcp, ret<TestType>(_1[0])), // 使用factorials[row][0]來調用函數
ret<TestType>(_1[1])               // 從 factorials[row][1]中提取預期結果
);
//
// 打印一些結果:
//
std::cout << "The Mean was " << result.mean() << std::endl;
std::cout << "The worst error was " << (result.max)() << std::endl;
std::cout << "The worst error was at row " << result.worst_case() << std::endl;
//
// 測試lgamma函數:
//
funcp = boost::math::lgamma;
result = test(
factorials,
bind(funcp, ret<TestType>(_1[0])), // 使用factorials[row][0]來調用函數
ret<TestType>(_1[2])               // 從 factorials[row][2]中提取預期結果
//
// etc ...
//
```