U
    L?hq                     @   s  d Z ddddddddd	d
dddddZed ed ed ed ed ed ed ed ed ed ed ed ed ed ed e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d&d' Z	eeeeeee	d(Z
d)d* Ze Zed ed+< ed ed,< ed ed-< ed ed.< ed ed/< ed ed0< ed ed1< ed ed2< ed d ed3< ed d ed4< ed d ed5< ed d ed6< ed d ed7< ed d ed8< ed ed9< ed ed:< ed ed;< ed ed<< ed ed=< d>d? Zd@S )Az>A module providing information about the necessity of brackets   
         #   (   2   <   F   d   i  $   %   &   )LambdaXorOrAnd
RelationalAddMulPowFuncNotAtomZ	BitwiseOrZ
BitwiseXorZ
BitwiseAndr   r   r   r   r   r   r   r   r   )Z
Equivalentr   ZImpliesr   r   r   r   r   Subr   FunctionNegativeInfinityZMatAddZMatPowZMatrixSolveModZTensAddZTensMulZHadamardProductZHadamardPowerZKroneckerProductZEqualityZ
Unequalityc                 C   s   |   rtd S td S )Nr   r   )Zcould_extract_minus_sign
PRECEDENCEitem r    K/var/www/html/venv/lib/python3.8/site-packages/sympy/printing/precedence.pyprecedence_Mul=   s    r"   c                 C   s   | j dk rtd S td S )N    r   r   pr   r   r    r    r!   precedence_RationalC   s    
r&   c                 C   s   | j dk rtd S td S Nr#   r   r   r$   r   r    r    r!   precedence_IntegerI   s    
r(   c                 C   s   | dk rt d S t d S r'   )r   r   r    r    r!   precedence_FloatO   s    r)   c                 C   s<   | j rtd S | jr"t| dS | jr0td S td S 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 d S )Nr   r   )denomr+   Znumerr   r   r    r    r!   precedence_FracElement`   s    

r-   c                 C   s   t | jd d S )Nr#   g      ?)r*   argsr   r    r    r!   precedence_UnevaluatedExprg   s    r/   )Integerr   RationalFloatZPolyElementZFracElementUnevaluatedExprc                 C   sf   t | dr| jS t| ts^t|  D ]6}|j}|tkrHt| |   S |tkr&t|   S q&td S )zZReturns the precedence of a given object.

    This is the precedence for StrPrinter.
    r*   r   )	hasattrr*   
isinstancetypemro__name__PRECEDENCE_FUNCTIONSPRECEDENCE_VALUESr   )r   inr    r    r!   r*   v   s    

r*   IntegralZSumZProductZLimitZ
DerivativeZTensorProductZ	TransposeZAdjointZDotZCrossZGradientZ
DivergenceZCurlZ	LaplacianUnionZIntersectionZ
ComplementZSymmetricDifferenceZ
ProductSetc                 C   sD   ddl m} t| |r$t| jd S | jj}|tk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#   )r3   )	Zsympy.core.exprr3   r5   precedence_traditionalr.   	__class__r8   PRECEDENCE_TRADITIONALr*   )r   r3   r<   r    r    r!   r?      s    
r?   N)__doc__r   r:   r"   r&   r(   r)   r+   r-   r/   r9   r*   copyrA   r?   r    r    r    r!   <module>   s   #