2016-10-30 31 views
6

Boost :: çokduyarlıklı :: sqrt (1) 0Boost :: multiprecision :: sqrt (1) neden 0 döndürüyor? <br> i == 1 <br> mp :: sqrt (i) == 0</p> <p>bunu bekliyoruz:

#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; 
} 

Çıktı dönmek gibi görünüyor sqrt (1) == 1.

Aynı sonuçları coliru ve yerel kurulumumda gcc ve Boost 1.62 ile elde ediyorum. Bu başkalarına mı geliyor? Bir şeyi mi özledim yoksa bu bir böcek mi?

+0

Eeerm, başka ne bekliyorsunuz? –

+5

Sence (1) == 1 – Chad

+0

Bu bir hata gibi% 100 gibi görünüyor ve kenar durumlarda çok zayıf testler. http://coliru.stacked-crooked.com/a/068a750da56b55d1 – stefan

cevap

5

Evet, bu kesinlikle bir hatadır. 3 gün önce Boost böcek izleyicisine ticket #12559 olarak rapor edildi.

+0

Teşekkürler! Hata izleyicide bunu nasıl özledim bilmiyorum. – Chad

İlgili konular