id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 12559,sqrt for cpp_int_backend behaves incorrect for small argument values,Rüdiger Brünner ,John Maddock,"The sqrt function for multiprecision integers does not work for small values. Using this code: {{{ checked_int128_t int1; for (int i = 10; i >= 0; i--) { int1 = i; try { int1 = sqrt(int1); std::cout << ""sqrt("" << i << "") = "" << int1 << std::endl; } catch (std::exception& ex) { std::cout << ""sqrt("" << i << "") -> "" << typeid(ex).name() << "": "" << ex.what() << std::endl; } } }}} I get the following output: {{{ sqrt(10) = 3 sqrt(9) = 3 sqrt(8) = 2 sqrt(7) = 2 sqrt(6) = 2 sqrt(5) = 2 sqrt(4) = 2 sqrt(3) -> class boost::exception_detail::clone_impl >: Unable to allocate sufficient storage for the value of the result: value overflows the maximum allowable magnitude. sqrt(2) -> class boost::exception_detail::clone_impl >: Unable to allocate sufficient storage for the value of the result: value overflows the maximum allowable magnitude. sqrt(1) = 0 sqrt(0) = 0 }}} While sqrt(3) and sqrt(2) are raising an exception, sqrt(1) gives a wrong result.",Bugs,closed,To Be Determined,multiprecision,Boost 1.62.0,Problem,fixed,multiprecision integer sqrt,