
    \h@                    v   S SK r S SKJr  S SKJr  S SKJr  S SKJr  S SK	J
r
  S SKJrJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJrJrJr  S SKJrJr  S SKJ r   S SK!J"r"  S SK#J$r$  S SK%J&r&J'r'  S SK(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r7  \/r8\2r9 " S S\5      r:\" \:5      S 5       r;S r<\<r=S r>g)    N)S)Add)Tuple)Function)Mul)NumberRational)Pow)default_sort_key)Symbol)SympifyError)requires_partial)
PRECEDENCE
precedenceprecedence_traditional)Printerprint_function)sstr)has_variety)sympy_deprecation_warning)
prettyForm
stringPict)hobjvobjxobjxsympretty_symbolpretty_atompretty_use_unicodegreek_unicodeUpretty_try_use_unicode	annotatedis_subscriptable_in_unicode
center_padrootc                   4   \ rS rSrSrSrSSSSSSSSSSS	.
rSS
 jrS r\	S 5       r
S rS rS rS rSS jr\rS rS rS rS rS rS rS rS rS r\r\r\r\r\r\r\r \r!\r"S r#S r$S r%S r&S r'S  r(S! r)SS" jr*S# r+S$ r,S% r-S& r.S' r/SS( jr0SS) jr1S* r2S+ r3S, r4S- r5S. r6S/ r7S0 r8S1 r9S2 r:S3 r;S4 r<S5 r=S6 r>SS7 jr?S8 r@S9 rAS: rBS; rCS< rDS= rES> rFS? rGS@ rHSA rISB rJSC rKSD rLSE rMSF rNSG rOSH rPSI rQSJ rRSK rSSL rTSM rUSN rVSO rWSP rXSQ rYSR rZSS r[ST r\SU r]SV r^0 4SW jr_SX r`SY raSZ rbS[ rcS\ rdS] reS^ rfS_ rgS` rhSSa jriSb rjSc rkSd rlSe rm  SSf jrnSg roSh rpSi rqSj rr   SSl jrsSm rt\	Sn 5       ruSo rvSp rwSq rxSr rySs rzSt r{Su r|Sv r}Sw r~Sx rSy rSz rS{ rS| rS} rS~ rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSS jrS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\r\r\rSSSkS S4S jrS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)PrettyPrinter   z?Printer, which converts an expression into 2D ASCII-art figure._prettyNautoTplaini)
order	full_precuse_unicode	wrap_linenum_columnsuse_unicode_sqrt_charroot_notationmat_symbol_styleimaginary_unitperm_cyclicc                 6   [         R                  " X5        [        U R                  S   [        5      (       d'  [        SR                  U R                  S   5      5      eU R                  S   S;  a'  [        SR                  U R                  S   5      5      eg )Nr6   z&'imaginary_unit' must a string, not {})r-   jz4'imaginary_unit' must be either 'i' or 'j', not '{}')r   __init__
isinstance	_settingsstr	TypeErrorformat
ValueError)selfsettingss     T/var/www/auris/envauris/lib/python3.13/site-packages/sympy/printing/pretty/pretty.pyr:   PrettyPrinter.__init__/   s    ($..)9:C@@DKKDNN[kLlmnn^^,-Z?SZZ[_[i[ijz[{|}} @    c                 *    [        [        U5      5      $ Nr   r=   rA   exprs     rC   emptyPrinterPrettyPrinter.emptyPrinter7   s    #d)$$rE   c                 @    U R                   S   (       a  g[        5       $ )Nr0   T)r<   r   )rA   s    rC   _use_unicodePrettyPrinter._use_unicode:   s    >>-(%''rE   c                 X    U R                  U5      R                  " S0 U R                  D6$ )N )_printrenderr<   rI   s     rC   doprintPrettyPrinter.doprintA   s#    {{4 ''9$..99rE   c                     U$ rG   rQ   rA   es     rC   _print_stringPictPrettyPrinter._print_stringPictE   s    rE   c                     [        U5      $ rG   )r   rW   s     rC   _print_basestringPrettyPrinter._print_basestringH   s    !}rE   c                     [        U R                  UR                  5      R                  5       6 n[        UR	                  S5      6 nU$ )Natan2)r   
_print_seqargsparensleftrA   rX   pforms      rC   _print_atan2PrettyPrinter._print_atan2K   s:    DOOAFF3::<=EJJw/0rE   c                 D    [        UR                  U5      n[        U5      $ rG   )r   namer   )rA   rX   	bold_namesymbs       rC   _print_SymbolPrettyPrinter._print_SymbolP   s    QVVY/$rE   c                 D    U R                  XR                  S   S:H  5      $ )Nr5   bold)rl   r<   rW   s     rC   _print_MatrixSymbol!PrettyPrinter._print_MatrixSymbolT   s"    !!!^^4F%G6%QRRrE   c                 n    U R                   S   nUS:X  a  U R                  S:H  n[        [        XS95      $ )Nr/   r+      )r/   )r<   _print_levelr   r   )rA   rX   r/   s      rC   _print_FloatPrettyPrinter._print_FloatW   s:     NN;/	))Q.I$q677rE   c           	         UR                   nUR                  nU R                  U5      n[        UR	                  S5      6 n[        UR                  S5      6 n[        UR	                  U R                  [        S5      5      5      6 n[        UR	                  S5      6 n[        UR	                  U R                  U5      5      6 n[        UR	                  S5      6 nU$ )N()MULTIPLICATION SIGN_expr1_expr2rR   r   rc   rightr!   rA   rX   vec1vec2re   s        rC   _print_CrossPrettyPrinter._print_Cross_   s    xxxxD!EJJsO,EKK,-EJJt{{15J3K'LMNEJJsO,EJJt{{4'89:EJJsO,rE   c           	      X   UR                   nU R                  U5      n[        UR                  S5      6 n[        UR	                  S5      6 n[        UR                  U R                  [        S5      5      5      6 n[        UR                  U R                  [        S5      5      5      6 nU$ )Nrx   ry   rz   NABLA_exprrR   r   rc   r~   r!   rA   rX   vecre   s       rC   _print_CurlPrettyPrinter._print_Curlk   s    ggC EJJsO,EKK,-EJJt{{15J3K'LMNEJJt{{1W:'>?@rE   c           	      X   UR                   nU R                  U5      n[        UR                  S5      6 n[        UR	                  S5      6 n[        UR                  U R                  [        S5      5      5      6 n[        UR                  U R                  [        S5      5      5      6 nU$ )Nrx   ry   DOT OPERATORr   r   r   s       rC   _print_DivergencePrettyPrinter._print_Divergencet   s    ggC EJJsO,EKK,-EJJt{{1^3D'EFGEJJt{{1W:'>?@rE   c           	         UR                   nUR                  nU R                  U5      n[        UR	                  S5      6 n[        UR                  S5      6 n[        UR	                  U R                  [        S5      5      5      6 n[        UR	                  S5      6 n[        UR	                  U R                  U5      5      6 n[        UR	                  S5      6 nU$ )Nrx   ry   r   r{   r   s        rC   
_print_DotPrettyPrinter._print_Dot}   s    xxxxD!EJJsO,EKK,-EJJt{{1^3D'EFGEJJsO,EJJt{{4'89:EJJsO,rE   c           	          UR                   nU R                  U5      n[        UR                  S5      6 n[        UR	                  S5      6 n[        UR                  U R                  [        S5      5      5      6 nU$ )Nrx   ry   r   r   rA   rX   funcre   s       rC   _print_GradientPrettyPrinter._print_Gradient   sc    wwD!EJJsO,EKK,-EJJt{{1W:'>?@rE   c           	          UR                   nU R                  U5      n[        UR                  S5      6 n[        UR	                  S5      6 n[        UR                  U R                  [        S5      5      5      6 nU$ )Nrx   ry   	INCREMENTr   r   s       rC   _print_LaplacianPrettyPrinter._print_Laplacian   sc    wwD!EJJsO,EKK,-EJJt{{1[>'BCDrE   c                      [        [        UR                  R                  U S95      $ ! [         a    U R                  U5      s $ f = f)N)printer)r   r   	__class____name__KeyErrorrK   rW   s     rC   _print_AtomPrettyPrinter._print_Atom   sC    	(k!++*>*>MNN 	($$Q''	(s   &) AAc                 t    U R                   (       a  U R                  U5      $ SS/nU R                  USS5      $ )Nz-oooorx   ry   )rN   r   r`   )rA   rX   inf_lists      rC   _print_RealsPrettyPrinter._print_Reals   s8    ##A&&t}H??8S#66rE   c                    UR                   S   nU R                  U5      nUR                  (       a  UR                  (       d'  UR                  (       d  [        UR                  5       6 n[        UR                  S5      6 nU$ Nr   !)ra   rR   
is_Integeris_nonnegative	is_Symbolr   rb   rc   rA   rX   xre   s       rC   _print_subfactorial!PrettyPrinter._print_subfactorial   sX    FF1IA!"2"2q{{/EEJJsO,rE   c                    UR                   S   nU R                  U5      nUR                  (       a  UR                  (       d'  UR                  (       d  [        UR                  5       6 n[        UR                  S5      6 nU$ r   ra   rR   r   r   r   r   rb   r~   r   s       rC   _print_factorialPrettyPrinter._print_factorial   sY    FF1IA!"2"2q{{/EEKK,-rE   c                    UR                   S   nU R                  U5      nUR                  (       a  UR                  (       d'  UR                  (       d  [        UR                  5       6 n[        UR                  S5      6 nU$ )Nr   z!!r   r   s       rC   _print_factorial2PrettyPrinter._print_factorial2   sY    FF1IA!"2"2q{{/EEKK-.rE   c                 v   UR                   u  p#U R                  U5      nU R                  U5      nS[        UR                  5       UR                  5       5      -  n[	        UR                  U5      6 n[	        UR                  U5      6 n[	        UR                  SS5      6 nUR                  S-   S-  Ul        U$ )N rx   ry   rs      )ra   rR   maxwidthr   aboverb   baseline)rA   rX   nkn_pformk_pformbarre   s           rC   _print_binomialPrettyPrinter._print_binomial   s    vv++a.++a.#gmmow}}77GMM#./EKK01ELLc23..1,q0rE   c                    [        S[        UR                  5      -   S-   5      nU R                  UR                  5      nU R                  UR
                  5      n[        [        R                  " X2U5      S[         R                  06nU$ )Nr   binding)	r   r   rel_oprR   lhsrhsr   nextOPENrA   rX   oplrre   s         rC   _print_RelationalPrettyPrinter._print_Relational   se    d188n,s23KKKKJOOA15OzOrE   c                    SSK JnJn  U R                  (       a  UR                  S   nU R                  U5      n[        XB5      (       a  U R                  U[        S5      S9$ [        XC5      (       a  U R                  U[        S5      S9$ UR                  (       a'  UR                  (       d  [        UR                  5       6 n[        UR                  [        S5      5      6 $ U R                  U5      $ )Nr   )
EquivalentImpliesNotEquiv)altcharNotArrowNot)sympy.logic.boolalgr   r   rN   ra   rR   r;   _print_Equivalentr   _print_Implies
is_Booleanis_Notr   rb   rc   _print_Function)rA   rX   r   r   argre   s         rC   
_print_NotPrettyPrinter._print_Not   s    =&&)CKK$E#**--c;z;R-SS#''**3J8O*PP~~cjj"ELLN3uzz+e*<=>>''**rE   c                    UR                   nU(       a  [        UR                   [        S9nUS   nU R                  U5      nUR                  (       a'  UR
                  (       d  [        UR                  5       6 nUSS   H}  nU R                  U5      nUR                  (       a'  UR
                  (       d  [        UR                  5       6 n[        UR                  SU-  5      6 n[        UR                  U5      6 nM     U$ )Nkeyr   rs    %s )	ra   sortedr   rR   r   r   r   rb   r~   )rA   rX   charsortra   r   re   	pform_args           rC   __print_BooleanPrettyPrinter.__print_Boolean   s    vv!&&&67D1gC >>#**/E8CC(I~~cjj&	(8(8(:;	FTM :;EI 67E  rE   c                 z    U R                   (       a  U R                  U[        S5      5      $ U R                  USS9$ )NAndTr   rN   _PrettyPrinter__print_Booleanr   r   rW   s     rC   
_print_AndPrettyPrinter._print_And  9    '';u+=>>'''55rE   c                 z    U R                   (       a  U R                  U[        S5      5      $ U R                  USS9$ )NOrTr   r   rW   s     rC   	_print_OrPrettyPrinter._print_Or  s9    '';t+<=='''55rE   c                 z    U R                   (       a  U R                  U[        S5      5      $ U R                  USS9$ )NXorTr   r   rW   s     rC   
_print_XorPrettyPrinter._print_Xor  r   rE   c                 z    U R                   (       a  U R                  U[        S5      5      $ U R                  USS9$ )NNandTr   r   rW   s     rC   _print_NandPrettyPrinter._print_Nand  s9    '';v+>??'''55rE   c                 z    U R                   (       a  U R                  U[        S5      5      $ U R                  USS9$ )NNorTr   r   rW   s     rC   
_print_NorPrettyPrinter._print_Nor$  r   rE   c                     U R                   (       a"  U R                  X=(       d    [        S5      SS9$ U R                  U5      $ )NArrowFr   r   rA   rX   r   s      rC   r   PrettyPrinter._print_Implies*  s=    ''+Jk'6JQV'WW''**rE   c                     U R                   (       a#  U R                  X=(       d    [        S5      5      $ U R                  USS9$ )NEquivTr   r   r  s      rC   r   PrettyPrinter._print_Equivalent0  s<    ''+Jk'6JKK'''55rE   c           	          U R                  UR                  S   5      n[        UR                  [	        SUR                  5       5      5      6 $ )Nr   _)rR   ra   r   r   r   r   rd   s      rC   _print_conjugatePrettyPrinter._print_conjugate6  s9    AFF1I&EKKc5;;=)ABDDrE   c                 r    U R                  UR                  S   5      n[        UR                  SS5      6 nU$ )Nr   |)rR   ra   r   rb   rd   s      rC   
_print_AbsPrettyPrinter._print_Abs:  s2    AFF1I&ELLc23rE   c                     U R                   (       a8  U R                  UR                  S   5      n[        UR	                  SS5      6 nU$ U R                  U5      $ )Nr   lfloorrfloorrN   rR   ra   r   rb   r   rd   s      rC   _print_floorPrettyPrinter._print_floor?  sL    KKq	*EXx @AEL''**rE   c                     U R                   (       a8  U R                  UR                  S   5      n[        UR	                  SS5      6 nU$ U R                  U5      $ )Nr   lceilrceilr  rd   s      rC   _print_ceilingPrettyPrinter._print_ceilingG  sL    KKq	*EWg >?EL''**rE   c                    [        UR                  5      (       a  U R                  (       a  [        S5      nOSnS nSn[	        UR
                  5       H  u  pVU R                  U5      n[        UR                  U5      6 nXF-  nUR                  (       a  US:  a  U[        [        U5      5      -  nUc  UnMf  [        UR                  S5      6 n[        UR                  U5      6 nM     [        U R                  UR                  5      R                  5       S[        R                  06n	[        U5      n
US:  S:w  a  U
[        [        U5      5      -  n
[        U
R                  [        R                   U5      6 n
U
R"                  S-   U
l        [        [        R$                  " X5      6 n
[        R&                  U
l        U
$ )NPARTIAL DIFFERENTIALdr   rs   r   r   F)r   rJ   rN   r!   reversedvariable_countrR   r   rc   r   r=   r~   rb   FUNCbelowr   LINEr   r   MULr   )rA   derivderiv_symbolr   count_total_derivsymnumsdsfre   s              rC   _print_DerivativePrettyPrinter._print_DerivativeO  sp   EJJ''D,=,=34LL !5!56HCC AQVVL12B$NNaCH--y-, 7 &*kk%**&=&D&D&FHOOH <(!e+:c*;&<==EEKK
;<!+JOOE56"rE   c                    SSK JnJn  X" 5       :X  a!  [        S5      n[	        UR                  5       6 $ U" UR                  5       5      R                  nU/ :X  a4  U R                  UR                  S-
  5      n[	        UR                  5       6 $ [        S5      nU HM  nU R                  [        [        U5      5      R                  SS5      5      n[	        UR                  U5      6 nMO     U$ )Nr   PermutationCycle rs   ,) sympy.combinatorics.permutationsr5  r6  r   r   rb   listcyclic_formrR   sizer=   tuplereplacer~   )rA   dcr5  r6  cycdc_listr-   r   s           rC   _print_CyclePrettyPrinter._print_Cyclet  s    G=R.Cszz|,,bggi(44b=++bggk*Cszz|,,nACaM11#r:;Aciil+C  
rE   c                 h   SSK JnJn  UR                  nUb  [	        SU S3SSSS9  OU R
                  R                  S	S
5      nU(       a  U R                  U" U5      5      $ UR                  n[        [        [        U5      5      5      n[        S5      nS
n[        Xe5       Hv  u  pU R                  U	5      nU R                  U
5      n[        UR!                  U5      6 nU(       a  SnO[        UR#                  S5      6 n[        UR%                  U5      6 nMx     [        UR'                  5       6 $ )Nr   r4  zw
                Setting Permutation.print_cyclic is deprecated. Instead use
                init_printing(perm_cyclic=z).
                z1.6z#deprecated-permutation-print_cyclic   )deprecated_since_versionactive_deprecations_target
stacklevelr7   Tr7  Fr   )r9  r5  r6  print_cyclicr   r<   getrB  
array_formr:  rangelenr   ziprR   r   r&  rc   r~   rb   )rA   rJ   r5  r6  r7   lowerupperresultfirstur   s1s2cols                 rC   _print_Permutation PrettyPrinter._print_Permutation  s   G!.."%++6- 8 */+P ..,,]DAK$$U4[11U3u:&'B%DAQBQBbhhrl+C #((3-0c!23F & 6==?++rE   c                 h   UR                   nU R                  U5      nUR                  (       a  [        UR	                  5       6 nUnUR
                   HY  nU R                  US   5      nUR                  5       S:  a  [        UR	                  5       6 n[        UR                  SU5      6 nM[     SnS nUR
                   GH  n	UR                  5       n
U
S-   nU R                  (       + nU(       a  US-  n[        SU5      n[        U5      nUR                  X-
  S-  -   Ul        [        U	5      S:  Ga  [        U	5      S:X  a  [        S5      nU R                  U	S   5      n[        U	5      S:X  a(  U R                  U	S   5      nU R                  U	S   5      nU(       an  [        SSWR                  5       -
  5      n[        UR                  S	U-  5      6 n[        SS
WR                  5       -
  5      n[        UR                  S	U-  5      6 n[        UR                  W5      6 n[        UR!                  W5      6 nU(       d  [        UR                  S	5      6 nU(       a  UnSnGM  [        UR                  U5      6 nGM     [        UR                  U5      6 n[        R"                  Ul        U$ )Nr   rs   z dTr   intr7     r      F)functionrR   is_Addr   rb   limitsr   r~   heightrN   r   r   rM  r   rc   r   r&  r(  r   )rA   integralr0  prettyFr   r   	prettyArg	firsttermr.  limhH
ascii_modevintre   prettyAprettyBspcs                     rC   _print_IntegralPrettyPrinter._print_Integral  sU    ++a.88 '.."23G AAaD)I 1$&	(8(8(:;	ciii89C ! 	??C

AAA "...JQq>D t$E \\- EN 3x!| s8q=(nG"kk#a&1Gs8q="kk#a&1G"kk#a&1G aW]]_!45C(',,sSy*ABGaW]]_!45C('--c	*BCG"EKK$89"EKK$89"EKK$45!	u.] #` CHHQK("rE   c                 0   UR                   nU R                  U5      n[        SS5      n[        SS5      n[        SS5      nU R                  (       a  [        SS5      n[        SS5      nUR	                  5       nSnSn	Sn
UR
                   GHc  nU R                  U5      u  pUS-   S	-  S
-  S-
  nXE-   XNS-
  -  -   U-   U-   /n[        US-   5       H&  nUR                  SU-   SUS-
  -  -   U-   S-   5        M(     [        S5      n[        UR                  " U6 6 n[        XR	                  5       5      n	U(       a  UR	                  5       n
[        UR                  U5      6 n[        UR                  U5      6 nU(       a	  SUl        SnUR	                  5       n[        S5      n[        UR                  " S/US-
  -  6 6 n[        UR!                  U5      6 n[        UR!                  U5      6 nGMf     XS-  -   Ul        [        R"                  Ul        U$ )Nr  rs   r  -UpTackTr   r      r[  r   r7  F)termrR   r   rN   r`  r_  '_PrettyPrinter__print_SumProduct_LimitsrL  appendr   r   stackr   r   r&  r   r~   r(  r   )rA   rJ   r   pretty_funchorizontal_chr
corner_chrvertical_chrfunc_heightrR  	max_uppersign_heightre  pretty_lowerpretty_upperr   
sign_linesr  pretty_signr`  paddings                       rC   _print_ProductPrettyPrinter._print_Product  s   yykk$'c1#q\
C|!#q\Nh*J!((*	;;C)-)G)G)L&L 1_)Q.2E(5QR79STWaadrrsJ;?+!!#"4uQw"H<"WZ]"]^ , %R.K$k&7&7&DEK I':':'<=I)002$k&7&7&EFK$k&7&7&EFK'($ '')F nG '--#
1C"DEG$k&7&7&@AK$k&7&7&DEK; >  )>9(nnrE   c                 \   ^  U 4S jnT R                  US   5      nU" US   US   5      nXC4$ )Nc                    > [        S[        S5      -   S-   5      nTR                  U 5      nTR                  U5      n[        [        R                  " X2U5      6 nU$ )Nr   ==)r   r   rR   r   r   )r   r   r   r   r   re   rA   s         rC   print_start<PrettyPrinter.__print_SumProduct_Limits.<locals>.print_start.  sQ    C$t*,s23BC AC A
q 9:ELrE   r   r   rs   )rR   )rA   re  r  prettyUpperprettyLowers   `    rC   __print_SumProduct_Limits'PrettyPrinter.__print_SumProduct_Limits-  s9    	 kk#a&)!#a&#a&1''rE   c                    U R                   (       + nS nUR                  nU R                  U5      nUR                  (       a  [	        UR                  5       6 nUR                  5       S-   nSnSnSn	UR                   GHO  n
U R                  U
5      u  p[        XR                  5       5      nU" XkR                  5       UR                  5       U5      u  pnn[        S5      n[	        UR                  " U6 6 nU(       a  UR                  5       n	[	        UR                  U5      6 n[	        UR                  U5      6 nU(       a7  U=R                  XR                  5       S-  UR                  -
  -
  -  sl        Sn[        S5      n[	        UR                  " S/U-  6 6 n[	        UR!                  U5      6 n[	        UR!                  U5      6 nGMR     W(       d  UOSnXS-  -   U-   Ul        [        R"                  Ul        U$ )Nc                    SS jn[        U S5      nUS-  nUS-   nU S-  n/ n	U(       a  U	R                  SU-  S-   5        U	R                  SSUS-
  -  -  5        [        SU5       H#  n
U	R                  SU
-  < SSXz-
  -  < 35        M%     U(       a   U	R                  SU-  < SSXv-
  -  < 35        [        [        SU5      5       H#  n
U	R                  SU
-  < S	SXz-
  -  < 35        M%     U	R                  S	SUS-
  -  -   S
-   5        XeU-   X4$ Xx-   nXh-   n[	        SS5      nU	R                  SU-  5        [        SU5       H+  n
U	R                  SU
-  < US   < SXz-
  S-
  -  < 35        M-     [        [        SU5      5       H+  n
U	R                  SU
-  < US   < SXz-
  S-
  -  < 35        M-     U	R                  US   U-  5        XeSU-  -   X4$ )Nc                     U(       a  [        U 5      U:  a  U $ U[        U 5      -
  nUS;   d  U[        S5      ;  a  U SU-  -   $ US-  nSU-  nUS:X  a  SU-  U -   $ XP-   SU[        U5      -
  -  -   $ )N)<^><r  r   r   >)rM  r:  )r.  widhowneedhalfleads         rC   adjust6PrettyPrinter._print_Sum.<locals>.asum.<locals>.adjust=  s    c!fslHSV|,&#T%[*@s4x<'Qw4x#:t8a<'x#tc$i'7"888rE   r   rs   r  r   z\%s`\ry   /r8  sumr\  r      )Nr  )r   ru  rL  r#  r   )	hrequiredrO  rP  	use_asciir  rf  r"  wmorelinesr-   vsums               rC   asum&PrettyPrinter._print_Sum.<locals>.asum<  s   
9 Iq!A1AAAq=DES!Ws]+WQU45q!ALLSUCK!@A %LLCGS!%[!AB!%1+.ALLCE3;!?@ /S3A;.45d(E//HHE1~S!W%q!ALLSUDGS!%!)_!MN %!%1+.ALLSUDGS!%!)_!MN /T!Wa[)af*e11rE   r   Tr   r7  Fr   )rN   r]  rR   r^  r   rb   r`  r_  rt  r   r   r   rv  r   r&  r   r~   r(  r   )rA   rJ   rh  r  r0  rb  rg  rR  r|  r}  re  r  r  r"  rf  slines
adjustment
prettySignpadascii_adjustments                       rC   
_print_SumPrettyPrinter._print_Sum9  s   ***
(	2T MM++a.88 '.."23GNNq  	;;C'+'E'Ec'J$KI'9'9';<I (,$$&(9(9(;Z(I$A&*#BJ#Z%5%5v%>?J(//1#Z%5%5k%BCJ#Z%5%5k%BCJ  A)91)<)0)9)9*: %; ;  R.Ccii#q12C#Z%5%5c%:;J *"2"27";<G9 @ .8:Q$A~58HH$..rE   c                 v   UR                   u  p#pEU R                  U5      n[        U5      [        S   ::  a  [	        UR                  SS5      6 n[	        S5      nU R                  U5      nU R                  (       a/  [	        UR                  [        SS5       [        S5       35      6 nO[	        UR                  S5      6 n[	        UR                  U R                  U5      5      6 n[        U5      S	:X  d$  U[        R                  [        R                  4;   a  S
nO6U R                  (       a%  [        U5      S:X  a  [        S5      O
[        S5      n[	        UR                  U R                  U5      5      6 n[	        UR                  U5      6 n[	        UR                  U5      S[        R                  06nU$ )Nr   rx   ry   re  rp  rs   r  z->z+-r7  +SuperscriptPlusSuperscriptMinusr   )ra   rR   r   r   r   rb   rN   r~   r   r   r=   r   InfinityNegativeInfinityr&  r(  )	rA   r   rX   zz0dirELimLimArgs	            rC   _print_LimitPrettyPrinter._print_Limit  sT   bKKNa=Ju--AHHS#./AQc1{7?S>T.U!VWFd!34FV\\$++b/:;s8trajj!2D2D%EEC  8;CCk"34[YkMlV\\$++c*:;<#))F+,#))A,?
?
rE   c           	         Un0 n[        UR                  5       H8  n[        UR                  5       H  nU R                  X$U4   5      X4U4'   M     M:     SnSnS/UR                  -  n[        UR                  5       HO  n[	        [        UR                  5       Vs/ s H  oCXE4   R                  5       PM     sn=(       d    S/5      X'   MQ     Sn	[        UR                  5       GH  nSn
[        UR                  5       H  nX4U4   nUR                  5       X   ::  d   e[        UR                  5       X   5      u  p[        UR                  U5      6 n[        UR                  U5      6 nU
c  Un
Mt  [        U
R                  SU-  5      6 n
[        U
R                  U5      6 n
M     U	c  U
n	M  [        U5       H  n[        U	R                  S5      6 n	M     [        U	R                  U
5      6 n	GM     U	c  [        S5      n	U	$ s  snf )z<
This method factors out what is essentially grid printing.
r   rs   r   Nr   r7  )rL  rowscolsrR   r   r   r%   r   r~   rc   r&  )rA   rX   MMsr-   r9   hsepvsepmaxwDD_rowr.  rc   r~   r  s                  rC   _print_matrix_contents$PrettyPrinter._print_matrix_contents  s    qvvA166];;qAw/a4 # 
  taff}qvvAU166]C]ad8>>+]CJsKDG  qvvAE166]!tH wwyDG+++
 )DG</t- =E"EKKD$9:"EKKN31 #4 y 4[- ! AGGEN+AK N 92A_ Ds   H	
c                     U R                  U5      nUR                  5       S-  Ul        [        UR	                  X#5      6 nU$ )Nr   )r  r`  r   r   rb   )rA   rX   lparensrparensr  s        rC   _print_MatrixBasePrettyPrinter._print_MatrixBase  s;    ''*XXZ]
23rE   c                 B   UR                   nUR                  (       ar  SSKJn  [	        X#5      (       a  U R                  UR                  SSS9$ U R                  U5      nUR                  5       S-  Ul	        [        UR                  SS5      6 $ U R                  USSS9$ )Nr   BlockMatrixr  )r  r  r   )r   is_MatrixExpr&sympy.matrices.expressions.blockmatrixr  r;   r  blocksrR   r`  r   r   rb   )rA   rX   matr  r  s        rC   _print_Determinant PrettyPrinter._print_Determinant  s    eeJ#++--cjj#s-SSC AQAJqxxS122))#sC)HHrE   c                 j    U R                   (       a  SnOSnU R                  UR                  S S US S9$ )Nu   ⊗.*c                 ,    [        U 5      [        S   :*  $ Nr   r   r   r   s    rC   <lambda>4PrettyPrinter._print_TensorProduct.<locals>.<lambda>      #9!#<
5@Q#QrE   parenthesizerN   r`   ra   )rA   rJ   circled_timess      rC   _print_TensorProduct"PrettyPrinter._print_TensorProduct  s<    $M Mtyy$mQ  S 	SrE   c                 j    U R                   (       a  SnOSnU R                  UR                  S S US S9$ )Nu   ∧z/\c                 ,    [        U 5      [        S   :*  $ r  r  r  s    rC   r  3PrettyPrinter._print_WedgeProduct.<locals>.<lambda>  r  rE   r  r  )rA   rJ   wedge_symbols      rC   _print_WedgeProduct!PrettyPrinter._print_WedgeProduct  s<    #L Ltyy$lQ  S 	SrE   c                     U R                  UR                  5      n[        UR                  SS5      6 nUR	                  5       S-  Ul        [        UR                  S5      6 nU$ )Nrx   ry   r   tr)rR   r   r   rb   r`  r   rc   )rA   rX   r  s      rC   _print_TracePrettyPrinter._print_Trace  sR    KKS)*XXZ]
/0rE   c                    SSK Jn  [        UR                  U5      (       a  UR                  R
                  (       ae  UR                  R
                  (       aJ  U R                  [        UR                  R                  SUR                  UR                  4-  -   5      5      $ U R                  UR                  5      n[        UR                  5       6 nU R                  UR                  UR                  4SS9R                  SSS9S   n[        [        R                  " X45      S	[        R                  06nX5l        XEl        U$ )
Nr   MatrixSymbolz_%d%d, 	delimiter[]rc   r~   r   )sympy.matricesr  r;   parentr-   	is_numberr9   rR   r   ri   r   rb   r`   r   r   r%  
prettyFunc
prettyArgs)rA   rJ   r  r  prettyIndicesre   s         rC   _print_MatrixElement"PrettyPrinter._print_MatrixElement%  s    /t{{L11FF$$)9)9;;4;;++g8H.HHIK K T[[1J#Z%6%6%89J OOTVVTVV,<O f#Sf1!5M__Z?Az AE  *,LrE   c                   ^  SSK Jn  T R                  UR                  5      n[	        UR                  U5      (       d  [        UR                  5       6 nU 4S jnT R                  U" UR                  UR                  R                  5      U" UR                  UR                  R                  5      4SS9R                  SSS9S   n[        [        R                  " X55      S	[
        R                  06nX6l        XVl        U$ )
Nr   r  c                    > [        U 5      n U S   S:X  a  U S	 U S   S:X  a  SU S'   U S   U:X  a  SU S'   [        TR                  U SS96 $ )Nr   rs   r   r7  :r  )r:  r   r`   )r   dimrA   s     rC   ppslice1PrettyPrinter._print_MatrixSlice.<locals>.ppslice@  s^    QAtqyaDtqy!ts{!tqC@AArE   r  r  r  r  r  r   )r  r  rR   r  r;   r   rb   r`   rowslicer  colslicer  r   r   r%  r  r  )rA   mr  r  r  r  re   s   `      rC   _print_MatrixSlice PrettyPrinter._print_MatrixSlice:  s    /[[*
!((L11#Z%6%6%89J	B __gajj!((--&HAJJ.&0;? % AAGSX[A\]^`
 &0ooj&MOOOO &%rE   c                     UR                   nU R                  U5      nSSKJnJn  [        X$5      (       d7  [        X%5      (       d'  UR                  (       a  [        UR                  5       6 nU[        S5      -  nU$ )Nr   r  r  T)	r   rR   r  r  r  r;   r  r   rb   )rA   rJ   r  re   r  r  s         rC   _print_TransposePrettyPrinter._print_TransposeU  s]    hhC <3--3,,1B1B/E
3(rE   c                 H   UR                   nU R                  U5      nU R                  (       a  [        [	        S5      5      nO[        S5      nSSKJnJn  [        X%5      (       d7  [        X&5      (       d'  UR                  (       a  [        UR                  5       6 nX4-  nU$ )NDaggerr  r   r  )r   rR   rN   r   r   r  r  r  r;   r  rb   )rA   rJ   r  re   dagr  r  s          rC   _print_AdjointPrettyPrinter._print_Adjoint_  sw    hhC [23CS/C<3--3,,1B1B/E
rE   c                     UR                   R                  S:X  a  U R                  UR                   S   5      $ U R                  UR                   5      $ )Nrs   rs   r   r   )r  shaperR   )rA   Bs     rC   _print_BlockMatrix PrettyPrinter._print_BlockMatrixm  s<    88>>V#;;qxx~..{{188$$rE   c                    S nUR                    H  nU R                  U5      nUc  UnM  UR                  5       S   n[        U5      R	                  5       (       a/  [        [        R                  " US5      6 nU R                  U5      nO[        [        R                  " US5      6 n[        [        R                  " X$5      6 nM     U$ )Nr   r    + )ra   rR   as_coeff_mmulr   could_extract_minus_signr   r   r   )rA   rJ   r.  itemre   coeffs         rC   _print_MatAddPrettyPrinter._print_MatAddr  s    IIDKK%Ey**,Q/U84466"JOOAs$;<A KK-E"JOOAu$=>A
 9:  rE   c                 x   [        UR                  5      nSSKJn  SSKJn  SSKJn  [        U5       Hr  u  pg[        U[        XSU45      (       aB  [        UR                  5      S:  a)  [        U R                  U5      R                  5       6 X&'   M_  U R                  U5      X&'   Mt     [        R                  " U6 $ )Nr   HadamardProduct)KroneckerProductMatAddrs   )r:  ra   #sympy.matrices.expressions.hadamardr'  $sympy.matrices.expressions.kroneckerr(  !sympy.matrices.expressions.mataddr*  	enumerater;   r   rM  r   rR   rb   __mul__)rA   rJ   ra   r'  r(  r*  r-   as           rC   _print_MatMulPrettyPrinter._print_MatMul  s    DIIGI<dODA1sF=MNOODII*$dkk!n&;&;&=>++a. $ !!4((rE   c                 b    U R                   (       a  [        [        S5      5      $ [        S5      $ )NIdentityMatrixIrN   r   r   rI   s     rC   _print_IdentityPrettyPrinter._print_Identity  s&    k*:;<<c?"rE   c                 b    U R                   (       a  [        [        S5      5      $ [        S5      $ )N
ZeroMatrix0r6  rI   s     rC   _print_ZeroMatrixPrettyPrinter._print_ZeroMatrix  s%    k,788c?"rE   c                 b    U R                   (       a  [        [        S5      5      $ [        S5      $ )N	OneMatrix1r6  rI   s     rC   _print_OneMatrixPrettyPrinter._print_OneMatrix  s%    k+677c?"rE   c                     [        UR                  5      n[        U5       H  u  p4U R                  U5      X#'   M     [        R
                  " U6 $ rG   )r:  ra   r.  rR   r   r/  rA   rJ   ra   r-   r0  s        rC   _print_DotProductPrettyPrinter._print_DotProduct  s?    DIIdODAkk!nDG $!!4((rE   c                    U R                  UR                  5      nSSKJn  [	        UR                  U5      (       d1  UR                  R
                  (       a  [        UR                  5       6 nX R                  UR                  5      -  nU$ )Nr   r  )	rR   baser  r  r;   r  r   rb   exp)rA   rJ   re   r  s       rC   _print_MatPowPrettyPrinter._print_MatPow  s^    DII&/$))\22tyy7N7N/EDHH-.rE   c           	         ^^^ SSK Jm  SSKJm  SSKJm  U R                  (       a  [        S5      nOSnU R                  UR                  S S UUUU4S jS9$ )	Nr   r&  r)  MatMulRingr  c                 "   > [        U TTT45      $ rG   r;   )r   r'  r*  rN  s    rC   r  6PrettyPrinter._print_HadamardProduct.<locals>.<lambda>  s    z!ffo5V'WrE   r  )
r+  r'  r-  r*  !sympy.matrices.expressions.matmulrN  rN   r   r`   ra   )rA   rJ   delimr'  r*  rN  s      @@@rC   _print_HadamardProduct$PrettyPrinter._print_HadamardProduct  sK    G<<'EEtyy$eW  Y 	YrE   c                    U R                   (       a  [        S5      nOU R                  S5      nU R                  UR                  5      nU R                  UR                  5      n[        UR                  5      [        S   :  a  [        UR                  5       6 n[        [        R                  " X$5      S[        R                  06nX5-  $ )NrO  .r   r   )rN   r   rR   rH  rI  r   r   r   rb   r   r   r'  )rA   rJ   circpretty_base
pretty_exppretty_circ_exps         rC   _print_HadamardPower"PrettyPrinter._print_HadamardPower  s    v&D;;s#Dkk$)),[[*
dhh*U"33#Z%6%6%89J$__T.
OO
 ++rE   c                    ^^ SSK Jm  SSKJm  U R                  (       a  S[        S5       S3nOSnU R                  UR                  S S UUU4S jS9$ )	Nr   r)  rM  r   TensorProductz x c                     > [        U TT45      $ rG   rQ  )r   r*  rN  s    rC   r  7PrettyPrinter._print_KroneckerProduct.<locals>.<lambda>  s    z!ff5E'FrE   r  )r-  r*  rS  rN  rN   r   r`   ra   )rA   rJ   rT  r*  rN  s      @@rC   _print_KroneckerProduct%PrettyPrinter._print_KroneckerProduct  sR    <<O45Q7EEtyy$eF  H 	HrE   c                     U R                  UR                  R                  5      n[        UR	                  SS5      6 nU$ Nr  r  )rR   lamdarJ   r   rb   )rA   Xr  s      rC   _print_FunctionMatrix#PrettyPrinter._print_FunctionMatrix  s2    KK%c*+rE   c           	          UR                   S:X  d<  UR                   UR                  p2[        U[        USSS9SS9nU R	                  U5      $ U R                  S5      U R                  UR                  5      -  $ )Nrs   r  Fevaluate)r-  denr   r
   
_print_MulrR   )rA   rJ   r-  rn  ress        rC   _print_TransferFunction%PrettyPrinter._print_TransferFunction  sb    xx1}xxc3sB7%HC??3'';;q>$++dhh"777rE   c                     [        UR                  5      n[        UR                  5       H,  u  p4[        U R	                  U5      R                  5       6 X#'   M.     [        R                  " U6 $ rG   )r:  ra   r.  r   rR   rb   r/  rD  s        rC   _print_SeriesPrettyPrinter._print_Series  sR    DIIdii(DA $++a."7"7"9:DG )!!4((rE   c                    SSK Jn  [        UR                  5      n/ n[	        U5       H  n[        XR5      (       ai  [        UR                  5      S:  aP  U R                  U5      nUR                  5       S-  Ul	        UR                  [        UR                  5       6 5        M|  U R                  U5      nUR                  5       S-  Ul	        UR                  U5        M     [        R                  " U6 $ )Nr   )MIMOParallelrs   r   )sympy.physics.control.ltirw  r:  ra   r#  r;   rM  rR   r`  r   ru  r   rb   r/  )rA   rJ   rw  ra   pretty_argsr0  
expressions          rC   _print_MIMOSeriesPrettyPrinter._print_MIMOSeries  s    :DII$A1++DII0B![[^
&0&7&7&91&<
#"":z/@/@/B#CD![[^
&0&7&7&91&<
#"":.   !!;//rE   c                 :   S nUR                    H  nU R                  U5      nUc  UnM  [        [        R                  " U5      6 nUR                  5       S-  Ul        [        [        R                  " US5      6 n[        [        R                  " X$5      6 nM     U$ )Nr   r  )ra   rR   r   r   r   r`  r   )rA   rJ   r.  r!  re   s        rC   _print_ParallelPrettyPrinter._print_Parallel  s    IIDKK%Ey
 23XXZ]

5 9:
 9:  rE   c                    SSK Jn  S nUR                   H  nU R                  U5      nUc  UnM  [	        [
        R                  " U5      6 nUR                  5       S-  Ul        [	        [
        R                  " US5      6 n[        XB5      (       a  UR                  5       S-
  Ul        [	        [
        R                  " X55      6 nM     U$ )Nr   )TransferFunctionMatrixr   r  rs   )
rx  r  ra   rR   r   r   r   r`  r   r;   )rA   rJ   r  r.  r!  re   s         rC   _print_MIMOParallel!PrettyPrinter._print_MIMOParallel  s    DIIDKK%Ey
 23XXZ]

5 9:d;;!"aAJ
 9:  rE   c                    SSK JnJn  UR                  U" SSUR                  5      pT[        XC5      (       a  [        UR                  5      OU/n[        UR                  U5      (       a  [        UR                  R                  5      OUR                  /n[        XC5      (       a&  [        UR                  U5      (       a  U" / UQUQ76 nO[        XC5      (       aF  [        UR                  U5      (       a+  UR                  U:X  a  U" U6 nOU" / UQUR                  P76 nOk[        XB5      (       a0  [        UR                  U5      (       a  XE:X  a  U" U6 nO5U" U/UQ76 nO+XE:X  a  U" U6 nO UR                  U:X  a  U" U6 nO
U" / UQUQ76 n[        [        R                  " U R                  U5      5      6 n	U	R                  5       S-  U	l        UR                  S:X  a  [        [        R                  " U	S5      6 O[        [        R                  " U	S5      6 n	[        [        R                  " XR                  U5      5      6 n	U R                  U5      U	-  $ )Nr   )TransferFunctionSeriesrs   r   r  r   - )sympy.physics.controlr  r  sys1varr;   r:  ra   sys2r   r   r   rR   r`  r   sign)
rA   rJ   r  r  r-  tfnum_arg_listden_arg_listrn  denoms
             rC   _print_FeedbackPrettyPrinter._print_Feedback  s   B))-aDHH=R)3C)@)@tCHH~setyy&)) DIINN+04		{ 	 c""z$))V'D'D6,66C$$DII?O)P)PyyBl+6l6DII6..:dii3P3Pyl+S0<0yl+bl+:l:\:JOODKKO<=*>Bii2o
JOOE59:Z__UE:; 	JOOE;;s3CDE{{3%%rE   c                    SSK JnJn  U R                  U" UR                  UR
                  5      5      nU R                  UR
                  5      n[        [        R                  " U5      6 nUR                  S:X  a  [        [        R                  " SU5      6 O[        [        R                  " SU5      6 n[        [        R                  " U5      6 nSUl        [        [        R                  " US5      6 nUR                  5       S-  Ul        [        R                  " U[        S5      5      n[        UR
                  U5      (       a  UR                  5       S	-
  Ul        [        [        R                  " Xe5      6 nU$ )
Nr   )
MIMOSeriesr  r  zI + zI - z-1 r   r   rs   )r  r  r  rR   r  r  r   r   r   r  r~   rb   r   r`  r/  r;   )rA   rJ   r  r  inv_matplant	_feedbacks          rC   _print_MIMOFeedback!PrettyPrinter._print_MIMOFeedback;  s"   L++jDII>?DII&
 89	HL		UWJ
 0 0 CDZ--fi@A 	
 1 1) <=		
 0 0E BC	&--/2	&&y*S/B	dii!788!*!1!1!3a!7I
	 AB	rE   c                     U R                  UR                  5      nUR                  5       S-
  Ul        U R                  (       a	  [
        S   OSn[        UR                  U5      6 nU$ )Nrs   tauz{t})rR   	_expr_matr`  r   rN   r    r   r~   )rA   rJ   r  	subscripts       rC   _print_TransferFunctionMatrix+PrettyPrinter._print_TransferFunctionMatrixM  sR    kk$..)zz|a',0,=,=M%(6	#))I./
rE   c                     SSK Jn  UR                  nUR                  nUR                  nUR
                  nU" X4/XV//5      nU R                  UR                  5      $ )Nr   r  )r  r  _A_B_C_DrR   r  )rA   rJ   r  Ar  Cr  r  s           rC   _print_StateSpacePrettyPrinter._print_StateSpaceT  sO    FGGGGGGGGA6A6*+{{3::&&rE   c                 	   SSK Jn  U R                  (       d  [        S5      eXR                  :X  a  [        UR                  R                  5      $ / n/ n[        X5      (       a  UR                  5       R                  5       nOSU4/nU H  u  pg[        UR                  R                  5       5      nUR                  S S9  U H  u  pU
S:X  a  UR                  SU	R                  -   5        OhU
S:X  a  UR                  S	U	R                  -   5        OCU R                  U
5      R                  5       S   nUR                  US
-   U	R                  -   5        UR                  U	R                  5        M     M     US   R!                  S5      (       a  US   SS  US'   O$US   R!                  S
5      (       a  US   SS  US'   / nS/n/ n[#        U5       GH  u  nnUR                  S5        SU;   d  M   UnUR%                  XO   S5      n['        SS5      U;   af  [)        [+        U5      5       HM  nSX'   UU   ['        SS5      :X  d  M  UUS-      S:X  d  M*  US U ['        SS5      -   S
-   XO   -   UUS-   S  -   n  O[   OX['        SS5      U;   aH  UR-                  ['        SS5      5      nUS:w  a'  SX'   US U ['        SS5      -   S
-   XO   -   UUS-   S  -   nUX?'   GM     U Vs/ s H  nUR/                  S5      PM     nn[1        S U 5       5      nSU;   aK  [#        U5       H<  u  nn[+        U5      S:X  d  M  UR3                  SS
[+        US   5      -  5        SX'   M>     [#        U5       GH0  u  nnUR                  [+        UX      5      5        [)        U5       H  nUS-   [+        U5      ::  a  U[+        U5      :  a2  UR                  S
[5        US S 5      S[+        U5      S-
  -  -   -  5        UX   :X  a  XU   ==   UX      S-   -  ss'   Mw  UU==   UU   S
US   [+        UU   5      -
  S-   -  -   -  ss'   M  U[+        U5      :  a2  UR                  S
[5        US S 5      S[+        U5      S-
  -  -   -  5        UU==   S
US   S-   -  -  ss'   M     GM3     [        SR7                  U Vs/ s H  nUS S PM
     sn5      5      $ s  snf s  snf )Nr   )Vectorz:ASCII pretty printing of BasisDependent is not implementedc                 (    U S   R                  5       $ Nr   )__str__r  s    rC   r  5PrettyPrinter._print_BasisDependent.<locals>.<lambda>m  s    AaDLLNrE   r   rs   r7  r  z(-1) r   r  r[  
z)_extz)_lower_hookc              3   8   #    U  H  n[        U5      v   M     g 7frG   )rM  ).0r   s     rC   	<genexpr>6PrettyPrinter._print_BasisDependent.<locals>.<genexpr>  s     ,AQs   )sympy.vectorr  rN   NotImplementedErrorzeror   _pretty_formr;   separateitemsr:  
componentsr   ru  rR   rb   
startswithr.  r>  r   rL  rM  rfindsplitr   insertr  join)rA   rJ   r  o1vectstrsr  systemvect
inneritemsr   varg_strlengthsstrsflagr-   partstrtempstrparenindexr   
n_newlinespartsr9   r.  s                            rC   _print_BasisDependent#PrettyPrinter._print_BasisDependent]  s   '  %&bcc99dii4455d##MMO))+EYKE!LFdoo3356JOO":O;" 6IIbnn- . "WIIgnn- . #kk!68A'G IIgmann<=/% # "0 a5E""qE!"IBqEUc""qE!"IBqEt#B-JAwKKNw!!//(+r:#w.!&s7|!4"#"5>T'1-=='%RS)BTX\B\ '.fuoWa8H&H+.'/2:+'>@GPQ	
@S'TG! "5 .!,7 $MM$~q*ABE{"#")&5/D4K"K'*#+.6k#:<CEAIJ<O#P1 (4 &((RaggdmR(,,,
9%bM5u:?LLC3uQx=$9:DG *
 ""HAuNN3uTW~./:&Q3#e*$CI~C3ws|+<+,c'l1n+=,> %? @DG|!Wtw%)??Q58c72;36uQx=4A3445 /6 $6 6 CI~C3ws|+<+,c'l1n+=,> %? @GsGBKM22G ' && $))T$:TQsVT$:;<<9 )8 %;s   &S:Sc           	        ^
 SSK Jm
  UR                  5       S:X  a  U R                  US   5      $ / /[	        UR                  5       5       Vs/ s H  n/ PM     sn-   nUR
                   Vs/ s H  n[        [	        U5      5      PM     nnU
4S jn[        R                  " U6  H  nUS   R                  X   5        Sn[	        UR                  5       S-
  SS5       H  n[        X8S-      5      UR
                  U   :  a    M`  U(       a  X8   R                  X8S-      5        OFX8   R                  U" X8S-      5      5        [        X8S-      5      S:X  a  U" X8   S   //5      X8   S'   U(       + n/ X8S-   '   M     M     US   S   n	UR                  5       S-  S:X  a	  U" U	/5      n	U R                  U	5      $ s  snf s  snf )	Nr   )ImmutableMatrixrQ   c                    > T" U SS9$ )NFrl  rQ   )r   r  s    rC   r  0PrettyPrinter._print_NDimArray.<locals>.<lambda>  s    E:rE   r  Trs   r   )sympy.matrices.immutabler  rankrR   rL  r  r:  	itertoolsproductru  rM  )rA   rJ   r-   	level_strshape_rangesr  outer_ievenback_outer_iout_exprr  s             @rC   _print_NDimArrayPrettyPrinter._print_NDimArray  s   <99;!;;tBx((Ddiik(:;(:1B(:;;	04

;
1U1X
;: ((,7GbM  /D %diik!mR <ya01DJJ|4LL+229!^3LM+223!q.143 49A%5671<69'5b9:;7=	/3x,.	q.) != 8" Q<?99;?aH:H{{8$$3 <;s   F:,F?c           
         [        U5      n[        SUR                  5       -  5      n[        SUR                  5       -  5      nS nS nU GH  n	U R                  U	R                  S   5      n
X;   d  U(       a[  XyR                  :X  aL  U	R                  (       a  [        [         R                  " US5      6 nO[        [         R                  " US5      6 nX;   aM  [        [         R                  " U
S5      6 n
[        [         R                  " XR                  X9   5      5      6 n
SnOSnU	R                  (       ah  [        UR                  U
5      6 n[        UR                  SU
R                  5       -  5      6 n[        UR                  SU
R                  5       -  5      6 nOg[        UR                  U
5      6 n[        UR                  SU
R                  5       -  5      6 n[        UR                  SU
R                  5       -  5      6 nU	R                  nGM     [        UR                  U5      6 n[        UR                  U5      6 nU$ )Nr   r   r8  =TF)
r   r   rR   ra   is_upr   r   r~   r   r&  )rA   ri   indices	index_mapcentertopbotlast_valenceprev_mapr  indpicpicts               rC   _printer_tensor_indices%PrettyPrinter._printer_tensor_indices  s   D!V\\^+,V\\^+,E[[A/F#lkk6Q;;$jooc3&?@C$jooc3&?@C!#Z__VS%AB#Z__V[[IY=Z%[\ {{ #))F"34#V\\#flln2D%EF #))C,>"?@ #))F"34#V\\#flln2D%EF #))C,>"?@ ;;L+ . 6<<,-4::c?+rE   c                 v    UR                   S   R                  nUR                  5       nU R                  X#5      $ r  )ra   ri   get_indicesr  )rA   rJ   ri   r  s       rC   _print_TensorPrettyPrinter._print_Tensor  s4    yy|  ""$++D::rE   c                     UR                   R                  S   R                  nUR                   R                  5       nUR                  nU R                  X#U5      $ r  )rJ   ra   ri   r  r  r  )rA   rJ   ri   r  r  s        rC   _print_TensorElement"PrettyPrinter._print_TensorElement  sH    yy~~a %%))'')NN	++D9EErE   c                 N   UR                  5       u  p#U Vs/ s HO  n[        U5      [        S   :  a%  [        U R	                  U5      R                  5       6 OU R	                  U5      PMQ     nn[        R                  " U6 nU(       a  [        UR                  U5      6 $ U$ s  snf r  )!_get_args_for_traditional_printerr   r   r   rR   rb   r/  rc   )rA   rJ   r  ra   r-   re   s         rC   _print_TensMulPrettyPrinter._print_TensMul  s    ;;=
 
  #1%
5(99 A--/0?C{{1~N 	 

 ""D)uzz$/00L
s   AB"c                     UR                    Vs/ s HO  n[        U5      [        S   :  a%  [        U R	                  U5      R                  5       6 OU R	                  U5      PMQ     nn[        R                  " U6 $ s  snf r  )ra   r   r   r   rR   rb   __add__)rA   rJ   r-   ra   s       rC   _print_TensAddPrettyPrinter._print_TensAdd  s}     YY
  #1%
5(99 A--/0?C{{1~N 	 

 !!4((
s   AA:c                 j    UR                   S   nUR                  (       d  U* nU R                  U5      $ r  )ra   r  rR   )rA   rJ   r,  s      rC   _print_TensorIndex PrettyPrinter._print_TensorIndex'  s,    iilzz$C{{3rE   c                 $   U R                   (       a  [        S5      nOSnS n[        UR                  5       H`  nU R	                  U5      n[        UR                  U5      6 nUc  UnM2  [        UR                  S5      6 n[        UR                  U5      6 nMb     [        U R	                  UR                  5      R                  5       S[
        R                  06n[        U5      n[        UR                  5      S:  a&  XR	                  [        UR                  5      5      -  n[        UR                  [        R                  U5      6 nUR                  S-   Ul        [        [        R                   " X5      6 n[
        R"                  Ul        U$ )Nr!  r"  r   r   rs   )rN   r!   r#  	variablesrR   r   rc   r~   rJ   rb   r%  rM  r&  r   r'  r   r   r(  r   )	rA   r)  r*  r   variabler.  r/  r0  re   s	            rC   _print_PartialDerivative&PrettyPrinter._print_PartialDerivative-  s8   34LL 1HH%AQVVL12By-, 2 &*kk%**&=&D&D&FHOOH <(u!#;;s5??';<<EEKK
;<!+JOOE56"rE   c           	        ^^ 0 m[        UR                  5       H  u  p#U R                  UR                  5      TUS4'   UR                  S:X  a  [        S5      TUS4'   MG  [        [        S5      R                  U R                  UR                  5      5      6 TUS4'   M     SnSn[        UR                  5      n[        S5       V^s/ s H"  m[        UU4S j[        U5       5       5      PM$     nnS n	[        U5       GH
  n
S n[        S5       H  mTU
T4   nUR                  5       UT   ::  d   eUT   UR                  5       -
  nUS-  nX-
  n[        UR                  SU-  5      6 n[        UR                  SU-  5      6 nUc  UnM}  [        UR                  SU-  5      6 n[        UR                  U5      6 nM     U	c  Un	M  [        U5       H  n[        U	R                  S5      6 n	M     [        U	R                  U5      6 n	GM     [        U	R                  S	S
5      6 n	U	R                  5       S-  U	l        [
        R                   U	l        U	$ s  snf )Nr   T	otherwisers   zfor r   c              3   N   >#    U  H  nTUT4   R                  5       v   M     g 7frG   )r   )r  r-   Pr9   s     rC   r  1PrettyPrinter._print_Piecewise.<locals>.<genexpr>\  s!     =_AadGMMOO_s   "%r   {r7  )r.  ra   rR   rJ   condr   r~   rM  rL  r   r   rc   r&  rb   r`  r   r   r   )rA   pexprr   ecr  r  len_argsr9   r  r  r-   r  pwdeltawleftwrightr  r  s          `         @rC   _print_PiecewisePrettyPrinter._print_PiecewiseM  s-   uzz*EAkk"''*AadGww$$[1!Q$$'--dkk"''.BCE!Q$ + uzz? q#!A =U8_==! 	 #
 xAE1XadGwwyDG+++a1779,!F
 34s5y 12=E"EKKD$9:"EKKN3! " y 4[- ! AGGEN+A7 !: b)*XXZ]
OO	O#s   
)Ic                 N    SSK Jn  U R                  UR                  U5      5      $ )Nr   )	Piecewise)$sympy.functions.elementary.piecewiser  rR   rewrite)rA   iter  s      rC   
_print_ITEPrettyPrinter._print_ITE  s    B{{3;;y122rE   c                     S nU H:  nUnUc  UnM  [        UR                  S5      6 n[        UR                  U5      6 nM<     Uc  [        S5      nU$ )Nr  r   )r   r~   r   )rA   r  r  r0  r  s        rC   _hprint_vecPrettyPrinter._hprint_vec  sY    AAy.
+  93ArE   c                     U(       a&  U R                   (       d  U R                  USU4X4USS9$ U R                  X4X4US9n[        [        SUR	                  5       5      UR
                  S9nU R                  XU4X4US9$ )Nr  T)rc   r~   r  ifascii_nougly)rc   r~   r  r   )rN   r`   r   r   r`  r   )	rA   p1p2rc   r~   r  r#  tmpseps	            rC   _hprint_vseparator PrettyPrinter._hprint_vseparator  s    $"3"3??BR=t-6t # M Moorid9oUc3::<03<<H}4)2  4 	4rE   c           	         UR                    Vs/ s H  o R                  U5      PM     nnUR                   Vs/ s H  o@R                  U5      PM     nnU R                  UR                  5      nUR	                  5       S-  Ul        S nX54 HI  nU R                  U5      n	Uc  U	nM  [        UR                  S5      6 n[        UR                  U	5      6 nMK     UR	                  5       S-  Ul        [        UR                  S5      6 n[        UR                  S5      6 nU R                  Xv5      n[        UR                  SS5      6 nUR	                  5       S-  S-
  n
UR	                  5       U
-
  S-
  n[        S5      u  ppNn[        SX-
  -  U-   SX-
  -  -   X-   S9nUS-   S-  n[        UR                  U R                  [        UR                   5      5      5      6 n[        UR                  U R                  [        UR                  5      5      5      6 nX-   Ul        [        UR                  SU5      6 nU$ s  snf s  snf )	Nr   r   rx   ry   rs   Fr  r$  )aprR   bqargumentr`  r   r   r   r&  rc   r~   r)  rb   r#   rM  )rA   rX   r0  r-  br.  r  r  r  r  r   r&  sztaddimgr,  s                    rC   _print_hyperPrettyPrinter._print_hyper  s   &'dd+dkk!nd+&'dd+dkk!nd+KK

#XXZ]
 A$$Q'Ey-/  XXZ]
 s$% ##A) c*+ 
A!
U"Q&&s^qstuy)C/$%)2DD %
,Avkt{{3qtt9567CI 678[
Q(Y ,+s
   H=Ic                    0 nUR                    Vs/ s H  o0R                  U5      PM     snUS'   UR                   Vs/ s H  o0R                  U5      PM     snUS'   UR                   Vs/ s H  o@R                  U5      PM     snUS'   UR                   Vs/ s H  o@R                  U5      PM     snUS'   U R                  UR
                  5      nUR                  5       S-  Ul        0 nU H  nU R                  X'   5      Xg'   M     [        S5       H  n[        USU4   R                  5       USU4   R                  5       5      n	[        S5       Hl  n
XjU4   nXR                  5       -
  S-  nX-
  UR                  5       -
  n[        UR                  SU-  5      6 n[        UR                  SU-  5      6 nXX4'   Mn     M     [        US   R                  S	US   5      6 n[        UR                  S5      6 n[        US   R                  S	US   5      6 n[        UR                  U5      6 nUR                  5       S-  Ul        [        UR                  S5      6 n[        UR                  S5      6 nU R!                  UU5      n[        UR#                  S
S5      6 nUR                  5       S-  S-
  nUR                  5       U-
  S-
  n[%        S5      u  nnnnn[        SUU-
  -  U-   SUU-
  -  -   UU-   S9nU R                  ['        UR(                  5      5      nU R                  ['        UR*                  5      5      nU R                  ['        UR                  5      5      nU R                  ['        UR                   5      5      nS nU" UU5      u  nnU" UU5      u  nn[        UR                  SU5      6 n[        UR                  SU5      6 nUR                  U-
  S-
  nUS:  a  [        UR                  SU-  5      6 n[        UR                  U5      6 n UUl        [        UR                  U 5      6 nUU-   Ul        [        UR                  SU5      6 nU$ s  snf s  snf s  snf s  snf )Nr  )r   rs   )rs   r   r  r   r   rs   r   z  rx   ry   Gr  r$  c                     U R                  5       UR                  5       -
  nUS:X  a  X4$ US:  a  U [        UR                  SU-  5      6 4$ [        U R                  SU* -  5      6 U4$ )Nr   r   )r   r   rc   )r%  r&  diffs      rC   r  ,PrettyPrinter._print_meijerg.<locals>.adjust
  si    88:
*Dqyv:rwws4x'8999!2773u9#56::rE   r  )anrR   aotherbmbotherr/  r`  r   r   rL  r   r   r   rc   r~   r&  r)  rb   r#   rM  r-  r.  )!rA   rX   r  r0  r0  r  vpidxr-   r  r9   r.  rc   r~   D1D2r  r   r&  r1  r2  r3  r4  r,  pppqpmpnr  puplhtr  s!                                    rC   _print_meijergPrettyPrinter._print_meijerg  s    -.TT2T[[^T2&	-.XX6X[[^X6&	-.TT2T[[^T2&	-.XX6X[[^X6&	KK

#XXZ]
C&&qv.BG  qAr1a&z'')2q!f:+;+;+=>D1X1vJwwy(Q.aggi/sTz 23e 45A6
   F))$6
;<#'F))$6
;<% XXZ]
 s$% ##Aq) c*+ 
A!
U"Q&&s^Aq#stuqy)C/$%!)2DD %
, [[QTT#[[QTT#[[QTT#[[QTT#	; BBBB$+,$+,ZZ%!#6RXXd2g./B%

#S[
Q(] 3626s   Q)Q.-Q3Q8c                 l    [        [        SS5      5      nX R                  UR                  S   5      -  $ )NExp1rX   r   )r   r   rR   ra   )rA   rX   rH  s      rC   _print_ExpBasePrettyPrinter._print_ExpBase%  s/     +fc23{{166!9---rE   c                 ,    [        [        SS5      5      $ )NrN  rX   )r   r   rW   s     rC   _print_Exp1PrettyPrinter._print_Exp1+  s    +fc233rE   c           	      N    U R                  UR                  UR                  X#XES9$ )N)r   	func_namerc   r~   )_helper_print_functionr   ra   )rA   rX   r   rU  rc   r~   s         rC   r   PrettyPrinter._print_Function.  s'     **166166`d*rrrE   c                 "    U R                  USS9$ Nr  rU  r   rW   s     rC   _print_mathieucPrettyPrinter._print_mathieuc4      ##A#55rE   c                 "    U R                  USS9$ Nr   rZ  r[  rW   s     rC   _print_mathieusPrettyPrinter._print_mathieus7  r^  rE   c                 "    U R                  USS9$ )NzC'rZ  r[  rW   s     rC   _print_mathieucprime"PrettyPrinter._print_mathieucprime:      ##A#66rE   c                 "    U R                  USS9$ )NzS'rZ  r[  rW   s     rC   _print_mathieusprime"PrettyPrinter._print_mathieusprime=  rf  rE   r  c	                    U(       a  [        U[        S9nU(       d  [        US5      (       a  UR                  nU(       a  U R	                  [        U5      5      n	O%[        U R	                  U5      R                  5       6 n	U(       a]  U R                  (       a  [        S5      n
OSn
U R	                  U
5      n
[        [        R                  " X5      S[        R                  06n	[        U R                  X%S9R                  XxS96 n[        [        R                  " X5      S[        R                  06nXl        Xl        U$ )Nr   r   zModifier Letter Low RingrX  r   r  r  )r   r   hasattrr   rR   r   r   rb   rN   r   r   r   r'  r`   r%  r  r  )rA   r   ra   r   rU  r  elementwiserc   r~   r  rY  r  re   s                rC   rV  $PrettyPrinter._helper_print_function@  s    $$45DWT:66IVI%67J#T[[%6%=%=%?@J  "#=>;;t$D#2"J
  !K!R!R6: "S "I J
 &0ooj&MOOOO &%rE   c                 Z    UR                   nUR                  nU/nU R                  X$SSS9$ )Nr7  T)r  rl  )r]  rJ   rV  )rA   rX   r   r   ra   s        rC   _print_ElementwiseApplyFunction-PrettyPrinter._print_ElementwiseApplyFunctione  s4    zzffu**4QU*VVrE   c                     SSK Jn  SSKJnJn  SSKJn  SSKJn  SSK	J
n  SSKJn  U[        S   S/U[        S	   S	/U[        S
   S/U[        S   S/U[        S   S/U[        S   S/USS/0$ )Nr   )KroneckerDelta)gamma
lowergamma)lerchphi)beta)
DiracDelta)ChideltaGammaPhiru  rs  Betar  rx  )(sympy.functions.special.tensor_functionsrr  'sympy.functions.special.gamma_functionsrs  rt  &sympy.functions.special.zeta_functionsru  &sympy.functions.special.beta_functionsrv  'sympy.functions.special.delta_functionsrw  'sympy.functions.special.error_functionsrx  r    )rA   rr  rs  rt  ru  rv  rw  rx  s           rC   _special_function_classes'PrettyPrinter._special_function_classesk  s    KMC?F?w!7 Ag.8=/<]73W=}V,c2]73W=eU^% 	%rE   c                 V   U R                    Hz  n[        X5      (       d  M  UR                  UR                  :X  d  M1  U R                  (       a  [	        U R                   U   S   5      s  $ [	        U R                   U   S   5      s  $    UR                  n[	        [        U5      5      $ )Nr   rs   )r  
issubclassr   rN   r   r   )rA   rJ   clsrU  s       rC   _print_FunctionClass"PrettyPrinter._print_FunctionClass{  s    11C$$$#,,)F$$%d&D&DS&I!&LMM%d&D&DS&I!&LMM 2 MM	-	233rE   c                 $    U R                  U5      $ rG   )rK   rI   s     rC   _print_GeometryEntity#PrettyPrinter._print_GeometryEntity  s      &&rE   c                    U R                  UR                  S   5      nU R                  (       a@  [        U5      (       a0  U R	                  [        SU-  5      " UR                  S   5      5      $ U R	                  U5      $ )Nr   zLi_%srs   rR   ra   rN   r$   r   r   rA   rX   r  s      rC   _print_polylogPrettyPrinter._print_polylog  se    KKq	*	!<Y!G!G''91D(EaffQi(PQQ##A&&rE   c                 X    U R                   (       a	  [        S   OSnU R                  XS9$ )Nr{  ru  rZ  rN   r    r   rA   rX   rU  s      rC   _print_lerchphiPrettyPrinter._print_lerchphi  s*    ,0,=,=M%(:	##A#;;rE   c                 X    U R                   (       a	  [        S   OSnU R                  XS9$ )Netadirichlet_etarZ  r  r  s      rC   _print_dirichlet_eta"PrettyPrinter._print_dirichlet_eta  s*    ,0,=,=M%(?	##A#;;rE   c                 .   U R                   (       a	  [        S   OSnUR                  S   [        R                  L aK  [        U R                  UR                  S   5      R                  5       6 n[        UR                  U5      6 nU$ U R                  XS9$ )Ntheta	Heavisiders   r   rZ  )
rN   r    ra   r   Halfr   rR   rb   rc   r   )rA   rX   rU  re   s       rC   _print_HeavisidePrettyPrinter._print_Heaviside  sz    .2.?.?M'*[	66!9AFF1I 6 = = ?@E

9 56EL'''??rE   c                 "    U R                  USS9$ r`  r[  rW   s     rC   _print_fresnelsPrettyPrinter._print_fresnels  r^  rE   c                 "    U R                  USS9$ rY  r[  rW   s     rC   _print_fresnelcPrettyPrinter._print_fresnelc  r^  rE   c                 "    U R                  USS9$ )NAirZ  r[  rW   s     rC   _print_airyaiPrettyPrinter._print_airyai  rf  rE   c                 "    U R                  USS9$ )NBirZ  r[  rW   s     rC   _print_airybiPrettyPrinter._print_airybi  rf  rE   c                 "    U R                  USS9$ )NzAi'rZ  r[  rW   s     rC   _print_airyaiprime PrettyPrinter._print_airyaiprime      ##A#77rE   c                 "    U R                  USS9$ )NzBi'rZ  r[  rW   s     rC   _print_airybiprime PrettyPrinter._print_airybiprime  r  rE   c                 "    U R                  USS9$ )NWrZ  r[  rW   s     rC   _print_LambertWPrettyPrinter._print_LambertW  r^  rE   c                 "    U R                  USS9$ )NCovrZ  r[  rW   s     rC   _print_CovariancePrettyPrinter._print_Covariance  r  rE   c                 "    U R                  USS9$ )NVarrZ  r[  rW   s     rC   _print_VariancePrettyPrinter._print_Variance  r  rE   c                 "    U R                  USS9$ )Nr  rZ  r[  rW   s     rC   _print_Probability PrettyPrinter._print_Probability  r^  rE   c                 &    U R                  USSSS9$ )Nr  r  r  )rU  rc   r~   r[  rW   s     rC   _print_Expectation PrettyPrinter._print_Expectation  s    ##A3c#JJrE   c           	      H   UR                   nUR                  nU R                  (       a  S[        S5       S3nOSn[	        U5      S:X  a  US   R
                  (       a  US   nU R                  U5      n[        [        R                  " XTU R                  U5      5      SS06$ )Nr   ArrowFromBar -> rs   r   r   r  )
rJ   	signaturerN   r   rM  	is_symbolrR   r   r   r   )rA   rX   rJ   sigarrowvar_forms         rC   _print_LambdaPrettyPrinter._print_Lambda  s    vvkkN34A6EEs8q=SV--a&C;;s#:??8DKK<MNZXYZZrE   c                    U R                  UR                  5      nUR                  (       a!  [        S UR                   5       5      (       d  [	        UR
                  5      S:  Gax  [        UR                  S5      6 n[	        UR
                  5      S:  a1  [        UR                  U R                  UR
                  5      5      6 nOM[	        UR
                  5      (       a3  [        UR                  U R                  UR
                  S   5      5      6 nU R                  (       a%  [        UR                  S[        S5       S35      6 nO[        UR                  S5      6 n[	        UR                  5      S:  a1  [        UR                  U R                  UR                  5      5      6 nO3[        UR                  U R                  UR                  S   5      5      6 n[        UR                  5       6 n[        UR                  S5      6 nU$ )	Nc              3   F   #    U  H  o[         R                  :g  v   M     g 7frG   )r   Zero)r  r  s     rC   r  -PrettyPrinter._print_Order.<locals>.<genexpr>  s     ?JqAFF{Js   !rs   ; r   r   r  r  O)rR   rJ   pointanyrM  r  r   r~   rN   r   rb   rc   rA   rJ   re   s      rC   _print_OrderPrettyPrinter._print_Order  sq   DII&JJ3?DJJ???t~~"D 12E4>>"Q&"EKKDNN0K$LMT^^$$"EKKDNN1<M0N$OP  "EKK!K4H3I0K$LM"EKK$784::""EKKDJJ0G$HI"EKKDJJqM0J$KLELLN+EJJsO,rE   c                    U R                   (       a  U R                  UR                  S   UR                  S   -
  5      nU R                  UR                  S   5      n[        S5      n[        UR	                  U5      6 n[        UR	                  S5      6 nXC-  nU$ U R                  UR                  S   5      nU R                  UR                  S   UR                  S   -
  5      nU R                  USSS5      nXC-  $ )Nr   rs   r   r  r  r   )rN   rR   ra   r   r~   r`   )rA   rX   shiftr   rH  re   s         rC   _print_SingularityFunction(PrettyPrinter._print_SingularityFunction  s    KKq	!&&) 34EAFF1I&Ac?Dtzz%01Dtzz#/DGELAFF1I&AKKq	!&&) 34E??5#sC8D7NrE   c                 X    U R                   (       a	  [        S   OSnU R                  XS9$ )Nr|  r  rZ  r  r  s      rC   _print_betaPrettyPrinter._print_beta  s*    -1->->M&)C	##A#;;rE   c                 $    SnU R                  XS9$ )NzB'rZ  r[  r  s      rC   _print_betaincPrettyPrinter._print_betainc  s    	##A#;;rE   c                 $    SnU R                  XS9$ )Nr5  rZ  r[  r  s      rC   _print_betainc_regularized(PrettyPrinter._print_betainc_regularized  s    	##A#;;rE   c                 X    U R                   (       a	  [        S   OSnU R                  XS9$ Nrz  rZ  r  r  s      rC   _print_gammaPrettyPrinter._print_gamma  *    .2.?.?M'*W	##A#;;rE   c                 X    U R                   (       a	  [        S   OSnU R                  XS9$ r  r  r  s      rC   _print_uppergammaPrettyPrinter._print_uppergamma  r  rE   c                 X    U R                   (       a	  [        S   OSnU R                  XS9$ )Nrs  rt  rZ  r  r  s      rC   _print_lowergammaPrettyPrinter._print_lowergamma  s*    .2.?.?M'*\	##A#;;rE   c                 ~   U R                   (       Ga  [        UR                  5      S:X  a  [        [        S   5      nU R                  UR                  S   5      n[        UR                  5       6 nU R                  UR                  S   5      n[        UR                  5       6 nX#-  n[        UR                  S5      6 n[        UR                  U5      6 nU$ U R                  UR                  S   5      n[        UR                  5       6 n[        UR                  [        S   5      6 nU$ U R                  U5      $ )Nr   ry  rs   r   r   )
rN   rM  ra   r   r    rR   rb   r~   rc   r   )rA   rX   r0  r0  cre   s         rC   _print_DiracDeltaPrettyPrinter._print_DiracDelta
  s    166{a}W56KKq	*
+KKq	*
+"EKK$45"EKKN3KKq	*E/E

=+A BCEL''**rE   c                    U R                  UR                  S   5      nU R                  (       a@  [        U5      (       a0  U R	                  [        SU-  5      " UR                  S   5      5      $ U R	                  U5      $ )Nr   zE_%srs   r  r  s      rC   _print_expintPrettyPrinter._print_expint  se    KKq	*	!<Y!G!G'')1C(DQVVAY(OPP##A&&rE   c                     [        S5      n[        U R                  UR                  5      R                  5       6 n[        [        R
                  " X#5      S[         R                  06nX$l        X4l        U$ )Nrx  r   )	r   r`   ra   rb   r   r   r%  r  r  )rA   rX   r  r  re   s        rC   
_print_ChiPrettyPrinter._print_Chi#  se      &
!8!?!?!AB
&0ooj&MOOOO &%rE   c                 2   U R                  UR                  S   5      n[        UR                  5      S:X  a  UnO/U R                  UR                  S   5      nU R                  X$5      n[	        UR                  5       6 n[	        UR                  S5      6 nU$ )Nr   rs   r  )rR   ra   rM  r)  r   rb   rc   )rA   rX   pforma0re   pforma1s        rC   _print_elliptic_ePrettyPrinter._print_elliptic_e2  sz    ++affQi(qvv;!Ekk!&&),G++G=EELLN+EJJsO,rE   c                     U R                  UR                  S   5      n[        UR                  5       6 n[        UR	                  S5      6 nU$ )Nr   K)rR   ra   r   rb   rc   rd   s      rC   _print_elliptic_kPrettyPrinter._print_elliptic_k=  s?    AFF1I&ELLN+EJJsO,rE   c                     U R                  UR                  S   5      nU R                  UR                  S   5      nU R                  X#5      n[        UR	                  5       6 n[        UR                  S5      6 nU$ )Nr   rs   r,  )rR   ra   r)  r   rb   rc   )rA   rX   r  r  re   s        rC   _print_elliptic_fPrettyPrinter._print_elliptic_fC  se    ++affQi(++affQi(''9ELLN+EJJsO,rE   c                    U R                   (       a	  [        S   OSnU R                  UR                  S   5      nU R                  UR                  S   5      n[	        UR                  5      S:X  a  U R                  X45      nO\U R                  UR                  S   5      nU R                  XFSS9n[        UR                  S5      6 n[        UR                  U5      6 n[        UR                  5       6 n[        UR                  U5      6 nU$ )NPir   rs   r   Fr#  r  )	rN   r    rR   ra   rM  r)  r   rc   rb   )rA   rX   ri   r  r  re   pforma2pformas           rC   _print_elliptic_pi PrettyPrinter._print_elliptic_piK  s    &*&7&7}T"T++affQi(++affQi(qvv;!++G=Ekk!&&),G,,We,TFT!23FG 45EELLN+EJJt,-rE   c                     U R                   (       a  [        [        S5      5      $ U R                  [	        S5      5      $ )NphiGoldenRatiorN   r   r   rR   r   rI   s     rC   _print_GoldenRatio PrettyPrinter._print_GoldenRatioZ  s/    mE233{{6-011rE   c                     U R                   (       a  [        [        S5      5      $ U R                  [	        S5      5      $ )Nrs  
EulerGammar  rI   s     rC   _print_EulerGammaPrettyPrinter._print_EulerGamma_  s/    mG455{{6,/00rE   c                 6    U R                  [        S5      5      $ )Nr8  )rR   r   rI   s     rC   _print_CatalanPrettyPrinter._print_Cataland  s    {{6#;''rE   c                 h   U R                  UR                  S   5      nUR                  [        R                  :  a  [        UR                  5       6 n[        UR                  S5      6 n[        UR                  U R                  UR                  S   5      5      6 n[        R                  Ul        U$ )Nr   z mod rs   )rR   ra   r   r   r(  rb   r~   r   r  s      rC   
_print_ModPrettyPrinter._print_Modg  s    DIIaL)==:>>)/EEKK01EKKDIIaL(ABC"rE   c                    U R                  XS9n/ / pTS n[        U5       GHy  u  pxUR                  (       ar  UR                  5       (       a]  UR	                  SS9u  pU	S:X  a  [        U
SS06nO[        U	* /U
Q7SS06nU R                  U5      nUR                  U" X5      5        M  UR                  (       a4  UR                  S:  a$  UR                  S 5        UR                  U5        M  UR                  (       a2  US:  a,  U R                  U* 5      nUR                  U" X5      5        GM  UR                  (       a7  UR                  [        U R                  U5      R                  5       6 5        GMY  UR                  U R                  U5      5        GM|     U(       a  S	nU H  nUc  M  UR                  5       S:  d  M    O   SnU H{  nX7   SpUS:  a  U* S	pU(       a>  [        [        UR                   5      5      [        [        UR                  5      5      -  nOU R                  U5      nU(       a  U" X5      nXU'   M}     [        R"                  " U6 $ )
Nr.   c                 N   US:X  a  U R                  5       S:  a  SnOSnOSnU R                  [        R                  :  d  U R                  [        R                  :X  a  [        U R                  5       6 nOU n[
        R                  " X#5      n[        US[        R                  06$ )z'Prepend a minus sign to a pretty form. r   rs   z- rp  r  r   )r`  r   r   NEGADDr   rb   r   )re   r  	pform_negr  s       rC   pretty_negative1PrettyPrinter._print_Add.<locals>.pretty_negativet  s     z<<>A% $I #I!	
.==JNN2/	-A q9jnn99rE   F)rationalr  rm  rs   r   T)_as_ordered_termsr.  is_Mulr   as_coeff_mulr   rR   ru  is_Rationalq	is_Numberis_Relationalr   rb   r`  r=   r  r  )rA   rJ   r.   termspformsr  r)  r-   rs  r"  othernegtermre   largenegatives                  rC   
_print_AddPrettyPrinter._print_Addp  s   &&t&9b	:* !'GA{{t<<>>#00%0@B;!5959G!5&A5A5AGG,oe78!!dffqjd#q!D1HTE*oe78##j$++d*;*B*B*DEFdkk$/0% (( E$!);   !&5h!8&*UD(&s466{3Js466{4KKE KK-E+E5E!q	   !!6**rE   c           	        ^ SSK Jm  UR                  nUS   [        R                  L d  [        S USS   5       5      (       a  [        [        U R                  U5      5      nUS   S:H  nU(       a  [        SSS5      US'   [        R                  " U6 nU(       a.  [        SUR                  -   UR                  UR                  5      nU$ / n/ nU R                  S;  a  UR                  5       nO[        UR                  5      n[!        UU4S	 jS
9nU GHr  nUR"                  (       a  UR$                  (       a  UR&                  R(                  (       a  UR&                  R*                  (       as  UR&                  S:w  a1  UR-                  [/        UR0                  UR&                  * SS95        M  UR-                  [/        UR0                  UR&                  * 5      5        M  UR(                  (       a  U[        R2                  Lan  UR4                  S:w  a$  UR-                  [7        UR4                  5      5        UR8                  S:w  a'  UR-                  [7        UR8                  5      5        GM^  GMa  UR-                  U5        GMu     U V	s/ s H  oR                  U	5      PM     nn	U V
s/ s H  oR                  U
5      PM     nn
[;        U5      S:X  a  [        R                  " U6 $ [;        U5      S:X  a.  UR-                  U R                  [        R                  5      5        [        R                  " U6 [        R                  " U6 -  $ s  sn	f s  sn
f )Nr   )Quantityc              3   B   #    U  H  n[        U[        5      v   M     g 7frG   )r;   r   )r  r   s     rC   r  +PrettyPrinter._print_Mul.<locals>.<genexpr>  s     "Ohs:c6#:#:hs   rs   z-1r@  rp  )oldnonec                    > [        U T5      =(       d-    [        U [        5      =(       a    [        U R                  T5      $ rG   )r;   r
   rH  )r   r<  s    rC   r  *PrettyPrinter._print_Mul.<locals>.<lambda>  s2    *Q*A +K C(IZ-I+KrE   r   r  Frl  )sympy.physics.unitsr<  ra   r   Oner  r:  maprR   r   r/  r.  r   r   r.   as_ordered_factorsr   is_commutativeis_PowrI  r/  is_negativeru  r
   rH  r  r  r	   r0  rM  )rA   r  ra   strargsnegoneobjr0  r0  r!  aibir<  s              @rC   ro  PrettyPrinter._print_Mul  sr   0 ||7aees"Od12h"OOO3t{{D12G QZ4'F'Q2
$$g.C suucllCKKHJ::_,--/D%D d !K L D""t{{txx7K7KPTPXPXPdPd88r>HHSTXXIFGHHSTXXI67!!d!**&<66Q;HHhtvv.066Q;HHhtvv.0    ())q[[_q)'()q[[_q) q6Q;%%q))1v{$++aee,.%%q)**<*<a*@@@ *)s   M1Mc                 z  ^	^
 U R                  U5      nU R                  S   (       a  U R                  (       an  US:X  ah  UR                  5       S:X  aT  UR	                  5       S:X  d"  UR
                  (       a/  UR                  (       a  [        UR                  [        S   5      6 $ [        SS5      m	[        SS5      T	-   nU R                  U5      nUR                  5       S:w  a&  U R                  U5      U R                  SU-  5      -  $ US:X  a  SO[        U5      R                  S5      n[        U5      S:  a  S[        U5      S-
  -  U-   n[        US-   U-   5      nS	Ul        UR                  5       S-
  m
[        SR!                  U	U
4S
 j[#        T
5       5       5      5      nT
S-
  Ul        [        UR%                  U5      6 n['        SUR                  5      Ul        [        [)        SSUR	                  5       -   5      5      n[        UR+                  U5      6 n[        UR                  U5      6 nU$ )Nr3   r   rs   r  r  r7  r   r  r   c              3   L   >#    U  H  nS TU-
  S-
  -  T-   S U-  -   v   M     g7f)r   rs   NrQ   )r  r-   _zZ
linelengths     rC   r  0PrettyPrinter._print_nth_root.<locals>.<genexpr>  s4      (
& a!#$s*SU2&s   !$r  )rR   r<   rN   r`  r   r   r   r   rc   nth_rootr   r=   ljustrM  r   r   r  rL  r~   r   r   r   )rA   rH  r&   bprettyrootsignrprettyrI  diagonalr.  rR  rS  s            @@rC   _print_nth_rootPrettyPrinter._print_nth_root  s   ++d# NN238I8I	gnn.!3A%__)<)<w||HQK899 3la=3&++d#>>q ;;t$dkk!D&&999AIb3w<#5#5a#8s8a<CHqL)H4HcDj834^^%)
dii (
:&(
 
 
 'Nx~~h78  7#3#34tCW]]_!456a()x()rE   c           	      (   SSK Jn  UR                  5       u  p4UR                  (       a  U[        R
                  L a  [        S5      U R                  U5      -  $ U" U5      u  pVU[        R                  L ai  UR                  (       aX  UR                  (       dG  UR                  (       d  UR                  (       a%  U R                  S   (       a  U R                  X65      $ UR                  (       a,  US:  a&  [        S5      U R                  [        X4* SS95      -  $ UR                   (       aC  [        U R                  U5      R#                  5       6 R%                  U R                  U5      5      $ U R                  U5      U R                  U5      -  $ )Nr   )fractionr@  r4   Frl  )sympy.simplify.simplifyr^  as_base_exprG  r   NegativeOner   rR   rD  is_Atomr   r/  r   r<   r[  r
   r2  rb   __pow__)rA   powerr^  r0  rX   r   r"  s          rC   
_print_PowPrettyPrinter._print_Pow!  s   4  "AMM!!#t{{1~55A;DAAEEzaii!--STS^S^7++A11}}Q!#t{{3q"u3M'NNN??t{{1~4467??AOO{{1~t{{1~--rE   c                 >    U R                  UR                  S   5      $ r  )rR   ra   rI   s     rC   _print_UnevaluatedExpr$PrettyPrinter._print_UnevaluatedExpr3  s    {{499Q<((rE   c                    US:X  a;  US:  a!  [        [        U5      [         R                  S9$ [        [        U5      5      $ [        U5      S:  at  [        U5      S:  ae  US:  a6  [        [        U5      [         R                  S9[        [        U5      5      -  $ [        [        U5      5      [        [        U5      5      -  $ g )Nrs   r   )r   
   )r   r=   r&  abs)rA   r  r0  s      rC   __print_numer_denom!PrettyPrinter.__print_numer_denom6  s    61u!#a&*..AA!#a&))Vr\c!fl1u!#a&*..A*SQRVBTTT
 "#a&)*SV*<<<rE   c                 z    U R                  UR                  UR                  5      nUb  U$ U R                  U5      $ rG   )!_PrettyPrinter__print_numer_denomr  r0  rK   rA   rJ   rQ  s      rC   _print_RationalPrettyPrinter._print_RationalH  s8    ))$&&$&&9M$$T**rE   c                 z    U R                  UR                  UR                  5      nUb  U$ U R                  U5      $ rG   )rp  	numeratordenominatorrK   rq  s      rC   _print_FractionPrettyPrinter._print_FractionP  s:    ))$..$:J:JKM$$T**rE   c                 l   [        UR                  5      S:  a]  [        UR                  5      (       dC  U R                  UR                  S   5      U R                  [        UR                  5      5      -  $ U R                  (       a  [        S5      OSnU R                  UR                  S S SU-  S S9$ )Nrs   r   Multiplicationr   r   c                 f    U R                   =(       d    U R                  =(       d    U R                  $ rG   )is_Unionis_Intersectionis_ProductSetsets    rC   r  1PrettyPrinter._print_ProductSet.<locals>.<lambda>^  s,    CLL =L#&#6#6=L:=:K:K=LrE   r  )rM  setsr   rR   rN   r   r`   )rA   r  	prod_chars      rC   _print_ProductSetPrettyPrinter._print_ProductSetX  s    qvv;!K$7$7;;qvvay)T[[QVV-EEE9=9J9J$45PSI??1664v	7I1L # M MrE   c                 Z    [        UR                  [        S9nU R                  USSS5      $ )Nr   r  }r  )r   ra   r   r`   )rA   r.  r  s      rC   _print_FiniteSetPrettyPrinter._print_FiniteSeta  s(    qvv#34uc366rE   c                    U R                   (       a  [        S5      nOSnUR                  R                  (       aF  UR                  R                  (       a+  UR
                  R                  (       a  USSSU4nOUSSSU4nOUR                  R                  (       a  X!S   UR
                  -
  US   4nO~UR                  R                  (       a#  [        U5      n[        U5      [        U5      U4nO@[        U5      S:  a&  [        U5      n[        U5      [        U5      X!S   4nO[        U5      nU R                  USSS	5      $ )
NDots...r  r   rs   r\  r  r  r  )rN   r   startis_infinitestopstepis_positiveiterr   rM  r=  r`   )rA   r.  dotsprintsetits        rC   _print_RangePrettyPrinter._print_Rangee  s    v&DD77166#5#5vv!!Q4/Ar4/WW  rUQVV^QrU2HVVaBBxb4/HVaZaBBxb426HQxHxc499rE   c                    UR                   UR                  :X  a   U R                  UR                  S S SS5      $ UR                  (       a  SnOSnUR
                  (       a  SnOSnU R                  UR                  S S X#5      $ )	Nrs   r  r  rx   r  ry   r  r   )r  endr`   ra   	left_open
right_openrA   r-   rc   r~   s       rC   _print_IntervalPrettyPrinter._print_Interval~  sn    77aee??166"1:sC88 {{||??166"1:t;;rE   c                 H    SnSnU R                  UR                  S S X#5      $ )Nr  r  r   r`   ra   r  s       rC   _print_AccumulationBounds'PrettyPrinter._print_AccumulationBounds  s'    qvvbqz477rE   c                 \    S[        SS5      -  nU R                  UR                  S S US S9$ )Nr   Intersectionr   c                 f    U R                   =(       d    U R                  =(       d    U R                  $ rG   )r~  r|  is_Complementr  s    rC   r  3PrettyPrinter._print_Intersection.<locals>.<lambda>  s,    8I8I 9A"||9A/2/@/@9ArE   r  r   r`   ra   rA   rS  r  s      rC   _print_Intersection!PrettyPrinter._print_Intersection  s=    [==	qvvtT9-A  B 	BrE   c                 \    S[        SS5      -  nU R                  UR                  S S US S9$ )Nr   Unionr!   c                 f    U R                   =(       d    U R                  =(       d    U R                  $ rG   )r~  r}  r  r  s    rC   r  ,PrettyPrinter._print_Union.<locals>.<lambda>  s.    8I8I 9H"229H696G6G9HrE   r  r  )rA   rS  union_delimiters      rC   _print_UnionPrettyPrinter._print_Union  s=     ;w#<<qvvtT?-H  I 	IrE   c                     U R                   (       d  [        S5      eS[        S5      -  nU R                  UR                  S S U5      $ )Nz?ASCII pretty printing of SymmetricDifference is not implementedr   SymmetricDifference)rN   r  r   r`   ra   )rA   rS  sym_delimeters      rC   _print_SymmetricDifference(PrettyPrinter._print_SymmetricDifference  s@      %&ghh-B!CCqvvtT=AArE   c                 B    SnU R                  UR                  S S US S9$ )Nz \ c                 f    U R                   =(       d    U R                  =(       d    U R                  $ rG   )r~  r}  r|  r  s    rC   r  1PrettyPrinter._print_Complement.<locals>.<lambda>  s(    c&7&7 '/3;N;N '/"%,,'/rE   r  r  r  s      rC   _print_ComplementPrettyPrinter._print_Complement  s.    	qvvtT9/  0 	0rE   c           	        ^ U R                   (       a  [        S5      mOSmUR                  nUR                  nUR                  nU R                  UR                  5      n[        U5      S:X  a,  U R                  US   TUS   4SS9nU R                  XVSSS	SS
9$ [        U4S j[        XC5       5       5      nU R                  US S SS9nU R                  XVSSS	SS
9$ )NSmallElementOfinrs   r   r   r  r  r  Trc   r~   r#  r  c              3   J   >#    U  H  u  pUS TS US4  H  o3v   M     M     g7f)r   r  NrQ   )r  r  setvr9   inns       rC   r  0PrettyPrinter._print_ImageSet.<locals>.<genexpr>  s6      <-A	S#tT: GH!: -As    #r  r7  )rN   r   rg  	base_setsr  rR   rJ   rM  r`   r)  r=  rN  )	rA   tsfunr  r  rJ   r   pargsr  s	           @rC   _print_ImageSetPrettyPrinter._print_ImageSet  s    ./CChh||MM	{{388$ y>Q1sDG <*-   /A**4033:># + O O  <S-A < <Ecr
b9A**4033:># + O OrE   c           	         U R                   (       a  [        S5      n[        S5      nOSnSnU R                  [        UR                  5      5      n[        UR                  SS 5      nUb*  U R                  UR                  R                  5       5      nOSU R                  UR                  5      nU R                   (       a'  U R                  U5      n[        UR                  5       6 nUR                  [        R                  L a  U R                  XFSSSS	S
9$ U R                  UR                  5      nU R                  XBXsU4S	S9nU R                  XHSSSS	S
9$ )Nr  r   r  andas_exprr  r  Tr   r  r  )rN   r   r`   r   r,  getattr	conditionrR   r  r   rb   base_setr   UniversalSetr)  )	rA   r  r  _andr  r  r  rH  r  s	            rC   _print_ConditionSet!PrettyPrinter._print_ConditionSet  s:   ./C u%DCDOOE"&&M2	",,	48;;r||3356D;;r||,D  {{4(!4;;=1;;!..(**914T58 + : : {{2;;'OOYT>&)  +&&y#S6:c ' K 	KrE   c           	      ,   U R                   (       a  [        S5      nOSnU R                  UR                  5      nU R	                  UR
                  5      nU R	                  UR                  5      nU R                  X2U4SS9nU R                  XFSSSSS9$ )	Nr  r  r   r  r  r  Tr  )rN   r   r`   r  rR   rJ   r  r)  )rA   r  r  r  rJ   prodsetsr  s          rC   _print_ComplexRegion"PrettyPrinter._print_ComplexRegion  s    ./CCOOBLL1	{{277#;;rww'OOYX6&)  +&&tS6:c ' K 	KrE   c           	         UR                   u  p#U R                  (       aM  S[        S5       S3n[        [        R
                  " U R                  U5      X@R                  U5      5      SS06$ [        [        U5      5      $ )Nr   	ElementOfr   r  )ra   rN   r   r   r   r   rR   r   )rA   rX   r  r  els        rC   _print_ContainsPrettyPrinter._print_Contains  sv    66[-.a0Bzt{{3/?/1;;s3C E QNOQ Q d1g&&rE   c                 t   UR                   R                  [        R                  L aB  UR                  R                  [        R                  L a  U R                  UR                  5      $ U R                  (       a  [        S5      nOSnU R                  UR                  5       5      U R                  U5      -   $ )Nr  r  )r<  formular   r  bnrR   a0rN   r   r9  truncate)rA   r.  r  s      rC   _print_FourierSeries"PrettyPrinter._print_FourierSeries	  sw    44<<166!addllaff&<;;qtt$$v&DDqzz|,t{{4/@@@rE   c                 8    U R                  UR                  5      $ rG   )r9  infiniterA   r.  s     rC   _print_FormalPowerSeries&PrettyPrinter._print_FormalPowerSeries	  s    qzz**rE   c                     [        U R                  UR                  5      R                  5       6 nU R                  [	        S5      5      n[        UR                  U5      6 $ )NSetExpr)r   rR   r  rb   r   r~   )rA   se
pretty_setpretty_names       rC   _print_SetExprPrettyPrinter._print_SetExpr	  sK    RVV!4!;!;!=>
kk&"34;,,Z899rE   c                    U R                   (       a  [        S5      nOSn[        UR                  R                  5      S:  d#  [        UR
                  R                  5      S:  a  [        S5      eUR                  [        R                  L aX  UR
                  nX!R                  US-
  5      UR                  US-
  5      UR                  US-
  5      UR                  U5      4nOZUR
                  [        R                  L d  UR                  S:  a"  US S nUR                  U5        [        U5      nO[        U5      nU R                  U5      $ )	Nr  r  r   z@Pretty printing of sequences with symbolic bound not implementedr[  r   rs   r\  )rN   r   rM  r  free_symbolsr  r  r   r  r"  r  lengthru  r=  _print_list)rA   r.  r  r  r  s        rC   _print_SeqFormulaPrettyPrinter._print_SeqFormula	  s   v&DDqww##$q(C0C0C,Dq,H%&hii77a(((66DggdQh/1Bq!1774=2HVVqzz!QXX\!uHOOD!XHQxH))rE   c                     g)NFrQ   r  s    rC   r  PrettyPrinter.<lambda>3	  s    5rE   c                 Z   / nU H`  nU R                  U5      n	U" U5      (       a  [        U	R                  5       6 n	U(       a  UR                  U5        UR                  U	5        Mb     U(       d  [	        S5      n
O[        [        R
                  " U6 6 n
[        U
R                  X#US96 n
U
$ )Nr7  r  )rR   r   rb   ru  r   r   )rA   seqrc   r~   r  r  r#  r4  r!  re   r.  s              rC   r`   PrettyPrinter._print_seq2	  s     DKK%ED!!"ELLN3i(MM%   2AJOOV45A^LMrE   c                     S nU H8  nUc  UnM
  [        UR                  U5      6 n[        UR                  U5      6 nM:     Uc  [        S5      $ U$ )Nr7  )r   r~   )rA   r  ra   re   r   s        rC   r  PrettyPrinter.joinF	  sW    C}"EKK	$:;"EKK$45  =b>!LrE   c                 (    U R                  USS5      $ rf  r`   )rA   r   s     rC   r  PrettyPrinter._print_listU	  s    q#s++rE   c                     [        U5      S:X  aF  [        [        R                  " U R	                  US   5      S5      6 n[        UR                  SSSS96 $ U R                  USS5      $ )Nrs   r   r8  rx   ry   Tr  )rM  r   r   r   rR   rb   r`   )rA   r2  ptuples      rC   _print_tuplePrettyPrinter._print_tupleX	  s\    q6Q;QqT1BC!HIFv}}S#d}KLL??1c3//rE   c                 $    U R                  U5      $ rG   )r  rI   s     rC   _print_TuplePrettyPrinter._print_Tuple_	  s      &&rE   c                    [        UR                  5       [        S9n/ nU HV  nU R                  U5      nU R                  X   5      n[	        [
        R                  " USU5      6 nUR                  U5        MX     U R                  USS5      $ )Nr   z: r  r  )	r   keysr   rR   r   r   r   ru  r`   )rA   r"  r	  r  r   r  Vr.  s           rC   _print_dictPrettyPrinter._print_dictb	  sx    affh$45AAAAD!AJOOAtQ78ALLO  uc3//rE   c                 $    U R                  U5      $ rG   )r  )rA   r"  s     rC   _print_DictPrettyPrinter._print_Dicto	  s    ""rE   c                     U(       d  [        S5      $ [        U[        S9nU R                  U5      n[        UR	                  SSSS96 nU$ )Nzset()r   r  r  Tr  )r   r   r   r`   rb   rA   r.  r  prettys       rC   
_print_setPrettyPrinter._print_setr	  sI    g&&q./'V]]3D]IJrE   c                 $   U(       d  [        S5      $ [        U[        S9nU R                  U5      n[        UR	                  SSSS96 n[        UR	                  SSSS96 n[        [
        R                  " [        U5      R                  U5      6 nU$ )	Nzfrozenset()r   r  r  Tr  rx   ry   )	r   r   r   r`   rb   r   r   typer   r  s       rC   _print_frozensetPrettyPrinter._print_frozensetz	  s    m,,q./'V]]3D]IJV]]3D]IJZ__T!W-=-=vFGrE   c                 b    U R                   (       a  [        [        S5      5      $ [        S5      $ )NUniverser  r6  r  s     rC   _print_UniversalSet!PrettyPrinter._print_UniversalSet	  s&    k*566n--rE   c                 *    [        [        U5      5      $ rG   r   r   )rA   rings     rC   _print_PolyRingPrettyPrinter._print_PolyRing	      $t*%%rE   c                 *    [        [        U5      5      $ rG   r  )rA   fields     rC   _print_FracFieldPrettyPrinter._print_FracField	  s    $u+&&rE   c                 *    [        [        U5      5      $ rG   rH   )rA   elms     rC   _print_FreeGroupElement%PrettyPrinter._print_FreeGroupElement	  s    #c(##rE   c                 *    [        [        U5      5      $ rG   r  )rA   polys     rC   _print_PolyElement PrettyPrinter._print_PolyElement	  r"  rE   c                 *    [        [        U5      5      $ rG   r  )rA   fracs     rC   _print_FracElement PrettyPrinter._print_FracElement	  r"  rE   c                     UR                   (       a-  U R                  UR                  5       R                  5       5      $ U R                  UR                  5       5      $ rG   )
is_aliasedrR   as_polyr  rI   s     rC   _print_AlgebraicNumber$PrettyPrinter._print_AlgebraicNumber	  s<    ??;;t||~55788;;t||~..rE   c                     U R                  UR                  SS9UR                  /n[        U R	                  U5      R                  5       6 n[        UR                  S5      6 nU$ )Nlexr$  CRootOf)r9  rJ   r  r   r`   rb   rc   rA   rJ   ra   re   s       rC   _print_ComplexRootOf"PrettyPrinter._print_ComplexRootOf	  sU    		7DDOOD188:;EJJy12rE   c                 B   U R                  UR                  SS9/nUR                  [        R                  La*  UR                  U R                  UR                  5      5        [        U R                  U5      R                  5       6 n[        UR                  S5      6 nU$ )Nr9  r$  RootSum)r9  rJ   r  r   IdentityFunctionru  rR   r   r`   rb   rc   r;  s       rC   _print_RootSumPrettyPrinter._print_RootSum	  sz    		78881---KKDHH-.DOOD188:;EJJy12rE   c                     U R                   (       a  [        S5       S3nOSn[        [        X!R                  -  5      5      $ )NIntegersz_%dzGF(%d))rN   r   r   r   mod)rA   rJ   forms      rC   _print_FiniteField PrettyPrinter._print_FiniteField	  s8    !*-.c2DD-xx899rE   c                 b    U R                   (       a  [        [        S5      5      $ [        S5      $ )NrD  ZZr6  rI   s     rC   _print_IntegerRing PrettyPrinter._print_IntegerRing	  s&    k*566d##rE   c                 b    U R                   (       a  [        [        S5      5      $ [        S5      $ )N	RationalsQQr6  rI   s     rC   _print_RationalField"PrettyPrinter._print_RationalField	  s&    k+677d##rE   c                     U R                   (       a  [        S5      nOSnUR                  (       a  [        U5      $ U R	                  [        US-   [        UR                  5      -   5      5      $ )NRealsRRr  rN   r   has_default_precisionr   rR   r   r=   	precisionrA   domainprefixs      rC   _print_RealFieldPrettyPrinter._print_RealField	  sV     )FF''f%%;;}Vc\C@P@P<Q-QRSSrE   c                     U R                   (       a  [        S5      nOSnUR                  (       a  [        U5      $ U R	                  [        US-   [        UR                  5      -   5      5      $ )N	ComplexesCCr  rU  rX  s      rC   _print_ComplexField!PrettyPrinter._print_ComplexField	  sV     -FF''f%%;;}Vc\C@P@P<Q-QRSSrE   c                    [        UR                  5      nUR                  R                  (       dJ  [	        [	        S5      R                  U R                  UR                  5      5      6 nUR                  U5        U R                  USS5      n[	        UR                  U R                  UR                  5      5      6 nU$ Norder=r  r  r:  symbolsr.   
is_defaultr   r~   rR   ru  r`   rc   rY  rA   rJ   ra   r.   re   s        rC   _print_PolynomialRing#PrettyPrinter._print_PolynomialRing	      DLL!zz$$
8 4 : :4;;tzz;R STEKKc3/EJJt{{4;;'?@ArE   c                    [        UR                  5      nUR                  R                  (       dJ  [	        [	        S5      R                  U R                  UR                  5      5      6 nUR                  U5        U R                  USS5      n[	        UR                  U R                  UR                  5      5      6 nU$ )Nrd  rx   ry   re  rh  s        rC   _print_FractionField"PrettyPrinter._print_FractionField	  rk  rE   c                 4   UR                   n[        UR                  5      [        UR                  5      :w  a  US[        UR                  5      -   4-   nU R	                  USS5      n[        UR                  U R                  UR                  5      5      6 nU$ rc  )	rf  r=   r.   default_orderr`   r   rc   rR   rY  )rA   rJ   gre   s       rC   _print_PolynomialRingBase'PrettyPrinter._print_PolynomialRingBase	  sw    LLtzz?c$"4"455XDJJ/11A3,EJJt{{4;;'?@ArE   c                    UR                    Vs/ s H  nU R                  X!R                  S9PM     nn[        U R	                  SU5      R                  SSS96 nUR                   Vs/ s H  o@R                  U5      PM     nn[        [        S5      R                  U R                  UR                  5      5      6 n[        [        S5      R                  U R                  UR                  5      5      6 nU R	                  SU/U-   Xg/-   5      n[        UR                  5       6 n[        UR                  UR                  R                  5      6 nU$ s  snf s  snf )Nr$  r  r  r  r  zdomain=rd  )exprsr9  r.   r   r  rb   gensrR   r~   rY  rc   r   r   )	rA   basisr   ru  genrv  rY  r.   re   s	            rC   _print_GroebnerBasis"PrettyPrinter._print_GroebnerBasis	  s*   "[[+(c //#[[/9( 	 +DIIdE299s#9NO-2ZZ9ZcS!Z9	"((U\\)BCE!''EKK(@AC 		$$& @AELLN+EJJu'?'?@A!+ :s   #E(Ec                    U R                  UR                  5      n[        UR                  5       6 nUR	                  5       S:  a  UR	                  5       OSn[        [        SU5      UR                  S9n[        UR                  U5      6 nUR                  nUR	                  5       S-
  Ul        [        UR                  U R                  [        UR                  UR                  5       Vs/ s HC  nU R                  U R                  US   5      [        S5      U R                  US   5      4SS9PME     sn5      5      6 nXRl        U$ s  snf )	Nrs   r   r  r$  r   r  r7  r  )rR   rJ   r   rb   r`  r   r   r   r~   r`   rN  r  r  r   )rA   rX   re   rf  rvertr0  r  s          rC   _print_SubsPrettyPrinter._print_Subs
  s   AFF#ELLN+#llnq0ELLNa4Q<%..AEKK./NN!+EKK'*1;;'@9C'@! OOT[[1.T
DKK!<MN  '@9C )D E F 9Cs   .A
Ec                     [        U5      nU R                  UR                  S   5      n[        SUR                  5       -  5      n[        UR	                  U5      6 n[        UR                  U5      6 n[        UR                  5      S:X  a  U$ UR                  u  pgUn[        U R                  U/5      R                  5       6 n	[        [        R                  " X5      S[         R                  06nXl        Xl        U$ )Nr   r   rs   r   )r   rR   ra   r   r&  r~   rM  r`   rb   r   r   r%  r  r  )
rA   rX   ri   re   r   r   r	  r   r  r  s
             rC   _print_number_function$PrettyPrinter._print_number_function
  s     4 kk!&&)$s399;/		 45	EKK	23qvv;!Lvv
!!5!<!<!>?
&0ooj&MOOOO%%rE   c                 &    U R                  US5      $ )Nr  r  rW   s     rC   _print_eulerPrettyPrinter._print_euler3
      **1c22rE   c                 &    U R                  US5      $ )Nr  r  rW   s     rC   _print_catalanPrettyPrinter._print_catalan6
  r  rE   c                 &    U R                  US5      $ )Nr  r  rW   s     rC   _print_bernoulliPrettyPrinter._print_bernoulli9
  r  rE   c                 &    U R                  US5      $ )NLr  rW   s     rC   _print_lucasPrettyPrinter._print_lucas>
  r  rE   c                 &    U R                  US5      $ )Nr,  r  rW   s     rC   _print_fibonacciPrettyPrinter._print_fibonacciA
  r  rE   c                 &    U R                  US5      $ )Nr  r  rW   s     rC   _print_tribonacciPrettyPrinter._print_tribonacciD
  r  rE   c                 z    U R                   (       a  U R                  U[        S   5      $ U R                  US5      $ )Nrs  	stieltjes)rN   r  r    rW   s     rC   _print_stieltjesPrettyPrinter._print_stieltjesG
  s6    ..q-2HII..q+>>rE   c                 :   U R                  UR                  S   5      n[        UR                  [        S5      5      6 n[        UR                  U R                  UR                  S   5      5      6 nU R                  (       a  [        [        S5      5      nO[        S5      nUn[        UR                  SUR                  5       -  5      6 n[        UR                  SUR                  5       -  5      6 n[        UR                  U5      S[        R                  06$ )Nr   r8  rs   ry  r"  r   r   )rR   ra   r   r~   rN   r   r   rc   r   r&  POW)rA   rX   re   r0  r0  r  r  s          rC   _print_KroneckerDelta#PrettyPrinter._print_KroneckerDeltaM
  s    AFF1I&EKK
389EKKAFF1I(>?@=12A3A!&&QWWY/0!''#aggi-01399S>B*..BBrE   c                    [        US5      (       aG  U R                  S5      n[        UR                  U R                  UR	                  5       5      5      6 nU$ [        US5      (       a  U R                  S5      n[        UR                  U R                  UR
                  5      5      6 n[        UR                  U R                  S5      5      6 n[        UR                  U R                  UR                  5      5      6 nU$ [        US5      (       aC  U R                  S5      n[        UR                  U R                  UR
                  5      5      6 nU$ U R                  S 5      $ )N
as_booleanzDomain: r  z in rf  z
Domain on )rk  rR   r   r~   r  rf  r  )rA   r"  re   s      rC   _print_RandomDomain!PrettyPrinter._print_RandomDomainZ
  s   1l##KK
+EDKK,G HIELQKK
+EDKK		,B CDEDKK,? @AEDKK,> ?@ELQ	""KK-EDKK		,B CDEL;;t$$rE   c                      UR                   b*  U R                  UR                   R                  U5      5      $  U R                  [	        U5      5      $ ! [         a     N&f = frG   )r  rR   to_sympyr   reprrA   r  s     rC   
_print_DMPPrettyPrinter._print_DMPl
  s[    	vv!{{166??1#566 "
 {{47##  		s   6A 
A! A!c                 $    U R                  U5      $ rG   )r  r  s     rC   
_print_DMFPrettyPrinter._print_DMFu
  s    q!!rE   c                 J    U R                  [        UR                  5      5      $ rG   rR   r   ri   )rA   objects     rC   _print_ObjectPrettyPrinter._print_Objectx
  s    {{=566rE   c                     [        S5      nU R                  UR                  5      nU R                  UR                  5      nUR	                  X$5      S   n[        U5      $ )Nz-->r   )r   rR   rY  codomainr~   r   )rA   morphismr  rY  r  tails         rC   _print_MorphismPrettyPrinter._print_Morphism{
  sO    UX__-;;x001||E,Q/$rE   c                     U R                  [        UR                  5      5      nU R                  U5      n[	        UR                  SU5      S   5      $ )Nr  r   )rR   r   ri   r  r   r~   )rA   r  r  pretty_morphisms       rC   _print_NamedMorphism"PrettyPrinter._print_NamedMorphism
  sF    kk-">?..x8+++CA!DEErE   c                 h    SSK Jn  U R                  U" UR                  UR                  S5      5      $ )Nr   )NamedMorphismid)sympy.categoriesr  r  rY  r  )rA   r  r  s      rC   _print_IdentityMorphism%PrettyPrinter._print_IdentityMorphism
  s0    2(((//8+<+<dCE 	ErE   c                 F   [        S5      nUR                   Vs/ s H  n[        UR                  5      PM     nnUR	                  5         UR                  U5      S-   nU R                  U5      nU R                  U5      n[        UR                  U5      S   5      $ s  snf )NrX  r  r   )
r   r  r   ri   reverser  rR   r  r   r~   )rA   r  circle	componentcomponent_names_listcomponent_namesr  r  s           rC   _print_CompositeMorphism&PrettyPrinter._print_CompositeMorphism
  s    c
 .6-@-@ B-@	 !.inn =-@ 	  B$$& ++&:;cAkk/2..x8+++O<Q?@@ Bs   Bc                 J    U R                  [        UR                  5      5      $ rG   r  )rA   categorys     rC   _print_CategoryPrettyPrinter._print_Category
  s    {{=788rE   c                 P   UR                   (       d  U R                  [        R                  5      $ U R                  UR                   5      nUR                  (       a=  S[        S5      -  nU R                  UR                  5      S   nUR                  X45      n[        US   5      $ )Nr   z==>r   )premisesrR   r   EmptySetconclusionsr   r~   r   )rA   diagrampretty_resultresults_arrowpretty_conclusionss        rC   _print_DiagramPrettyPrinter._print_Diagram
  s    ;;qzz**G$4$45"T%[0M!%W-@-@!A!!D)//3M -*++rE   c                    SSK Jn  U" [        UR                  5       VVs/ s HC  n[        UR                  5       Vs/ s H  nXU4   (       a  XU4   O
[        S5      PM!     snPME     snn5      nU R                  U5      $ s  snf s  snnf )Nr   )Matrixr   )r  r  rL  r`  r   r   r  )rA   gridr  r-   r9   matrixs         rC   _print_DiagramGrid PrettyPrinter._print_DiagramGrid
  s    )"'"46"4Q $)#46#4a )-T
$!t*sC#46"46 7 **6226 6s   B	
&B$B	
B	
c                 (    U R                  USS5      $ rf  r  rA   r	  s     rC   _print_FreeModuleElement&PrettyPrinter._print_FreeModuleElement
  s    q#s++rE   c           
          UR                    VVs/ s H-  o" Vs/ s H  o1R                  R                  U5      PM     snPM/     nnnU R                  USS5      $ s  snf s  snnf Nr  r  )rv  r  r  r`   )rA   r  rx  rq  rv  s        rC   _print_SubModulePrettyPrinter._print_SubModule
  sO    =>VVDVcS1S#S1VDtS#.. 2Ds   	A$AAAc                 p    U R                  UR                  5      U R                  UR                  5      -  $ rG   )rR   r  r  rA   r  s     rC   _print_FreeModulePrettyPrinter._print_FreeModule
  s'    {{166"DKK$777rE   c                     UR                   R                  nU R                  UR                  R                   Vs/ s H  u  o2" U5      PM     snSS5      $ s  snf r  )r  r  r`   _modulerv  )rA   r  r,  r   s       rC   _print_ModuleImplementedIdeal+PrettyPrinter._print_ModuleImplementedIdeal
  sB    ffoo!))..A.3AA.A3LLAs   Ac                 p    U R                  UR                  5      U R                  UR                  5      -  $ rG   )rR   r  
base_idealrA   Rs     rC   _print_QuotientRing!PrettyPrinter._print_QuotientRing
  s'    {{166"T[[%>>>rE   c                     U R                  UR                  R                  U5      5      U R                  UR                  R                  5      -   $ rG   )rR   r  r  r  r  s     rC   _print_QuotientRingElement(PrettyPrinter._print_QuotientRingElement
  s6    {{166??1-.QVV=N=N1OOOrE   c                     U R                  UR                  5      U R                  UR                  R                  5      -   $ rG   )rR   datamodulekilled_moduler  s     rC   _print_QuotientModuleElement*PrettyPrinter._print_QuotientModuleElement
  s-    {{166"T[[1G1G%HHHrE   c                 p    U R                  UR                  5      U R                  UR                  5      -  $ rG   )rR   rH  r  r  s     rC   _print_QuotientModule#PrettyPrinter._print_QuotientModule
  s'    {{166"T[[%AAArE   c                 &   U R                  UR                  5       5      nUR                  5       S-  Ul        [	        UR                  SU R                  UR                  5      S[        SS5      -  U R                  UR                  5      5      6 nU$ )Nr   z : z %s> rp  )	rR   _sympy_matrixr`  r   r   r~   rY  r   r  )rA   rf  r  re   s       rC   _print_MatrixHomomorphism'PrettyPrinter._print_MatrixHomomorphism
  sq    Q__./ --/Q.FLLAHH0Ed3l"DKK

$;= >rE   c                 8    U R                  UR                  5      $ rG   rR   ri   )rA   manifolds     rC   _print_ManifoldPrettyPrinter._print_Manifold
  s    {{8==))rE   c                 8    U R                  UR                  5      $ rG   r  )rA   patchs     rC   _print_PatchPrettyPrinter._print_Patch
  s    {{5::&&rE   c                 8    U R                  UR                  5      $ rG   r  )rA   coordss     rC   _print_CoordSystem PrettyPrinter._print_CoordSystem
  s    {{6;;''rE   c                     UR                   R                  UR                     R                  nU R	                  [        U5      5      $ rG   )
_coord_sysrf  _indexri   rR   r   )rA   r$  strings      rC   _print_BaseScalarField$PrettyPrinter._print_BaseScalarField
  s6    !!))%,,7<<{{=011rE   c                     [        S5      S-   UR                  R                  UR                     R                  -   nU R                  [        U5      5      $ )Nr!  r  )r!   r  rf  r  ri   rR   r   )rA   r$  r.  s      rC   _print_BaseVectorField$PrettyPrinter._print_BaseVectorField
  sF    $%+e.>.>.F.Fu||.T.Y.YY{{=+,,rE   c                    U R                   (       a  [        S5      nOSnUR                  n[        US5      (       aM  UR                  R
                  UR                     R                  nU R                  US-   [        U5      -   5      $ U R                  U5      n[        UR                  5       6 n[        UR                  U5      6 $ )NDifferentialr"  r  r   )rN   r   _form_fieldrk  r  rf  r  ri   rR   r   r   rb   rc   )rA   r:  r"  r$  r  re   s         rC   _print_Differential!PrettyPrinter._print_Differential
  s    N+AA  5,''%%--ell;@@F;;q3wv)>>??KK&E/Euzz!}--rE   c                     U R                  UR                  S   5      n[        UR                  SUR                  R
                  -  5      6 n[        UR                  S5      6 nU$ )Nr   z%s(ry   )rR   ra   r   rc   r   r   r~   )rA   r  re   s      rC   	_print_TrPrettyPrinter._print_Tr
  sR    AFF1I&EJJu0D0D'EFGEKK,-rE   c                     U R                  UR                  S   5      n[        UR                  5       6 nU R                  (       a   [        UR                  [        S   5      6 nU$ [        UR                  S5      6 nU$ )Nr   nurR   ra   r   rb   rN   rc   r    rd   s      rC   _print_primenuPrettyPrinter._print_primenu
  sj    AFF1I&ELLN+

=+> ?@E  

4 01ErE   c                     U R                  UR                  S   5      n[        UR                  5       6 nU R                  (       a   [        UR                  [        S   5      6 nU$ [        UR                  S5      6 nU$ )Nr   Omegar#  rd   s      rC   _print_primeomegaPrettyPrinter._print_primeomega  sj    AFF1I&ELLN+

=+A BCE  

7 34ErE   c                     UR                   R                   S:X  aI  U R                  (       a  U R                  [        S5      5      nU$ U R                  [	        S5      5      nU$ U R                  U5      $ )NdegreeDegree   )ri   rN   rR   r   chrrK   rd   s      rC   _print_QuantityPrettyPrinter._print_Quantity  s_    66;;("  K$9: L CH-L$$Q''rE   c                     [        S[        UR                  5      -   S-   5      nU R                  UR                  5      nU R                  UR
                  5      n[        [        R                  " X2U5      6 nU$ )Nr   )r   r   r   rR   r   r   r   r   r   s         rC   _print_AssignmentBase#PrettyPrinter._print_AssignmentBase  s\    d144j(3./KKKKJOOA156rE   c                 8    U R                  UR                  5      $ rG   r  r  s     rC   
_print_StrPrettyPrinter._print_Str#  s    {{166""rE   rQ   rG   )F)T)r  r  )NNr7  F)FNrx   ry   )FNr  Frx   ry   )r   
__module____qualname____firstlineno____doc__printmethod_default_settingsr:   rK   propertyrN   rT   rY   r\   rf   rl   _print_RandomSymbolrp   ru   r   r   r   r   r   r   r   _print_Infinity_print_NegativeInfinity_print_EmptySet_print_Naturals_print_Naturals0_print_Integers_print_Rationals_print_Complexes_print_EmptySequencer   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r  r  r  r  r1  rB  rW  rm  r  rt  r  r  r  r  r  r  r  r  r  r
  r  r  r  r#  r1  r7  r<  rA  rE  rJ  rU  r]  rc  ri  rq  rt  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r)  r5  rK  rO  rR  r   r\  ra  rd  rh  rV  ro  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!  r9  ro  r[  re  rh  rp  rr  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  _print_SeqPer_print_SeqAdd_print_SeqMulr`   r  r  r  r  r  r  r  r  r  r   r%  r)  r-  r1  r6  r<  rA  rG  rK  rP  r[  r`  ri  rm  rr  ry  r}  r  r  r  r  _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  r$  r(  r/  r2  r5  __static_attributes__rQ   rE   rC   r(   r(      s   IK !%#~% ( (:
  (S8

( "O)!O!O"!O""&7 +"*66666+6E
++#J&",JIV4l
(_B8AF
ISS*6%
")###)	Y, H
8)0""&H$'d=L%B @B !F;
F) @6p34.`Rh.4 CF!s6677 HLGJ%(#JW % %4''<<@6677886886K[*<<<<<<+&'	2
1
(F+P:Az*X.$)$++M7:2<"8BIB0O:K>K'A+:
** &M%M%M#'tt((,0'0#.&'$&&/	:$$	T	T

&"(333 #K333?C%$$"7 F
E
A9,3,/8M?PIB*'(2-.(#rE   r(   c                     [        U5      nUR                  S   n[        U5      n UR                  U 5      [        U5        $ ! [        U5        f = f)z{Returns a string containing the prettified form of expr.

For information on keyword arguments see pretty_print function.

r0   )r(   r<   r   rT   )rJ   rB   rD  r0   uflags        rC   r  r  '  sK     
x	 B ,,}-K{+E"zz$5!5!s   A Ac                 .    [        [        U 40 UD65        g)a^  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".
N)printr  )rJ   kwargss     rC   pretty_printrR  :  s    V 
&
 
 !rE   c                 ~    SSK Jn  SSKJn  SU;  a  SUS'   U" [	        U 40 UD6R                  U" 5       5      5        g)ao  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.

r   )pager)getpreferredencodingr2   i  N)pydocrT  localerU  r  encode)rJ   rB   rT  rU  s       rC   pager_printrY  j  s=     +H$"(	&
"
"
)
)*>*@
ABrE   )?r  
sympy.corer   sympy.core.addr   sympy.core.containersr   sympy.core.functionr   sympy.core.mulr   sympy.core.numbersr   r	   sympy.core.powerr
   sympy.core.sortingr   sympy.core.symbolr   sympy.core.sympifyr   sympy.printing.conventionsr   sympy.printing.precedencer   r   r   sympy.printing.printerr   r   sympy.printing.strr   sympy.utilities.iterablesr   sympy.utilities.exceptionsr    sympy.printing.pretty.stringpictr   r   &sympy.printing.pretty.pretty_symbologyr   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   rU  pprint_use_unicodepprint_try_use_unicoder(   r  rR  pprintrY  rQ   rE   rC   <module>ro     s       ' (  /   / $ + 7 T T : # 1 @ Cb b b b
 ( / F,#G F,#RX " "$+"Z 
CrE   