You can loop on increasing precision using things like FLINT's ball arithmetic [0], which maintain an absolute error bound alongside the value. GNU MPFR uses a similar strategy internally, increasing the precision by a factor of 1.5 each iteration, though it also special-cases a few functions known to have problematic inputs.
But I don't think the zero-testing problem will ever be solved to everyone's satisfaction. Even CAS software like Mathematica falls back to a fallible heuristic and spits out a warning if it's unsure, and it only takes a few tricky exponentials to leave the range of what it recognizes.
But I don't think the zero-testing problem will ever be solved to everyone's satisfaction. Even CAS software like Mathematica falls back to a fallible heuristic and spits out a warning if it's unsure, and it only takes a few tricky exponentials to leave the range of what it recognizes.
[0] https://flintlib.org/doc/using.html