2016-10-30 14 views
6

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?

+0

Eeerm, czego jeszcze można się spodziewać? –

+5

Spodziewam się sqrt (1) == 1 – Chad

+0

To wygląda na 100% jak błąd i bardzo kiepskie testy dla przypadków skrajnych. http://coliru.stacked-crooked.com/a/068a750da56b55d1 – stefan

Odpowiedz

5

Tak, to z pewnością błąd. Został zgłoszony do śledzenia błędów Boost 3 dni temu jako ticket #12559.

+0

Dzięki! Nie wiem, jak to przegapiłem w narzędziu do śledzenia błędów. – Chad

Powiązane problemy