为什么 Boost::multiprecision::sqrt(1) return 0?
Why does Boost::multiprecision::sqrt(1) return 0?
Boost::multiprecision::sqrt(1) 似乎 return 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::sqrt(i) == 0
我希望 sqrt(1) == 1。
我在 coliru 和本地安装的 gcc 和 Boost 1.62 上得到了相同的结果。这会发生在其他人身上吗?我是不是遗漏了什么或者这是一个错误?
是的,这绝对是一个错误。它在 3 天前被报告为 ticket #12559.
Boost::multiprecision::sqrt(1) 似乎 return 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::sqrt(i) == 0
我希望 sqrt(1) == 1。
我在 coliru 和本地安装的 gcc 和 Boost 1.62 上得到了相同的结果。这会发生在其他人身上吗?我是不是遗漏了什么或者这是一个错误?
是的,这绝对是一个错误。它在 3 天前被报告为 ticket #12559.