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

Using Macros to Change the Policy Defaults

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

Вы можете использовать различные макросы ниже, чтобы изменить любые (или все) политики.

Вы можете внести локальное изменение, поместив макроопределениепередфункцией или распределением #включено.

[Caution] Caution

Существует опасность нарушения правил «одного определения», если вы добавляете специальные макросы в более чем один исходный файл: они должны быть установлены одинаково в каждом блоке перевода..

[Caution] Caution

Если вы поместите его после #include, это не будет иметь никакого эффекта (и это повлияет только на любые другие следующие #includes). Это, вероятно, не то, что вы намереваетесь!

Если вы хотите изменить дефолты для любой или всех политик длявсехфункций и дистрибутивов, по всей установке, то вы можете сделать это, определив различные макросы вboost/math/tools/user.hpp.

BOOST_MATH_DOMAIN_ERROR_POLICY

Определяет, что происходит, когда происходит ошибка домена, если не определено, то по умолчаниюthrow_on_error, но может быть установлено на любое из перечисленных действий для передачи ошибки:throw_on_error,errno_on_error,ignore_errorилиuser_error.

BOOST_MATH_POLE_ERROR_POLICY

Определяет, что происходит, когда происходит ошибка полюса, если не определено, то по умолчаниюthrow_on_error, но может быть установлено на любое из перечисленных действий для передачи ошибки:throw_on_error,errno_on_error,ignore_errorилиuser_error.

BOOST_MATH_OVERFLOW_ERROR_POLICY

Определяет, что происходит, когда происходит ошибка переполнения, если не определено, то по умолчаниюthrow_on_error, но может быть установлено на любое из перечисленных действий для передачи ошибки:throw_on_error,errno_on_error,ignore_errorилиuser_error.

BOOST_MATH_ROUNDING_ERROR_POLICY

Определяет, что происходит, когда происходит ошибка округления, если не определено, то по умолчаниюthrow_on_error, но может быть установлено на любое из перечисленных действий для передачи ошибки:throw_on_error,errno_on_error,ignore_errorилиuser_error.

BOOST_MATH_EVALUATION_ERROR_POLICY

Определяет, что происходит, когда происходит внутренняя ошибка оценки, если не определено, то по умолчаниюthrow_on_error, но может быть установлено на любое из перечисленных действий для передачи ошибки:throw_on_error,errno_on_error,ignore_errorилиuser_error.

BOOST_MATH_UNDERFLOW_ERROR_POLICY

Определяет, что происходит, когда возникает ошибка переполнения, если не определено, то по умолчаниюигнорируют_ошибку, но могут быть установлены на любое из перечисленных действий для передачи ошибки:бросают_on_error,errno_on_error,игнорируют_errorилипользователь_error.

BOOST_MATH_DENORM_ERROR_POLICY

Определяет, что происходит, когда происходит ошибка денормализации, если не определено, то по умолчаниюигнорируют_ошибку, но могут быть установлены на любое из перечисленных действий для передачи ошибки:бросают_on_error,errno_on_error,игнорируют_errorилипользователь_error.

BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY

Определяет, что происходит, когда результат неопределён, но где нет меньше условности для результата. Если не определено, то по умолчаниюигнорируют_ошибку, но могут быть установлены на любое из перечисленных действий для передачи ошибок:throw_on_error,errno_on_error,игнорируют_errorилипользователь_error.

BOOST_MATH_DIGITS10_POLICY

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

BOOST_MATH_PROMOTE_FLOAT_POLICY

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

BOOST_MATH_PROMOTE_DOUBLE_POLICY

Определяет, будут лидвойныетипы повышены додлинныедвойныевнутренне, чтобы обеспечить максимальную точность в результате, по умолчанию доистинные, но может быть установлен наложные, чтобы повернуть продвижениедвойныевыключены.

BOOST_MATH_DISCRETE_QUANTILE_POLICY

Определяет, как дискретные квантили возвращают свои результаты: либо как целое число, либо как реальное значение, может быть установлено на одно из перечисленных значений:реальное,целое число_round_outwards,целое число_round_inwards,целое число_round_down,целое число_round_nearest,целое число_round_nearest.

BOOST_MATH_ASSERT_UNDEFINED_POLICY

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

BOOST_MATH_MAX_SERIES_ITERATION_POLICY

Определяет, сколько серийных итераций допускается выполнить специальной функции, прежде чем она сдастся и вернет ошибку оценки: Дефолты до 1000000.

BOOST_MATH_MAX_ROOT_ITERATION_POLICY

Определяет, сколько корневых итераций допускается выполнить специальной функции, прежде чем она сдастся и вернет ошибку оценки: Дефолты до 200.

Example

Предположим, мы хотим, чтобы ошибки переполнения установили::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.


PrevUpHomeNext

Статья Using Macros to Change the Policy Defaults раздела 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 00:40:57/0.033920049667358/1