o
    8Va                     @   sh  d Z ddlm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" d%Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Z	d0d1 Z
d2d3 Zeeeee	e
ed4Zd5d6 Ze Z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 ed=< e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" d edC< ed" d edD< ed edE< ed edF< ed edG< ed edH< ed edI< dJdK ZdLS )Mz>A module providing information about the necessity of brackets    )_coeff_isneg   
         #   (   2   <   F   d   i  $   %   &   )ZLambdaXorOrAnd
RelationalAddMulPowFuncNotAtomZ	BitwiseOrZ
BitwiseXorZ
BitwiseAndZ
Equivalentr   ZImpliesr   r   r   r   r   ZSubr   ZFunctionr   ZNegativeInfinityZMatAddZMatPowZMatrixSolver   ZTensAddZTensMul)ZHadamardProductZHadamardPowerZKroneckerProductZEqualityZ
Unequalityc                 C   s   t | rtd S td S )Nr   r   )r   
PRECEDENCEitem r   ;/usr/lib/python3/dist-packages/sympy/printing/precedence.pyprecedence_Mul=      r   c                 C      | j dk r	td S td S )Nr   r   r   pr   r   r   r   r   precedence_RationalC      
r$   c                 C   r!   Nr   r   r   r"   r   r   r   r   precedence_IntegerI   r%   r'   c                 C   s   | dk rt d S t d S r&   )r   r   r   r   r   precedence_FloatO   r    r(   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   )Zis_generatorr   Z	is_ground
precedenceZcoeffZis_termr   r   r   r   precedence_PolyElementU   s   r*   c                 C   s   | j dkr
t| jS td S )Nr   r   )Zdenomr*   Znumerr   r   r   r   r   precedence_FracElement`   s   

r+   c                 C   s   t | jd S )Nr   )r)   argsr   r   r   r   precedence_UnevaluatedExprg   s   r-   )ZIntegerr   ZRationalZFloatZPolyElementZFracElementUnevaluatedExprc                 C   s|   t | dr| jS z| jj}W n ty   td  Y S w |D ]}|j}|tv r/t| |   S |tv r9t|   S qtd S )zZReturns the precedence of a given object.

    This is the precedence for StrPrinter.
    r)   r   )	hasattrr)   	__class____mro__AttributeErrorr   __name__PRECEDENCE_FUNCTIONSPRECEDENCE_VALUES)r   mroinr   r   r   r)   v   s   
r)   ZIntegralZSumZProductZLimitZ
DerivativeZTensorProductZ	TransposeZAdjointZDotZCrossZGradientZ
DivergenceZCurlZ	LaplacianZUnionZIntersectionZ
ComplementZSymmetricDifferenceZ
ProductSetc                 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   )r.   )	Zsympy.core.exprr.   
isinstanceprecedence_traditionalr,   r0   r3   PRECEDENCE_TRADITIONALr)   )r   r.   r8   r   r   r   r:      s   
r:   N)__doc__Zsympy.core.functionr   r   r5   r   r$   r'   r(   r*   r+   r-   r4   r)   copyr;   r:   r   r   r   r   <module>   s    	
"