Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Relative Error and Testing

Boost , Math Toolkit 2.5.0 , Internal tools

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext
Synopsis
#include <boost/math/tools/test.hpp>
[Important] Important

Заголовок<boost/math/tools/test.hpp>расположен под<libs/math/include_private>и по умолчанию не установлен в обычных местах, для использования этого заголовка вам нужно добавить<libs/math/include_private>к пути включения компилятора.

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);
Description
template <class T>
T relative_error(T a, T v);

Возвращает относительную ошибку междуaиv, используя обычную формулу:

Кроме того, возвращенное значение равно нулю, если:

  • aиvбесконечны.
  • aиvявляются денормализованными числами или нулем.

В противном случае, если только один изaиvравен нулю, то возвращенное значение равно 1.

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

Эта функция используется для тестирования функции против табулированных тестовых данных.

Тип возврата содержит статистические данные об относительных ошибках (максимальная, средняя, дисперсия, количество тестовых случаев и т. д.), а также ряд тестовых данных, которые вызвали наибольшую относительную ошибку. Общественными членами типа test_result являются:

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, является тем же типом, что и значения в двухмерном массиве, переданные для функционированиятест, примерно это<A::value_type::value_type>.

Параметрaпредставляет собой матрицу тестовых данных и должен быть стандартной библиотекой. Тип последовательности, который содержит другой тип последовательности: обычно это будет двухмерный экземпляр<boost::array>. Каждая строкаaдолжна содержать все параметры, которые передаются тестируемой функции, а также ожидаемый результат.

Параметрtest_funcявляется функцией тестируемого, она вызывается с каждой строкой тестовых данных вa. Тип F1 создается с помощью Boost. Ламбда: см. пример ниже.

Параметрexpect_funcявляется функтором, который извлекает ожидаемый результат из ряда тестовых данных вa. Тип F2 обычно создается с помощью Boost. Ламбда: см. пример ниже.

Если тестируемая функция возвращает неконечное значение, когда ожидается конечный результат, или если обнаружена грубая ошибка, то сообщение отправляется на<std::cerr>, и сделан вызов BOOST_ERROR() (что означает, что включение этого заголовка требует использования Boost.Test). Это в основном помощь отладки / развития (и хорошее место для точки останова).

Example

Предположим, что мы хотим проверить функции тгамма и лгамма, мы можем создать двухмерную матрицу тестовых данных, каждая строка является одним тестовым случаем и содержит три элемента: входное значение и ожидаемые результаты для функций тгамма и лгамма соответственно.

static const boost::array<boost::array<TestType, 3>, NumberOfTests>
   factorials = {
      /* big array of test data goes here */
   };

Теперь мы можем использовать тестовую функцию для тестирования тгаммы:

using namespace boost::math::tools;
using namespace boost::lambda;
// get a pointer to the function under test:
TestType (*funcp)(TestType) = boost::math::tgamma;
// declare something to hold the result:
test_result<TestType> result;
//
// and test tgamma against data:
//
result = test(
   factorials,
   bind(funcp, ret<TestType>(_1[0])), // calls tgamma with factorials[row][0]
   ret<TestType>(_1[1])               // extracts the expected result from factorials[row][1]
);
//
// Print out some results:
//
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;
//
// same again with lgamma this time:
//
funcp = boost::math::lgamma;
result = test(
   factorials,
   bind(funcp, ret<TestType>(_1[0])), // calls tgamma with factorials[row][0]
   ret<TestType>(_1[2])               // extracts the expected result from factorials[row][2]
);
//
// etc ...
//

PrevUpHomeNext

Статья Relative Error and Testing раздела Math Toolkit 2.5.0 Internal tools может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Internal tools ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-07-05 02:45:55/0.004450798034668/0