我正在尝试使用boost boost/math/tools/fraction.hpp
来评估连续分数,但是我甚至无法使boost文档中提供的示例工作(提供的源代码示例无法编译)。
任何人都可以提供一个工作示例(例如,在boost文档中讨论的golden_ratio
示例会很棒)。关于这个特定主题的提升文档很少,或者至少对我来说不是一个相对C++
新手。提前谢谢了。
答案 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())
享受提升!