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;
}
Выход:
я == 1
mp :: sqrt (i) == 0
Я ожидаю, что sqrt (1) == 1.
Я получаю те же результаты на coliru и на моей локальной установке с gcc и Boost 1.62. Это случается с другими? Я что-то упустил или это ошибка?
Да, это определенно ошибка. Это было сообщено в Boost tracker 3 дня назад как билет № 12559.
Других решений пока нет …