![]()  | 
![]() ![]() ![]() ![]()  | 
![]()  | 
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 ::
реклама  |