def _solve_abs(f, symbol, domain):
    ' Helper function to solve equation involving absolute value function '
    if (not domain.is_subset(S.Reals)):
        raise ValueError(filldedent('\n            Absolute values cannot be inverted in the\n            complex domain.'))
    (p, q, r) = (Wild('p'), Wild('q'), Wild('r'))
    pattern_match = (f.match(((p * Abs(q)) + r)) or {})
    if (not pattern_match.get(p, S.Zero).is_zero):
        (f_p, f_q, f_r) = (pattern_match[p], pattern_match[q], pattern_match[r])
        q_pos_cond = solve_univariate_inequality((f_q >= 0), symbol, relational=False)
        q_neg_cond = solve_univariate_inequality((f_q < 0), symbol, relational=False)
        sols_q_pos = solveset_real(((f_p * f_q) + f_r), symbol).intersect(q_pos_cond)
        sols_q_neg = solveset_real(((f_p * (- f_q)) + f_r), symbol).intersect(q_neg_cond)
        return Union(sols_q_pos, sols_q_neg)
    else:
        return ConditionSet(symbol, Eq(f, 0), domain)
Helper function to solve equation involving absolute value function
def _solve_abs(f, symbol, domain):
    '  '
    if (not domain.is_subset(S.Reals)):
        raise ValueError(filldedent('\n            Absolute values cannot be inverted in the\n            complex domain.'))
    (p, q, r) = (Wild('p'), Wild('q'), Wild('r'))
    pattern_match = (f.match(((p * Abs(q)) + r)) or {})
    if (not pattern_match.get(p, S.Zero).is_zero):
        (f_p, f_q, f_r) = (pattern_match[p], pattern_match[q], pattern_match[r])
        q_pos_cond = solve_univariate_inequality((f_q >= 0), symbol, relational=False)
        q_neg_cond = solve_univariate_inequality((f_q < 0), symbol, relational=False)
        sols_q_pos = solveset_real(((f_p * f_q) + f_r), symbol).intersect(q_pos_cond)
        sols_q_neg = solveset_real(((f_p * (- f_q)) + f_r), symbol).intersect(q_neg_cond)
        return Union(sols_q_pos, sols_q_neg)
    else:
        return ConditionSet(symbol, Eq(f, 0), domain)