c ++使用boost / math进行连续分数评估

时间:2017-08-07 11:20:39

标签: c++ boost

我正在尝试使用boost boost/math/tools/fraction.hpp来评估连续分数,但是我甚至无法使boost文档中提供的示例工作(提供的源代码示例无法编译)。

任何人都可以提供一个工作示例(例如,在boost文档中讨论的golden_ratio示例会很棒)。关于这个特定主题的提升文档很少,或者至少对我来说不是一个相对C++新手。提前谢谢了。

1 个答案:

答案 0 :(得分:2)

以下代码段对我有用:

#include <boost/math/tools/fraction.hpp>
#include <iostream>

using namespace std;

template <class T> struct golden_ratio_fraction
{
    typedef T result_type;
    T operator()() { return 1.0; }
};

int main(int, char**)
{
    golden_ratio_fraction<double> frac;

    double res = boost::math::tools::continued_fraction_a(
        frac, std::numeric_limits<double>::epsilon());

    cout << "Res : " << res << endl;
    return 0;
}

他们写道,在增强示例中有一个错误 T operator() { return 1.0; }代替T operator()() { return 1.0; }

然后,重要的是要注意你必须实现对象“frac”。你不能写:

double res = boost::math::tools::continued_fraction_a(
            golden_ratio_fraction<double>(), std::numeric_limits<double>::epsilon())

享受提升!