У меня проблемы с использованием библиотеки 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
но не смогли составить пример. Я не за очень высокой точностью. Что я хочу, так это то, что добавление двух интервалов эквивалентно добавлению двух double
s.
Класс интервала ожидает округления и проверки политик. Измените ваш интервал typedef на следующий, и он должен скомпилироваться. Вам нужно будет прочитать документацию, чтобы точно понять, какие политики вам нужны в вашем случае.
typedef interval<double, policies<save_state<rounded_transc_std<double> >,
checking_base<double> > > Interval;
Других решений пока нет …