o
    3Ih                     @   sn  d Z ddddddddd	d
dddddZi ded ded ded ded ded ded ded ded ded ded ded ded ded ded ded  d!ed  d"ed ed  ed  ed ed  ed  ed  d#Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Z	eeeeeee	d2Z
d3d4 Ze Zed  ed5< ed  ed6< ed  ed7< ed  ed8< ed  ed9< ed  ed:< ed ed;< ed ed<< ed  d ed=< ed  d ed>< ed  d ed?< ed  d ed@< ed  d edA< ed  d edB< ed edC< ed edD< ed edE< ed edF< ed edG< ed= edH< dIdJ ZdKS )Lz>A module providing information about the necessity of brackets   
         #   (   2   <   F   d   i  $   %   &   )LambdaXorOrAnd
RelationalAddMulPowFuncNotAtom	BitwiseOr
BitwiseXor
BitwiseAnd
Equivalentr   Impliesr   r   r   r   r   Subr   Functionr   NegativeInfinityMatAddMatPowMatrixSolver   ModTensAdd)TensMulHadamardProductHadamardPowerKroneckerProductEquality
Unequalityc                    sD   ddl m  t fdd| jD rtd S |  rtd S td S )N    r   c                 3   s2    | ]}t |d ot| o|jtd k V  qdS )
precedencer   N)hasattr
isinstancer.   
PRECEDENCE).0argr-    Y/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/sympy/printing/precedence.py	<genexpr>?   s    
z!precedence_Mul.<locals>.<genexpr>r   r   )sympy.core.functionr   anyargsr1   could_extract_minus_signitemr4   r-   r5   precedence_Mul=   s   r=   c                 C      | j dk r	td S td S )Nr,   r   r   pr1   r;   r4   r4   r5   precedence_RationalH      
rA   c                 C   r>   Nr,   r   r   r?   r;   r4   r4   r5   precedence_IntegerN   rB   rD   c                 C   s   | dk rt d S t d S rC   )r1   r;   r4   r4   r5   precedence_FloatT   s   rE   c                 C   s8   | j rtd S | jrt| dS | jrtd S td S )Nr   r   r   r   )is_generatorr1   	is_groundr.   coeffis_termr;   r4   r4   r5   precedence_PolyElementZ   s   rJ   c                 C   s   | j dkr
t| jS td S )Nr   r   )denomrJ   numerr1   r;   r4   r4   r5   precedence_FracElemente   s   

rM   c                 C   s   t | jd d S )Nr,   g      ?)r.   r9   r;   r4   r4   r5   precedence_UnevaluatedExprl   s   rN   )Integerr   RationalFloatPolyElementFracElementUnevaluatedExprc                 C   sf   t | dr| jS t| ts/t|  D ]}|j}|tv r$t| |   S |tv r.t|   S qtd S )zZReturns the precedence of a given object.

    This is the precedence for StrPrinter.
    r.   r   )	r/   r.   r0   typemro__name__PRECEDENCE_FUNCTIONSPRECEDENCE_VALUESr1   )r<   inr4   r4   r5   r.   {   s   

r.   IntegralSumProductLimit
DerivativeTensorProduct	TransposeAdjointDotCrossGradient
DivergenceCurl	LaplacianUnionIntersection
ComplementSymmetricDifference
ProductSet
DotProductc                 C   sD   ddl m} t| |rt| jd S | jj}|tv rt| S t| S )zReturns the precedence of a given object according to the
    traditional rules of mathematics.

    This is the precedence for the LaTeX and pretty printer.
    r,   )rT   )	sympy.core.exprrT   r0   precedence_traditionalr9   	__class__rW   PRECEDENCE_TRADITIONALr.   )r<   rT   r[   r4   r4   r5   rq      s   
rq   N)__doc__r1   rY   r=   rA   rD   rE   rJ   rM   rN   rX   r.   copyrs   rq   r4   r4   r4   r5   <module>   s    	
#