
    \hR                     L    S r SSKJrJrJr  SSKJr  SSKJr  SSK	J
r
  S rS rg)	zROptimizations of the expression tree representation for better CSE
opportunities.
    )AddBasicMul)S)default_sort_key)preorder_traversalc                    U R                  [        5       Vs/ s H  oR                  5       (       d  M  UPM     nn0 n[        5       nU HR  nU* nUR                  (       a  UR                  U5        M*  [        R                  " [        R                  U/5      X1'   MT     U R                  U5      n [        U [        5      (       a  0 n[        U R                  [        5      [        S9 Hf  nX;   a  M
  X;   a  X1   Xa'   M  UR                  5       (       d  M.  [        R                  " [        R                  [        R                  U* /5      Xa'   Mh     U R                  U5      n U $ s  snf )zCReplace 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          O/var/www/auris/envauris/lib/python3.13/site-packages/sympy/simplify/cse_opts.pysub_prer   
   s    wws|D|!'A'A'CA|DDDUFR99JJqM..!--!45  	


4A !U*:;A{y'++--..!%%)CD < JJtH1 Es
   E&E&c           	         / n[        U 5       H  n[        U[        5      (       d  M  UR                  S   [        R
                  L d  M<  UR                  S   [        R                  L d  M^  UR                  U[        R                  " UR                  SS 5      * 45        M     U H  u  p#U R                  X#05      n M     U $ )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%dC  IIaLAEE!diilamm&Ctyy}(E'E FG & *JJ*+ * 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(   