This bug has been around since Math-BigInt-1.87.
The Math::BigInt::Calc method _root() sometimes gives incorrect result. The output should always be exact or truncated, i.e., rounded downwards, but when the exact result is close to an integer, _root() sometimes rounds upwards rather than downwards. Here are some cases that fails.
Math::BigInt::Calc->_root(999999999, 9) gives 10, but should give 9
Math::BigInt::Calc->_root(16777215, 24) gives 2, but should give 1
Math::BigInt::Calc->_root(33554431, 25) gives 2, but should give 1
Math::BigInt::Calc->_root(67108863, 26) gives 2, but should give 1
Math::BigInt::Calc->_root(134217727, 27) gives 2, but should give 1
Math::BigInt::Calc->_root(268435455, 28) gives 2, but should give 1
Math::BigInt::Calc->_root(536870911, 29) gives 2, but should give 1