def my_compare(a, b): main_var = s p1, p2, p3 = Wild("p1"), Wild("p2"), Wild("p3") r_a = a.match(p1 * s**p3) r_b = b.match(p1 * s**p3) if r_a is not None and r_b is not None: c = Basic.compare(r_a[p3], r_b[p3]) if c!=0: return c return Basic._compare_pretty(a,b)
def _compare_terms(self, a, b): """Compare two terms using data from Printer.analyze(). """ a_coeff, a_monom, a_ncpart, _ = a b_coeff, b_monom, b_ncpart, _ = b result = self.order(a_monom, b_monom) if not result: if not (a_ncpart or b_ncpart): result = cmp(a_coeff, b_coeff) else: result = Basic._compare_pretty(Mul(*a_ncpart), Mul(*b_ncpart)) if not result: result = cmp(a_coeff, b_coeff) if not self.reverse: return -result else: return result