
~9\c           @  s  d  Z  d d l m Z m Z d d l m Z i d d 6d d 6d d	 6d
 d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6Z i e d d 6e d d 6e d d 6e d	 d	 6e d d 6e d d 6e d d 6e d d 6e d d  6e d d 6e d d! 6e d d" 6e d d# 6e d d$ 6e d d% 6e d d& 6e d d' 6e d d( 6e d d) 6e d d* 6Z d+   Z d,   Z	 d-   Z
 d.   Z d/   Z d0   Z d1   Z i e
 d2 6e d 6e	 d3 6e d4 6e d5 6e d6 6e d7 6Z d8   Z d9   Z d: S(;   s>   A module providing information about the necessity of bracketsi(   t   print_functiont   division(   t   _coeff_isnegi   t   Lambdai
   t   Xori   t   Ori   t   Andi#   t
   Relationali(   t   Addi2   t   Muli<   t   PowiF   t   Funcid   t   Noti  t   Atomi$   t	   BitwiseOri&   t
   BitwiseAndt
   Equivalentt   Impliest   Subt   Functiont   NegativeInfinityt   MatAddt   MatPowt   TensAddt   TensMult   HadamardProductt   KroneckerProductt   Equalityt
   Unequalityc         C  s   t  |   r t d St d S(   NR   R	   (   R   t
   PRECEDENCE(   t   item(    (    s8   lib/python2.7/site-packages/sympy/printing/precedence.pyt   precedence_Mul;   s    c         C  s   |  j  d k  r t d St d S(   Ni    R   R	   (   t   pR   (   R   (    (    s8   lib/python2.7/site-packages/sympy/printing/precedence.pyt   precedence_RationalA   s    c         C  s   |  j  d k  r t d St d S(   Ni    R   R   (   R    R   (   R   (    (    s8   lib/python2.7/site-packages/sympy/printing/precedence.pyt   precedence_IntegerG   s    c         C  s   |  d k  r t  d St  d S(   Ni    R   R   (   R   (   R   (    (    s8   lib/python2.7/site-packages/sympy/printing/precedence.pyt   precedence_FloatM   s    c         C  sJ   |  j  r t d S|  j r- t |  j d   S|  j r> t d St d Sd  S(   NR   i   R	   R   (   t   is_generatorR   t	   is_groundt
   precedencet   coefft   is_term(   R   (    (    s8   lib/python2.7/site-packages/sympy/printing/precedence.pyt   precedence_PolyElementS   s    			c         C  s(   |  j  d k r t |  j  St d Sd  S(   Ni   R	   (   t   denomR)   t   numerR   (   R   (    (    s8   lib/python2.7/site-packages/sympy/printing/precedence.pyt   precedence_FracElement^   s    c         C  s   t  |  j d  S(   Ni    (   R&   t   args(   R   (    (    s8   lib/python2.7/site-packages/sympy/printing/precedence.pyt   precedence_UnevaluatedExpre   s    t   Integert   Rationalt   Floatt   PolyElementt   FracElementt   UnevaluatedExprc         C  s   t  |  d  r |  j Sy |  j j } Wn t k
 r> t d SXxE | D]= } | j } | t k ro t | |   S| t k rF t | SqF Wt d S(   s3   
    Returns the precedence of a given object.
    R&   R   (	   t   hasattrR&   t	   __class__t   __mro__t   AttributeErrorR   t   __name__t   PRECEDENCE_FUNCTIONSt   PRECEDENCE_VALUES(   R   t   mrot   it   n(    (    s8   lib/python2.7/site-packages/sympy/printing/precedence.pyR&   t   s    		c         C  s   d d l  m } m } m } m } m } d d l m } d d l m	 } t
 |  | | | | | | f  rq t d S|  j j d k r t d d St
 |  |  r t |  j d  St |   Sd S(   s   
    Returns the precedence of a given object according to the traditional rules
    of mathematics. This is the precedence for the LaTeX and pretty printer.
    i(   t   Integralt   Sumt   Productt   Limitt
   Derivative(   R4   (   t   TensorProductR	   t   Dott   Crosst   Gradientt
   Divergencet   Curlt	   Laplaciani   i    N(   RE   RF   RG   RH   RI   RJ   (   t   sympyR?   R@   RA   RB   RC   t   sympy.core.exprR4   t   sympy.tensor.functionsRD   t
   isinstanceR   R6   R9   t   precedence_traditionalR-   R&   (   R   R?   R@   RA   RB   RC   R4   RD   (    (    s8   lib/python2.7/site-packages/sympy/printing/precedence.pyRO      s    (!		N(   t   __doc__t
   __future__R    R   t   sympy.core.functionR   R   R;   R   R!   R"   R#   R)   R,   R.   R:   R&   RO   (    (    (    s8   lib/python2.7/site-packages/sympy/printing/precedence.pyt   <module>   sl   
							
	