B
    e‹d”  ã               @   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   úf/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/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   r    Úprecedence_IntegerI   s    
r%   c             C   s   | dk rt d S t d S )Nr"   r   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_term)r   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'   Úargs)r   r   r   r    Úprecedence_UnevaluatedExprg   s    r,   )ÚIntegerr   ÚRationalÚFloatZPolyElementZFracElementÚUnevaluatedExprc             C   sv   t | dƒr| jS y| jj}W n tk
r4   td S X x6|D ].}|j}|tkrZt| | ƒS |tkr<t| S q<W 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'   Ú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 )z¢Returns the precedence of a given object according to the
    traditional rules of mathematics.

    This is the precedence for the LaTeX and pretty printer.
    r"   )r0   )	Zsympy.core.exprr0   Ú
isinstanceÚprecedence_traditionalr+   r2   r5   ÚPRECEDENCE_TRADITIONALr'   )r   r0   r:   r   r   r    r>       s    
r>   N)Ú__doc__r   r7   r!   r$   r%   r&   r(   r*   r,   r6   r'   Úcopyr?   r>   r   r   r   r    Ú<module>   s’   