为什么Boost :: multiprecision :: sqrt(1)返回0?

Cha*_*had 6 c++ boost boost-multiprecision

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;
}
Run Code Online (Sandbox Code Playgroud)

输出:
i == 1
mp :: sqrt(i)== 0

我希望sqrt(1)== 1.

我在coliru和我的本地安装上使用gcc和Boost 1.62 获得了相同的结果.这会发生在其他人身上吗?我错过了什么或这是一个错误吗?

kir*_*sos 5

是的,这绝对是个错误.3天前它被报告给Boost bug跟踪器作为票#12559.