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