
~9\c           @  s   d  Z  d d l m Z m Z d d l m Z m Z 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 m Z d d	 l m Z m Z d d
 l m Z d e f d     YZ d   Z d e f d     YZ d   Z d S(   sI   
A Printer for generating readable representation of most sympy classes.
i(   t   print_functiont   division(   t   St   Rationalt   Powt   Basict   Mul(   t   _keep_coeff(   t   string_typesi   (   t   Printer(   t
   precedencet
   PRECEDENCE(   t   prec_to_dpst   to_str(   t   default_sort_keyt
   StrPrinterc           B  s  e  Z d  Z i d d 6d d 6e d 6e d 6Z e   Z e d  Z d d  Z	 d	   Z
 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( d(   Z) d)   Z* d*   Z+ d+   Z, d,   Z- d-   Z. e. Z/ Z0 Z1 Z2 Z3 Z4 Z5 Z6 d.   Z7 d/   Z8 d0   Z9 d1   Z: d2   Z; d3   Z< d4   Z= d5   Z> d6   Z? d7   Z@ d8   ZA d9   ZB d:   ZC d;   ZD d<   ZE d=   ZF d>   ZG d?   ZH d@   ZI dA   ZJ dB   ZK dC   ZL dD   ZM dE   ZN dF   ZO dG   ZP dH   ZQ dI   ZR dJ   ZS dK   ZT e dL  ZU dM   ZV dN   ZW dO   ZX dP   ZY dQ   ZZ dR   Z[ dS   Z\ dT   Z] dU   Z^ dV   Z_ dW   Z` dX   Za dY   Zb dZ   Zc d[   Zd d\   Ze d]   Zf d^   Zg d_   Zh d`   Zi da   Zj db   Zk dc   Zl dd   Z/ de   Zm df   Zn en Zo en Zp dg   Zq dh   Zr di   Zs dj   Zt 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   Z dx   Z dy   Z dz   Z d{   Z d|   Z d}   Z d~   Z d   Z d   Z RS(   t	   _sympystrt   ordert   autot	   full_prect   sympy_integerst   abbrevc         C  sM   t  |  | k  s+ | r< t  |  | k r< d |  j |  S|  j |  Sd  S(   Ns   (%s)(   R
   t   _print(   t   selft   itemt   levelt   strict(    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   parenthesize   s    +i    c         C  s,   | j  g  | D] } |  j | |  ^ q  S(   N(   t   joinR   (   R   t   argst   sepR   R   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt	   stringify#   s    c         C  s:   t  | t  r | St  | t  r, t |  St |  Sd  S(   N(   t
   isinstanceR   R   t   reprt   str(   R   t   expr(    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   emptyPrinter&   s
    
c   	      C  s  |  j  d k r! t | j  } n |  j | d | } t |  } g  } x | D]| } |  j |  } | j d  r d } | d } n d } t |  | k  r | j | d | g  qO | j | | g  qO W| j d  } | d k r d } n  | d	 j	 |  S(
   Nt   noneR   t   -i   t   +s   (%s)i    t    t    (
   R   t   listR   t   _as_ordered_termsR
   R   t
   startswitht   extendt   popR   (	   R   R#   R   t   termst   PRECt   lt   termt   tt   sign(    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt
   _print_Add.   s$    	c         C  s   d S(   Nt   True(    (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_BooleanTrueF   s    c         C  s   d S(   Nt   False(    (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_BooleanFalseI   s    c         C  s   d |  j  | j d t d  S(   Ns   ~%si    t   Not(   R   R   R   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt
   _print_NotL   s    c         C  s   |  j  | j d t d  S(   Ns    & t
   BitwiseAnd(   R   R   R   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt
   _print_AndO   s    c         C  s   |  j  | j d t d  S(   Ns    | t	   BitwiseOr(   R   R   R   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt	   _print_OrR   s    c         C  s&   d |  j  | j  |  j  | j  f S(   Ns   %s(%s)(   R   t   funct   arg(   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_AppliedPredicateU   s    c         C  s@   g  | j  D] } |  j |  ^ q
 } | j j d d j |  S(   Ns   (%s)s   , (   R   R   t	   __class__t   __name__R   (   R   R#   t   oR1   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_BasicX   s    %c         C  s9   | j  j d k r) |  j | j  d  n  |  j | j   S(   Ni   i    (   i   i   (   i    i    (   t   blockst   shapeR   (   R   t   B(    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_BlockMatrix\   s    c         C  s   d S(   Nt   Catalan(    (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Catalana   s    c         C  s   d S(   Nt   zoo(    (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_ComplexInfinityd   s    c         C  so   t  g  | j | j f D] } |  j |  ^ q  } | j t j k rN d | S| |  j | j  f 7} d | S(   Ns   ConditionSet(%s, %s)s   ConditionSet(%s, %s, %s)(   t   tuplet   symt	   conditionR   t   base_setR   t   UniversalSet(   R   t   st   iR   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_ConditionSetg   s
    4c           si   | j  } g  | j D]& } | d d k r3 | d n | ^ q } d d j t   f d   | g |   S(   Ni   i    s   Derivative(%s)s   , c           s     j  |   S(   N(   R   (   RA   (   R   (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   <lambda>q   R(   (   R#   t   variable_countR   t   map(   R   R#   t   dexprRU   t   dvars(    (   R   s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Derivativen   s    	6c         C  ss   t  | j   d t } g  } xA | D]9 } d |  j |  |  j | |  f } | j |  q% Wd d j |  S(   Nt   keys   %s: %ss   {%s}s   , (   t   sortedt   keysR   R   t   appendR   (   R   t   dR_   t   itemsR]   R   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_dicts   s    &c         C  s   |  j  |  S(   N(   Rc   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Dict}   s    c         C  su   t  | d  r& d |  j | j    St  | d  r] d |  j | j  d |  j | j  Sd |  j | j  Sd  S(   Nt
   as_booleans   Domain: t   sets    in s
   Domain on (   t   hasattrR   Re   t   symbolsRf   (   R   Ra   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_RandomDomain   s    c         C  s   d | j  S(   Nt   _(   t   name(   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Dummy   s    c         C  s   d S(   Nt
   EulerGamma(    (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_EulerGamma   s    c         C  s   d S(   Nt   E(    (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Exp1   s    c         C  s&   d |  j  | j  |  j  | j  f S(   Ns   (%s, %s)(   R   R#   t   cond(   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_ExprCondPair   s    c           sk   t  | d t } t |  d k r@ | d  d g | d } n | } d d j   f d   | D  d	 S(
   NR]   i
   i   s   ...it   {s   , c         3  s   |  ] }   j  |  Vq d  S(   N(   R   (   t   .0t   el(   R   (    s1   lib/python2.7/site-packages/sympy/printing/str.pys	   <genexpr>   s    t   }(   R^   R   t   lenR   (   R   RT   t   printset(    (   R   s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_FiniteSet   s
    c         C  s!   | j  j d |  j | j d  S(   Ns   (%s)s   , (   R@   RD   R   R   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Function   s    c         C  s
   t  |  S(   N(   R"   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_GeometryEntity   s    c         C  s   d S(   Nt   GoldenRatio(    (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_GoldenRatio   s    c         C  s   d S(   Nt   TribonacciConstant(    (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_TribonacciConstant   s    c         C  s   d S(   Nt   I(    (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_ImaginaryUnit   s    c         C  s   d S(   Nt   oo(    (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Infinity   s    c           sT     f d   } d j  g  | j D] } | |  ^ q  } d   j | j  | f S(   Nc           sI   t  |   d k r#   j |  d  S  j |  d f t |  d   Sd  S(   Ni   i    (   Rw   R   RO   (   t   xab(   R   (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt
   _xab_tostr   s    s   , s   Integral(%s, %s)(   R   t   limitsR   t   function(   R   R#   R   R1   t   L(    (   R   s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Integral   s    +c         C  s   d } | j  \ } } } } | j r6 | j r6 d } ns | j rO | rO d } nZ | j rh | rh d } nA | r | r d } n* | r | r d } n | r d } n d } | j i | d 6| d 6| d 6  S(	   Ns   Interval{m}({a}, {b})R(   s   .opens   .Lopens   .Ropent   at   bt   m(   R   t   is_infinitet   format(   R   RU   t   finR   R   R1   t   rR   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Interval   s     						c         C  s&   d |  j  | j  |  j  | j  f S(   Ns   AccumBounds(%s, %s)(   R   t   mint   max(   R   RU   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_AccumulationBounds   s    c         C  s   d |  j  | j t d  S(   Ns   %s**(-1)R   (   R   RA   R   (   R   R   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Inverse   s    c           s   | j  \ } } t |  d k rH d   j | j  d    j |  f Sd j   f d   | D  } d |   j |  f Sd  S(   Ni   s   Lambda(%s, %s)i    s   , c         3  s   |  ] }   j  |  Vq d  S(   N(   R   (   Rt   RA   (   R   (    s1   lib/python2.7/site-packages/sympy/printing/str.pys	   <genexpr>   s    s   Lambda((%s), %s)(   R   Rw   R   R   (   R   t   objR   R#   t
   arg_string(    (   R   s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Lambda   s
    'c           s@   t  | j d t } | j j d d j   f d   | D  S(   NR]   s   (%s)s   , c         3  s   |  ] }   j  |  Vq d  S(   N(   R   (   Rt   RA   (   R   (    s1   lib/python2.7/site-packages/sympy/printing/str.pys	   <genexpr>   s    (   R^   R   R   R@   RD   R   (   R   R#   R   (    (   R   s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_LatticeOp   s    c         C  st   | j  \ } } } } t |  d k rJ d t t |  j | | | f   Sd t t |  j | | | | f   Sd  S(   NR'   s   Limit(%s, %s, %s)s   Limit(%s, %s, %s, dir='%s')(   R   R"   RO   RY   R   (   R   R#   t   et   zt   z0t   dir(    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Limit   s
    #c         C  s   d |  j  | d  S(   Ns   [%s]s   , (   R   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_list   s    c         C  s   | j  |   S(   N(   t   _format_str(   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_MatrixBase   s    c         C  sC   |  j  | j t d d t d |  j | j  |  j | j  f S(   Nt   AtomR   s   [%s, %s](   R   t   parentR   R6   R   RU   t   j(   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_MatrixElement   s    c           sE     f d   }   j  | j  d | | j  d | | j  d S(   Nc           s   t  |   }  |  d d k r& |  d =n  |  d |  d d k rH |  d =n  |  d d k re d |  d <n  d j t   f d   |    S(   Ni   i   i    R(   t   :c           s     j  |   S(   N(   R   (   RA   (   R   (    s1   lib/python2.7/site-packages/sympy/printing/str.pyRW     R(   (   R*   R   RY   (   t   x(   R   (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   strslice   s    

t   [s   , t   ](   R   R   t   rowslicet   colslice(   R   R#   R   (    (   R   s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_MatrixSlice   s    c         C  s   | j  S(   N(   Rk   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_DeferredVector  s    c         C  s  t  |  } | j   \ } } | d k  rC t | |  } d } n d } g  } g  } g  } |  j d k ry | j   }	 n t j |  }	 xC|	 D];}
 |
 j rR|
 j rR|
 j	 j
 rR|
 j	 j rR|
 j	 d k r | j t |
 j |
 j	 d t  qt |
 j d j  d k r2t |
 j t  r2| j |
  n  | j t |
 j |
 j	   q |
 j
 r|
 t j k	 r|
 j d k r| j t |
 j   n  |
 j d k r| j t |
 j   qq | j |
  q W| pt j g } g  | D] } |  j | | d	 t ^ q} g  | D] } |  j | | d	 t ^ q} xJ | D]B }
 |
 j | k r=d
 | | j |
 j  | | j |
 j  <q=q=W| s| d j |  St |  d k r| d j |  d | d S| d j |  d d j |  Sd  S(   Ni    R&   R(   t   oldR%   it   evaluatei   R   s   (%s)t   *t   /s   /(%s)(   R   R%   (   R
   t   as_coeff_MulR   R   t   as_ordered_factorsR   t	   make_argst   is_commutativet   is_Powt   expt   is_Rationalt   is_negativeR`   R   t   baseR8   Rw   R   R    R   t   Infinityt   pR   t   qt   OneR   t   indexR   (   R   R#   t   prect   cR   R4   R   R   t	   pow_parenR   R   R   t   a_strt   b_str(    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt
   _print_Mul  sH    	*&. ++1c         C  s   | j    \ } } | j r@ | d k  r@ t | |  } d } n d } | d j g  | j D] } |  j | t |   ^ qY  S(   Ni    R&   R(   R   (   t   as_coeff_mmult	   is_numberR   R   R   R   R
   (   R   R#   R   R   R4   RA   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_MatMulC  s    		c         C  s5   d j  g  | j D] } |  j | t |   ^ q  S(   Ns   .*(   R   R   R   R
   (   R   R#   RA   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_HadamardProductO  s    	c         C  s   d S(   Nt   nan(    (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt
   _print_NaNS  s    c         C  s   d S(   Ns   -oo(    (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_NegativeInfinityV  s    c         C  s&   d |  j  | j  |  j  | j  f S(   Ns   Normal(%s, %s)(   R   t   mut   sigma(   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_NormalY  s    c         C  s   | j  s# t d   | j D  rs t | j   d k rL d |  j | j  Sd |  j | j f | j  d d  Sn d |  j | j d d  Sd  S(   Nc         s  s   |  ] } | t  j k Vq d  S(   N(   R   t   Zero(   Rt   R   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pys	   <genexpr>]  s    i   s   O(%s)s   , i    (   t	   variablest   allt   pointRw   R   R#   R   R   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Order\  s
    #'c         C  s
   | j    S(   N(   t   __str__(   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Ordinale  s    c         C  s
   | j    S(   N(   R   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Cycleh  s    c   	      C  sj  d d l  m } m } | j r | j s, d S| |  | j d  j   t d  } | j d  } | d k r d | | k r | | | |  } n  | j d d	  } | S| j	   } | s | j d
 k  r d |  j
 | j  Sd |  j
 | j  S|  j
 | j | d d   d |  j
 | j  } |  j
 | j  } } t |  t |  k  r^| } n  d | Sd  S(   Ni(   t   Permutationt   Cycles   ()i   R   t   (i    t   ,R(   i   s   Permutation(%s)s   Permutation([], size=%s)s	   , size=%s(   t    sympy.combinatorics.permutationsR   R   t   print_cyclict   sizet   __repr__Rw   t   rfindt   replacet   supportR   t
   array_form(	   R   R#   R   R   RT   t   lastt   trimt   uset   full(    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Permutationk  s(    		)2	c         C  sj   | j  \ } } } t | j  d k r> | d } | d } n  d |  j |  |  j |  |  j |  f S(   Ni   i    s   Subs(%s, %s, %s)(   R   Rw   R   R   (   R   R   R#   R   t   new(    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Subs  s    
c         C  s
   | j    S(   N(   R   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_TensorIndex  s    c         C  s
   | j    S(   N(   R   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_TensorHead  s    c         C  s
   | j    S(   N(   R   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Tensor  s    c         C  sH   | j    \ } } | d j g  | D] } |  j | t |   ^ q"  S(   NR   (   t!   _get_args_for_traditional_printerR   R   R
   (   R   R#   R4   R   RA   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_TensMul  s    	c         C  s
   | j    S(   N(   R   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_TensAdd  s    c         C  s:   g  | j  D] } d |  j |  ^ q
 } d d j |  S(   Ns       %ss   PermutationGroup([
%s])s   ,
(   R   R   R   (   R   R#   R   R   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_PermutationGroup  s    )c         C  sZ   d |  j  | j j d  |  j  | j j d  |  j  | j d  |  j  | j d  f S(   Ns   PDF(%s, (%s, %s, %s))i   i    (   R   t   pdfR   t   domain(   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt
   _print_PDF  s    ,c         C  s   d S(   Nt   pi(    (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt	   _print_Pi  s    c           sG   d d j  t   f d   | j     j | j    j | j  f S(   Ns+   Polynomial ring in %s over %s with %s orders   , c           s     j  |   S(   N(   R   (   t   rs(   R   (    s1   lib/python2.7/site-packages/sympy/printing/str.pyRW     R(   (   R   RY   Rh   R   R   R   (   R   t   ring(    (   R   s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_PolyRing  s    !c           sG   d d j  t   f d   | j     j | j    j | j  f S(   Ns3   Rational function field in %s over %s with %s orders   , c           s     j  |   S(   N(   R   (   t   fs(   R   (    s1   lib/python2.7/site-packages/sympy/printing/str.pyRW     R(   (   R   RY   Rh   R   R   R   (   R   t   field(    (   R   s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_FracField  s    !c         C  s
   | j    S(   N(   R   (   R   t   elm(    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_FreeGroupElement  s    c         C  s   | j  |  t d d  S(   Ns   %s**%sR   (   R"   R   (   R   t   poly(    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_PolyElement  s    c         C  sm   | j  d k r |  j | j  S|  j | j t d d t } |  j | j  t d d t } | d | Sd  S(   Ni   R   R   R   R   (   t   denomR   t   numerR   R   R6   (   R   t   fracR  R  (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_FracElement  s
    c         C  s  t  d d } g  g  | j D] } |  j | |  ^ q } } x| j   D]\ } } g  } xb t |  D]T \ }	 }
 |
 d k ri |
 d k r | j | |	  q | j | |	 d |
  qi qi Wd j |  } | j r| r d |  j |  d } qs|  j |  } nh | rd| t	 j
 k r9| j d | g  qJ n  | t	 j k rd| j d	 | g  qJ qdn  |  j |  } | s| } n | d | } | j d	  r| j d	 | d g  qJ | j d | g  qJ W| d d k r| j d  } | d	 k rd	 | d | d <qn  | j j d
 } d d l m } y | d | j   7} Wn% | k
 rr| d | j   7} n X| d 7} xt t |  D]f \ } } t |  d k r| d  d k r| t |  d d k r| d t |  d !| | <qqW| d j |  d j |  f S(   NR   i   i    s   **%dR   R   t   )R'   R&   s   (%s, %si(   t   PolynomialErrors   , modulus=%ss   , domain='%s'i   R)   s   , (   R&   R'   (   R   t   gensR   R/   t	   enumerateR`   R   t   is_AddR   R   R   R-   t   NegativeOneR,   R.   RC   RD   t   sympy.polys.polyerrorsR  t   get_modulust
   get_domainRw   (   R   R#   t	   ATOM_PRECRT   R/   R  t   monomt   coefft   s_monomRU   R   t   s_coefft   s_termt   modifierR   R  R   R   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Poly  sV    / 			
<"c           s    d j    f d   | j D  S(   Ns    x c         3  s   |  ] }   j  |  Vq d  S(   N(   R   (   Rt   Rf   (   R   (    s1   lib/python2.7/site-packages/sympy/printing/str.pys	   <genexpr>  s    (   R   t   sets(   R   R   (    (   R   s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_ProductSet  s    c         C  s9   | j  r" |  j | j   j    S|  j | j    Sd  S(   N(   t
   is_aliasedR   t   as_polyt   as_expr(   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_AlgebraicNumber  s    	c           st  t  |  } | j t j k r9 | r9 d   j | j  S| j r | j t j k r | r d t t   f d   t j	 | j f   S| j t j	 k r d   j t j	    j
 | j | d t f Sn    j
 | j | d t }   j d k rQ| j j rQ| j j d k rQ| j d  rQd	   j
 | j | d t | d d
 !f Sn  d	   j
 | j | d t | f S(   Ns   sqrt(%s)s   %s/sqrt(%s)c           s     j  |   S(   N(   R   (   RA   (   R   (    s1   lib/python2.7/site-packages/sympy/printing/str.pyRW     R(   s   %s/%sR   t
   _sympyrepri   s	   (Rationals   %s**%si(   R
   R   R   t   HalfR   R   R   RO   RY   R   R   R8   t   printmethodR   R   R,   (   R   R#   t   rationalR0   R   (    (   R   s1   lib/python2.7/site-packages/sympy/printing/str.pyt
   _print_Pow  s    	, --c         C  s   |  j  | j d  S(   Ni    (   R   R   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_UnevaluatedExpr&  s    c         C  sD   t  |  } d |  j | j | d t |  j | j | d t f S(   Ns   %s**%sR   (   R
   R   R   R8   R   (   R   R#   R0   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_MatPow)  s    c         C  s
   t  |  S(   N(   R"   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_ImmutableDenseNDimArray.  s    c         C  s
   t  |  S(   N(   R"   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_ImmutableSparseNDimArray1  s    c         C  s*   |  j  j d t  r d | St | j  S(   NR   s   S(%s)(   t	   _settingst   getR8   R"   R   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Integer4  s    c         C  s   d S(   Nt   Integers(    (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Integers9  s    c         C  s   d S(   Nt   Naturals(    (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Naturals<  s    c         C  s   d S(   Nt	   Naturals0(    (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Naturals0?  s    c         C  s   d S(   Nt   Reals(    (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_RealsB  s    c         C  s
   t  |  S(   N(   R"   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt
   _print_intE  s    c         C  s
   t  |  S(   N(   R"   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt
   _print_mpzH  s    c         C  s]   | j  d k r t | j  S|  j j d t  rE d | j | j  f Sd | j | j  f Sd  S(   Ni   R   s   S(%s)/%ss   %s/%s(   R   R"   R   R&  R'  R8   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_RationalK  s
    c         C  s4   | j  d k r t | j  Sd | j | j  f Sd  S(   Ni   s   %d/%d(   R   R"   R   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_PythonRationalS  s    c         C  s4   | j  d k r t | j  Sd | j | j  f Sd  S(   Ni   s   %s/%s(   t   denominatorR"   t	   numerator(   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_FractionY  s    c         C  s4   | j  d k r t | j  Sd | j | j  f Sd  S(   Ni   s   %s/%s(   R5  R"   R6  (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt
   _print_mpq_  s    c         C  s  | j  } | d k  r d } n t | j   } |  j d t k rI t } nA |  j d t k re t } n% |  j d d k r |  j d k } n  t | j | d | } | j d  r d | d	 } n  | j d
  r d | d } n  | j d  r | d } n  | S(   Ni   i    R   R   i   t   strip_zeross   -.0s   -0.i   s   .0s   0.i   R'   (	   t   _precR   R&  R6   R8   t   _print_levelt   mlib_to_strt   _mpf_R,   (   R   R#   R   t   dpst   stript   rv(    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Floate  s$    				c         C  s   i d d 6d d 6d d 6d d 6d	 d
 6d d 6d d 6d d 6} | j  | k r} d | | j  |  j | j  |  j | j  f Sd |  j | j t |   |  j j | j   p | j  |  j | j t |   f S(   Nt   Eqs   ==t   Nes   !=t
   Assignments   :=t   AddAugmentedAssignments   +=t   SubAugmentedAssignments   -=t   MulAugmentedAssignments   *=t   DivAugmentedAssignments   /=t   ModAugmentedAssignments   %=s
   %s(%s, %s)s   %s %s %s(   t   rel_opR   t   lhst   rhsR   R
   t   _relationalsR'  (   R   R#   t   charmap(    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Relational{  s    
c         C  s#   d |  j  | j d d | j f S(   Ns   CRootOf(%s, %d)R   t   lex(   R5   R#   R   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_ComplexRootOf  s    c         C  sZ   |  j  | j d d g } | j t j k	 rI | j |  j | j   n  d d j |  S(   NR   RP  s   RootSum(%s)s   , (   R5   R#   t   funR   t   IdentityFunctionR`   R   R   (   R   R#   R   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_RootSum  s    c   
      C  s   | j  j } g  | j D] } |  j | d | j ^ q } d d j |  } g  | j D] } |  j |  ^ qW } d |  j | j  } d |  j | j  } | g | | | g }	 d | d j |	  f S(   NR   s   [%s]s   , s   domain='%s's
   order='%s's   %s(%s)(	   RC   RD   t   exprsR5   R   R   R  R   R   (
   R   t   basist   clsRA   RU  t   genR  R   R   R   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_GroebnerBasis  s    .%c         C  s   d |  j  | d d  S(   Ns   Sample([%s])s   , i    (   R   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Sample  s    c           sC   t  | d t } d j   f d   | D  } | s; d Sd | S(   NR]   s   , c         3  s   |  ] }   j  |  Vq d  S(   N(   R   (   Rt   R   (   R   (    s1   lib/python2.7/site-packages/sympy/printing/str.pys	   <genexpr>  s    s   set()s   {%s}(   R^   R   R   (   R   RT   Rb   R   (    (   R   s1   lib/python2.7/site-packages/sympy/printing/str.pyt
   _print_set  s
    c         C  s   | s
 d Sd |  j  |  S(   Ns   frozenset()s   frozenset(%s)(   R[  (   R   RT   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_frozenset  s    c         C  s#   d d l  m } |  j | |   S(   Ni(   t   Matrix(   t   sympy.matricesR]  R   (   R   R#   R]  (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_SparseMatrix  s    c           sT     f d   } d j  g  | j D] } | |  ^ q  } d   j | j  | f S(   Nc           sI   t  |   d k r#   j |  d  S  j |  d f t |  d   Sd  S(   Ni   i    (   Rw   R   RO   (   R   (   R   (    s1   lib/python2.7/site-packages/sympy/printing/str.pyR     s    s   , s   Sum(%s, %s)(   R   R   R   R   (   R   R#   R   R1   R   (    (   R   s1   lib/python2.7/site-packages/sympy/printing/str.pyt
   _print_Sum  s    +c         C  s   | j  S(   N(   Rk   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Symbol  s    c         C  s   d S(   NR   (    (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Identity  s    c         C  s   d S(   Nt   0(    (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_ZeroMatrix  s    c         C  s   d | j  S(   Ns   Q.%s(   Rk   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Predicate  s    c         C  s
   t  |  S(   N(   R"   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt
   _print_str  s    c         C  s?   t  |  d k r' d |  j | d  Sd |  j | d  Sd  S(   Ni   s   (%s,)i    s   (%s)s   , (   Rw   R   R   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_tuple  s    c         C  s   |  j  |  S(   N(   Rg  (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Tuple  s    c         C  s   d |  j  | j t d  S(   Ns   %s.TR   (   R   RA   R   (   R   t   T(    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Transpose  s    c         C  s&   d |  j  | j  |  j  | j  f S(   Ns   Uniform(%s, %s)(   R   R   R   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Uniform  s    c         C  s0   d d j  g  | j D] } |  j |  ^ q  S(   Ns	   Union(%s)s   , (   R   R   R   (   R   R#   R   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Union  s    c           s    d j    f d   | j D  S(   Ns    \ c         3  s   |  ] }   j  |  Vq d  S(   N(   R   (   Rt   t   set_(   R   (    s1   lib/python2.7/site-packages/sympy/printing/str.pys	   <genexpr>  s    (   R   R   (   R   R#   (    (   R   s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Complement  s    c         C  s+   |  j  j d t  r  d | j Sd | j S(   NR   s   %s(   R&  R'  R8   R   Rk   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Quantity  s    c         C  s~   g  | j  D]" } |  j | t d d t ^ q
 } | d g g  t | d d  D] \ } } | d | ^ qP } d j |  S(   NR   R   i    i   t   ijkR   s    + (   R   R   R   R6   t   zipR   (   R   R#   RU   RT   R   R   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Quaternion  s    2?c         C  s
   t  |  S(   N(   R"   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Dimension  s    c         C  s   | j  d S(   NRj   (   Rk   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Wild  s    c         C  s   | j  d S(   NRj   (   Rk   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_WildFunction  s    c         C  s   |  j  j d t  r d Sd S(   NR   s   S(0)Rc  (   R&  R'  R8   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Zero   s    c         C  s   d d l  m } y, | j d  k	 r; |  j | j j |   SWn | k
 rO n X| j j } |  j | j  } |  j | j	  } |  j | j  } d | | | | f S(   Ni(   t   SympifyErrors   %s(%s, %s, %s)(
   t   sympy.core.sympifyRw  R   t   NoneR   t   to_sympyRC   RD   t   rept   dom(   R   R   Rw  RW  R{  R|  R   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt
   _print_DMP  s    c         C  s   |  j  |  S(   N(   R}  (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt
   _print_DMF  s    c         C  s   d | j  S(   Ns   Object("%s")(   Rk   (   R   R   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Object  s    c         C  s   d | j  S(   Ns   IdentityMorphism(%s)(   R   (   R   t   morphism(    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_IdentityMorphism  s    c         C  s   d | j  | j | j f S(   Ns   NamedMorphism(%s, %s, "%s")(   R   t   codomainRk   (   R   R  (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_NamedMorphism  s    c         C  s   d | j  S(   Ns   Category("%s")(   Rk   (   R   t   category(    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Category"  s    c         C  s   | j  j | j S(   N(   t
   _coord_syst   _namest   _index(   R   R   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_BaseScalarField%  s    c         C  s   d | j  j | j S(   Ns   e_%s(   R  R  R  (   R   R   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_BaseVectorField(  s    c         C  sB   | j  } t | d  r- d | j j | j Sd |  j |  Sd  S(   NR  s   d%ss   d(%s)(   t   _form_fieldRg   R  R  R  R   (   R   t   diffR   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   _print_Differential+  s    	c         C  s   d d |  j  | j d  f S(   Ns   %s(%s)t   Tri    (   R   R   (   R   R#   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt	   _print_Tr2  s    N(   RD   t
   __module__R  Ry  R8   t   _default_settingst   dictRM  R   R   R$   R5   R7   R9   R;   R=   R?   RB   RF   RJ   RL   RN   RV   R\   Rc   Rd   Ri   Rl   Rn   Rp   Rr   Ry   Rz   R{   R}   R   R   R   R   R   R   R   R   R   R   R   R   R_  t   _print_MutableSparseMatrixt   _print_ImmutableSparseMatrixt   _print_Matrixt   _print_DenseMatrixt   _print_MutableDenseMatrixt   _print_ImmutableMatrixt   _print_ImmutableDenseMatrixR   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*  R,  R.  R0  R1  R2  R3  R4  R7  R8  RA  RO  RQ  RT  RY  RZ  R[  R\  R`  Ra  t   _print_MatrixSymbolt   _print_RandomSymbolRb  Rd  Re  Rf  Rg  Rh  Rj  Rk  Rl  Rn  Ro  Rr  Rs  Rt  Ru  Rv  R}  R~  R  R  R  R  R  R  R  R  (    (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyR      s  
															
																								
"				8																									B																																																						c         K  s   t  |  } | j |   } | S(   sb  Returns the expression as a string.

    For large expressions where speed is a concern, use the setting
    order='none'. If abbrev=True setting is used then units are printed in
    abbreviated form.

    Examples
    ========

    >>> from sympy import symbols, Eq, sstr
    >>> a, b = symbols('a b')
    >>> sstr(Eq(a + b, 0))
    'Eq(a + b, 0)'
    (   R   t   doprint(   R#   t   settingsR   RT   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   sstr7  s    t   StrReprPrinterc           B  s   e  Z d  Z d   Z RS(   s   (internal) -- see sstrreprc         C  s
   t  |  S(   N(   R!   (   R   RT   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyRf  P  s    (   RD   R  t   __doc__Rf  (    (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyR  M  s   c         K  s   t  |  } | j |   } | S(   s   return expr in mixed str/repr form

       i.e. strings are returned in repr form with quotes, and everything else
       is returned in str form.

       This function could be useful for hooking into sys.displayhook
    (   R  R  (   R#   R  R   RT   (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   sstrreprT  s    	N(   R  t
   __future__R    R   t
   sympy.coreR   R   R   R   R   t   sympy.core.mulR   t   sympy.core.compatibilityR   t   printerR	   t   sympy.printing.precedenceR
   R   t   mpmath.libmpR   R   R<  t   sympy.utilitiesR   R   R  R  R  (    (    (    s1   lib/python2.7/site-packages/sympy/printing/str.pyt   <module>   s   (   (	