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 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 mistake?

+6
source share
1 answer

Yes, this is definitely a mistake. It was sent to Boost Search Tracker 3 days ago as ticket # 12559 .

+5
source

Source: https://habr.com/ru/post/1011866/


All Articles