4

我在使用 Boost 的 Interval 库时遇到问题

#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。

4

1 回答 1

4

间隔类需要舍入和检查策略。将您的区间类型定义更改为以下内容,它应该可以编译。您需要通读文档以准确了解您需要哪些策略。

typedef interval<double, policies<save_state<rounded_transc_std<double> >,
                    checking_base<double> > > Interval;
于 2013-04-07T10:59:31.257 回答