'Refine an isolating interval of a root to the given precision.
Examples
>>> from sympy import Poly
>>> from sympy.abc import x
>>> Poly(x**2 - 3, x).refine_root(1, 2, eps=1e-2)
(19/11, 26/15)'

def refine_root(f, s, t, eps=None, steps=None, fast=False, check_sqf=False):

    if (check_sqf and (not f.is_sqf)):
        raise PolynomialError('only    square-free    polynomials    supported')
    (s, t) = (QQ.convert(s), QQ.convert(t))
    if (eps is not None):
        eps = QQ.convert(eps)
        if (eps <= 0):
            raise ValueError("'eps'    must    be    a    positive    rational")
    if (steps is not None):
        steps = int(steps)
    elif (eps is None):
        steps = 1
    if hasattr(f.rep, 'refine_root'):
        (S, T) = f.rep.refine_root(s, t, eps=eps, steps=steps, fast=fast)
    else:
        raise OperationNotSupported(f, 'refine_root')
    return (QQ.to_sympy(S), QQ.to_sympy(T))
