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たが、例をコンパイルできませんでした。私は非常に高い精度を求めていません。私が望むのは、基本的に、2 つの間隔を追加することは、2 つdoubleの s を追加することと同じであるということです。

4

1 に答える 1

4

interval クラスでは、丸めとチェックのポリシーが必要です。interval typedef を次のように変更すると、コンパイルされるはずです。あなたの場合に必要なポリシーを正確に理解するには、ドキュメントを一読する必要があります。

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