'Decide if the function should automatically evalf().
By default (in this implementation), this happens if (and only if) the
ARG is a floating point number.
This function is used by __new__.
Returns the precision to evalf to, or -1 if it shouldn\'t evalf.'

@classmethod
def _should_evalf(cls, arg):

    from sympy.core.symbol import Wild
    if arg.is_Float:
        return arg._prec
    if (not arg.is_Add):
        return (-1)
    (a, b) = (Wild('a'), Wild('b'))
    m = arg.match((a + (b * S.ImaginaryUnit)))
    if ((not m) or (not (m[a].is_Float or m[b].is_Float))):
        return (-1)
    l = [m[i]._prec for i in m if m[i].is_Float]
    l.append((-1))
    return max(l)
