![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Using Macros to Change the Policy DefaultsBoost , Math Toolkit 2.5.0 , Policy Reference
|
![]() |
Caution |
---|---|
Существует опасность нарушения правил «одного определения», если вы добавляете специальные макросы в более чем один исходный файл: они должны быть установлены одинаково в каждом блоке перевода.. |
![]() |
Caution |
---|---|
Если вы поместите его после #include, это не будет иметь никакого эффекта (и это повлияет только на любые другие следующие #includes). Это, вероятно, не то, что вы намереваетесь! |
Если вы хотите изменить дефолты для любой или всех политик длявсехфункций и дистрибутивов, по всей установке, то вы можете сделать это, определив различные макросы вboost/math/tools/user.hpp.
Определяет, что происходит, когда происходит ошибка домена, если не определено, то по умолчаниюthrow_on_error
, но может быть установлено на любое из перечисленных действий для передачи ошибки:throw_on_error
,errno_on_error
,ignore_error
илиuser_error
.
Определяет, что происходит, когда происходит ошибка полюса, если не определено, то по умолчаниюthrow_on_error
, но может быть установлено на любое из перечисленных действий для передачи ошибки:throw_on_error
,errno_on_error
,ignore_error
илиuser_error
.
Определяет, что происходит, когда происходит ошибка переполнения, если не определено, то по умолчаниюthrow_on_error
, но может быть установлено на любое из перечисленных действий для передачи ошибки:throw_on_error
,errno_on_error
,ignore_error
илиuser_error
.
Определяет, что происходит, когда происходит ошибка округления, если не определено, то по умолчаниюthrow_on_error
, но может быть установлено на любое из перечисленных действий для передачи ошибки:throw_on_error
,errno_on_error
,ignore_error
илиuser_error
.
Определяет, что происходит, когда происходит внутренняя ошибка оценки, если не определено, то по умолчаниюthrow_on_error
, но может быть установлено на любое из перечисленных действий для передачи ошибки:throw_on_error
,errno_on_error
,ignore_error
илиuser_error
.
Определяет, что происходит, когда возникает ошибка переполнения, если не определено, то по умолчаниюигнорируют_ошибку
, но могут быть установлены на любое из перечисленных действий для передачи ошибки:бросают_on_error
,errno_on_error
,игнорируют_error
илипользователь_error
.
Определяет, что происходит, когда происходит ошибка денормализации, если не определено, то по умолчаниюигнорируют_ошибку
, но могут быть установлены на любое из перечисленных действий для передачи ошибки:бросают_on_error
,errno_on_error
,игнорируют_error
илипользователь_error
.
Определяет, что происходит, когда результат неопределён, но где нет меньше условности для результата. Если не определено, то по умолчаниюигнорируют_ошибку
, но могут быть установлены на любое из перечисленных действий для передачи ошибок:throw_on_error
,errno_on_error
,игнорируют_error
илипользователь_error
.
Определяет, сколько десятичных цифр использовать во внутренних вычислениях: по умолчанию до0
— то есть использовать все доступные цифры — но может быть установлен на какое-то другое десятичное значение. Поскольку установка этого, вероятно, окажет существенное влияние на точность, обычно не рекомендуется изменять это по умолчанию.
Определяет, будут липлавающие
типы повышены до.удвоить
внутренне, чтобы обеспечить максимальную точность в результате, по умолчанию доистинно
, но может быть установлен наложно
, чтобы повернуть продвижениеплавать
выключено.
Определяет, будут лидвойные
типы повышены додлинныедвойные
внутренне, чтобы обеспечить максимальную точность в результате, по умолчанию доистинные
, но может быть установлен наложные
, чтобы повернуть продвижениедвойные
выключены.
Определяет, как дискретные квантили возвращают свои результаты: либо как целое число, либо как реальное значение, может быть установлено на одно из перечисленных значений:реальное
,целое число_round_outwards
,целое число_round_inwards
,целое число_round_down
,целое число_round_nearest
,целое число_round_nearest
.
Определяет, являются ли функции математически неопределенными для конкретного компилятора распределения или повышают статическое (т.е. время компиляции) утверждение. По умолчаниюистинно
: это означает, что любая математически неопределенная функция не будет компилироваться. При установке наложный
функция будет компилировать, но возвращать результат ошибки домена: это может быть полезно для некоторого общего кода, который должен работать со всеми дистрибутивами и определять во время выполнения, хорошо ли определено конкретное свойство.
Определяет, сколько серийных итераций допускается выполнить специальной функции, прежде чем она сдастся и вернет ошибку оценки: Дефолты до 1000000.
Определяет, сколько корневых итераций допускается выполнить специальной функции, прежде чем она сдастся и вернет ошибку оценки: Дефолты до 200.
Предположим, мы хотим, чтобы ошибки переполнения установили::errno
и вернули бесконечность, дискретные квантили, чтобы вернуть реальный результат (а не круглый к целому), а для математически неопределенных функций, чтобы компилировать, но вернуть ошибку домена. Затем мы можем добавить следующее для boost/math/tools/user.hpp:
#define BOOST_MATH_OVERFLOW_ERROR_POLICY errno_on_error #define BOOST_MATH_DISCRETE_QUANTILE_POLICY real #define BOOST_MATH_ASSERT_UNDEFINED_POLICY false
Или мы могли бы поместить эти определенияперед.
#include <boost/math/distributions/normal.hpp> using boost::math::normal_distribution;
в файле Source.cpp.
Статья Using Macros to Change the Policy Defaults раздела Math Toolkit 2.5.0 Policy Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Policy Reference ::
реклама |