c++ 使用提升/数学进行连续分数评估

  • 本文关键字:连续 评估 c++ c++ boost
  • 更新时间 :
  • 英文 :


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

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

以下截图对我有用:

#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())

享受提升!

最新更新