![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
mpfi_floatBoost , Chapter 1. Boost.Multiprecision , Interval Number Types
|
![]() |
Note |
---|---|
Этот тип обеспечивает только поддержку |
Как и обычные преобразования из арифметических и струнных типов, экземплярычисла<mpfi_float_backend<N>>
являются копируемыми и присваиваемыми из:
Также можно получить доступ к базовомуmpfi_t
через функциюmpfi_float_backend
элемента данных.
Что вы должны знать при использовании этого типа:
mpfi_float_backend
установлен на NaN (это поведение по умолчаниюMPFI).
на этом бэкэнд-движении осведомленными.std::runtime_error
выбрасывается, если строка не может быть интерпретирована как действительное число с плавающей точкой.Существуют некоторые дополнительные нечленские функции для работы на интервалах:
template <unsigned Digits10, expression_template_option ExpressionTemplates> number<mpfr_float_backend<Digits10>, ExpressionTemplates> lower(const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& val);
Возвращает нижний конец интервала.
template <unsigned Digits10, expression_template_option ExpressionTemplates> number<mpfr_float_backend<Digits10>, ExpressionTemplates> upper(const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& val);
Возвращает верхний конец интервала.
template <unsigned Digits10, expression_template_option ExpressionTemplates> number<mpfr_float_backend<Digits10>, ExpressionTemplates> median(const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& val);
Возвращает среднюю точку интервала.
template <unsigned Digits10, expression_template_option ExpressionTemplates> number<mpfr_float_backend<Digits10>, ExpressionTemplates> width(const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& val);
Возвращает абсолютную ширину интервала.
template <unsigned Digits10, expression_template_option ExpressionTemplates> number<mpfi_float_backend<Digits10>, ExpressionTemplates> intersect( const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& a, const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& b);
Возвращает интервал, который является пересечениемaиb. Возвращает неопределенный пустой интервал, если такого пересечения нет.
template <unsigned Digits10, expression_template_option ExpressionTemplates> number<mpfi_float_backend<Digits10>, ExpressionTemplates> hull( const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& a, const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& b);
Возвращает интервал, который является союзомaиb.
template <unsigned Digits10, expression_template_option ExpressionTemplates> bool overlap(const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& a, const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& b);
Возвращаетистинно
только в том случае, если интервалыaиbперекрываются.
template <unsigned Digits10, expression_template_option ExpressionTemplates1, expression_template_option ExpressionTemplates2> bool in(const number<mpfr_float_backend<Digits10>, ExpressionTemplates1>& a, const number<mpfi_float_backend<Digits10>, ExpressionTemplates2>& b);
Возвращаетистинно
только в том случае, если точкаaсодержится в интервалеb.
template <unsigned Digits10, expression_template_option ExpressionTemplates> bool zero_in(const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& a);
Возвращаетистинное
только в том случае, если интервалaсодержит нулевое значение.
template <unsigned Digits10, expression_template_option ExpressionTemplates> bool subset(const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& a, const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& b);
истинно
только в том случае, еслиаявляется подмножествомb.
template <unsigned Digits10, expression_template_option ExpressionTemplates> bool proper_subset(const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& a, const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& b);
Возвращаетистинно
только в том случае, еслиaявляется правильным подмножествомb.
template <unsigned Digits10, expression_template_option ExpressionTemplates> bool empty(const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& a);
Возвращаетистинно
только в том случае, еслиявляется пустым интервалом, эквивалентнымверхнему[] нижнему]
.
template <unsigned Digits10, expression_template_option ExpressionTemplates> bool singleton(const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& a);
Возвращаетистинно
, еслиниже==выше
.
#include <boost/multiprecision/mpfi.hpp> #include <boost/math/special_functions/gamma.hpp> #include <iostream> int main() { using namespace boost::multiprecision; // Operations at variable precision and no numeric_limits support: mpfi_float a = 2; mpfi_float::default_precision(1000); std::cout << mpfi_float::default_precision() << std::endl; std::cout << sqrt(a) << std::endl; // print root-2 // Operations at fixed precision and full numeric_limits support: mpfi_float_100 b = 2; std::cout << std::numeric_limits<mpfi_float_100>::digits << std::endl; // We can use any C++ std lib function: std::cout << log(b) << std::endl; // print log(2) // Access the underlying data: mpfi_t r; mpfi_init(r); mpfi_set(r, b.backend().data()); // Construct some explicit intervals and perform set operations: mpfi_float_50 i1(1, 2), i2(1.5, 2.5); std::cout << intersect(i1, i2) << std::endl; std::cout << hull(i1, i2) << std::endl; std::cout << overlap(i1, i2) << std::endl; std::cout << subset(i1, i2) << std::endl; mpfi_clear(r); return 0; }
Статья mpfi_float раздела Chapter 1. Boost.Multiprecision Interval Number Types может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Interval Number Types ::
реклама |