Chad Chad - 1 month ago 12
C++ Question

Why does Boost::multiprecision::sqrt(1) return 0?

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?

Answer

Yes, this is definitely a bug. It was reported to the Boost bug tracker 3 days ago as ticket #12559.

Comments