Интервал повышения C ++ и стоимость

У меня проблемы с использованием библиотеки Interval от Boost

#include <boost/numeric/interval.hpp>

void test()
{
typedef boost::numeric::interval<double> Interval;

Interval i1(1.0, 2.0);

auto i2 = cos(i1);
}

Я получаю следующие ошибки компиляции:

transc.hpp(73): error C2039: 'cos_down' : is not a member of 'boost::numeric::interval_lib::rounded_math<double>'
transc.hpp(73): error C2039: 'cos_up' : is not a member of 'boost::numeric::interval_lib::rounded_math<double>'
transc.hpp(75): error C2039: 'cos_up' : is not a member of 'boost::numeric::interval_lib::rounded_math<double>'

Я пробовал несколько комбинаций interval_lib::policies но не смогли составить пример. Я не за очень высокой точностью. Что я хочу, так это то, что добавление двух интервалов эквивалентно добавлению двух doubles.

3

Решение

Класс интервала ожидает округления и проверки политик. Измените ваш интервал typedef на следующий, и он должен скомпилироваться. Вам нужно будет прочитать документацию, чтобы точно понять, какие политики вам нужны в вашем случае.

typedef interval<double, policies<save_state<rounded_transc_std<double> >,
checking_base<double> > > Interval;
4

Другие решения

Других решений пока нет …