Why does Boost::multiprecision::sqrt(1) return 0?
boost, boost-multiprecision, c++
Solution
Yes, this is definitely a bug. It was reported to the Boost bug tracker 3 days ago as ticket #12559.
Problem
Boost::multiprecision::sqrt(1) seems to 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; } ``` Output: i == 1 mp::sqrt(i) == 0 I expect that sqrt(1) == 1. I get the same results on coliru and on my local installation with gcc and Boost 1.62. Does this happen to others? Am I missing something or is this a bug?