Почему Boost::multiprecision::sqrt(1) возвращает 0?

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. Это случается с другими? Я что-то упустил или это ошибка?

1 ответ

Решение

Да, это определенно ошибка. Об этом 3 дня назад сообщили в баг-трекер Boost как билет № 12559.

Другие вопросы по тегам