doładowania :: multiprecision :: sqrt (1) wydaje się powrócić 0Dlaczego funkcja Boost :: multiprecision :: sqrt (1) zwraca 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;
}
wyjściowa:
i == 1
tt :: sqrt (I) == 0
się spodziewać, że sqrt (1) == 1.
Otrzymuję te same wyniki na coliru i na mojej lokalnej instalacji z gcc i Boost 1.62. Czy zdarza się to innym? Czy brakuje mi czegoś lub jest to błąd?
Eeerm, czego jeszcze można się spodziewać? –
Spodziewam się sqrt (1) == 1 – Chad
To wygląda na 100% jak błąd i bardzo kiepskie testy dla przypadków skrajnych. http://coliru.stacked-crooked.com/a/068a750da56b55d1 – stefan