我試圖使用升壓boost/math/tools/fraction.hpp
評價一個連分數,但是我甚至不能使升壓文檔工作(提供的源示例不編譯)提供的例子++續分數評價。c。使用升壓/數學
任何人都可以提供一個工作示例(例如升壓文檔中討論的golden_ratio
例子將是巨大的)。關於這個特定主題的推廣文檔很少,或者至少對我來說不清楚,一個相對的C++
新手。提前謝謝了。
我試圖使用升壓boost/math/tools/fraction.hpp
評價一個連分數,但是我甚至不能使升壓文檔工作(提供的源示例不編譯)提供的例子++續分數評價。c。使用升壓/數學
任何人都可以提供一個工作示例(例如升壓文檔中討論的golden_ratio
例子將是巨大的)。關於這個特定主題的推廣文檔很少,或者至少對我來說不清楚,一個相對的C++
新手。提前謝謝了。
以下snippest對我的作品:
#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; }
。
然後,要注意的是,你必須instanciat對象「壓裂」是很重要的。你不能寫:
double res = boost::math::tools::continued_fraction_a(
golden_ratio_fraction<double>(), std::numeric_limits<double>::epsilon())
享受提振!
非常感謝!你的片段也適用於我。我認爲很明顯我是一個新手,我沒有注意到這個例子中的錯誤。非常感謝您的快速回復。 –
作爲一個後續行動,可以評估係數爲std的連續分數:: complex
在boost文檔中,他們表示這適用於「算術類型或算術類型對」。當我們看到他們寫的實現時會這樣想:「while(fabs(delta - 1)> factor)」。所以這種類型的行不適用於std :: complex類型。 –
究竟是什麼樣的例子,你試圖編譯和錯誤信息是什麼? – user463035818
謝謝。這是第一個沒有編譯的例子,但Adrien提供的答案解決了這個問題,現在問題已經解決了。 –