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

Mathematically Undefined Function Policies

Boost , Math Toolkit 2.5.0 , Policy Reference

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

Некоторые функции являются общими (они присутствуют для всех поддерживаемых статистических распределений), но могут быть математически неопределенными для некоторых распределений, но определенными для других.

Например, распределение Коши не имеет значимого значения, поэтому что должно

mean(cauchy<>());

Возвращаться, а должно ли такое выражение вообще составляться?

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

Это поведение контролируется политикой<assert_undefined<>>:

namespace boost{ namespace math{ namespace policies {
template <bool b>
class assert_undefined;
}}} //namespaces

Например:

#include <boost/math/distributions/cauchy.hpp>
using namespace boost::math::policies;
using namespace boost::math;
// This will not compile, cauchy has no mean!
double m1 = mean(cauchy());
// This will compile, but raises a domain error!
double m2 = mean(cauchy_distribution<double, policy<assert_undefined<false> > >());

<policy<assert_undefined<false>>Поведение также может быть получено путем определения макроса.

#define BOOST_MATH_ASSERT_UNDEFINED_POLICY false

в главе файла - см.Использование Macros для изменения недостатков политики.


PrevUpHomeNext

Статья Mathematically Undefined Function Policies раздела Math Toolkit 2.5.0 Policy Reference может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Policy Reference ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 13:53:15/0.0033788681030273/0