Политика — это механизм компиляции времени для настройки поведения специальной функции или статистического распределения. С политикой вы можете контролировать:
- Какие действия следует предпринять при возникновении ошибки.
- Что происходит, когда вы называете функцию, которая математически не определена (например, если вы спросите среднее значение распределения Коши).
- Что происходит, когда вы просите квантиль дискретного распределения.
- Разрешается ли библиотеке внутренне продвигать
float
до double
и double
до long double
для повышения точности.
- Какую точность использовать при расчете результата.
Некоторые из этих политик, возможно, могут быть переменными времени выполнения, но тогда мы не могли бы использовать отправку времени компиляции внутри, чтобы выбрать лучший метод оценки для данной политики.
По этой причине Политика представляет собой тип: фактически это экземпляр шаблона класса boost::math::policies::policy<>
. Этот класс является просто набором времени-контейнером выбранных пользователем политик (иногда называемых списком типов):
using namespace boost::math::policies;
typedef policy<domain_error<errno_on_error>, promote_double<false> > mypolicy;