def _solve_as_rational(f, symbol, domain):
    ' solve rational functions'
    f = together(f, deep=True)
    (g, h) = fraction(f)
    if (not h.has(symbol)):
        return _solve_as_poly(g, symbol, domain)
    else:
        valid_solns = _solveset(g, symbol, domain)
        invalid_solns = _solveset(h, symbol, domain)
        return (valid_solns - invalid_solns)
solve rational functions
def _solve_as_rational(f, symbol, domain):
    ' '
    f = together(f, deep=True)
    (g, h) = fraction(f)
    if (not h.has(symbol)):
        return _solve_as_poly(g, symbol, domain)
    else:
        valid_solns = _solveset(g, symbol, domain)
        invalid_solns = _solveset(h, symbol, domain)
        return (valid_solns - invalid_solns)