
    wgR                     L    d Z ddlmZmZmZ ddlmZ ddlmZ ddl	m
Z
 d Zd Zy)	zS Optimizations of the expression tree representation for better CSE
opportunities.
    )AddBasicMul)S)default_sort_key)preorder_traversalc                    | j                  t              D cg c]  }|j                         s| }}i }t               }|D ]K  }| }|j                  r|j                  |       $t        j                  t        j                  |g      ||<   M | j                  |      } t        | t              ri }t        | j                  t              t              D ]]  }||v r||v r	||   ||<   |j                         s&t        j                  t        j                  t        j                  | g      ||<   _ | j                  |      } | S c c}w )zD Replace y - x with -(x - y) if -1 can be extracted from y - x.
    )key)atomsr   could_extract_minus_signsetis_Muladdr   
_from_argsr   NegativeOnexreplace
isinstancer   sortedr   One)eaaddsrepsignorenanegss          \/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/sympy/simplify/cse_opts.pysub_prer   
   s&    wws|D!q'A'A'CADDDDUF 6R99JJqM..!--!45Q6 	


4A !U*:; 	EAF{Dyq'Q++-..!%%)CDQ	E JJtH1 Es
   E
E
c           	      n   g }t        |       D ]  }t        |t              s|j                  d   t        j
                  u s4|j                  d   t        j                  u sT|j                  |t        j                  |j                  dd        f        |D ]  \  }}| j                  ||i      }  | S )z Replace 1*-1*x with -x.
    r         N)
r   r   r   argsr   r   r   appendr   r   )r   replacementsnodereplacements       r   sub_postr'   )   s     L"1% HdC IIaLAEE!diilamm&Ctyy}(E'E FGH * ,kJJk*+, H    N)__doc__
sympy.corer   r   r   sympy.core.singletonr   sympy.core.sortingr   sympy.core.traversalr   r   r'    r(   r   <module>r/      s%    ' & " / 3>r(   