§
    PŠtjR  ã                   óN   — 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dS )	zS Optimizations of the expression tree representation for better CSE
opportunities.
é    )ÚAddÚBasicÚMul)ÚS)Údefault_sort_key)Úpreorder_traversalc                 ó’  — d„ |                       t          ¦  «        D ¦   «         }i }t          ¦   «         }|D ]E}| }|j        r|                     |¦  «         Œ"t          j        t          j        |g¦  «        ||<   ŒF|  	                    |¦  «        } t          | t          ¦  «        r i }t          |                       t          ¦  «        t          ¬¦  «        D ]Z}||v rŒ||v r||         ||<   Œ|                     ¦   «         r/t          j        t          j        t          j        | g¦  «        ||<   Œ[|  	                    |¦  «        } | S )zD Replace y - x with -(x - y) if -1 can be extracted from y - x.
    c                 ó:   — g | ]}|                      ¦   «         ¯|‘ŒS © )Úcould_extract_minus_sign)Ú.0Úas     úU/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/simplify/cse_opts.pyú
<listcomp>zsub_pre.<locals>.<listcomp>   s)   € ÐDÐDÐD�! q×'AÒ'AÑ'CÔ'CÐDˆAÐDÐDÐDó    )Úkey)Úatomsr   ÚsetÚis_MulÚaddr   Ú
_from_argsr   ÚNegativeOneÚxreplaceÚ
isinstancer   Úsortedr   r   ÚOne)ÚeÚaddsÚrepsÚignorer   ÚnaÚnegss          r   Úsub_prer#   
   sA  € ð EÐD�q—w’w�s‘|”|ÐDÑDÔD€DØ€DÝ‰UŒU€FØð 6ð 6ˆØˆRˆØŒ9ð 	Ø�JŠJ�q‰MŒMˆMØÝ”.¥!¤-°Ð!4Ñ5Ô5ˆˆQ‰ˆà	�
Š
�4ÑÔ€Aõ �!•UÑÔð 	ØˆÝ˜Ÿš¥™œÕ*:Ð;Ñ;Ô;ð 	Eð 	EˆAØ�Fˆ{ˆ{ØØ�DˆyˆyØ˜qœ'��Q‘�Ø×+Ò+Ñ-Ô-ð EÝœ.­!¬%µ´ÀÀÐ)CÑDÔD��Q‘øØ�JŠJ�tÑÔˆØ€Hr   c           	      óh  — g }t          | ¦  «        D ]€}t          |t          ¦  «        ri|j        d         t          j        u rP|j        d         t          j        u r7|                     |t          j        |j        dd…         ¦  «         f¦  «         Œ�|D ]\  }}|  	                    ||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ð HˆÝ�d�CÑ Ô ð 	HØŒI�aŒL�AœEÐ!Ð! d¤i°¤lµa´mÐ&CÐ&CØ×Ò ­¬°t´yÀÀÀ´}Ñ(EÔ(EÐ'EÐ FÑGÔGÐGøØ)ð ,ð ,ÑˆˆkØ�JŠJ˜˜kÐ*Ñ+Ô+ˆˆà€Hr   N)Ú__doc__Ú
sympy.corer   r   r   Úsympy.core.singletonr   Úsympy.core.sortingr   Úsympy.core.traversalr   r#   r,   r   r   r   ú<module>r2      s�   ððð ð 'Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ø "Ð "Ð "Ð "Ð "Ð "Ø /Ð /Ð /Ð /Ð /Ð /Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð>ð ð ð ð r   