2016-10-30 235 views
6

的boost ::多倍::開方(1)似乎返回0爲什麼Boost :: multiprecision :: sqrt(1)返回0?

#include <boost/multiprecision/cpp_int.hpp> 
#include <boost/multiprecision/number.hpp> 
#include <iostream> 

using std::cout; 
using std::endl; 

int main() { 
    namespace mp = boost::multiprecision; 
    mp::cpp_int i(1); 
    cout << "i == " << i << endl; 
    cout << "mp::sqrt(i) == " << mp::sqrt(i) << endl; 
} 

輸出:
我== 1
MP ::開方(I)== 0

我期待sqrt(1)== 1.

我在coliru和我的本地安裝中使用gcc和Boost 1.62獲得了相同的結果。這是否發生在別人身上?我錯過了什麼或者這是一個錯誤?

+0

Eeerm,你還期望什麼? –

+5

我希望sqrt(1)== 1 – Chad

+0

這看起來像一個錯誤100%,對邊緣案例的測試非常差。 http://coliru.stacked-crooked.com/a/068a750da56b55d1 – stefan

回答

5

是的,這絕對是一個錯誤。 3天前向Boost bug跟蹤器報告爲ticket #12559

+0

謝謝!不知道我在錯誤跟蹤器中錯過了這些。 – Chad

相關問題