(e)
return e
Replace y - x with -(x - y) if -1 can be extracted from y - x.
Replace y - x with -(x - y) if -1 can be extracted from y - x.
Replace y - x with - ( x - y ) if - 1 can be extracted from y - x .
def sub_pre(e):
    """ Replace y - x with -(x - y) if -1 can be extracted from y - x.
    """
    reps = [a for a in e.atoms(Add) if a.could_extract_minus_sign()]

    # make it canonical
    reps.sort(key=default_sort_key)

    e = e.subs([(a, Mul._from_args([S.NegativeOne, -a])) for a in reps])
    # repeat again for persisting Adds but mark these with a leading 1, -1
    # e.g. y - x -> 1*-1*(x - y)
    if isinstance(e, Basic):
        negs = {}
        for a in sorted(e.atoms(Add), key=default_sort_key):
            if a in reps or a.could_extract_minus_sign():
                negs[a] = Mul._from_args([S.One, S.NegativeOne, -a])
        e = e.xreplace(negs)
    return e
def sub_pre ( e ) : reps = [ a for a in e . atoms ( Add ) if a . could_extract_minus_sign ( ) ] # make it canonical reps . sort ( key = default_sort_key ) e = e . subs ( [ ( a , Mul . _from_args ( [ S . NegativeOne , - a ] ) ) for a in reps ] ) # repeat again for persisting Adds but mark these with a leading 1, -1 # e.g. y - x -> 1*-1*(x - y) if isinstance ( e , Basic ) : negs = { } for a in sorted ( e . atoms ( Add ) , key = default_sort_key ) : if a in reps or a . could_extract_minus_sign ( ) : negs [ a ] = Mul . _from_args ( [ S . One , S . NegativeOne , - a ] ) e = e . xreplace ( negs ) return e