'Return True if self can be computed to a real number
(or already is a real number) with precision, else False.
Examples
>>> from sympy import exp_polar, pi, I
>>> (I*exp_polar(I*pi/2)).is_comparable
True
>>> (I*exp_polar(I*pi*2)).is_comparable
False
A False result does not mean that `self` cannot be rewritten
into a form that would be comparable. For example, the
difference computed below is zero but without simplification
it does not evaluate to a zero with precision:
>>> e = 2**pi*(1 + 2**pi)
>>> dif = e - e.expand()
>>> dif.is_comparable
False
>>> dif.n(2)._prec
1'

@property
def is_comparable(self):

    is_real = self.is_real
    if (is_real is False):
        return False
    is_number = self.is_number
    if (is_number is False):
        return False
    (n, i) = [(p.evalf(2) if (not p.is_Number) else p) for p in self.as_real_imag()]
    if ((not i.is_Number) or (not n.is_Number)):
        return False
    if i:
        return False
    else:
        return (n._prec != 1)
