
~9\c        
   @  s  d  d l  m Z m Z d  d l Z d  d l m Z d  d l m Z m Z d  d l	 m
 Z
 d  d l m Z d  d l m Z d  d l m Z d  d	 l m Z d  d
 l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z m Z m Z d  d l m  Z  d  d l! m" Z" d  d l# m$ Z$ d  d l% m& Z& d  d l' m( Z( m) Z) d  d l* m+ Z+ m, Z, m- Z- m. Z. m/ Z/ m0 Z0 m1 Z1 m2 Z2 m3 Z3 m4 Z4 m5 Z5 m6 Z6 e2 Z7 e5 Z8 d e  f d     YZ9 d   Z: e; e< e< d e< e; e; d d d 	 Z= e= Z> d   Z? d S(   i(   t   print_functiont   divisionN(   t   S(   t   ranget   string_types(   t   Tuple(   t   _coeff_isneg(   t   Mul(   t   Rational(   t   Pow(   t   Equality(   t   Symbol(   t   SympifyError(   t   requires_partial(   t
   PRECEDENCEt
   precedencet   precedence_traditional(   t   Printer(   t   sstr(   t   default_sort_key(   t   has_variety(   t
   prettyFormt
   stringPict(   t   xstrt   hobjt   vobjt   xobjt   xsymt   pretty_symbolt   pretty_atomt   pretty_use_unicodet   greek_unicodet   Ut   pretty_try_use_unicodet	   annotatedt   PrettyPrinterc           B  sy  e  Z d  Z d Z i	 d d 6d d 6d d 6e d 6d d 6e d 6e d	 6d
 d 6d d 6Z d d  Z e d    Z	 d   Z
 d   Z d   Z d   Z e d  Z e Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z e Z e Z e Z e Z e Z e Z e Z  d   Z! d   Z" d    Z# d!   Z$ d"   Z% d#   Z& d$   Z' e d%  Z( d&   Z) d'   Z* d(   Z+ d)   Z, d*   Z- d d+  Z. d d,  Z/ d-   Z0 d.   Z1 e1 Z2 d/   Z3 d0   Z4 d1   Z5 d2   Z6 d3   Z7 d4   Z8 d5   Z9 d6   Z: d7   Z; d8   Z< d9   Z= e= Z> e= Z? d:   Z@ d;   ZA d<   ZB d=   ZC d>   ZD d?   ZE d@   ZF dA   ZG dB   ZH dC   ZI dD   ZJ dE   ZK dF   ZL dG   ZM dH   ZN dI   ZO dJ   ZP eP ZQ eP ZR eP ZS eP ZT i  dK  ZU dL   ZV dM   ZW dN   ZX dO   ZY dP   ZZ dQ   Z[ dR   Z\ dS   Z] dT   Z^ dU   Z_ dV   Z` dW   Za dX   Zb e d dY  Zc e dZ    Zd d[   Ze d\   Zf d]   Zg d^   Zh d_   Zi d`   Zj da   Zk db   Zl dc   Zm dd   Zn de   Zo df   Zp dg   Zq dh   Zr di   Zs dj   Zt dk   Zu dl   Zv dm   Zw dn   Zx d do  Zy dp   Zz dq   Z{ dr   Z| ds   Z} dt   Z~ du   Z dv   Z dw   Z dx   Z dy   Z dz   Z d{   Z d|   Z d}   Z d~   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z e Z e Z e Z d d d d   d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z e Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   s?   Printer, which converts an expression into 2D ASCII-art figure.t   _prettyt   ordert   autot	   full_prect   use_unicodet	   wrap_linet   num_columnst   use_unicode_sqrt_chart   root_notationt   plaint   mat_symbol_stylet   it   imaginary_unitc         C  s   t  j |  |  t |  j d t  sE t d j |  j d    n2 |  j d d k rw t d j |  j d    n  d   |  _ d  S(   NR0   s&   'imaginary_unit' must a string, not {}R/   t   js4   'imaginary_unit' must be either 'i' or 'j', not '{}'c         S  s   t  t |    S(   N(   R   R   (   t   x(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   <lambda>7   t    (   R/   R1   (	   R   t   __init__t
   isinstancet	   _settingsR   t	   TypeErrort   formatt
   ValueErrort   emptyPrinter(   t   selft   settings(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyR5   0   s    c         C  s   |  j  d r t St   Sd  S(   NR(   (   R7   t   TrueR   (   R<   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _use_unicode9   s    c         C  s   |  j  |  j |  j   S(   N(   t   _printt   renderR7   (   R<   t   expr(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   doprint@   s    c         C  s   | S(   N(    (   R<   t   e(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_stringPictD   s    c         C  s
   t  |  S(   N(   R   (   R<   RD   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_basestringG   s    c         C  s7   t  |  j | j  j     } t  | j d    } | S(   Nt   atan2(   R   t
   _print_seqt   argst   parenst   left(   R<   RD   t   pform(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_atan2J   s    c         C  s   t  | j |  } t |  S(   N(   R   t   nameR   (   R<   RD   t	   bold_namet   symb(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_SymbolO   s    c         C  s   |  j  | |  j d d k  S(   NR.   t   bold(   RQ   R7   (   R<   RD   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_MatrixSymbolS   s    c         C  sA   |  j  d } | d k r+ |  j d k } n  t t | d |  S(   NR'   R&   i   (   R7   t   _print_levelR   R   (   R<   RD   R'   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_FloatV   s    c         C  s   | j  } | j } |  j |  } t | j d    } t | j d    } t | j |  j t d      } t | j d    } t | j |  j |     } t | j d    } | S(   Nt   (t   )s   MULTIPLICATION SIGN(   t   _expr1t   _expr2R@   R   RK   t   rightR    (   R<   RD   t   vec1t   vec2RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Cross^   s    		$c         C  s   | j  } |  j |  } t | j d    } t | j d    } t | j |  j t d      } t | j |  j t d      } | S(   NRV   RW   s   MULTIPLICATION SIGNt   NABLA(   t   _exprR@   R   RK   RZ   R    (   R<   RD   t   vecRL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Curlj   s    	$$c         C  s   | j  } |  j |  } t | j d    } t | j d    } t | j |  j t d      } t | j |  j t d      } | S(   NRV   RW   s   DOT OPERATORR^   (   R_   R@   R   RK   RZ   R    (   R<   RD   R`   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Divergences   s    	$$c         C  s   | j  } | j } |  j |  } t | j d    } t | j d    } t | j |  j t d      } t | j d    } t | j |  j |     } t | j d    } | S(   NRV   RW   s   DOT OPERATOR(   RX   RY   R@   R   RK   RZ   R    (   R<   RD   R[   R\   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt
   _print_Dot|   s    		$c         C  sj   | j  } |  j |  } t | j d    } t | j d    } t | j |  j t d      } | S(   NRV   RW   R^   (   R_   R@   R   RK   RZ   R    (   R<   RD   t   funcRL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Gradient   s    	$c         C  sj   | j  } |  j |  } t | j d    } t | j d    } t | j |  j t d      } | S(   NRV   RW   t	   INCREMENT(   R_   R@   R   RK   RZ   R    (   R<   RD   Rd   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Laplacian   s    	$c         C  sB   y  t  t | j j d |   SWn t k
 r= |  j |  SXd  S(   Nt   printer(   R   R   t	   __class__t   __name__t   KeyErrorR;   (   R<   RD   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Atom   s     c         C  s9   |  j  r |  j |  Sd d g } |  j | d d  Sd  S(   Ns   -oot   ooRV   RW   (   R?   Rl   RH   (   R<   RD   t   inf_list(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Reals   s    	c         C  se   | j  d } |  j |  } | j r. | j p4 | j sL t | j     } n  t | j d    } | S(   Ni    t   !(   RI   R@   t
   is_Integert   is_nonnegativet	   is_SymbolR   RJ   RK   (   R<   RD   R2   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_subfactorial   s    c         C  se   | j  d } |  j |  } | j r. | j p4 | j sL t | j     } n  t | j d    } | S(   Ni    Rp   (   RI   R@   Rq   Rr   Rs   R   RJ   RZ   (   R<   RD   R2   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_factorial   s    c         C  se   | j  d } |  j |  } | j r. | j p4 | j sL t | j     } n  t | j d    } | S(   Ni    s   !!(   RI   R@   Rq   Rr   Rs   R   RJ   RZ   (   R<   RD   R2   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_factorial2   s    c         C  s   | j  \ } } |  j |  } |  j |  } d t | j   | j    } t | j |    } t | j |    } t | j d d    } | j d d | _ | S(   Nt    RV   RW   i   i   (   RI   R@   t   maxt   widthR   t   aboveRJ   t   baseline(   R<   RD   t   nt   kt   n_pformt   k_pformt   barRL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_binomial   s    c         C  s`   t  d t | j  d  } |  j | j  } |  j | j  } t  t j | | |    } | S(   NRw   (   R   R   t   rel_opR@   t   lhst   rhsR   t   next(   R<   RD   t   opt   lt   rRL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Relational   s
    c         C  s   d d l  m } m } |  j r | j d } |  j |  } t | |  r] |  j | d d St | |  r |  j | d d S| j	 r | j
 r t | j     } n  t | j d    S|  j |  Sd  S(   Ni(   t
   Equivalentt   Impliesi    t   altcharu   ⇎u   ↛u   ¬(   t   sympyR   R   R?   RI   R@   R6   t   _print_Equivalentt   _print_Impliest
   is_Booleant   is_NotR   RJ   RK   t   _print_Function(   R<   RD   R   R   t   argRL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt
   _print_Not   s    	c         C  s   | j  } | r' t | j  d t } n  | d } |  j |  } | j rh | j rh t | j     } n  xw | d D]k } |  j |  } | j r | j r t | j     } n  t | j d |    } t | j |    } qs W| S(   Nt   keyi    i   u    %s (	   RI   t   sortedR   R@   R   R   R   RJ   RZ   (   R<   RD   t   chart   sortRI   R   RL   t	   pform_arg(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   __print_Boolean   s    	
c         C  s0   |  j  r |  j | d  S|  j | d t Sd  S(   Nu   ∧R   (   R?   t   _PrettyPrinter__print_BooleanR   R>   (   R<   RD   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt
   _print_And  s    	c         C  s0   |  j  r |  j | d  S|  j | d t Sd  S(   Nu   ∨R   (   R?   R   R   R>   (   R<   RD   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt	   _print_Or  s    	c         C  s0   |  j  r |  j | d  S|  j | d t Sd  S(   Nu   ⊻R   (   R?   R   R   R>   (   R<   RD   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt
   _print_Xor  s    	c         C  s0   |  j  r |  j | d  S|  j | d t Sd  S(   Nu   ⊼R   (   R?   R   R   R>   (   R<   RD   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Nand  s    	c         C  s0   |  j  r |  j | d  S|  j | d t Sd  S(   Nu   ⊽R   (   R?   R   R   R>   (   R<   RD   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt
   _print_Nor   s    	c         C  s6   |  j  r% |  j | | p d d t S|  j |  Sd  S(   Nu   →R   (   R?   R   t   FalseR   (   R<   RD   R   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyR   &  s    	c         C  s6   |  j  r |  j | | p d  S|  j | d t Sd  S(   Nu   ⇔R   (   R?   R   R   R>   (   R<   RD   R   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyR   ,  s    	c         C  s8   |  j  | j d  } t | j t d | j       S(   Ni    t   _(   R@   RI   R   Rz   R   Ry   (   R<   RD   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_conjugate2  s    c         C  s2   |  j  | j d  } t | j d d    } | S(   Ni    t   |(   R@   RI   R   RJ   (   R<   RD   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt
   _print_Abs6  s    c         C  sL   |  j  r; |  j | j d  } t | j d d    } | S|  j |  Sd  S(   Ni    t   lfloort   rfloor(   R?   R@   RI   R   RJ   R   (   R<   RD   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_floor<  s
    	c         C  sL   |  j  r; |  j | j d  } t | j d d    } | S|  j |  Sd  S(   Ni    t   lceilt   rceil(   R?   R@   RI   R   RJ   R   (   R<   RD   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_ceilingD  s
    	c         C  s  t  |  r$ |  j r$ t d  } n d } d  } d } x t | j  D] \ } } |  j |  } t | j |    } | | 7} | j	 s | d k r | t t
 |   } n  | d  k r | } qF t | j d    } t | j |    } qF Wt d t j |  j | j  j    }	 t |  }
 | d k t k rP|
 t t
 |   }
 n  t |
 j t j |    }
 |
 j d |
 _ t t j |
 |	    }
 t j |
 _ |
 S(   Ns   PARTIAL DIFFERENTIALt   di    i   Rw   t   binding(   R   R?   R    t   Nonet   reversedt   variable_countR@   R   RK   Rq   t   strRZ   t   FUNCRB   RJ   R   t   belowR   t   LINER{   R   t   MULR   (   R<   t   derivt   deriv_symbolR2   t   count_total_derivt   symt   numt   st   dst   fRL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_DerivativeL  s2    
	!c         C  s   d d l  m } m } | |   k rA t d  } t | j     S| | j    j } | g  k r |  j | j	 d  } t | j     St d  } xJ | D]B } |  j t
 t |   j d d   } t | j |    } q W| S(   Ni(   t   Permutationt   CycleR4   i   t   ,(   t    sympy.combinatorics.permutationsR   R   R   R   RJ   t   listt   cyclic_formR@   t   sizeR   t   tuplet   replaceRZ   (   R<   t   dcR   R   t   cyct   dc_listR/   R   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Cycleq  s    'c         C  s  |  j  | j j d  } t | j d    } t | j |  j  | j d     } t | j d    } t | j |  j  | j d     } t | j     } |  j  | j j d  } t | j d    } t | j |    } t | j     } t d  } t | j |    } | S(   Ni    s   , i   t   PDF(   R@   t   pdfRI   R   RZ   t   domainRJ   (   R<   R   t   limR   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt
   _print_PDF  s    %%c         C  s  | j  } |  j |  } | j r6 t | j     } n  | } xc | j D]X } |  j | d  } | j   d k r t | j     } n  t | j d |    } qF Wt } d  } x| j D]}	 |	 d } | j
   }
 |
 d } |  j } | r | d 7} n  t d |  } t |  } | j | |
 d | _ t |	  d k rIt |	  d k rtt d  } |  j |	 d  } n  t |	  d k r|  j |	 d  } |  j |	 d  } n  | rt d d | j    } t | j d |    } t d d	 | j    } t | j d |    } n  t | j |    } t | j |    } n  | sgt | j d    } n  | r|| } t } q t | j |    } q Wt | j |    } t j | _ | S(
   Ni    i   s    di   t   intR4   i   Rw   i   (   t   functionR@   t   is_AddR   RJ   t   limitsRy   RZ   R>   R   t   heightR?   R   R{   t   lenRx   RK   Rz   R   R   R   R   (   R<   t   integralR   t   prettyFR   R2   t	   prettyArgt	   firsttermR   R   t   ht   Ht
   ascii_modet   vintRL   t   prettyAt   prettyBt   spc(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Integral  s\    		


	c         C  sR  | j  } |  j |  } t d d  } t d d  } t d d  } |  j rf t d d  } d } n  | j   } t } d }	 d }
 x| j D]} | d d d	 d } | | | | d | | g } x= t | d  D]+ } | j d
 | d
 | d | d
  q Wt	 d  } t
 | j |     } |  j | d  } |  j t | d | d   } t |	 | j    }	 | r| j   }
 n  t
 | j |    } t
 | j |    } | rd | _ t } n  | j   } t	 d  } t
 | j d
 g | d     } t
 | j |    } t
 | j |    } q W|	 |
 d | _ t
 j | _ | S(   NR   i   R   t   -u   ┬i    i   i   i   Rw   R4   (   t   termR@   R   R?   R   R>   R   R   t   appendR   R   t   stackR
   Rx   Rz   R   R{   R   RZ   R   R   (   R<   RB   Rd   t   pretty_funct   horizontal_chrt
   corner_chrt   vertical_chrt   func_heightt   firstt	   max_uppert   sign_heightR   Ry   t
   sign_linesR   t   pretty_signt   pretty_uppert   pretty_lowerR   t   padding(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Product  sJ    			!) 		 c         C  s  |  j  } d   } | j } |  j |  } | j rI t | j     } n  | j   d } t } d } d }	 x| j D]}
 t	 |
  d k r |  j |
 d  } |  j t
 |
 d |
 d   } n{ t	 |
  d k r|  j d  } |  j t
 |
 d |
 d   } n7 t	 |
  d k r>|  j d  } |  j |
 d  } n  t | | j    } | | | j   | j   |  \ } } } } t d  } t | j |     } | r| j   }	 n  t | j |    } t | j |    } | r| j | | j   d | j | 8_ t } n  t d  } t | j d g |     } t | j |    } t | j |    } qu W| |	 d | _ t j | _ | S(   Nc         S  sN  d  d d  } t |  d  } | d } | d } |  d } g  }	 | rS|	 j d | d  |	 j d d | d  x: t d |  D]) }
 |	 j d d |
 d | |
 f  q W| r |	 j d	 d | d | | f  n  x@ t t d |   D]) }
 |	 j d
 d |
 d | |
 f  q W|	 j d d | d d  | | | |	 d f S| | } | | } t d d  } |	 j d |  xE t d |  D]4 }
 |	 j d d |
 | d d | |
 d f  qWxK t t d |   D]4 }
 |	 j d d |
 | d d | |
 d f  qW|	 j | d |  | | d | |	 | f Sd  S(   Ns   <^>c         S  s   | s t  |   | k r |  S| t  |   } | d k sW | d k sW | t d  k rc |  d | S| d } d | } | d k r d | |  S| |  d | t  |  S(   Ns   <^>t   <Rw   i   t   >(   R   R   (   R   t   widt   howt   needt   halft   lead(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   adjust  s    *

i   i   R   Rw   s   \%s`s   %s\%ss   %s)%ss   %s/%st   /R   i    t   sumi   s   %s%s%si   (   R   Rx   R   R   R   R   (   t	   hrequiredt   lowert   uppert	   use_asciiR   R   R   t   wt   moret   linesR/   t   vsum(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   asum  s6    


'&'

22i   i    i   i   R4   Rw   (   R?   R   R@   R   R   RJ   R   R>   R   R   R
   Rx   Ry   R   R   Rz   R   R{   R   RZ   R   R   (   R<   RB   R   R  R   R   R   R   R   R   R   t   prettyUppert   prettyLowerR   R   t   slinest
   adjustmentt
   prettySignt   pad(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt
   _print_Sum  sP    
	*		##*!	c   	      C  sv  | j  \ } } } } |  j |  } t |  t d k rU t | j d d    } n  t d  } |  j |  } |  j r t | j d    } n t | j d    } t | j |  j |     } t |  d k s | t	 j
 t	 j f k r d } n* |  j r!t |  d	 k rd
 n d } n  t | j |  j |     } t | j |    } t d t j | j |   } | S(   NR   RV   RW   R   u   ─→s   ->s   +-R4   t   +u   ⁺u   ⁻R   (   RI   R@   R   R   R   RJ   R?   RZ   R   R   t   Infinityt   NegativeInfinityR   R   (	   R<   R   RD   t   zt   z0t   dirt   Et   Limt   LimArg(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Limit|  s$    	*		!c         C  sb  | } i  } xT t  | j  D]C } x: t  | j  D]) } |  j | | | f  | | | f <q2 Wq Wd } d } d g | j } x\ t  | j  D]K } t g  t  | j  D] } | | | f j   ^ q p d g  | | <q Wd }	 x\t  | j  D]K} d }
 x t  | j  D] } | | | f } | j   | | k sBt  | | | j   } | d } | | } t | j	 d |    } t | j
 d |    } |
 d k r| }
 qn  t |
 j	 d |    }
 t |
 j	 |    }
 qW|	 d k r|
 }	 q n  x) t  |  D] } t |	 j d    }	 qWt |	 j |
    }	 q W|	 d k r^t d  }	 n  |	 S(   sL   
        This method factors out what is essentially grid printing.
        i   i   ii    Rw   R4   N(   R   t   rowst   colsR@   Rx   Ry   R   t   AssertionErrorR   RZ   RK   R   (   R<   RD   t   Mt   MsR/   R1   t   hsept   vsept   maxwt   Dt   D_rowR   t   wdeltat   wleftt   wrightR   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_matrix_contents  sF    +I

c         C  s>   |  j  |  } | j   d | _ t | j d d    } | S(   Ni   t   [t   ](   R&  R   R{   R   RJ   (   R<   RD   R!  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_MatrixBase  s    c         C  s(   d } |  j  | j d  d  | d d   S(   Ns   \u2297t   parenthesizec         S  s   t  |   t d k S(   NR   (   R   R   (   R2   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyR3     R4   (   RH   RI   R   (   R<   RB   t   circled_times(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_TensorProduct  s    c         C  s(   d } |  j  | j d  d  | d d   S(   Nu   ∧R*  c         S  s   t  |   t d k S(   NR   (   R   R   (   R2   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyR3     R4   (   RH   RI   R   (   R<   RB   t   wedge_symbol(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_WedgeProduct  s    c         C  sV   |  j  | j  } t | j d d    } | j   d | _ t | j d    } | S(	   NRV   RW   i   s   
i    t   trR4   R/  (   R@   R   R   RJ   R   R{   RK   (   R<   RD   R!  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Trace  s
    c         C  s  d d l  m } d d l m } t | j |  rw | j j rw | j j rw |  j	 | | j j
 d | j | j f   S|  j	 | j  } t | j     } |  j | j | j f d d j d d d	 d
  d } t d t j t j | |   } | | _ | | _ | Sd  S(   Ni(   t   MatrixSymbol(   R   s   _%d%dt	   delimiters   , RK   R'  RZ   R(  i    R   (   t   sympy.matricesR1  R   R   R6   t   parentR/   t	   is_numberR1   R@   RN   R   RJ   RH   R   R   R   t
   prettyFunct
   prettyArgs(   R<   RB   R1  R   R6  t   prettyIndicesRL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_MatrixElement  s    '$		c           s     j  | j  }   f d   }   j | | j  | | j  f d d j d d d d  d } t d	 t j t j	 | |   } | | _
 | | _ | S(
   Nc           s~   t  |   }  |  d d k r& |  d =n  |  d |  d d k rH |  d =n  |  d d k re d |  d <n  t   j |  d d   S(   Ni   i   i    R4   R2  t   :(   R   R   RH   (   R2   (   R<   (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   ppslice  s    

R2  s   , RK   R'  RZ   R(  i    R   (   R@   R4  RH   t   rowslicet   colsliceRJ   R   R   R   R   R6  R7  (   R<   t   mR6  R;  R7  RL   (    (   R<   s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_MatrixSlice  s    	1		c         C  s]   |  j  | j  } d d l m } t | j |  sI t | j     } n  | t d  } | S(   Ni(   R1  t   T(   R@   R   R3  R1  R6   R   RJ   (   R<   RB   RL   R1  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Transpose'  s    c         C  s{   |  j  | j  } |  j r* t d  } n t d  } d d l m } t | j |  sm t | j     } n  | | } | S(   Nu   †R  i(   R1  (   R@   R   R?   R   R3  R1  R6   RJ   (   R<   RB   RL   t   dagR1  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Adjoint/  s    	
c         C  s6   | j  j d k r& |  j | j  d  S|  j | j   S(   Ni   i    (   i   i   (   i    i    (   t   blockst   shapeR@   (   R<   t   B(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_BlockMatrix;  s    c         C  s   d  } x | j D] } |  j |  } | d  k r: | } q | j   d } t t |   r t t j | d    } |  j |  } n t t j | d    } t t j | |    } q W| S(   Ni    Rw   s    + (	   R   RI   R@   t   as_coeff_mmulR   R   R   R   R   (   R<   RB   R   t   itemRL   t   coeff(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_MatAdd@  s    	c   	      C  s   t  | j  } d d l m } m } m } m } x t |  D]q \ } } t | | | | | f  r t	 | j  d k r t
 |  j |  j     | | <q> |  j |  | | <q> Wt
 j |   S(   Ni(   t   Addt   MatAddt   HadamardProductt   KroneckerProducti   (   R   RI   R   RL  RM  RN  RO  t	   enumerateR6   R   R   R@   RJ   t   __mul__(	   R<   RB   RI   RL  RM  RN  RO  R/   t   a(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_MatMulQ  s    ""c         C  sL   t  | j  } x- t |  D] \ } } |  j |  | | <q Wt j |   S(   N(   R   RI   RP  R@   R   RQ  (   R<   RB   RI   R/   RR  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_DotProduct]  s    c         C  sc   |  j  | j  } d d l m } t | j |  sI t | j     } n  | |  j  | j  } | S(   Ni(   R1  (   R@   t   baseR3  R1  R6   R   RJ   t   exp(   R<   RB   RL   R1  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_MatPowd  s    c           s_   d d l  m   m  |  j r. t d  } n d } |  j | j d  d  | d    f d   S(   Ni(   RM  t   MatMult   Rings   .*R*  c           s   t  |     f  S(   N(   R6   (   R2   (   RM  RX  (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyR3   s  R4   (   R   RM  RX  R?   R   RH   RI   R   (   R<   RB   t   delim(    (   RM  RX  s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_HadamardProductl  s    	c           sY   d d l  m   m  |  j r( d } n d } |  j | j d  d  | d    f d   S(   Ni(   RM  RX  u    ⨂ s    x R*  c           s   t  |     f  S(   N(   R6   (   R2   (   RM  RX  (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyR3   |  R4   (   R   RM  RX  R?   RH   RI   R   (   R<   RB   RZ  (    (   RM  RX  s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_KroneckerProductu  s    		c         C  s1   |  j  | j j  } t | j d d    } | S(   NR'  R(  (   R@   t   lamdaRB   R   RJ   (   R<   t   XR!  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_FunctionMatrix~  s    c         C  s+  d d l  m } |  j s( t d   n  | | j k rG t | j j  Sg  } g  } t | |  rw | j   j	   } n d | f g } x | D] \ } } t
 | j j	    } | j d d    x | D] \ }	 }
 |
 d k r | j d |	 j  nT |
 d k r| j d	 |	 j  n1 |  j |
  j   d } | j | d
 |	 j  | j |	 j  q Wq W| d j d  r| d d | d <n( | d j d
  r| d d | d <n  g  } d g } g  } xt |  D]\ } } | j d  d | k r| } | j | | d  } d | k rx t t |   D]J } d | | <| | d k r5| |  d d
 | | | | d } Pq5q5WnM d | k rd | | <| j d d | |  } n | j d d | |  } | | | <qqWg  | D] } | j d  ^ q} t g  | D] } t |  ^ q } d | k rxZ t |  D]I \ } } t |  d k rD| j d d
 t | d   d | | <qDqDWn  xjt |  D]\\ } } | j t | | |   x2t |  D]$} | d t |  k r| t |  k r3| j d
 t | d   d t |  d  n  | | | k rf| | | c | | | d 7<q| | c | | d
 | d t | |  d 7<q| t |  k r| j d
 t | d   d t |  d  n  | | c d
 | d d 7<qWqWt d j g  | D] } | d  ^ q  S(   Ni(   t   Vectors:   ASCII pretty printing of BasisDependent is not implementedi    R   c         S  s   |  d j    S(   Ni    (   t   __str__(   R2   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyR3     R4   i   u    u   (-1) Rw   u    + i   R4   s   
u   ⎟u   ⎠u   ⎞s    + u   
iu   ⎠ u   ⎞ (   t   sympy.vectorR`  R?   t   NotImplementedErrort   zeroR   t   _pretty_formR6   t   separatet   itemsR   t
   componentsR   R   R@   RJ   t
   startswithRP  R   R   R   t   splitRx   t   insertR   t   join(   R<   RB   R`  t   o1t   vectstrsRg  t   systemt   vectt
   inneritemsR}   t   vt   arg_strt   lengthst   strst   flagR/   t   partstrt   tempstrt   parenR2   t
   n_newlinest   partsR1   R   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_BasisDependent  s    				
&
		"%#$c   
      C  s  d d l  m } | j   d k r3 |  j | d  Sg  g g  t | j    D] } g  ^ qL } g  | j D] } t t |   ^ qi } xt j |   D]} | d j	 | |  t
 } x t | j   d d d  D] } t | | d  | j | k  r Pn  | r"| | j	 | | d  n^ | | j	 | | | d   t | | d  d k r| | | d g g  | | d <n  | } g  | | d <q Wq W| d d }	 | j   d d k r| |	 g  }	 n  |  j |	  S(   Ni(   t   ImmutableMatrixi    i   i   (    (   R   R}  t   rankR@   R   RE  R   t	   itertoolst   productR   R>   R   (
   R<   RB   R}  R/   t	   level_strt   shape_rangest   outer_it   event   back_outer_it   out_expr(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_NDimArray  s,    ,(#!%c         C  s  t  |  } t  d | j    } t  d | j    } d  } d  } xt |  D]\ }	 }
 |  j |
 j d  } |
 | k s | r | |
 j k r |
 j r t t  j | d    } q t t  j | d    } n  |
 | k r%t t  j | d    } t t  j | |  j | |
     } t	 } n t
 } |
 j rt  | j |    } t  | j d | j      } t  | j d | j      } nS t  | j |    } t  | j d | j      } t  | j d | j      } |
 j } qQ Wt | j |    } t | j |    } | S(   NRw   i    R   t   =(   R   Ry   R   RP  R@   RI   t   is_upR   R   R>   R   RZ   Rz   R   (   R<   RN   t   indicest	   index_mapt   centert   topt   bott   last_valencet   prev_mapR/   t   indext   indpict   pict(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _printer_tensor_indices	  s6    !	%		"c         C  s,   | j  d j } | j   } |  j | |  S(   Ni    (   RI   RN   t   get_indicesR  (   R<   RB   RN   R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Tensor,  s    c         C  s>   | j  j d j } | j  j   } | j } |  j | | |  S(   Ni    (   RB   RI   RN   R  R  R  (   R<   RB   RN   R  R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_TensorElement1  s    	c         C  s   | j    \ } } g  | D]F } t |  t d k  rP t |  j |  j     n |  j |  ^ q } t j |   } | r t | j |    S| Sd  S(   NR   (   t!   _get_args_for_traditional_printerR   R   R   R@   RJ   RQ  RK   (   R<   RB   t   signRI   R/   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_TensMul7  s    Pc         C  sc   g  | j  D]F } t |  t d k  rA t |  j |  j     n |  j |  ^ q
 } t j |   S(   NR   (   RI   R   R   R   R@   RJ   t   __add__(   R<   RB   R/   RI   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_TensAddD  s    Sc         C  s-   | j  d } | j s  | } n  |  j |  S(   Ni    (   RI   R  R@   (   R<   RB   R   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_TensorIndexL  s    	
c   	      C  s'  |  j  r t d  } n d } d  } xz t | j  D]i } |  j |  } t | j |    } | d  k rs | } q4 t | j d    } t | j |    } q4 Wt d t j	 |  j | j
  j    } t |  } t | j t j |    } | j d | _ t t j | |    } t j | _ | S(   Ns   PARTIAL DIFFERENTIALR   Rw   R   i   (   R?   R    R   R   t	   variablesR@   R   RK   RZ   R   RB   RJ   R   R   R   R{   R   R   R   (	   R<   R   R   R2   t   variableR   R   R   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_PartialDerivativeR  s&    		!c         C  s  i  } x t  | j  D] \ } } |  j | j  | | d f <| j t k rf t d  | | d f <q t t d  j |  j | j     | | d f <q Wd } d } t | j  } g  t	 d  D]; } t
 g  t	 |  D] }	 | |	 | f j   ^ q  ^ q }
 d  } xVt	 |  D]H}	 d  } x t	 d  D] } | |	 | f } | j   |
 | k sbt  |
 | | j   } | d } | | } t | j d |    } t | j d |    } | d  k r| } q0n  t | j d |    } t | j |    } q0W| d  k r| } qn  x) t	 |  D] } t | j d    } q+Wt | j |    } qWt | j d d    } | j   d | _ t j | _ | S(	   Ni    t	   otherwisei   s   for i   Rw   t   {R4   (   RP  RI   R@   RB   t   condR>   R   RZ   R   R   Rx   Ry   R   R  RK   R   RJ   R   R{   t   OPENR   (   R<   t   pexprt   PR|   t   ecR  R  t   len_argsR1   R/   R   R!  R"  t   pR#  R$  R%  R   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Piecewiseo  sL    2K

c         C  s&   d d l  m } |  j | j |   S(   Ni(   t	   Piecewise(   t$   sympy.functions.elementary.piecewiseR  R@   t   rewrite(   R<   t   iteR  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt
   _print_ITE  s    c         C  s{   d  } xS | D]K } | } | d  k r. | } q t | j d    } t | j |    } q W| d  k rw t d  } n  | S(   Ns   , Rw   (   R   R   RZ   R   (   R<   Rr  R!  RR  R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _hprint_vec  s    	c         C  sO   t  | j |    } t t d | j    d | j } t  | j | |    S(   NR   R{   (   R   RZ   R   R   R   R{   (   R<   t   p1t   p2t   tmpt   sep(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _hprint_vseparator  s    $c         C  s7  g  | j  D] } |  j |  ^ q
 } g  | j D] } |  j |  ^ q/ } |  j | j  } | j   d | _ d  } xb | | g D]T } |  j |  }	 | d  k r |	 } q t | j	 d    } t | j	 |	    } q W| j   d | _ t | j
 d    } t | j d    } |  j | |  } t | j d d    } | j   d d }
 | j   |
 d } t d  \ } } } } } t d |
 | | d | | d |
 | } | d d } t | j
 |  j t | j       } t | j |  j t | j      } |
 | | _ t | j d |    } | S(	   Ni   Rw   RV   RW   i   t   Fs   
R{   (   t   apR@   t   bqt   argumentR   R{   R   R  R   R   RK   RZ   R  RJ   R"   R   (   R<   RD   RR  R  t   bR  R  R!  Rr  R"  Rz   R   t   szt   tt   addt   imgR  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_hyper  s6    %%	!''c   !      C  sn  i  } g  | j  D] } |  j |  ^ q | d <g  | j D] } |  j |  ^ q9 | d <g  | j D] } |  j |  ^ qb | d <g  | j D] } |  j |  ^ q | d <|  j | j  } | j   d | _ i  } x% | D] } |  j | |  | | <q Wx t	 d  D] } t
 | d | f j   | d | f j    }	 x t	 d  D] }
 | |
 | f } |	 | j   d } |	 | | j   } t | j d |    } t | j d |    } | | |
 | f <qLWq
Wt | d j d | d    } t | j d    } t | d j d | d    } t | j |    } | j   d | _ t | j d    } t | j d    } |  j | |  } t | j d d    } | j   d d } | j   | d } t d  \ } } } } } t d	 | | | d	 | | d
 | | } |  j t | j   } |  j t | j   } |  j t | j   } |  j t | j    } d   } | | |  \ } } | | |  \ } } t | j d |    } t | j d |    } | j | d } | d k rt | j d	 |    } n  t | j |    }  | | _ t | j |     } | | | _ t | j d |    } | S(   Ni    i   i   Rw   s     RV   RW   t   Gs   
R{   c         S  sw   |  j    | j    } | d k r, |  | f S| d k rU |  t | j d |    f St |  j d |    | f Sd  S(   Ni    Rw   (   Ry   R   RK   (   R  R  t   diff(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyR   (  s    
s   , (   i    i    (   i    i   (   i   i    (   i   i   (   i    i    (   i    i   (   i   i    (   i   i   (   t   anR@   t   aothert   bmt   botherR  R   R{   R  R   Rx   Ry   R   RK   RZ   R   R  RJ   R"   R   R  R  (!   R<   RD   Rr  RR  R  R  t   vpt   idxR/   R   R1   R   RK   RZ   t   D1t   D2R!  Rz   R   R  R  R  R  R  t   ppt   pqt   pmt   pnR   t   put   plt   htR  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_meijerg  sf    ))))/  !		c         C  s-   t  t d d   } | |  j | j d  S(   Nt   Exp1RD   i    (   R   R   R@   RI   (   R<   RD   RU  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_ExpBaseC  s    c   	      C  s   | j  } | j } | r- t | d t } n  | s? | j } n  |  j t |   } t |  j |  j	     } t d t j
 t j | |   } | | _ | | _ | S(   NR   R   (   Rd   RI   R   R   Rj   R@   R   R   RH   RJ   R   R   R   R6  R7  (	   R<   RD   R   t	   func_nameRd   RI   R6  R7  RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyR   I  s    				c         C  s   d d l  m } d d l m } m } d d l m } d d l m } d d l	 m
 } d d l m } i t d d g | 6t d	 d	 g | 6t d
 d g | 6t d d g | 6t d d g | 6t d d g | 6d d g | 6S(   Ni(   t   KroneckerDelta(   t   gammat
   lowergamma(   t   lerchphi(   t   beta(   t
   DiracDelta(   t   Chit   deltat   Gammat   PhiR  R  t   BetaRF  R  (   t(   sympy.functions.special.tensor_functionsR  t'   sympy.functions.special.gamma_functionsR  R  t&   sympy.functions.special.zeta_functionsR  t&   sympy.functions.special.beta_functionsR  t'   sympy.functions.special.delta_functionsR  t'   sympy.functions.special.error_functionsR  R   (   R<   R  R  R  R  R  R  R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _special_function_classes`  s    c         C  s   xh |  j  D]] } t | |  r
 | j | j k r
 |  j rO t |  j  | d  St |  j  | d  Sq
 q
 W| j } t t |   S(   Ni    i   (   R  t
   issubclassRj   R?   R   R   (   R<   RB   t   clsR  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_FunctionClassp  s    !		c         C  s   |  j  |  S(   N(   R;   (   R<   RB   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_GeometryEntityz  s    c         C  s,   |  j  r t d n d } |  j | d | S(   NR  R  R  (   R?   R   R   (   R<   RD   R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_lerchphi~  s    c         C  s   | j  \ } } |  j r! d } n d } t |  d k rO |  j | d  } n |  j t |   } t d d t j | | |  j |    S(   Nu    ↦ s    -> i   i    R   i   (   RI   R?   R   R@   R   R   R   R   (   R<   RD   t   varsRB   t   arrowt   var_form(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Lambda  s    		c         C  s  |  j  | j  } | j r4 t d   | j D  sI t | j  d k ret | j d    } t | j  d k r t | j |  j  | j     } n7 t | j  r t | j |  j  | j d     } n  |  j r t | j d    } n t | j d    } t | j  d k r=t | j |  j  | j     } qet | j |  j  | j d     } n  t | j	     } t | j
 d    } | S(   Nc         s  s   |  ] } | t  j k Vq d  S(   N(   R   t   Zero(   t   .0R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pys	   <genexpr>  s    i   s   ; i    u    → s    -> t   O(   R@   RB   t   pointt   anyR   R  R   RZ   R?   RJ   RK   (   R<   RB   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Order  s"    "$(	$(c         C  s   |  j  r |  j | j d | j d  } |  j | j d  } t d  } t | j |    } t | j d    } | | } | S|  j | j d  } |  j | j d | j d  } |  j | d d d  } | | Sd  S(   Ni    i   i   R   R   Rw   (   R?   R@   RI   R   RZ   RH   (   R<   RD   t   shiftR|   RU  RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_SingularityFunction  s    	!
!c         C  s,   |  j  r t d n d } |  j | d | S(   NR  RF  R  (   R?   R   R   (   R<   RD   R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_beta  s    c         C  s,   |  j  r t d n d } |  j | d | S(   NR  R  (   R?   R   R   (   R<   RD   R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_gamma  s    c         C  s,   |  j  r t d n d } |  j | d | S(   NR  R  (   R?   R   R   (   R<   RD   R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_uppergamma  s    c         C  s,   |  j  r t d n d } |  j | d | S(   NR  R  R  (   R?   R   R   (   R<   RD   R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_lowergamma  s    c         C  s  |  j  r t | j  d k r t t d  } |  j | j d  } t | j     } |  j | j d  } t | j     } | | } t | j d    } t | j |    } | S|  j | j d  } t | j     } t | j t d    } | S|  j	 |  Sd  S(   Ni   R  i   i    Rw   (
   R?   R   RI   R   R   R@   RJ   RZ   RK   R   (   R<   RD   RR  R  t   cRL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_DiracDelta  s     	
c         C  sa   d d l  m } | j d j rT |  j rT |  j | d | j d  | j d   S|  j |  S(   Ni(   t   Functioni    s   E_%si   (   R   R  RI   Rq   R?   R   (   R<   RD   R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_expint  s    +c         C  sa   t  d  } t  |  j | j  j     } t  d t  j t j | |   } | | _ | | _ | S(   NR  R   (	   R   RH   RI   RJ   R   R   R   R6  R7  (   R<   RD   R6  R7  RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt
   _print_Chi  s    		c         C  s   |  j  | j d  } t | j  d k r4 | } n( |  j  | j d  } |  j | |  } t | j     } t | j d    } | S(   Ni    i   R  (   R@   RI   R   R  R   RJ   RK   (   R<   RD   t   pforma0RL   t   pforma1(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_elliptic_e  s    	c         C  sA   |  j  | j d  } t | j     } t | j d    } | S(   Ni    t   K(   R@   RI   R   RJ   RK   (   R<   RD   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_elliptic_k  s    c         C  si   |  j  | j d  } |  j  | j d  } |  j | |  } t | j     } t | j d    } | S(   Ni    i   R  (   R@   RI   R  R   RJ   RK   (   R<   RD   R  R  RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_elliptic_f  s    c         C  s   |  j  r t d n d } |  j | j d  } |  j | j d  } t | j  d k ro |  j | |  } nR |  j | j d  } |  j | |  } t | j d    } t | j |    } t | j     } t | j |    } | S(   Nt   Pii    i   i   s   ; (	   R?   R   R@   RI   R   R  R   RK   RJ   (   R<   RD   RN   R  R  RL   t   pforma2t   pforma(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_elliptic_pi  s    c         C  s,   |  j  r t t d   S|  j t d   S(   Nt   phit   GoldenRatio(   R?   R   R   R@   R   (   R<   RB   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_GoldenRatio  s    	c         C  s,   |  j  r t t d   S|  j t d   S(   NR  t
   EulerGamma(   R?   R   R   R@   R   (   R<   RB   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_EulerGamma  s    	c         C  s   |  j  | j d  } | j t j k r= t | j     } n  t | j d    } t | j |  j  | j d     } t j | _ | S(   Ni    s    mod i   (   R@   RI   R   R   R   RJ   RZ   R  (   R<   RB   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt
   _print_Mod  s    %c         C  s{  |  j  d k r! t | j  } n |  j | d | } g  g  } } d   } x6t |  D](\ } } | j r t |  r | j d t  \ }	 }
 |  j	 t
 |	 d t |
  } | j | | |   qY | j r | j d k r | j d   | j |  qY | j r=| d k  r=|  j	 |  } | j | | |   qY | j rk| j t |  j	 |  j      qY | j |  j	 |   qY W| rnt } x6 | D]( } | d  k	 r| j   d k rPqqWt } x | D] } | | t } } | d k  r| t } } n  | r6t t | j   t t | j   } n |  j	 |  } | r]| | |  } n  | | | <qWn  t j |   S(   Nt   noneR%   c         S  s   | d k r0 |  j    d k r' d } q6 d } n d } |  j t j k sZ |  j t j k ro t |  j     } n |  } t j | |  } t d t j |  S(   s'   Prepend a minus sign to a pretty form. i    i   s   - R   s    - R   (   R   R   R   t   NEGt   ADDR   RJ   R   (   RL   R  t	   pform_negR  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   pretty_negative-  s    		t   rationalt   evaluatei   i    (   R%   R   RI   t   _as_ordered_termsRP  t   is_MulR   t   as_coeff_mulR   R@   R   R   t   is_Rationalt   qR   t	   is_Numbert   is_RelationalR   RJ   R>   R   R   R  R  (   R<   RB   R%   t   termst   pformsR  R  R/   R   RJ  t   otherRL   t   larget   negative(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt
   _print_Add&  sH    		%+c           s  d d l  m   g  } g  } |  j d k r: | j   } n t | j  } t | d   f d   } x| D] } | j r | j r | j	 j
 r | j	 j r | j	 d k r | j t | j | j	 d t  qh| j t | j | j	   qk | j
 r[| t j k	 r[| j d k r0| j t | j   n  | j d k rh| j t | j   qhqk | j |  qk Wd d	 l m } m } m } m }	 x t d
 t |   D] }
 | |
 j rt |  d k s|
 t |  d k r$t | |
 | | | |	 f  r$t |  j | |
  j      | |
 <q| |
 j! rWt |  j | |
  j      | |
 <q|  j | |
  | |
 <qWx t d
 t |   D] }
 | |
 j rt |  d k s|
 t |  d k rt | |
 | | | |	 f  rt |  j | |
  j      | |
 <q|  j | |
  | |
 <qWt |  d
 k rBt j" |   St |  d
 k rp| j |  j t j#   n  t j" |   t j" |   Sd  S(   Ni(   t   Quantityt   oldR  R   c           s.   t  |     p- t  |  t  o- t  |  j    S(   N(   R6   R	   RU  (   R2   (   R%  (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyR3   x  s   R  i   (   t   IntegralR  t   Productt   Sumi    (   R&  R  ($   t   sympy.physics.unitsR%  R%   t   as_ordered_factorsR   RI   R   t   is_commutativet   is_PowRV  R  t   is_negativeR   R	   RU  R   R   R  R  R   R  R   R'  R  R(  R)  R   R   R   R6   R   R@   RJ   R  RQ  t   One(   R<   R  RR  R  RI   RI  R'  R  R(  R)  R/   (    (   R%  s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt
   _print_Mulm  sH    *& "5&&5&c           s  |  j  |  } |  j d r} |  j r} | t j k r} | j   d k r} | j   d k sj | j r} | j r} t	 | j
 d    St d d    t d d    } t | t  r t | j  } | d k r d } q n t | j d  } | j d	  } t |  d	 k r$d
 t |  d	 | } n  t | d |  } d | _ | j   d  t d j    f d   t   D   }  d | _ t	 | j |    } t d | j  | _ t	 t d d	 | j     } t	 | j |    } t	 | j
 |    } | S(   NR+   i   u   √R   s   \t   2R4   i    i   Rw   s   
c         3  s-   |  ]# } d   | d   d  | Vq d S(   Rw   i   N(    (   R  R/   (   t   _zZt
   linelength(    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pys	   <genexpr>  s   R   (   R@   R7   R?   R   t   HalfR   Ry   Rq   Rr   R   RK   R   R6   R   R   R  RI   t   ljustR   R   R{   Rl  R   RZ   Rx   R   Rz   (   R<   RU  t   exptt   bprettyt   rootsignRV  t   diagonalR   (    (   R2  R3  s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_nth_root  s:    !		c         C  s/  d d l  m } | j   \ } } | j r | t j k rQ t d  |  j |  S| |  \ } } | t j k r | j	 r | j
 r |  j d r |  j | |  S| j r | d k  r t d  |  j t | | d t  Sn  | j rt |  j |  j     j |  j |   S|  j |  |  j |  S(   Ni(   t   fractiont   1R,   i    R  (   t   sympy.simplify.simplifyR;  t   as_base_expR,  R   t   NegativeOneR   R@   R/  t   is_AtomRq   R7   R:  R  R	   R   R  RJ   t   __pow__(   R<   t   powerR;  R  RD   R|   R   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt
   _print_Pow  s    	/*	+c         C  s   |  j  | j d  S(   Ni    (   R@   RI   (   R<   RB   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_UnevaluatedExpr  s    c         C  s   | d k rD | d k  r1 t  t |  d t  j St  t |   Sn t |  d k r t |  d k r | d k  r t  t |  d t  j t  t |   St  t |   t  t |   Sn d  Sd  S(   Ni   i    R   i
   (   R   R   R  t   absR   (   R<   R  R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   __print_numer_denom  s    $)#c         C  s9   |  j  | j | j  } | d  k	 r( | S|  j |  Sd  S(   N(   t!   _PrettyPrinter__print_numer_denomR  R  R   R;   (   R<   RB   t   result(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Rational  s    c         C  s9   |  j  | j | j  } | d  k	 r( | S|  j |  Sd  S(   N(   RG  t	   numeratort   denominatorR   R;   (   R<   RB   RH  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Fraction  s    c         C  s   t  | j  d k ra t | j  ra d d l m } |  j | | j d t  | j  d t  S|  j rp d n d } |  j | j d  d  d | d	 d
   Sd  S(   Ni   i(   R	   i    R  u   ×R2   s    %s R*  c         S  s   |  j  p |  j p |  j S(   N(   t   is_Uniont   is_Intersectiont   is_ProductSet(   t   set(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyR3     s   	(
   R   t   setsR   R   R	   R@   R   R?   RH   R   (   R<   R  R	   t	   prod_char(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_ProductSet
  s    %,c         C  s+   t  | j d t } |  j | d d d  S(   NR   R  t   }s   , (   R   RI   R   RH   (   R<   R   Rg  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_FiniteSet  s    c         C  s   |  j  r d } n d } | j j rE | | d | j | d f } n | j j r{ t |  } t |  t |  | f } nO t |  d k r t |  } t |  t |  | | d f } n t |  } |  j	 | d d d  S(   Nu   …s   ...ii   R  RT  s   , (
   R?   t   startt   is_infinitet   stept   stopt   iterR   R   R   RH   (   R<   R   t   dotst   printsett   it(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Range  s    		!%c         C  sz   | j  | j k r, |  j | j d  d d  S| j r> d } n d } | j rV d } n d } |  j | j d  | |  Sd  S(	   Ni   R  RT  RV   R'  RW   R(  i   (   RV  t   endRH   RI   t	   left_opent
   right_open(   R<   R/   RK   RZ   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Interval,  s    				c         C  s&   d } d } |  j  | j d  | |  S(   NR   R   i   (   RH   RI   (   R<   R/   RK   RZ   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_AccumulationBounds=  s    c         C  s5   d t  d d  } |  j | j d  d  | d d   S(   Ns    %s t   IntersectionR|   R*  c         S  s   |  j  p |  j p |  j S(   N(   RO  RM  t   is_Complement(   RP  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyR3   H  s   	(   R   RH   RI   R   (   R<   t   uR2  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_IntersectionC  s    c         C  s5   d t  d d  } |  j | j d  d  | d d   S(   Ns    %s t   UnionR    R*  c         S  s   |  j  p |  j p |  j S(   N(   RO  RN  Re  (   RP  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyR3   P  s   	(   R   RH   RI   R   (   R<   Rf  t   union_delimiter(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_UnionK  s    c         C  sA   |  j  s t d   n  d t d  } |  j | j d  d  |  S(   Ns?   ASCII pretty printing of SymmetricDifference is not implementeds    %s t   SymmetricDifference(   R?   Rc  R   RH   RI   R   (   R<   Rf  t   sym_delimeter(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_SymmetricDifferenceS  s    	c         C  s(   d } |  j  | j d  d  | d d   S(   Ns    \ R*  c         S  s   |  j  p |  j p |  j S(   N(   RO  RN  RM  (   RP  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyR3   `  s   (   RH   RI   R   (   R<   Rf  R2  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Complement[  s    c           s   |  j  r d   n d   | j j } |  j | j j  } |  j d  } g  | j d D] } |  j |  ^ qV } t |  d k r |  j | | | d   | d f d d d  St   f d	   t	 | |  D  } |  j | | f | d
  d d d  Sd  S(   Nu   ∊t   inR   i   i    R  RT  Rw   c         3  s4   |  ]* \ } } |   | d  f D] } | Vq q d S(   R   N(    (   R  t   vart   setvR1   (   t   inn(    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pys	   <genexpr>o  s    i(
   R?   R]  R  R@   RB   RI   R   RH   R   t   zip(   R<   t   tsR  RB   R   R/   RQ  t   pargs(    (   Rr  s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_ImageSetc  s    		)-%c   	      C  s(  |  j  r d } d } n d } d } |  j t | j   } t | j d d   } | d  k	 rx |  j | j j    } n3 |  j | j  } |  j  r |  j | d d  } n  |  j d  } | j	 t
 j k r |  j | | | f d	 d
 d  S|  j | j	  } |  j | | | | | | | f d	 d
 d  S(   Nu   ∊u   ∧Ro  t   andt   as_exprRV   RW   R   R  RT  Rw   (   R?   RH   R   R   t   getattrt	   conditionR   R@   Rx  t   base_setR   t   UniversalSet(	   R<   Rt  Rr  t   _andR  Rx  R  R   RU  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_ConditionSetr  s$    			c         C  s   |  j  r d } n d } |  j | j  } |  j | j  } |  j d  } |  j | j  } |  j | | | | | f d d d  S(   Nu   ∊Ro  R   R  RT  Rw   (   R?   RH   R  R@   RB   RQ  (   R<   Rt  Rr  R  RB   R   t   prodsets(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_ComplexRegion  s    		c         C  sc   | j  \ } } |  j rO d } t d d t j |  j |  | |  j |    St t |   Sd  S(   Nu    ∈ R   i   (   RI   R?   R   R   R   R@   R   (   R<   RD   Rp  RP  t   el(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Contains  s    	+c         C  s8   |  j  r d } n d } |  j | j    |  j |  S(   Nu   …s   ...(   R?   R$  t   truncateR@   (   R<   R   R[  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_FourierSeries  s    		c         C  s   |  j  | j  S(   N(   R$  t   infinite(   R<   R   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_FormalPowerSeries  s    c         C  sF   t  |  j | j  j     } |  j t d   } t  | j |    S(   Nt   SetExpr(   R   R@   RP  RJ   R   RZ   (   R<   t   set
   pretty_sett   pretty_name(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_SetExpr  s    c         C  s  |  j  r d } n d } t | j j  d k sH t | j j  d k rW t d   n  | j t j k r | j } | | j | d  | j | d  | j | d  | j |  f } nS | j t j	 k s | j
 d k r| d  } | j |  t |  } n t |  } |  j |  S(	   Nu   …s   ...i    s@   Pretty printing of sequences with symbolic bound not implementedi   i   i   i   (   R?   R   RV  t   free_symbolsRY  Rc  R   R  RJ  R  t   lengthR   R   t   _print_list(   R<   R   R[  RY  R\  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_SeqFormula  s    		0	#%!
s   , c         C  s   t  S(   N(   R   (   R2   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyR3     R4   c   	      C  s  d  } y x | D]{ } |  j |  } | |  rF t | j     } n  | d  k r[ | } q t t j | |    } t t j | |    } q W| d  k r t d  } n  Wn t k
 red  } x | D]{ } |  j |  } | |  r t | j     } n  | d  k r| } q t t j | |    } t t j | |    } q W| d  k rft d  } qfn Xt | j | | d t   } | S(   NR4   t   ifascii_nougly(	   R   R@   R   RJ   R   R   t   AttributeErrorRC   R>   (	   R<   t   seqRK   RZ   R2  R*  R   RI  RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyRH     s4    		c         C  st   d  } xM | D]E } | d  k r( | } q t | j |    } t | j |    } q W| d  k rl t d  S| Sd  S(   NR4   (   R   R   RZ   (   R<   R2  RI   RL   R   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyRl    s    	
c         C  s   |  j  | d d  S(   NR'  R(  (   RH   (   R<   R   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyR    s    c         C  sj   t  |  d k rS t t j |  j | d  d    } t | j d d d t   S|  j | d d  Sd  S(   Ni   i    R   RV   RW   R  (   R   R   R   R   R@   RJ   R>   RH   (   R<   R  t   ptuple(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_tuple  s    %c         C  s   |  j  |  S(   N(   R  (   R<   RB   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Tuple  s    c         C  s   t  | j   d t } g  } xX | D]P } |  j |  } |  j | |  } t t j | d |    } | j |  q% W|  j | d d  S(   NR   s   : R  RT  (	   R   t   keysR   R@   R   R   R   R   RH   (   R<   R   R  Rg  R}   R  t   VR   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_dict  s    c         C  s   |  j  |  S(   N(   R  (   R<   R   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Dict  s    c         C  sS   | s t  d  St | d t } |  j |  } t  | j d d d t   } | S(   Ns   set()R   R  RT  R  (   R   R   R   RH   RJ   R>   (   R<   R   Rg  t   pretty(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt
   _print_set!  s    
c         C  s   | s t  d  St | d t } |  j |  } t  | j d d d t   } t  | j d d d t   } t  t j t |  j	 |    } | S(   Ns   frozenset()R   R  RT  R  RV   RW   (
   R   R   R   RH   RJ   R>   R   R   t   typeRj   (   R<   R   Rg  R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_frozenset)  s    
!c         C  s   t  t |   S(   N(   R   R   (   R<   t   ring(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_PolyRing3  s    c         C  s   t  t |   S(   N(   R   R   (   R<   t   field(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_FracField6  s    c         C  s   t  t |   S(   N(   R   R   (   R<   t   elm(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_FreeGroupElement9  s    c         C  s   t  t |   S(   N(   R   R   (   R<   t   poly(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_PolyElement<  s    c         C  s   t  t |   S(   N(   R   R   (   R<   t   frac(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_FracElement?  s    c         C  s9   | j  r" |  j | j   j    S|  j | j    Sd  S(   N(   t
   is_aliasedR@   t   as_polyRx  (   R<   RB   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_AlgebraicNumberB  s    	c         C  sU   |  j  | j d d | j g } t |  j |  j     } t | j d    } | S(   NR%   t   lext   CRootOf(   R$  RB   R  R   RH   RJ   RK   (   R<   RB   RI   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_ComplexRootOfH  s    !c         C  s}   |  j  | j d d g } | j t j k	 rI | j |  j | j   n  t |  j |  j	     } t | j
 d    } | S(   NR%   R  t   RootSum(   R$  RB   t   funR   t   IdentityFunctionR   R@   R   RH   RJ   RK   (   R<   RB   RI   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_RootSumN  s    c         C  s/   |  j  r d } n d } t t | | j   S(   Nu   ℤ_%ds   GF(%d)(   R?   R   R   t   mod(   R<   RB   t   form(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_FiniteFieldY  s    		c         C  s!   |  j  r t d  St d  Sd  S(   Nu   ℤt   ZZ(   R?   R   (   R<   RB   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_IntegerRinga  s    	
c         C  s!   |  j  r t d  St d  Sd  S(   Nu   ℚt   QQ(   R?   R   (   R<   RB   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_RationalFieldg  s    	
c         C  sS   |  j  r d } n d } | j r+ t |  S|  j t | d t | j    Sd  S(   Nu   ℝt   RRR   (   R?   t   has_default_precisionR   R@   R   R   t	   precision(   R<   R   t   prefix(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_RealFieldm  s    			
c         C  sS   |  j  r d } n d } | j r+ t |  S|  j t | d t | j    Sd  S(   Nu   ℂt   CCR   (   R?   R  R   R@   R   R   R  (   R<   R   R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_ComplexFieldx  s    			
c         C  s   t  | j  } | j j sR t t d  j |  j | j     } | j |  n  |  j | d d  } t | j	 |  j | j
     } | S(   Ns   order=R'  R(  (   R   t   symbolsR%   t
   is_defaultR   RZ   R@   R   RH   RK   R   (   R<   RB   RI   R%   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_PolynomialRing  s    '!c         C  s   t  | j  } | j j sR t t d  j |  j | j     } | j |  n  |  j | d d  } t | j	 |  j | j
     } | S(   Ns   order=RV   RW   (   R   R  R%   R  R   RZ   R@   R   RH   RK   R   (   R<   RB   RI   R%   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_FractionField  s    '!c         C  s~   | j  } t | j  t | j  k rD | d t | j  f } n  |  j | d d  } t | j |  j | j     } | S(   Ns   order=R'  R(  (	   R  R   R%   t   default_orderRH   R   RK   R@   R   (   R<   RB   t   gRL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_PolynomialRingBase  s    	!c   	      C  s  g  | j  D] } |  j | d | j ^ q
 } t |  j d |  j d d d d    } g  | j D] } |  j |  ^ qb } t t d  j |  j | j	     } t t d  j |  j | j     } |  j d | g | | | g  } t | j     } t | j
 | j j    } | S(	   NR%   s   , RK   R'  RZ   R(  s   domain=s   order=(   t   exprsR$  R%   R   Rl  RJ   t   gensR@   RZ   R   RK   Ri   Rj   (	   R<   t   basisR   R  t   genR  R   R%   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_GroebnerBasis  s    +*%$$#c         C  s  |  j  | j  } t | j     } | j   d k rB | j   n d } t t d |  d | j } t | j |    } | j } | j   d | _ t | j |  j	 g  t
 | j | j  D]D } |  j	 |  j  | d  t d  |  j  | d  f d d ^ q     } | | _ | S(	   Ni   i   R   R{   i    s   ==R2  R4   (   R@   RB   R   RJ   R   R   R   R{   RZ   RH   Rs  R  R  R   (   R<   RD   RL   R   t   rvertR  Rr  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Subs  s    $	f	c   	      C  s   t  d  } |  j | j d  } t  d | j    } t  | j |    } t  | j |    } t | j  d k r{ | S| j \ } } | } t  |  j | g  j     } t  d t  j	 t
 j | |   } | | _ | | _ | S(   NR  i    Rw   i   R   (   R   R@   RI   Ry   R   RZ   R   RH   RJ   R   R   R   R6  R7  (	   R<   RD   RL   R   R   R>  R2   R6  R7  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_euler  s    		c         C  sf   t  d  } |  j | j d  } t  d | j    } t  | j |    } t  | j |    } | S(   Nt   Ci    Rw   (   R   R@   RI   Ry   R   RZ   (   R<   RD   RL   R   R   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_catalan  s    c         C  sf   t  d  } |  j | j d  } t  d | j    } t  | j |    } t  | j |    } | S(   NRF  i    Rw   (   R   R@   RI   Ry   R   RZ   (   R<   RD   RL   R   R   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_bernoulli  s    c         C  sf   t  d  } |  j | j d  } t  d | j    } t  | j |    } t  | j |    } | S(   Nt   Li    Rw   (   R   R@   RI   Ry   R   RZ   (   R<   RD   RL   R   R   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_lucas  s    c         C  sf   t  d  } |  j | j d  } t  d | j    } t  | j |    } t  | j |    } | S(   NR  i    Rw   (   R   R@   RI   Ry   R   RZ   (   R<   RD   RL   R   R   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_fibonacci  s    c         C  sf   t  d  } |  j | j d  } t  d | j    } t  | j |    } t  | j |    } | S(   NR@  i    Rw   (   R   R@   RI   Ry   R   RZ   (   R<   RD   RL   R   R   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_tribonacci  s    c         C  s   |  j  | j d  } t | j t d     } t | j |  j  | j d     } |  j rt t t d   } n t d  } | } t | j d | j      } t | j d | j      } t d t j	 | j
 |   S(   Ni    R   i   R  R   Rw   R   (   R@   RI   R   RZ   R?   R   R   RK   Ry   t   POWR   (   R<   RD   RL   RR  R  R  R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_KroneckerDelta	  s    %	c         C  s  t  | d  rF |  j d  } t | j |  j | j       } | St  | d  r |  j d  } t | j |  j | j     } t | j |  j d     } t | j |  j | j     } | St  | d  r|  j d  } t | j |  j | j     } | S|  j d   Sd  S(   Nt
   as_booleans   Domain: RP  s    in R  s
   Domain on (   t   hasattrR@   R   RZ   R  R  RP  R   (   R<   R   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_RandomDomain	  s    $!!!c         C  sS   y, | j  d  k	 r+ |  j | j  j |   SWn t k
 r? n X|  j t |   S(   N(   R  R   R@   t   to_sympyR   t   repr(   R<   R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt
   _print_DMP#	  s    c         C  s   |  j  |  S(   N(   R  (   R<   R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt
   _print_DMF,	  s    c         C  s   |  j  t | j   S(   N(   R@   R   RN   (   R<   t   object(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Object/	  s    c         C  sP   t  d  } |  j | j  } |  j | j  } | j | |  d } t |  S(   Ns   -->i    (   R   R@   R   t   codomainRZ   R   (   R<   t   morphismR  R   R  t   tail(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Morphism2	  s
    c         C  sA   |  j  t | j   } |  j |  } t | j d |  d  S(   NR:  i    (   R@   R   RN   R  R   RZ   (   R<   R  R  t   pretty_morphism(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_NamedMorphism;	  s    c         C  s/   d d l  m } |  j | | j | j d   S(   Ni(   t   NamedMorphismt   id(   t   sympy.categoriesR  R  R   R  (   R<   R  R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_IdentityMorphism@	  s    c         C  s   t  d  } g  | j D] } t | j  ^ q } | j   | j |  d } |  j |  } |  j |  } t | j	 |  d  S(   Nt   .R:  i    (
   R   Rh  R   RN   t   reverseRl  R@   R  R   RZ   (   R<   R  t   circlet	   componentt   component_names_listt   component_namesR  R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_CompositeMorphismE	  s    "
c         C  s   |  j  t | j   S(   N(   R@   R   RN   (   R<   t   category(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_CategoryT	  s    c         C  s}   | j  s |  j t j  S|  j | j   } | j ro d t d  } |  j | j  d } | j | |  } n  t | d  S(   Ns    %s s   ==>i    (   t   premisesR@   R   t   EmptySett   conclusionsR   RZ   R   (   R<   t   diagramt   pretty_resultt   results_arrowt   pretty_conclusions(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_DiagramW	  s    		c         C  s   d d l  m } d d l m } | g  t | j  D]N } g  t | j  D]2 } | | | f ro | | | f n	 | d  ^ qI ^ q3  } |  j |  S(   Ni(   t   Matrix(   R   Rw   (   R3  R  R   R   R   R   Ry   R&  (   R<   t   gridR  R   R/   R1   t   matrix(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_DiagramGridf	  s
    dc         C  s   |  j  | d d  S(   NR'  R(  (   RH   (   R<   R>  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_FreeModuleElementn	  s    c         C  s   |  j  | j d d  S(   NR   R   (   RH   R  (   R<   R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_SubModuler	  s    c         C  s    |  j  | j  |  j  | j  S(   N(   R@   R  R~  (   R<   R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_FreeModuleu	  s    c         C  s/   |  j  g  | j j D] \ } | ^ q d d  S(   NR   R   (   RH   t   _moduleR  (   R<   R  R2   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_ModuleImplementedIdealx	  s    c         C  s    |  j  | j  |  j  | j  S(   N(   R@   R  t
   base_ideal(   R<   t   R(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_QuotientRing{	  s    c         C  s#   |  j  | j  |  j  | j j  S(   N(   R@   t   dataR  R  (   R<   R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_QuotientRingElement~	  s    c         C  s#   |  j  | j  |  j  | j j  S(   N(   R@   R  t   modulet   killed_module(   R<   R>  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_QuotientModuleElement	  s    c         C  s    |  j  | j  |  j  | j  S(   N(   R@   RU  R  (   R<   R  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_QuotientModule	  s    c         C  so   |  j  | j    } | j   d | _ t | j d |  j  | j  d t d d  |  j  | j     } | S(   Ni   s    : s    %s> R   (	   R@   t   _sympy_matrixR   R{   R   RZ   R   R   R  (   R<   R   R  RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_MatrixHomomorphism	  s
    (c         C  s&   | j  j | j } |  j t |   S(   N(   t
   _coord_syst   _namest   _indexR@   R   (   R<   R  t   string(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_BaseScalarField	  s    c         C  s4   t  d  d | j j | j } |  j t |   S(   Ns   PARTIAL DIFFERENTIALR   (   R    R  R  R  R@   R   (   R<   R  R   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_BaseVectorField	  s    !c         C  sz   | j  } t | d  rB | j j | j } |  j d t |   S|  j |  } t | j     } t | j	 d    Sd  S(   NR  u   ⅆ u   ⅆ(
   t   _form_fieldR  R  R  R  R@   R   R   RJ   RK   (   R<   R  R  R  RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Differential	  s    	c         C  sN   |  j  | j d  } t | j d | j j    } t | j d    } | S(   Ni    s   %s(RW   (   R@   RI   R   RK   Ri   Rj   RZ   (   R<   R  RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt	   _print_Tr	  s    c         C  sf   |  j  | j d  } t | j     } |  j rM t | j t d    } n t | j d    } | S(   Ni    t   nu(   R@   RI   R   RJ   R?   RK   R   (   R<   RD   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_primenu	  s    	c         C  sf   |  j  | j d  } t | j     } |  j rM t | j t d    } n t | j d    } | S(   Ni    t   Omega(   R@   RI   R   RJ   R?   RK   R   (   R<   RD   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_primeomega	  s    	c         C  s6   | j  j  d k r% |  j d  } | S|  j |  Sd  S(   Nt   degreeu   °(   RN   R@   R;   (   R<   RD   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_Quantity	  s    c         C  s`   t  d t | j  d  } |  j | j  } |  j | j  } t  t j | | |    } | S(   NRw   (   R   R   R   R@   R   R   R   R   (   R<   RD   R   R   R   RL   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   _print_AssignmentBase	  s
    N(   Rj   t
   __module__t   __doc__t   printmethodR   R>   t   _default_settingsR5   t   propertyR?   RC   RE   RF   RM   R   RQ   t   _print_RandomSymbolRS   RU   R]   Ra   Rb   Rc   Re   Rg   Rl   t   _print_Infinityt   _print_NegativeInfinityt   _print_EmptySett   _print_Naturalst   _print_Naturals0t   _print_Integerst   _print_ComplexesRo   Rt   Ru   Rv   R   R   R   R   R   R   R   R   R   R   R   R   R   t   _print_DeterminantR   R   R   R   R   R   R   R  R  R&  R)  t   _print_ImmutableMatrixt   _print_MatrixR,  R.  R0  R9  R?  RA  RC  RG  RK  RS  RT  RW  R[  R\  R_  R|  R  t   _print_ImmutableDenseNDimArrayt   _print_ImmutableSparseNDimArrayt   _print_MutableDenseNDimArrayt   _print_MutableSparseNDimArrayR  R  R  R  R  R  R  R  R  R  R  R  R  R  R   R  R  R  R  R  R  R  R  R  R  R  R  R  R   R  R  R  R
  R  R  R  R$  R0  R:  RC  RD  RG  RI  RL  RS  RU  R^  Rb  Rc  Rg  Rj  Rm  Rn  Rv  R~  R  R  R  R  R  R  t   _print_SeqPert   _print_SeqAddt   _print_SeqMulRH   Rl  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  t   _print_bellR  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R   R  R  R  R  R	  R  R  R  R  R  R  R  R  R  R  R  (    (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyR#       s  
																																				%			L	6	e		E																			d	#							8				0	T		
																				G	:	-						
																		)								
																																																			
						c         K  sH   t  |  } | j d } t |  } z | j |   SWd t |  Xd S(   s   Returns a string containing the prettified form of expr.

    For information on keyword arguments see pretty_print function.

    R(   N(   R#   R7   R   RC   (   RB   R=   R  R(   t   uflag(    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyR  	  s    R&   R-   R/   c
   
      C  sJ   t  t |  d | d | d | d | d | d | d | d | d	 |	 	 d
 S(   s  Prints expr in pretty form.

    pprint is just a shortcut for this function.

    Parameters
    ==========

    expr : expression
        The expression to print.

    wrap_line : bool, optional (default=True)
        Line wrapping enabled/disabled.

    num_columns : int or None, optional (default=None)
        Number of columns before line breaking (default to None which reads
        the terminal width), useful when using SymPy without terminal.

    use_unicode : bool or None, optional (default=None)
        Use unicode characters, such as the Greek letter pi instead of
        the string pi.

    full_prec : bool or string, optional (default="auto")
        Use full precision.

    order : bool or string, optional (default=None)
        Set to 'none' for long expressions if slow; default is None.

    use_unicode_sqrt_char : bool, optional (default=True)
        Use compact single-character square root symbol (when unambiguous).

    root_notation : bool, optional (default=True)
        Set to 'False' for printing exponents of the form 1/n in fractional form.
        By default exponent is printed in root form.

    mat_symbol_style : string, optional (default="plain")
        Set to "bold" for printing MatrixSymbols using a bold mathematical symbol face.
        By default the standard face is used.

    imaginary_unit : string, optional (default="i")
        Letter to use for imaginary unit when use_unicode is True.
        Can be "i" (default) or "j".
    R)   R*   R(   R'   R%   R+   R,   R.   R0   N(   t   printR  (
   RB   R)   R*   R(   R'   R%   R+   R,   R.   R0   (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   pretty_print	  s
    -c         K  s\   d d l  m } d d l m } d | k r9 d | d <n  | t |  |  j |     d S(   s  Prints expr using the pager, in pretty form.

    This invokes a pager command using pydoc. Lines are not wrapped
    automatically. This routine is meant to be used with a pager that allows
    sideways scrolling, like ``less -S``.

    Parameters are the same as for ``pretty_print``. If you wish to wrap lines,
    pass ``num_columns=None`` to auto-detect the width of the terminal.

    i(   t   pager(   t   getpreferredencodingR*   i  N(   t   pydocR;  t   localeR<  R  t   encode(   RB   R=   R;  R<  (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   pager_print
  s
    (@   t
   __future__R    R   R  t
   sympy.coreR   t   sympy.core.compatibilityR   R   t   sympy.core.containersR   t   sympy.core.functionR   t   sympy.core.mulR   t   sympy.core.numbersR   t   sympy.core.powerR	   t   sympy.core.relationalR
   t   sympy.core.symbolR   t   sympy.core.sympifyR   t   sympy.printing.conventionsR   t   sympy.printing.precedenceR   R   R   t   sympy.printing.printerR   t   sympy.printing.strR   t   sympy.utilitiesR   t   sympy.utilities.iterablesR   t    sympy.printing.pretty.stringpictR   R   t&   sympy.printing.pretty.pretty_symbologyR   R   R   R   R   R   R   R   R   R    R!   R"   t   pprint_use_unicodet   pprint_try_use_unicodeR#   R  R>   R   R:  t   pprintR@  (    (    (    s;   lib/python2.7/site-packages/sympy/printing/pretty/pretty.pyt   <module>   sJ   R         			1