
    g@                       d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZmZmZ d dlmZmZ d dlm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z&m'Z' d dl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z7 e/Z8e2Z9 G d de          Z: ee:          d             Z;d Z<e<Z=d Z>dS )    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                   "   e Zd ZdZdZddddddddddd
Zdd	Zd
 Zed             Z	d Z
d Zd Zd ZddZeZd Zd Zd Zd Zd Zd Zd Zd Zd ZeZeZeZeZeZeZeZeZ eZ!d Z"d Z#d Z$d Z%d Z&d  Z'd! Z(dd"Z)d# Z*d$ Z+d% Z,d& Z-d' Z.dd(Z/dd)Z0d* Z1d+ Z2d, Z3d- Z4d. Z5d/ Z6d0 Z7d1 Z8d2 Z9d3 Z:d4 Z;d5 Z<d6 Z=dd9Z>d: Z?d; Z@d< ZAd= ZBd> ZCd? ZDd@ ZEdA ZFdB ZGdC ZHdD ZIdE ZJdF ZKdG ZLdH ZMdI ZNdJ ZOdK ZPdL ZQdM ZRdN ZSdO ZTdP ZUdQ ZVdR ZWdS ZXdT ZYdU ZZdV Z[dW Z\dX Z]i fdYZ^dZ Z_d[ Z`d\ Zad] Zbd^ Zcd_ Zdd` Zeda Zfdb ZgdddZhde Zidf Zjdg Zkdh Zl	 	 ddkZmdl Zndm Zodn Zpdo Zq	 	 	 ddqZrdr Zseds             Ztdt Zudu Zvdv Zwdw Zxdx Zydy Zzdz Z{d{ Z|d| Z}d} Z~d~ Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZddZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZeZeZeZdddpd dfdZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdÄ ZdĄ Zdń ZdƄ ZdǄ ZdȄ ZdɄ Zdʄ Zd˄ Zd̄ Zd̈́ Zd΄ Zdτ ZdЄ Zdф Zd҄ ZeZdӄ ZdԄ ZdՄ Zdք Zdׄ Zd؄ Zdل Zdڄ Zdۄ Zd܄ Zd݄ Zdބ Zd߄ Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )PrettyPrinterz?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                 B   t          j        | |           t          | j        d         t                    s-t          d                    | j        d                             | j        d         dvr-t          d                    | j        d                             d S )Nr7   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     X/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/printing/pretty/pretty.pyr;   zPrettyPrinter.__init__/   s    x((($.)9:C@@ 	~DKKDN[kLlmmnnn^,-Z??SZZ[_[ijz[{||}}} @?    c                 :    t          t          |                    S Nr   r>   rB   exprs     rD   emptyPrinterzPrettyPrinter.emptyPrinter7   s    #d))$$$rE   c                 <    | j         d         rdS t                      S )Nr1   T)r=   r!   )rB   s    rD   _use_unicodezPrettyPrinter._use_unicode:   s"    >-( 	(4%'''rE   c                 L     |                      |          j        di | j        S )N )_printrenderr=   rI   s     rD   doprintzPrettyPrinter.doprintA   s)    't{{4  '99$.999rE   c                     |S rG   rO   rB   es     rD   _print_stringPictzPrettyPrinter._print_stringPictE   s    rE   c                      t          |          S rG   )r   rT   s     rD   _print_basestringzPrettyPrinter._print_basestringH   s    !}}rE   c                     t          |                     |j                                                   }t          |                    d           }|S )Natan2)r   
_print_seqargsparensleftrB   rU   pforms      rD   _print_atan2zPrettyPrinter._print_atan2K   sA    DOOAF33::<<=EJJw//0rE   Fc                 J    t          |j        |          }t          |          S rG   )r   namer   )rB   rU   	bold_namesymbs       rD   _print_SymbolzPrettyPrinter._print_SymbolP   s!    QVY//$rE   c                 L    |                      || j        d         dk              S )Nr6   bold)rf   r=   rT   s     rD   _print_MatrixSymbolz!PrettyPrinter._print_MatrixSymbolT   s%    !!!T^4F%G6%QRRRrE   c                 z    | j         d         }|dk    r| j        dk    }t          t          ||                    S )Nr0   r,      )r0   )r=   _print_levelr   r   )rB   rU   r0   s      rD   _print_FloatzPrettyPrinter._print_FloatW   sC     N;/	)Q.I$qI666777rE   c           	         |j         }|j        }|                     |          }t          |                    d           }t          |                    d           }t          |                    |                     t          d                               }t          |                    d           }t          |                    |                     |                     }t          |                    d           }|S )N()MULTIPLICATION SIGN_expr1_expr2rP   r   r^   rightr#   rB   rU   vec1vec2r`   s        rD   _print_CrosszPrettyPrinter._print_Cross_   s    xxD!!EJJsOO,EKK,,-EJJt{{15J3K3K'L'LMMNEJJsOO,EJJt{{4'8'899:EJJsOO,rE   c           	         |j         }|                     |          }t          |                    d           }t          |                    d           }t          |                    |                     t          d                               }t          |                    |                     t          d                               }|S )Nro   rp   rq   NABLA_exprrP   r   r^   ru   r#   rB   rU   vecr`   s       rD   _print_CurlzPrettyPrinter._print_Curlk   s    gC  EJJsOO,EKK,,-EJJt{{15J3K3K'L'LMMNEJJt{{1W::'>'>??@rE   c           	         |j         }|                     |          }t          |                    d           }t          |                    d           }t          |                    |                     t          d                               }t          |                    |                     t          d                               }|S )Nro   rp   DOT OPERATORr{   r|   r~   s       rD   _print_DivergencezPrettyPrinter._print_Divergencet   s    gC  EJJsOO,EKK,,-EJJt{{1^3D3D'E'EFFGEJJt{{1W::'>'>??@rE   c           	         |j         }|j        }|                     |          }t          |                    d           }t          |                    d           }t          |                    |                     t          d                               }t          |                    d           }t          |                    |                     |                     }t          |                    d           }|S )Nro   rp   r   rr   rv   s        rD   
_print_DotzPrettyPrinter._print_Dot}   s    xxD!!EJJsOO,EKK,,-EJJt{{1^3D3D'E'EFFGEJJsOO,EJJt{{4'8'899:EJJsOO,rE   c           	      &   |j         }|                     |          }t          |                    d           }t          |                    d           }t          |                    |                     t          d                               }|S )Nro   rp   r{   r|   rB   rU   funcr`   s       rD   _print_GradientzPrettyPrinter._print_Gradient   sq    wD!!EJJsOO,EKK,,-EJJt{{1W::'>'>??@rE   c           	      &   |j         }|                     |          }t          |                    d           }t          |                    d           }t          |                    |                     t          d                               }|S )Nro   rp   	INCREMENTr|   r   s       rD   _print_LaplacianzPrettyPrinter._print_Laplacian   sq    wD!!EJJsOO,EKK,,-EJJt{{1[>>'B'BCCDrE   c                     	 t          t          |j        j        |                     S # t          $ r |                     |          cY S w xY w)N)printer)r   r    	__class____name__KeyErrorrK   rT   s     rD   _print_AtomzPrettyPrinter._print_Atom   s\    	(k!+*>MMMNNN 	( 	( 	($$Q'''''	(s   '* AAc                 p    | j         r|                     |          S ddg}|                     |dd          S )Nz-ooooro   rp   )rM   r   r[   )rB   rU   inf_lists      rD   _print_RealszPrettyPrinter._print_Reals   s@     	7##A&&&t}H??8S#666rE   c                     |j         d         }|                     |          }|j        r|j        s"|j        st          |                                 }t          |                    d           }|S Nr   !)r\   rP   
is_Integeris_nonnegative	is_Symbolr   r]   r^   rB   rU   xr`   s       rD   _print_subfactorialz!PrettyPrinter._print_subfactorial   sd    F1IA 	0!"2 	0q{ 	0/EEJJsOO,rE   c                     |j         d         }|                     |          }|j        r|j        s"|j        st          |                                 }t          |                    d           }|S r   r\   rP   r   r   r   r   r]   ru   r   s       rD   _print_factorialzPrettyPrinter._print_factorial   sf    F1IA 	0!"2 	0q{ 	0/EEKK,,-rE   c                     |j         d         }|                     |          }|j        r|j        s"|j        st          |                                 }t          |                    d           }|S )Nr   z!!r   r   s       rD   _print_factorial2zPrettyPrinter._print_factorial2   sf    F1IA 	0!"2 	0q{ 	0/EEKK--.rE   c                    |j         \  }}|                     |          }|                     |          }dt          |                                |                                          z  }t	          |                    |           }t	          |                    |           }t	          |                    dd           }|j        dz   dz  |_        |S )N ro   rp   rk      )r\   rP   maxwidthr   abover]   baseline)rB   rU   nkn_pformk_pformbarr`   s           rD   _print_binomialzPrettyPrinter._print_binomial   s    v1++a..++a..#gmmoow}}777GMM#../EKK001ELLc223.1,q0rE   c                    t          dt          |j                  z   dz             }|                     |j                  }|                     |j                  }t          t          j        |||          dt           j        i}|S )Nr   binding)	r   r   rel_oprP   lhsrhsr   nextOPENrB   rU   oplrr`   s         rD   _print_RelationalzPrettyPrinter._print_Relational   sn    d18nn,s233KKKKJOAr155OzOOrE   c                    ddl m}m} | j        r|j        d         }|                     |          }t          ||          r$|                     |t          d                    S t          ||          r$| 	                    |t          d                    S |j
        r"|j        st          |                                 }t          |                    t          d                     S |                     |          S )Nr   )
EquivalentImpliesNotEquiv)altcharNotArrowNot)sympy.logic.boolalgr   r   rM   r\   rP   r<   _print_Equivalentr    _print_Implies
is_Booleanis_Notr   r]   r^   _print_Function)rB   rU   r   r   argr`   s         rD   
_print_NotzPrettyPrinter._print_Not   s   ======== 	+&)CKK$$E#z** T--c;z;R;R-SSS#w'' Q**3J8O8O*PPP~ 4cj 4"ELLNN3uzz+e*<*<==>>''***rE   c                    |j         }|rt          |j         t                    }|d         }|                     |          }|j        r"|j        st          |                                 }|dd          D ]{}|                     |          }|j        r"|j        st          |                                 }t          |                    d|z             }t          |                    |           }||S )Nkeyr   rk    %s )	r\   sortedr   rP   r   r   r   r]   ru   )rB   rU   charsortr\   r   r`   	pform_args           rD   __print_BooleanzPrettyPrinter.__print_Boolean   s    v 	8!&&6777D1gC  > 	0#* 	0/E8 	8 	8CC((I~ <cj <&	(8(8(:(:;	FTM : :;EI 6 67EErE   c                     | j         r#|                     |t          d                    S |                     |d          S )NAndTr   rM   _PrettyPrinter__print_Booleanr    r   rT   s     rD   
_print_AndzPrettyPrinter._print_And  D     	6'';u+=+=>>>'''555rE   c                     | j         r#|                     |t          d                    S |                     |d          S )NOrTr   r   rT   s     rD   	_print_OrzPrettyPrinter._print_Or  sD     	6'';t+<+<==='''555rE   c                     | j         r#|                     |t          d                    S |                     |d          S )NXorTr   r   rT   s     rD   
_print_XorzPrettyPrinter._print_Xor  r   rE   c                     | j         r#|                     |t          d                    S |                     |d          S )NNandTr   r   rT   s     rD   _print_NandzPrettyPrinter._print_Nand  sD     	6'';v+>+>???'''555rE   c                     | j         r#|                     |t          d                    S |                     |d          S )NNorTr   r   rT   s     rD   
_print_NorzPrettyPrinter._print_Nor$  r   rE   c                     | j         r'|                     ||pt          d          d          S |                     |          S )NArrowFr   r   rB   rU   r   s      rD   r   zPrettyPrinter._print_Implies*  sJ     	+''7+Jk'6J6JQV'WWW''***rE   c                     | j         r%|                     ||pt          d                    S |                     |d          S )NEquivTr   r   r   s      rD   r   zPrettyPrinter._print_Equivalent0  sI     	6''7+Jk'6J6JKKK'''555rE   c           	          |                      |j        d                   }t          |                    t	          d|                                                     S )Nr   _)rP   r\   r   r   r   r   r_   s      rD   _print_conjugatezPrettyPrinter._print_conjugate6  sB    AF1I&&EKKc5;;==)A)ABBDDrE   c                     |                      |j        d                   }t          |                    dd           }|S )Nr   |)rP   r\   r   r]   r_   s      rD   
_print_AbszPrettyPrinter._print_Abs:  s6    AF1I&&ELLc223rE   c                     | j         r?|                     |j        d                   }t          |                    dd           }|S |                     |          S )Nr   lfloorrfloorrM   rP   r\   r   r]   r   r_   s      rD   _print_floorzPrettyPrinter._print_floor?  sU     	+KKq	**EXx @ @AEL''***rE   c                     | j         r?|                     |j        d                   }t          |                    dd           }|S |                     |          S )Nr   lceilrceilr   r_   s      rD   _print_ceilingzPrettyPrinter._print_ceilingG  sU     	+KKq	**EWg > >?EL''***rE   c                    t          |j                  r| j        rt          d          }nd}d }d}t	          |j                  D ]\  }}|                     |          }t          |                    |           }||z  }|j	        r|dk    r|t          t          |                    z  }||}lt          |                    d           }t          |                    |           }t          |                     |j                                                  dt          j        i}	t          |          }
|dk    dk    r|
t          t          |                    z  }
t          |
                    t          j        |           }
|
j        dz   |
_        t          t          j        |
|	           }
t          j        |
_        |
S )NPARTIAL DIFFERENTIALdr   rk   r   r   F)r   rJ   rM   r#   reversedvariable_countrP   r   r^   r   r>   ru   r]   FUNCbelowr   LINEr   r   MULr   )rB   derivderiv_symbolr   count_total_derivsymnumsdsfr`   s              rD   _print_DerivativezPrettyPrinter._print_DerivativeO  s   EJ'' 	 D,= 	 344LLL !566 	- 	-HCC  AQVVL112B$N .aCHH---y-,&*kk%*&=&=&D&D&F&FHOH H <((!e++:c*;&<&<===EEKK
;;<!+JOE1556"rE   c                 ,   ddl m}m} | |            k    r*t          d          }t	          |                                 S  ||                                          j        }|g k    r8|                     |j	        dz
            }t	          |                                 S t          d          }|D ]a}|                     t          t          |                                        dd                    }t	          |                    |           }b|S )Nr   PermutationCycle rk   ,) sympy.combinatorics.permutationsr  r  r   r   r]   listcyclic_formrP   sizer>   tuplereplaceru   )rB   dcr  r  cycdc_listr.   r   s           rD   _print_CyclezPrettyPrinter._print_Cyclet  s    GGGGGGGG==R..Cszz||,,+bggii((4b==++bgk**Cszz||,,nn 	, 	,ACaMM11#r::;;Aciill+CC
rE   c                    ddl m}m} |j        }|t	          d| dddd           n| j                            d	d
          }|r|                      ||                    S |j        }t          t          t          |                              }t          d          }d
}t          ||          D ]\  }	}
|                     |	          }|                     |
          }t          |                    |           }|rd}nt          |                    d           }t          |                    |           }t          |                                 S )Nr   r  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
stacklevelr8   Tr  Fr   )r  r  r  print_cyclicr   r=   getr  
array_formr  rangelenr   ziprP   r   r  r^   ru   r]   )rB   rJ   r  r  r8   lowerupperresultfirstur   s1s2cols                 rD   _print_Permutationz PrettyPrinter._print_Permutation  sr   GGGGGGGG!."%+6   */+P     .,,]DAAK 	2$$UU4[[111U3u::&&''Bu%% 	4 	4DAqQBQBbhhrll+C 1 #((3--0c!2!23FF6==??++rE   c                    |j         }|                     |          }|j        rt          |                                 }|}|j        D ]m}|                     |d                   }|                                dk    rt          |                                 }t          |                    d|           }nd}d }|j        D ]}	|                                }
|
dz   }| j	         }|r|dz  }t          d|          }t          |          }|j        ||
z
  dz  z   |_        t          |	          dk    rHt          |	          dk    r*t          d          }|                     |	d                   }t          |	          dk    r6|                     |	d                   }|                     |	d                   }|rt          dd|                                z
            }t          |                    d	|z             }t          dd
|                                z
            }t          |                    d	|z             }t          |                    |           }t          |                    |           }|st          |                    d	           }|r|}d}t          |                    |           }t          |                    |           }t          j        |_        |S )Nr   rk   z dTr   intr     r      F)functionrP   is_Addr   r]   limitsr   ru   heightrM   r   r   r(  r   r^   r   r  r  r   )rB   integralr  prettyFr   r   	prettyArg	firsttermr  limhH
ascii_modevintr`   prettyAprettyBspcs                     rD   _print_IntegralzPrettyPrinter._print_Integral  s    ++a..8 	4 '.."2"23G  	: 	:AAaD))I  1$$&	(8(8(:(:;	ciii889CC 	? .	/ .	/C

AAA "..J Qq>>D t$$E \A- EN 3xx!|| s88q==(nnG"kk#a&11Gs88q=="kk#a&11G"kk#a&11G D aW]]__!455C(',,sSy*A*ABGaW]]__!455C('--c	*B*BCG"EKK$8$89"EKK$8$89 6"EKK$4$45 /!		u.CHHQKK("rE   c                 ~   |j         }|                     |          }t          dd          }t          dd          }t          dd          }| j        r t          dd          }t          dd          }|                                }d}d}	d}
|j        D ]}|                     |          \  }}|dz   d	z  d
z  dz
  }||z   ||dz
  z  z   |z   |z   g}t          |dz             D ])}|                    d|z   d|dz
  z  z   |z   dz              *t          d          }t           |j        |  }t          |	|                                          }	|r|                                }
t          |                    |           }t          |                    |           }|r	d|_        d}|                                }t          d          }t           |j        dg|dz
  z    }t          |                    |           }t          |                    |           }|	|
dz  z   |_        t          j        |_        |S )Nr   rk   r   -UpTackTr   r      r5  r   r  F)termrP   r   rM   r:  r9  '_PrettyPrinter__print_SumProduct_Limitsr'  appendr   r   stackr   r   r  r   ru   r  r   )rB   rJ   r   pretty_funchorizontal_chr
corner_chrvertical_chrfunc_heightr-  	max_uppersign_heightr?  pretty_lowerpretty_upperr   
sign_linesr   pretty_signr:  paddings                       rD   _print_ProductzPrettyPrinter._print_Product  sl   ykk$''c1#q\\
C|| 	+!#q\\Nh**J!((**	; 	F 	FC)-)G)G)L)L&L, 1_)Q.2E(:55QR79STWaadrrsJ;?++ _ _!!#"4uQw"H<"WZ]"]^^^^$R..K$&7k&7&DEK I|':':'<'<==I 3)0022$k&7&7&E&EFK$k&7&7&E&EFK '($ ''))F nnG -'-#
1C"DEG$k&7&7&@&@AK$k&7&7&D&DEKK(;>9(nrE   c                 |      fd}                      |d                   } ||d         |d                   }||fS )Nc                     t          dt          d          z   dz             }                    |           }                    |          }t          t          j        |||           }|S )Nr   ==)r   r   rP   r   r   )r   r   r   r   r   r`   rB   s         rD   print_startz<PrettyPrinter.__print_SumProduct_Limits.<locals>.print_start.  s_    C$t**,s233BC  AC  A
2q 9 9:ELrE   r   r   rk   rP   )rB   r?  r`  prettyUpperprettyLowers   `    rD   __print_SumProduct_Limitsz'PrettyPrinter.__print_SumProduct_Limits-  sW    	 	 	 	 	 kk#a&))!k#a&#a&11K''rE   c                    | j          }d }|j        }|                     |          }|j        rt	          |                                 }|                                dz   }d}d}d}	|j        D ]r}
|                     |
          \  }}t          ||                                          } |||
                                |
                                |          \  }}}}t          d          }t	           |j        |  }|r|                                }	t	          |                    |           }t	          |                    |           }|r2|xj        ||                                dz  |j        z
  z
  z  c_        d}t          d          }t	           |j        dg|z    }t	          |                    |           }t	          |                    |           }t|s|nd}||	dz  z   |z   |_        t          j        |_        |S )Nc                 &   dd}t          | d          }|dz  }|dz   }| dz  }g }	|r|	                    d|z  dz              |	                    dd|dz
  z  z             t          d|          D ]%}
|	                    d|
z  dd||
z
  z             &|r#|	                    d|z  d	d||z
  z             t          t          d|                    D ]%}
|	                    d|
z  d
d||
z
  z             &|	                    d
d|dz
  z  z   dz              |||z   |	|fS ||z   }||z   }t	          dd          }|	                    d|z             t          d|          D ]/}
|	                    d|
z  |d         d||
z
  dz
  z             0t          t          d|                    D ]/}
|	                    d|
z  |d         d||
z
  dz
  z             0|	                    |d         |z             ||d|z  z   |	|fS )N<^>c                     |rt          |           |k    r| S |t          |           z
  }|dv s|t          d          vr| d|z  z   S |dz  }d|z  }|dk    rd|z  | z   S || z   d|t          |          z
  z  z   S )N)rg  <rg  r   r   >)r(  r  )r  widhowneedhalfleads         rD   adjustz6PrettyPrinter._print_Sum.<locals>.asum.<locals>.adjust=  s     c!ffsllHSVV|,&&#T%[[*@*@s4x<'Qw4x#::t8a<'ax#tc$ii'7"888rE   r   rk   r   r   z\%s`\rp   /r  sumr6  r      )Nrg  )r   rN  r'  r   r   )	hrequiredr*  r+  	use_asciirp  r@  r   wmorelinesr.   vsums               rD   asumz&PrettyPrinter._print_Sum.<locals>.asum<  s   
9 
9 
9 
9 Iq!!A1AAAq=DE 2S!Ws]+++WQU4555q! B BALLSUUUCQKK!@AAAA CLLCGGGS!a%[[!ABBB!%1++.. A AALLCEEE3A;;!?@@@@S3A;.4555!d(E4//HHE1~~S!W%%%q! O OALLSUUDGGS!a%!)__!MNNNN!%1++.. O OALLSUUDGGS!a%!)__!MNNNNT!Wa[)))!af*eT11rE   r   Tr   r  Fr   )rM   r7  rP   r8  r   r]   r:  r9  rM  r   r   r   rO  r   r  r   ru   r  r   )rB   rJ   rB  r{  r  r<  rA  r-  rU  rV  r?  rc  rb  r   r@  slines
adjustment
prettySignpadascii_adjustments                       rD   
_print_SumzPrettyPrinter._print_Sum9  s6   **
(	2 (	2 (	2T M++a..8 	4 '.."2"23GNNq  	; 	= 	=C'+'E'Ec'J'J$KI{'9'9';';<<I (,t;$$&&(9(9(;(;Z(I (I$Aq&*#BJ#%5Z%5v%>?J 2(//11#Z%5%5k%B%BCJ#Z%5%5k%B%BCJ   A)9)91)<)0)9*: %; ;   R..Cici#q12C#Z%5%5c%:%:;J *"2"27";";<GG .8>::Q${A~58HH$.rE   c                    |j         \  }}}}|                     |          }t          |          t          d         k    rt	          |                    dd           }t	          d          }|                     |          }| j        r<t	          |                    t          dd           t          d                      }nt	          |                    d           }t	          |                    |                     |                     }t          |          d	k    s|t          j        t          j        fv rd
}n8| j        r1t          |          dk    rt          d          nt          d          }t	          |                    |                     |                     }t	          |                    |           }t	          |                    |          dt          j        i}|S )Nr   ro   rp   r?  rI  rk   r   z->z+-r  +SuperscriptPlusSuperscriptMinusr   )r\   rP   r   r   r   r]   rM   ru   r   r    r>   r   InfinityNegativeInfinityr  r  )	rB   r   rU   zz0dirELimLimArgs	            rD   _print_LimitzPrettyPrinter._print_Limit  s   1b#KKNNa==Ju---AHHS#../AQ 	5c1.U{7?S?S.U.U!V!VWFFd!3!34FV\\$++b//::;s88traj!2D%EEECC  m8;CCk"3444[YkMlMlV\\$++c*:*:;;<#))F++,#))A,,?
??
rE   c                 (   |}i t          |j                  D ];}t          |j                  D ]$|                     ||f                   |f<   %<d}d}dg|j        z  }t          |j                  D ]6t	          fdt          |j                  D             pdg          |<   7d}t          |j                  D ]8}d}t          |j                  D ]ϊ|f         }	|	                                |         k    sJ t          |	                                |                   \  }
}t          |	                    |           }	t          |		                    |
           }	||	}t          |                    d|z             }t          |                    |	           }||}t          |          D ]}t          |
                    d           }t          |
                    |           }:|t          d          }|S )	zL
        This method factors out what is essentially grid printing.
        r   rk   c                 H    g | ]}|f                                          S rO   r   ).0r.   Msr:   s     rD   
<listcomp>z8PrettyPrinter._print_matrix_contents.<locals>.<listcomp>  s+    CCC2ad8>>++CCCrE   r   Nr   r  )r'  rowscolsrP   r   r   r'   r   ru   r^   r  )rB   rU   Mr.   hsepvsepmaxwDD_rowr  r^   ru   r   r  r:   s                @@rD   _print_matrix_contentsz$PrettyPrinter._print_matrix_contents  s'    qv 	0 	0A16]] 0 0;;qAw//1a40  taf}qv 	L 	LACCCCCU16]]CCCJsKKDGG qv %	, %	,AE16]] 4 4q!tH wwyyDG++++
 )DG<<e/t- =E"EKKD$9$9:"EKKNN3y 4[[ . .-AGGENN+AA92ArE   []c                     |                      |          }|                                dz  |_        t          |                    ||           }|S )Nr   )r  r:  r   r   r]   )rB   rU   lparensrparensr  s        rD   _print_MatrixBasezPrettyPrinter._print_MatrixBase  sE    ''**XXZZ]
'223rE   c                 P   |j         }|j        rddlm} t	          ||          r|                     |j        dd          S |                     |          }|                                dz  |_	        t          |                    dd           S |                     |dd          S )Nr   BlockMatrixr   )r  r  r   )r   is_MatrixExpr&sympy.matrices.expressions.blockmatrixr  r<   r  blocksrP   r:  r   r   r]   )rB   rU   matr  r  s        rD   _print_Determinantz PrettyPrinter._print_Determinant  s    e 	IJJJJJJ#{++ T--cj#s-SSSC  AQAJqxxS1122))#sC)HHHrE   c                 Z    | j         rd}nd}|                     |j        d d |d           S )Nu   ⊗.*c                 >    t          |           t          d         k    S Nr   r   r   r   s    rD   <lambda>z4PrettyPrinter._print_TensorProduct.<locals>.<lambda>      #9!#<#<
5@Q#Q rE   parenthesizerM   r[   r\   )rB   rJ   circled_timess      rD   _print_TensorProductz"PrettyPrinter._print_TensorProduct  sG     	!$MM Mty$mQQ  S S 	SrE   c                 Z    | j         rd}nd}|                     |j        d d |d           S )Nu   ∧z/\c                 >    t          |           t          d         k    S r  r  r  s    rD   r  z3PrettyPrinter._print_WedgeProduct.<locals>.<lambda>  r  rE   r  r  )rB   rJ   wedge_symbols      rD   _print_WedgeProductz!PrettyPrinter._print_WedgeProduct  sG     	!#LL Lty$lQQ  S S 	SrE   c                     |                      |j                  }t          |                    dd           }|                                dz  |_        t          |                    d           }|S )Nro   rp   r   tr)rP   r   r   r]   r:  r   r^   )rB   rU   r  s      rD   _print_TracezPrettyPrinter._print_Trace  s[    KKS))*XXZZ]
//0rE   c                 <   ddl m} t          |j        |          rV|j        j        rJ|j        j        r>|                     t          |j        j	        d|j        |j        fz  z                       S |                     |j                  }t          |                                 }|                     |j        |j        fd                              dd          d         }t          t          j        ||          d	t          j        i}||_        ||_        |S )
Nr   MatrixSymbolz_%d%d, 	delimiterr  r  r^   ru   r   )sympy.matricesr  r<   parentr.   	is_numberr:   rP   r   rc   r   r]   r[   r   r   r  
prettyFunc
prettyArgs)rB   rJ   r  r  prettyIndicesr`   s         rD   _print_MatrixElementz"PrettyPrinter._print_MatrixElement%  s$   //////t{L11 	F$	)-)9	;;4;+g8H.HHIIK K K T[11J#Z%6%6%8%89J OOTVTV,<O  f#Sf11!5M_Z??Az A AE  *E,ELrE   c                     ddl m}                      |j                  }t	          |j        |          st          |                                 } fd}                      ||j        |j        j	                   ||j
        |j        j                  fd                              dd          d         }t          t          j        ||          d	t
          j        i}||_        ||_        |S )
Nr   r  c                     t          |           } | d         dk    r| d= | d         dk    rd| d<   | d         |k    rd| d<   t                              | d           S )Nr   rk   r   r  :r  )r  r   r[   )r   dimrB   s     rD   ppslicez1PrettyPrinter._print_MatrixSlice.<locals>.ppslice@  si    QAtqyyaDtqyy!ts{{!tqC@@AArE   r  r  r  r  r  r   )r  r  rP   r  r<   r   r]   r[   rowslicer  colslicer  r   r   r  r  r  )rB   mr  r  r  r  r`   s   `      rD   _print_MatrixSlicez PrettyPrinter._print_MatrixSlice:  s   //////[[**
!(L11 	:#Z%6%6%8%89J	B 	B 	B 	B 	B __ggaj!(-&H&HGAJ..&0;? % A AAGSX[A\A\]^`
 &0oj*&M&MOOO O &%rE   c                     |j         }|                     |          }ddlm}m} t          ||          s2t          ||          s"|j        rt          |                                 }|t          d          z  }|S )Nr   r  r  T)	r   rP   r  r  r  r<   r  r   r]   )rB   rJ   r  r`   r  r  s         rD   _print_TransposezPrettyPrinter._print_TransposeU  s    hC  <<<<<<<<3-- 	03,,	0141B	0/E
3(rE   c                 B   |j         }|                     |          }| j        rt          t	          d                    }nt          d          }ddlm}m} t          ||          s2t          ||          s"|j	        rt          |
                                 }||z  }|S )NDaggerr  r   r  )r   rP   rM   r   r    r  r  r  r<   r  r]   )rB   rJ   r  r`   dagr  r  s          rD   _print_AdjointzPrettyPrinter._print_Adjoint_  s    hC   	"[2233CCS//C<<<<<<<<3-- 	03,,	0141B	0/Es
rE   c                     |j         j        dk    r |                     |j         d                   S |                     |j                   S )Nrk   rk   r   r   )r  shaperP   )rB   Bs     rD   _print_BlockMatrixz PrettyPrinter._print_BlockMatrixm  s=    8>V##;;qx~...{{18$$$rE   c                    d }|j         D ]}|                     |          }||}|                                d         }t          |                                          r2t          t          j        |d           }|                     |          }nt          t          j        |d           }t          t          j        ||           }|S )Nr   r    + )r\   rP   as_coeff_mmulr   could_extract_minus_signr   r   r   )rB   rJ   r  itemr`   coeffs         rD   _print_MatAddzPrettyPrinter._print_MatAddr  s    I 	; 	;DKK%%Ey**,,Q/U884466 ?"JOAs$;$;<A KK--EE"JOAu$=$=>A
5 9 9:rE   c                    t          |j                  }ddlm} ddlm} ddlm} t          |          D ]\  }}t          |t          |||f          rJt          |j                  dk    r2t          |                     |                                           ||<   h|                     |          ||<   t          j        | S )Nr   HadamardProduct)KroneckerProductMatAddrk   )r  r\   #sympy.matrices.expressions.hadamardr  $sympy.matrices.expressions.kroneckerr  !sympy.matrices.expressions.mataddr  	enumerater<   r   r(  r   rP   r]   __mul__)rB   rJ   r\   r  r  r  r.   as           rD   _print_MatMulzPrettyPrinter._print_MatMul  s    DIGGGGGGIIIIII<<<<<<dOO 	) 	)DAq1sFO=MNOO )DI**$dkk!nn&;&;&=&=>Q++a..Q!4((rE   c                 f    | j         rt          t          d                    S t          d          S )NIdentityMatrixIrM   r   r    rI   s     rD   _print_IdentityzPrettyPrinter._print_Identity  s0     	#k*:;;<<<c??"rE   c                 f    | j         rt          t          d                    S t          d          S )N
ZeroMatrix0r  rI   s     rD   _print_ZeroMatrixzPrettyPrinter._print_ZeroMatrix  s/     	#k,77888c??"rE   c                 f    | j         rt          t          d                    S t          d          S )N	OneMatrix1r  rI   s     rD   _print_OneMatrixzPrettyPrinter._print_OneMatrix  s/     	#k+66777c??"rE   c                     t          |j                  }t          |          D ]\  }}|                     |          ||<   t	          j        | S rG   )r  r\   r  rP   r   r  rB   rJ   r\   r.   r  s        rD   _print_DotProductzPrettyPrinter._print_DotProduct  sK    DIdOO 	% 	%DAqkk!nnDGG!4((rE   c                     |                      |j                  }ddlm} t	          |j        |          s'|j        j        rt          |                                 }||                      |j                  z  }|S )Nr   r  )	rP   baser  r  r<   r  r   r]   exp)rB   rJ   r`   r  s       rD   _print_MatPowzPrettyPrinter._print_MatPow  sv    DI&&//////$)\22 	0ty7N 	0/EDH--.rE   c           	          ddl m ddlm ddlm | j        rt          d          }nd}|                     |j	        d d |fd          S )	Nr   r  r  MatMulRingr  c                 *    t          | f          S rG   r<   )r   r  r  r  s    rD   r  z6PrettyPrinter._print_HadamardProduct.<locals>.<lambda>  s    z!ffo5V'W'W rE   r  )
r  r  r  r  !sympy.matrices.expressions.matmulr  rM   r    r[   r\   )rB   rJ   delimr  r  r  s      @@@rD   _print_HadamardProductz$PrettyPrinter._print_HadamardProduct  s    GGGGGG<<<<<<<<<<<< 	''EEEty$eWWWWWW  Y Y 	YrE   c                    | j         rt          d          }n|                     d          }|                     |j                  }|                     |j                  }t          |j                  t          d         k     rt          |                                 }t          t          j
        ||          dt          j        i}||z  S )Nr  .r   r   )rM   r    rP   r  r  r   r   r   r]   r   r   r  )rB   rJ   circpretty_base
pretty_exppretty_circ_exps         rD   _print_HadamardPowerz"PrettyPrinter._print_HadamardPower  s     	$v&&DD;;s##Dkk$),,[[**
dh*U"333#Z%6%6%8%89J$_T:..
O
 
 O++rE   c                     ddl m ddlm | j        rdt          d           d}nd}|                     |j        d d |fd          S )	Nr   r  r  r   TensorProductz x c                 (    t          | f          S rG   r  )r   r  r  s    rD   r  z7PrettyPrinter._print_KroneckerProduct.<locals>.<lambda>  s    z!ff5E'F'F rE   r  )r  r  r  r  rM   r    r[   r\   )rB   rJ   r  r  r  s      @@rD   _print_KroneckerProductz%PrettyPrinter._print_KroneckerProduct  s    <<<<<<<<<<<< 	7O44777EEEty$eFFFFF  H H 	HrE   c                 ~    |                      |j        j                  }t          |                    dd           }|S Nr  r  )rP   lamdarJ   r   r]   )rB   Xr  s      rD   _print_FunctionMatrixz#PrettyPrinter._print_FunctionMatrix  s4    KK%%c**+rE   c                    |j         dk    sE|j         |j        }}t          |t          |dd          d          }|                     |          S |                     d          |                     |j                  z  S )Nrk   r  Fevaluate)r
  denr   r   
_print_MulrP   )rB   rJ   r
  r*  ress        rD   _print_TransferFunctionz%PrettyPrinter._print_TransferFunction  sr    x1}}xCc3sB777%HHHC??3''';;q>>$++dh"7"777rE   c                     t          |j                  }t          |j                  D ]6\  }}t          |                     |                                           ||<   7t          j        | S rG   )r  r\   r  r   rP   r]   r  r  s        rD   _print_SerieszPrettyPrinter._print_Series  s`    DIdi(( 	; 	;DAq $++a.."7"7"9"9:DGG!4((rE   c                    ddl m} t          |j                  }g }t	          |          D ]}t          ||          rxt          |j                  dk    r`|                     |          }|                                dz  |_	        |
                    t          |                                            |                     |          }|                                dz  |_	        |
                    |           t          j        | S )Nr   )MIMOParallelrk   r   )sympy.physics.control.ltir1  r  r\   r   r<   r(  rP   r:  r   rN  r   r]   r  )rB   rJ   r1  r\   pretty_argsr  
expressions          rD   _print_MIMOSerieszPrettyPrinter._print_MIMOSeries  s    ::::::DI$ 	/ 	/A1l++ /DI0B0B![[^^
&0&7&7&9&91&<
#"":z/@/@/B/B#CDDDD![[^^
&0&7&7&9&91&<
#"":....!;//rE   c                 0   d }|j         D ]}|                     |          }||}t          t          j        |           }|                                dz  |_        t          t          j        |d           }t          t          j        ||           }|S )Nr   r  )r\   rP   r   r   r   r:  r   )rB   rJ   r  r  r`   s        rD   _print_ParallelzPrettyPrinter._print_Parallel  s    I 	; 	;DKK%%Ey
 2 23XXZZ]

5 9 9:
5 9 9:rE   c                    ddl m} d }|j        D ]}|                     |          }||}t	          t          j        |           }|                                dz  |_        t	          t          j        |d           }t          ||          r|                                dz
  |_        t	          t          j        ||           }|S )Nr   )TransferFunctionMatrixr   r  rk   )
r2  r9  r\   rP   r   r   r   r:  r   r<   )rB   rJ   r9  r  r  r`   s         rD   _print_MIMOParallelz!PrettyPrinter._print_MIMOParallel  s    DDDDDDI 
	; 
	;DKK%%Ey
 2 23XXZZ]

5 9 9:d$:;; 0!"aAJ
5 9 9:rE   c                 V   ddl m}m} |j         |dd|j                  }}t          ||          rt          |j                  n|g}t          |j        |          rt          |j        j                  n|j        g}t          ||          r t          |j        |          r |g ||R  }nt          ||          r6t          |j        |          r!|j        |k    r || }nr |g ||j        R  }nbt          ||          r+t          |j        |          r||k    r || }n1 ||g|R  }n'||k    r || }n|j        |k    r || }n
 |g ||R  }t          t          j        |                     |                     }	|	                                dz  |	_        |j        dk    rt          t          j        |	d           nt          t          j        |	d           }	t          t          j        |	|                     |                     }	|                     |          |	z  S )Nr   )TransferFunctionSeriesrk   r   r  r   - )sympy.physics.controlr<  r=  sys1varr<   r  r\   sys2r   r   r   rP   r:  r   sign)
rB   rJ   r<  r=  r
  tfnum_arg_listden_arg_listr*  denoms
             rD   _print_FeedbackzPrettyPrinter._print_Feedback  so   BBBBBBBB)--aDH==R)3C)@)@KtCH~~~sety&));tDIN+++04	{ 	 c6"" 	;z$)V'D'D 	;&6,6666CCV$$ 	;DI?O)P)P 	;yBfl+f6l6DI666-.. 	;:di3P3P 	;byyfl+fS0<000byyfl+bfl+f:l:\:::JODKKOO<<=*>Bi2oo
JOE599::Z_UE::; 	JOE4;;s3C3CDDE{{3%%rE   c                    ddl m}m} |                      ||j        |j                            }|                     |j                  }t          t          j        |           }|j	        dk    rt          t          j
        d|           nt          t          j
        d|           }t          t          j        |           }d|_        t          t          j
        |d           }|                                dz  |_        t          j        |t          d                    }t          |j        |          r|                                d	z
  |_        t          t          j        ||           }|S )
Nr   )
MIMOSeriesr9  r  zI + zI - z-1 r   r   rk   )r?  rJ  r9  rP   rB  r@  r   r   r   rC  ru   r]   r   r:  r  r<   )rB   rJ   rJ  r9  inv_matplant	_feedbacks          rD   _print_MIMOFeedbackz!PrettyPrinter._print_MIMOFeedback;  sN   LLLLLLLL++jjDI>>??DI&&
 8 89	HL	UWJ
 0 C CDDZ-fi@@A 	
 1) < <=		
 0E B BC	&--//2	&y*S//BB	di!788 	8!*!1!1!3!3a!7I
	5 A AB	rE   c                     |                      |j                  }|                                dz
  |_        | j        rt
          d         nd}t          |                    |           }|S )Nrk   tauz{t})rP   	_expr_matr:  r   rM   r"   r   ru   )rB   rJ   r  	subscripts       rD   _print_TransferFunctionMatrixz+PrettyPrinter._print_TransferFunctionMatrixM  s[    kk$.))zz||a',0,=IM%((6	#))I../
rE   c                     ddl m} |j        }|j        }|j        }|j        } |||g||gg          }|                     |j                  S )Nr   r  )r  r  _A_B_C_DrP   r  )rB   rJ   r  Ar  Cr  r  s           rD   _print_StateSpacezPrettyPrinter._print_StateSpaceT  s`    FFFFFFGGGGkAq6Aq6*++{{3:&&&rE   c                 (   ddl m} | j        st          d          ||j        k    rt          |j        j                  S g }g }t          ||          r'|                                	                                }nd|fg}|D ]\  }}t          |j        	                                          }|                    d            |D ]\  }	}
|
dk    r|                    d|	j        z              nq|
dk    r|                    d	|	j        z              nM|                     |
                                          d         }|                    |d
z   |	j        z              |                    |	j                   |d                             d          r|d         dd          |d<   n.|d                             d
          r|d         dd          |d<   g }dg}g }t#          |          D ]O\  }}|                    d           d|v r/|}|                    ||         d          }t'          dd          |v rt)          t+          |                    D ]g}d||<   ||         t'          dd          k    rF||dz            dk    r7|d |         t'          dd          z   d
z   ||         z   ||dz   d          z   } nhnut'          dd          |v rc|                    t'          dd                    }|dk    r:d||<   |d |         t'          dd          z   d
z   ||         z   ||dz   d          z   }|||<   Qd |D             }t/          d |D                       }d|v rYt#          |          D ]I\  }}t+          |          dk    r1|                    dd
t+          |d                   z             d||<   Jt#          |          D ]\  }}|                    t+          |||                                       t)          |          D ]O}|dz   t+          |          k    r|t+          |          k    rC|                    d
t3          |d d                   dt+          |          dz
  z  z   z             |||         k    r&|||         xx         |||                  dz   z  cc<   ||xx         ||         d
|d         t+          ||                   z
  dz   z  z   z  cc<   |t+          |          k    rC|                    d
t3          |d d                   dt+          |          dz
  z  z   z             ||xx         d
|d         dz   z  z  cc<   Qt          d                    d |D                                 S )Nr   )Vectorz:ASCII pretty printing of BasisDependent is not implementedc                 6    | d                                          S Nr   )__str__r  s    rD   r  z5PrettyPrinter._print_BasisDependent.<locals>.<lambda>m  s    AaDLLNN rE   r   rk   r  r  z(-1) r   r  r5  
z)_extz)_lower_hookc                 8    g | ]}|                     d           S )ra  )splitr  r   s     rD   r  z7PrettyPrinter._print_BasisDependent.<locals>.<listcomp>  s"    (((aggdmm(((rE   c              3   4   K   | ]}t          |          V  d S rG   )r(  rd  s     rD   	<genexpr>z6PrettyPrinter._print_BasisDependent.<locals>.<genexpr>  s(      ,,AQ,,,,,,rE   c                 "    g | ]}|d d         S )NrO   )r  r  s     rD   r  z7PrettyPrinter._print_BasisDependent.<locals>.<listcomp>  s     $:$:$:QssV$:$:$:rE   )sympy.vectorr]  rM   NotImplementedErrorzeror   _pretty_formr<   separateitemsr  
componentsr   rN  rP   r]   
startswithr  r  r   r'  r(  rfindr   insertrs  join)rB   rJ   r]  o1vectstrsrn  systemvect
inneritemsr   varg_strlengthsstrsflagr.   partstrtempstrparenindex
n_newlinespartsr:   s                          rD   _print_BasisDependentz#PrettyPrinter._print_BasisDependent]  s:   ''''''  	d%&bccc49di4555dF## 	 MMOO))++EEYKE! 	0 	0LFDdo335566JOO":":O;;;" 0 01 66IIbn- . . . . "WWIIgn- . . . . #kk !688A'G IIgman<===////%0* a5E"" 	qE!""IBqEEUc"" 	qE!""IBqEt#B-- 	  	 JAwKKNNNw!!//(1+r::##w..!&s7||!4!4 " ""#Q"5>T'1-=-==='%RS)BTX\B\B\ '.fufoWa8H8H&H+.'/2:1+'>@GPQ	

@S'TG!E.!,,77 $MM$~q*A*ABBE{{"#Q")&5&/D4K4K"K'*#+.6qk#:<CEAIJJ<O#P1((R(((,,,,,,,
99%bMM    5u::??LLC3uQx==$9:::DG!" 	3 	3HAuNN3uT!W~..///:&& 3 3Q3#e**$$CII~~C3wss|+<+<+,c'll1n+=,> %? @ @ @DG||T!WtAw%)??Q58c72;36uQx==4A3445 /6 $6 6 CII~~C3wss|+<+<+,c'll1n+=,> %? @ @ @GGGsGBKM22GGGG3" $))$:$:T$:$:$:;;<<<rE   c           	        	 ddl m	 |                                dk    r|                     |d                   S g gd t	          |                                          D             z   }d |j        D             }	fd}t          j        | D ]}|d                             ||                    d}t	          |                                d	z
  dd          D ]}t          ||d	z                      |j        |         k     r n|r%||                             ||d	z                       nk||                              |||d	z                                 t          ||d	z                      d	k    r" |||         d         gg          ||         d<   | }g ||d	z   <   ɐ|d         d         }|                                d
z  d	k    r ||g          }|                     |          S )Nr   )ImmutableMatrixrO   c                     g | ]}g S rO   rO   r  r.   s     rD   r  z2PrettyPrinter._print_NDimArray.<locals>.<listcomp>  s    ;;;1B;;;rE   c                 F    g | ]}t          t          |                    S rO   )r  r'  r  s     rD   r  z2PrettyPrinter._print_NDimArray.<locals>.<listcomp>  s$    ;;;1U1XX;;;rE   c                      | d          S )NFr(  rO   )r   r  s    rD   r  z0PrettyPrinter._print_NDimArray.<locals>.<lambda>  s    E::: rE   r  Trk   r   )
sympy.matrices.immutabler  rankrP   r'  r  	itertoolsproductrN  r(  )
rB   rJ   	level_strshape_rangesr  outer_ievenback_outer_iout_exprr  s
            @rD   _print_NDimArrayzPrettyPrinter._print_NDimArray  s    <<<<<<99;;!;;tBx(((D;;diikk(:(:;;;;	;;
;;;:::: (,7 	/ 	/GbM  g///D %diikk!mR < < / /ya011DJ|4LLLE =l+229\!^3LMMMMl+2233!,q.143 43 4 4 49\A%56771<<69c'5b9:;7= 7=	,/3x,.	,q.))Q<?99;;?asH:H{{8$$$rE   c           
         t          |          }t          d|                                z            }t          d|                                z            }d }d }|D ]}	|                     |	j        d                   }
|	|v s|rK||	j        k    r@|	j        rt          t          j        |d           }nt          t          j        |d           }|	|v rTt          t          j        |
d           }
t          t          j        |
|                     ||	                              }
d}nd}|	j        rt          |                    |
           }t          |                    d|
                                z             }t          |                    d|
                                z             }n~t          |                    |
           }t          |                    d|
                                z             }t          |                    d|
                                z             }|	j        }t          |                    |           }t          |	                    |           }|S )Nr   r   r  =TF)
r   r   rP   r\   is_upr   r   ru   r   r  )rB   rc   indices	index_mapcentertopbotlast_valenceprev_mapr  indpicpicts               rD   _printer_tensor_indicesz%PrettyPrinter._printer_tensor_indices  s   D!!V\\^^+,,V\\^^+,, 	' 	'E[[A//F)###lek6Q6Q; A$joc3&?&?@CC$joc3&?&?@C	!!#Z_VS%A%AB#Z_VT[[SXIY=Z=Z%[%[\ { A #))F"3"34#V\\#fllnn2D%E%EF #))C,>"?"?@ #))F"3"34#V\\#fllnn2D%E%EF #))C,>"?"?@ ;LL6<<,,-4::c??+rE   c                 z    |j         d         j        }|                                }|                     ||          S r_  )r\   rc   get_indicesr  )rB   rJ   rc   r  s       rD   _print_TensorzPrettyPrinter._print_Tensor  s7    y| ""$$++D':::rE   c                     |j         j        d         j        }|j                                         }|j        }|                     |||          S r_  )rJ   r\   rc   r  r  r  )rB   rJ   rc   r  r  s        rD   _print_TensorElementz"PrettyPrinter._print_TensorElement  sE    y~a %)''))N	++D'9EEErE   c                      |                                 \  }} fd|D             }t          j        | }|rt          |                    |           S |S )Nc                     g | ]c}t          |          t          d          k     r.t                              |                                           n                    |          dS r   r   r   r   rP   r]   r  r.   rB   s     rD   r  z0PrettyPrinter._print_TensMul.<locals>.<listcomp>  p     
 
 
  #1%%
5(999 A--//00?C{{1~~
 
 
rE   )!_get_args_for_traditional_printerr   r  r^   )rB   rJ   rC  r\   r`   s   `    rD   _print_TensMulzPrettyPrinter._print_TensMul  su    ;;==
d
 
 
 
 
 
 

 "D) 	uzz$//00LrE   c                 F      fd|j         D             }t          j        | S )Nc                     g | ]c}t          |          t          d          k     r.t                              |                                           n                    |          dS r   r  r  s     rD   r  z0PrettyPrinter._print_TensAdd.<locals>.<listcomp>   r  rE   )r\   r   __add__)rB   rJ   r\   s   `  rD   _print_TensAddzPrettyPrinter._print_TensAdd  s?    
 
 
 
 Y
 
 

 !4((rE   c                 Z    |j         d         }|j        s| }|                     |          S r_  )r\   r  rP   )rB   rJ   r	  s      rD   _print_TensorIndexz PrettyPrinter._print_TensorIndex'  s0    ilz 	$C{{3rE   c                 .   | j         rt          d          }nd}d }t          |j                  D ]p}|                     |          }t          |                    |           }||}8t          |                    d           }t          |                    |           }qt          |                     |j                  	                                dt
          j
        i}t          |          }t          |j                  dk    r*||                     t          |j                            z  }t          |                    t          j        |           }|j        dz   |_        t          t          j        ||           }t
          j        |_        |S )Nr   r   r   r   rk   )rM   r#   r   	variablesrP   r   r^   ru   rJ   r]   r  r(  r  r   r  r   r   r  r   )	rB   r  r  r   variabler  r  r  r`   s	            rD   _print_PartialDerivativez&PrettyPrinter._print_PartialDerivative-  sf    	 344LLL 11 	- 	-HH%%AQVVL112By-,&*kk%*&=&=&D&D&F&FHOH H <((u!##4;;s5?';';<<<EEKK
;;<!+JOE1556"rE   c                    i t          |j                  D ]\  }}|                     |j                  |df<   |j        dk    rt          d          |df<   Dt          t          d                              |                     |j                             |df<   d}d}t          |j                  fdt          d          D             }d }t                    D ]5}d }	t          d          D ]}
||
f         }|	                                ||
         k    sJ ||
         |	                                z
  }|dz  }||z
  }t          |                    d|z             }t          |
                    d|z             }|	|}	t          |	                    d|z             }	t          |	                    |           }	||	}t          |          D ]}t          |                    d           }t          |                    |	           }7t          |                    d	d
           }|                                dz  |_        t
          j        |_        |S )Nr   T	otherwiserk   zfor r   c                 d    g | ]+t          fd t                    D                       ,S )c              3   P   K   | ] }|f                                          V  !d S rG   r  )r  r.   Pr:   s     rD   rf  z<PrettyPrinter._print_Piecewise.<locals>.<listcomp>.<genexpr>\  s3      ==AadGMMOO======rE   )r   r'  )r  r:   r  len_argss    @rD   r  z2PrettyPrinter._print_Piecewise.<locals>.<listcomp>\  sP     # # # =====U8__===== # # #rE   r   {r  )r  r\   rP   rJ   condr   ru   r(  r'  r   r^   r  r]   r:  r   r   r   )rB   pexprr   ecr  r  r  r  r.   r  r:   pwdeltawleftwrightr   r  r  s                   @@rD   _print_PiecewisezPrettyPrinter._print_PiecewiseM  sm   uz** 	E 	EEArkk"'**AadGw$$[11!Q$$''--dkk"'.B.BCCE!Q$uz??# # # # #q# # #
 x 	, 	,AE1XX 4 4adGwwyyDG++++a17799,!%F
 3 34s5y 1 12=E"EKKD$9$9:"EKKNN3y 4[[ . .-AGGENN+AAb))*XXZZ]
O	rE   c                 ^    ddl m} |                     |                    |                    S )Nr   )	Piecewise)$sympy.functions.elementary.piecewiser  rP   rewrite)rB   iter  s      rD   
_print_ITEzPrettyPrinter._print_ITE  s2    BBBBBB{{3;;y11222rE   c                     d }|D ]A}|}||}	t          |                    d           }t          |                    |           }B|t          d          }|S )Nr  r   )r   ru   r   )rB   ry  r  r  r  s        rD   _hprint_veczPrettyPrinter._hprint_vec  sf     	, 	,AAy.

+93ArE   r  c                 (   |r$| j         s|                     |d|f|||d          S |                     ||f|||          }t          t          d|                                          |j                  }|                     |||f|||          S )Nr   T)r^   ru   r  ifascii_nougly)r^   ru   r  r   )rM   r[   r   r   r:  r   )	rB   p1p2r^   ru   r  r  tmpseps	            rD   _hprint_vseparatorz PrettyPrinter._hprint_vseparator  s     	M$"3 	M??BR=t5-6t # M M Moor2id%9oUUc3::<<003<HHHC}4u)2  4 4 	4rE   c           	           fd|j         D             } fd|j        D             }                     |j                  }|                                dz  |_        d }||fD ]T}                     |          }||}t          |                    d           }t          |                    |           }U|                                dz  |_        t          |	                    d           }t          |
                    d           }                     ||          }t          |                    dd           }|                                dz  dz
  }|                                |z
  dz
  }	t          d          \  }
}}}}t          d	||z
  z  |z   d	|	|z
  z  z   ||
z   
          }|
dz   dz  }t          |	                                         t          |j                                        }t          |
                                         t          |j                                       }||z   |_        t          |
                    d|           }|S )Nc                 :    g | ]}                     |          S rO   ra  r  r  rB   s     rD   r  z.PrettyPrinter._print_hyper.<locals>.<listcomp>  #    +++dkk!nn+++rE   c                 :    g | ]}                     |          S rO   ra  r  brB   s     rD   r  z.PrettyPrinter._print_hyper.<locals>.<listcomp>  r  rE   r   r   ro   rp   rk   Fra  r  )apbqrP   argumentr:  r   r  r   r  r^   ru   r  r]   r%   r(  )rB   rU   r  r  r  r  ry  r  r   r  sztr  addimgr  s   `               rD   _print_hyperzPrettyPrinter._print_hyper  s7   ++++ad+++++++ad+++KK
##XXZZ]
 b 	0 	0A$$Q''Ey-/ XXZZ]
 s$% ##Aq)) c**+ 

A!

U"Q&&s^^Aq#stuqy)C/$%!)2DD %
, , ,Avkt{{3qt9955667CII 6 6778S[
Q(rE   c                 f	    i } fd|j         D             |d<    fd|j        D             |d<    fd|j        D             |d<    fd|j        D             |d<                        |j                  }|                                d	z  |_        i }|D ] }                     ||                   ||<   !t          d	          D ]}t          |d
|f                                         |d|f                                                   }t          d	          D ]}|||f         }	||	                                z
  d	z  }
||
z
  |	                                z
  }t          |	                    d|
z             }	t          |	                    d|z             }	|	|||f<   t          |d                             d|d                    }t          |                    d           }t          |d                             d|d                    }t          |                    |           }|                                d	z  |_        t          |                    d           }t          |                    d           }                     ||          }t          |                    dd           }|                                d	z  dz
  }|                                |z
  dz
  }t%          d          \  }}}}}t          d||z
  z  |z   d||z
  z  z   ||z             }                     t'          |j                            }                     t'          |j                            }                     t'          |j                            }                     t'          |j                             }d } |||          \  }} |||          \  }}t          |                    d|           }t          |                    d|           }|j        |z
  d	z
  }|d
k    rt          |                    d|z             }t          |                    |           }||_        t          |                    |           }||z   |_        t          |                    d|           }|S )Nc                 :    g | ]}                     |          S rO   ra  r  s     rD   r  z0PrettyPrinter._print_meijerg.<locals>.<listcomp>  #    222T[[^^222rE   r  c                 :    g | ]}                     |          S rO   ra  r  s     rD   r  z0PrettyPrinter._print_meijerg.<locals>.<listcomp>  #    666T[[^^666rE   )r   rk   c                 :    g | ]}                     |          S rO   ra  r  s     rD   r  z0PrettyPrinter._print_meijerg.<locals>.<listcomp>  r  rE   )rk   r   c                 :    g | ]}                     |          S rO   ra  r  s     rD   r  z0PrettyPrinter._print_meijerg.<locals>.<listcomp>  r  rE   r  r   r   rk   r   z  ro   rp   Gra  r  c                     |                                  |                                 z
  }|dk    r| |fS |dk    r!| t          |                    d|z             fS t          |                     d| z             |fS )Nr   r   )r   r   r^   )r  r  diffs      rD   rp  z,PrettyPrinter._print_meijerg.<locals>.adjust
  sy    88::

*Dqyy2v:rwws4x'8'8999!2773u9#5#56::rE   r  )anaotherbmbotherrP   r  r:  r   r  r'  r   r   r   r^   ru   r  r  r]   r%   r(  r  r  ) rB   rU   ry  r  vpidxr.   r  r:   r  r^   ru   D1D2r  r   r  r  r  r  r  r  r  pppqpmpnrp  puplhtr  s    `                               rD   _print_meijergzPrettyPrinter._print_meijerg  sr    2222QT222&	6666QX666&	2222QT222&	6666QX666&	KK
##XXZZ]
 	/ 	/C&&qv..BsGGq 	 	Ar1a&z''))2q!f:+;+;+=+=>>D1XX  1vJqwwyy(Q.taggii/sTz 2 23e 4 45Aq6

 F))$6
;;<#'F))$6
;;<% XXZZ]
 s$% ##Aq)) c**+ 

A!

U"Q&&s^^Aq#stuqy)C/$%!)2DD %
, , , [[QT##[[QT##[[QT##[[QT##	; 	; 	; BBBB$++,$++,Z%!#66RXXd2g../B%


#S[
Q(rE   c                     t          t          dd                    }||                     |j        d                   z  S )NExp1rU   r   )r   r    rP   r\   )rB   rU   r  s      rD   _print_ExpBasezPrettyPrinter._print_ExpBase%  s8     +fc2233t{{16!9----rE   c                 <    t          t          dd                    S )Nr  rU   )r   r    rT   s     rD   _print_Exp1zPrettyPrinter._print_Exp1+  s    +fc22333rE   ro   rp   c                 L    |                      |j        |j        ||||          S )N)r   	func_namer^   ru   )_helper_print_functionr   r\   )rB   rU   r   r  r^   ru   s         rD   r   zPrettyPrinter._print_Function.  s,     **1616PY`dlq*rrrrE   c                 0    |                      |d          S NrZ  r  r   rT   s     rD   _print_mathieuczPrettyPrinter._print_mathieuc4      ##A#555rE   c                 0    |                      |d          S Nr   r  r  rT   s     rD   _print_mathieuszPrettyPrinter._print_mathieus7  r  rE   c                 0    |                      |d          S )NzC'r  r  rT   s     rD   _print_mathieucprimez"PrettyPrinter._print_mathieucprime:      ##A#666rE   c                 0    |                      |d          S )NzS'r  r  rT   s     rD   _print_mathieusprimez"PrettyPrinter._print_mathieusprime=  r  rE   r  c	                    |rt          |t                    }|st          |d          r|j        }|r#|                     t          |                    }	n.t          |                     |                                           }	|rW| j        rt          d          }
nd}
|                     |
          }
t          t          j        |	|
          dt          j        i}	t          |                     ||                              ||           }t          t          j        |	|          dt          j        i}|	|_        ||_        |S )Nr   r   zModifier Letter Low Ringr  r   r  r  )r   r   hasattrr   rP   r   r   r]   rM   r    r   r   r  r[   r  r  r  )rB   r   r\   r   r  r  elementwiser^   ru   r  r  r  r`   s                rD   r	  z$PrettyPrinter._helper_print_function@  sf     	6$$4555D 	&WT:66 	&I 	AVI%6%677JJ#T[[%6%6%=%=%?%?@J 		  "#=>>;;t$$D#T22" J
  !K!K!R!R6:% "S "I "I J
 &0oj*&M&MOOO O &%rE   c                 V    |j         }|j        }|g}|                     ||dd          S )Nr  T)r  r  )r7  rJ   r	  )rB   rU   r   r   r\   s        rD   _print_ElementwiseApplyFunctionz-PrettyPrinter._print_ElementwiseApplyFunctione  s5    zfu**4QU*VVVrE   c                    ddl m} ddlm}m} ddlm} ddlm} ddl	m
} ddlm} |t          d         dg|t          d	         d	g|t          d
         dg|t          d         dg|t          d         dg|t          d         dg|ddgiS )Nr   )KroneckerDelta)gamma
lowergamma)lerchphi)beta)
DiracDelta)ChideltaGammaPhir!  r  Betar  r$  )(sympy.functions.special.tensor_functionsr  'sympy.functions.special.gamma_functionsr  r   &sympy.functions.special.zeta_functionsr!  &sympy.functions.special.beta_functionsr"  'sympy.functions.special.delta_functionsr#  'sympy.functions.special.error_functionsr$  r"   )rB   r  r  r   r!  r"  r#  r$  s           rD   _special_function_classesz'PrettyPrinter._special_function_classesk  s    KKKKKKMMMMMMMMCCCCCC??????FFFFFF??????w!7 Ag.8=/<]73W=}V,c2]73W=eU^% 	%rE   c                 2   | j         D ]m}t          ||          r[|j        |j        k    rK| j        r"t	          | j         |         d                   c S t	          | j         |         d                   c S n|j        }t	          t          |                    S )Nr   rk   )r/  
issubclassr   rM   r   r   )rB   rJ   clsr  s       rD   _print_FunctionClassz"PrettyPrinter._print_FunctionClass{  s    1 	N 	NC$$$ N#,)F)F$ N%d&DS&I!&LMMMMM%d&DS&I!&LMMMMMM	-	22333rE   c                 ,    |                      |          S rG   )rK   rI   s     rD   _print_GeometryEntityz#PrettyPrinter._print_GeometryEntity  s      &&&rE   c                 
   |                      |j        d                   }| j        rHt          |          r9|                      t          d|z            |j        d                             S |                     |          S )Nr   zLi_%srk   rP   r\   rM   r&   r   r   rB   rU   rR  s      rD   _print_polylogzPrettyPrinter._print_polylog  s|    KKq	**	 	R!<Y!G!G 	R''(E91D(E(EafQi(P(PQQQ##A&&&rE   c                 \    | j         rt          d         nd}|                     ||          S )Nr'  r!  r  rM   r"   r   rB   rU   r  s      rD   _print_lerchphizPrettyPrinter._print_lerchphi  s2    ,0,=MM%((:	##A#;;;rE   c                 \    | j         rt          d         nd}|                     ||          S )Netadirichlet_etar  r;  r<  s      rD   _print_dirichlet_etaz"PrettyPrinter._print_dirichlet_eta  s2    ,0,=RM%((?	##A#;;;rE   c                 <   | j         rt          d         nd}|j        d         t          j        u rWt          |                     |j        d                                                    }t          |                    |           }|S | 	                    ||          S )Ntheta	Heavisiderk   r   r  )
rM   r"   r\   r   Halfr   rP   r]   r^   r   )rB   rU   r  r`   s       rD   _print_HeavisidezPrettyPrinter._print_Heaviside  s    .2.?PM'**[	6!9AF1I 6 6 = = ? ?@E

9 5 56EL''Y'???rE   c                 0    |                      |d          S r  r  rT   s     rD   _print_fresnelszPrettyPrinter._print_fresnels  r  rE   c                 0    |                      |d          S r  r  rT   s     rD   _print_fresnelczPrettyPrinter._print_fresnelc  r  rE   c                 0    |                      |d          S )NAir  r  rT   s     rD   _print_airyaizPrettyPrinter._print_airyai  r  rE   c                 0    |                      |d          S )NBir  r  rT   s     rD   _print_airybizPrettyPrinter._print_airybi  r  rE   c                 0    |                      |d          S )NzAi'r  r  rT   s     rD   _print_airyaiprimez PrettyPrinter._print_airyaiprime      ##A#777rE   c                 0    |                      |d          S )NzBi'r  r  rT   s     rD   _print_airybiprimez PrettyPrinter._print_airybiprime  rS  rE   c                 0    |                      |d          S )NWr  r  rT   s     rD   _print_LambertWzPrettyPrinter._print_LambertW  r  rE   c                 0    |                      |d          S )NCovr  r  rT   s     rD   _print_CovariancezPrettyPrinter._print_Covariance  rS  rE   c                 0    |                      |d          S )NVarr  r  rT   s     rD   _print_VariancezPrettyPrinter._print_Variance  rS  rE   c                 0    |                      |d          S )Nr  r  r  rT   s     rD   _print_Probabilityz PrettyPrinter._print_Probability  r  rE   c                 4    |                      |ddd          S )Nr  r  r  )r  r^   ru   r  rT   s     rD   _print_Expectationz PrettyPrinter._print_Expectation  s    ##A3c#JJJrE   c           	      8   |j         }|j        }| j        rdt          d           d}nd}t	          |          dk    r|d         j        r|d         }|                     |          }t          t          j	        |||                     |                    ddiS )Nr   ArrowFromBar -> rk   r   r   rt  )
rJ   	signaturerM   r    r(  	is_symbolrP   r   r   r   )rB   rU   rJ   sigarrowvar_forms         rD   _print_LambdazPrettyPrinter._print_Lambda  s    vk 	6N33666EEEs88q==SV-=a&C;;s##:?8UDKK<M<MNNZXYZZZrE   c                 B   |                      |j                  }|j        rt          d |j        D                       st	          |j                  dk    rt          |                    d           }t	          |j                  dk    r5t          |                    |                      |j                             }nNt	          |j                  r:t          |                    |                      |j        d                              }| j        r.t          |                    dt          d           d           }nt          |                    d           }t	          |j                  dk    r5t          |                    |                      |j                             }n:t          |                    |                      |j        d                              }t          |
                                 }t          |                    d           }|S )	Nc              3   6   K   | ]}|t           j        k    V  d S rG   )r   Zero)r  r  s     rD   rf  z-PrettyPrinter._print_Order.<locals>.<genexpr>  s(      ??qqAF{??????rE   rk   ; r   r   r   re  O)rP   rJ   pointanyr(  r  r   ru   rM   r    r]   r^   rB   rJ   r`   s      rD   _print_OrderzPrettyPrinter._print_Order  s   DI&&J 	M3??DJ????? 	Mt~""D 1 12E4>""Q&&"EKKDN0K0K$L$LMT^$$ Q"EKKDN1<M0N0N$O$OP  9"EKK0KK4H4H0K0K0K$L$LM"EKK$7$784:"""EKKDJ0G0G$H$HI"EKKDJqM0J0J$K$KLELLNN+EJJsOO,rE   c                    | j         r|                     |j        d         |j        d         z
            }|                     |j        d                   }t          d          }t          |                    |           }t          |                    d           }||z  }|S |                     |j        d                   }|                     |j        d         |j        d         z
            }|                     |ddd          }||z  S )Nr   rk   r   ri  rj  r   )rM   rP   r\   r   ru   r[   )rB   rU   shiftr   r  r`   s         rD   _print_SingularityFunctionz(PrettyPrinter._print_SingularityFunction  s     	KKq	!&) 344EAF1I&&Ac??Dtzz%001Dtzz#/D!GELAF1I&&AKKq	!&) 344E??5#sC88D7NrE   c                 \    | j         rt          d         nd}|                     ||          S )Nr(  r  r  r;  r<  s      rD   _print_betazPrettyPrinter._print_beta  s2    -1->GM&))C	##A#;;;rE   c                 4    d}|                      ||          S )NzB'r  r  r<  s      rD   _print_betainczPrettyPrinter._print_betainc  s     	##A#;;;rE   c                 4    d}|                      ||          S )Nr  r  r  r<  s      rD   _print_betainc_regularizedz(PrettyPrinter._print_betainc_regularized  s     	##A#;;;rE   c                 \    | j         rt          d         nd}|                     ||          S Nr&  r  r;  r<  s      rD   _print_gammazPrettyPrinter._print_gamma  2    .2.?LM'**W	##A#;;;rE   c                 \    | j         rt          d         nd}|                     ||          S r  r;  r<  s      rD   _print_uppergammazPrettyPrinter._print_uppergamma  r  rE   c                 \    | j         rt          d         nd}|                     ||          S )Nr  r   r  r;  r<  s      rD   _print_lowergammazPrettyPrinter._print_lowergamma  s2    .2.?QM'**\	##A#;;;rE   c                    | j         rKt          |j                  dk    rt          t          d                   }|                     |j        d                   }t          |                                 }|                     |j        d                   }t          |                                 }||z  }t          |                    d           }t          |                    |           }|S |                     |j        d                   }t          |                                 }t          |                    t          d                    }|S | 	                    |          S )Nr   r%  rk   r   r   )
rM   r(  r\   r   r"   rP   r]   ru   r^   r   )rB   rU   r  r  cr`   s         rD   _print_DiracDeltazPrettyPrinter._print_DiracDelta
  s    	+16{{a}W566KKq	**

+KKq	**

+1"EKK$4$45"EKKNN3KKq	**E/E

=+A B BCEL''***rE   c                 
   |                      |j        d                   }| j        rHt          |          r9|                      t          d|z            |j        d                             S |                     |          S )Nr   zE_%srk   r7  r8  s      rD   _print_expintzPrettyPrinter._print_expint  s|    KKq	**	 	Q!<Y!G!G 	Q''(D)1C(D(DQVAY(O(OPPP##A&&&rE   c                     t          d          }t          |                     |j                                                   }t          t	          j        ||          dt           j        i}||_        ||_        |S )Nr$  r   )	r   r[   r\   r]   r   r   r  r  r  )rB   rU   r  r  r`   s        rD   
_print_ChizPrettyPrinter._print_Chi#  sw      &&
!8!8!?!?!A!AB
&0oj*&M&MOOO O &%rE   c                 V   |                      |j        d                   }t          |j                  dk    r|}n6|                      |j        d                   }|                     ||          }t	          |                                 }t	          |                    d           }|S )Nr   rk   r  )rP   r\   r(  r  r   r]   r^   )rB   rU   pforma0r`   pforma1s        rD   _print_elliptic_ezPrettyPrinter._print_elliptic_e2  s    ++afQi((qv;;!EEkk!&),,G++GW==EELLNN+EJJsOO,rE   c                     |                      |j        d                   }t          |                                 }t          |                    d           }|S )Nr   K)rP   r\   r   r]   r^   r_   s      rD   _print_elliptic_kzPrettyPrinter._print_elliptic_k=  sD    AF1I&&ELLNN+EJJsOO,rE   c                     |                      |j        d                   }|                      |j        d                   }|                     ||          }t          |                                 }t          |                    d           }|S )Nr   rk   r  )rP   r\   r  r   r]   r^   )rB   rU   r  r  r`   s        rD   _print_elliptic_fzPrettyPrinter._print_elliptic_fC  sp    ++afQi((++afQi((''99ELLNN+EJJsOO,rE   c                 ^   | j         rt          d         nd}|                     |j        d                   }|                     |j        d                   }t	          |j                  dk    r|                     ||          }np|                     |j        d                   }|                     ||d          }t          |                    d           }t          |                    |           }t          |                                 }t          |                    |           }|S )NPir   rk   r   Fr  ro  )	rM   r"   rP   r\   r(  r  r   r^   r]   )rB   rU   rc   r  r  r`   pforma2pformas           rD   _print_elliptic_piz PrettyPrinter._print_elliptic_piK  s    &*&7A}T""T++afQi((++afQi((qv;;!++GW==EEkk!&),,G,,Wge,TTFT!2!23FG 4 45EELLNN+EJJt,,-rE   c                     | j         rt          t          d                    S |                     t	          d                    S )NphiGoldenRatiorM   r   r   rP   r   rI   s     rD   _print_GoldenRatioz PrettyPrinter._print_GoldenRatioZ  s=     	4mE22333{{6-00111rE   c                     | j         rt          t          d                    S |                     t	          d                    S )Nr  
EulerGammar  rI   s     rD   _print_EulerGammazPrettyPrinter._print_EulerGamma_  s=     	6mG44555{{6,//000rE   c                 F    |                      t          d                    S )Nr  )rP   r   rI   s     rD   _print_CatalanzPrettyPrinter._print_Cataland  s    {{6#;;'''rE   c                 t   |                      |j        d                   }|j        t          j        k    rt          |                                 }t          |                    d           }t          |                    |                      |j        d                              }t          j        |_        |S )Nr   z mod rk   )rP   r\   r   r   r  r]   ru   r   rs  s      rD   
_print_ModzPrettyPrinter._print_Modg  s    DIaL))=:>))/EEKK001EKKDIaL(A(ABBC"rE   c                    |                      ||          }g g }}d }t          |          D ]\  }}|j        r|                                rr|                    d          \  }	}
|	dk    rt          |
ddi}nt          |	 g|
R ddi}|                     |          }|                     |||                     |j        r6|j	        dk    r+|                    d            |                    |           |j
        r=|dk     r7|                     |           }|                     |||                     |j        rC|                    t          |                     |                                                      ^|                    |                     |                     |rd	}|D ]}||                                dk    r nd}|D ]}||         d}}|dk     r| d	}}|rDt          t          |j                            t          t          |j	                            z  }n|                     |          }|r |||          }|||<   t          j        | S )
Nr/   c                 4   |dk    r|                                  dk    rd}nd}nd}| j        t          j        k    s| j        t          j        k    rt          |                                  }n| }t          j        ||          }t          |dt          j        iS )z'Prepend a minus sign to a pretty form. r   rk   z- rI  r>  r   )r:  r   r   NEGADDr   r]   r   )r`   r  	pform_negr  s       rD   pretty_negativez1PrettyPrinter._print_Add.<locals>.pretty_negativet  s     zz<<>>A%% $II #II!	
..=JN22/	1--A q9jn999rE   F)rationalr  r)  rk   r   T)_as_ordered_termsr  is_Mulr  as_coeff_mulr   rP   rN  is_Rationalq	is_Numberis_Relationalr   r]   r:  r>   r  r  )rB   rJ   r/   termspformsr  r  r.   rL  r  othernegtermr`   largenegatives                  rD   
_print_AddzPrettyPrinter._print_Addp  s   &&t5&99b	: 	: 	:* !'' 	1 	1GAt{ 1t<<>> 1#00%0@@uB;;!59599GG!5&A5AAA5AAGG,,ooeQ778888! 	1dfqjjd###q!!!! 1D1HHTE**ooeQ778888# 1j$++d*;*;*B*B*D*DEFFFFdkk$//0000 	"E  $!););E " "!&q5h!88&*UD(D .&s46{{33Js46{{4K4KKEE KK--E 6+OE155E!q		!6**rE   c                    	 ddl m	 |j        }|d         t          j        u s!t          d |dd          D                       ryt          t           j        |                    }|d         dk    }|rt          ddd          |d<   t          j
        | }|r#t          d|j        z   |j        |j                  }|S g }g } j        dvr|                                }nt          |j                  }t!          |	fd	
          }|D ]$}|j        r|j        r|j        j        rw|j        j        rk|j        dk    r1|                    t/          |j        |j         d                     e|                    t/          |j        |j                              |j        rt|t          j        urf|j        dk    r'|                    t7          |j                             |j        dk    r'|                    t7          |j                             |                    |           & fd|D             } fd|D             }t;          |          dk    rt          j
        | S t;          |          dk    r2|                                         t          j                             t          j
        | t          j
        | z  S )Nr   )Quantityc              3   @   K   | ]}t          |t                    V  d S rG   )r<   r	   )r  r   s     rD   rf  z+PrettyPrinter._print_Mul.<locals>.<genexpr>  s,      "O"Os:c6#:#:"O"O"O"O"O"OrE   rk   z-1r  rI  )oldnonec                 x    t          |           p)t          | t                    ot          | j                  S rG   )r<   r   r  )r   r  s    rD   r  z*PrettyPrinter._print_Mul.<locals>.<lambda>  s8    *Q*A*A +K C((IZ-I-I rE   r   r  Fr(  c                 :    g | ]}                     |          S rO   ra  )r  airB   s     rD   r  z,PrettyPrinter._print_Mul.<locals>.<listcomp>  #    )))T[[__)))rE   c                 :    g | ]}                     |          S rO   ra  )r  birB   s     rD   r  z,PrettyPrinter._print_Mul.<locals>.<listcomp>  r  rE   )sympy.physics.unitsr  r\   r   Onerr  r  maprP   r   r  r  r   r   r/   as_ordered_factorsr   is_commutativeis_Powr  r  is_negativerN  r   r  r  r  r
   r  r(  )
rB   r  r\   strargsnegoneobjr  r  r  r  s
   `        @rD   r+  zPrettyPrinter._print_Mul  s   000000 |7aes"O"Od122h"O"O"OOO3t{D1122G QZ4'F 3'Q22
$g.C I suclCKHHJ:_,,--//DD%%D d !K !K !K !K L L L  	 	D" t{ tx7K PTPXPd 8r>>HHSTXIFFFGGGGHHSTXI667777! d!*&<&<6Q;;HHhtv..0006Q;;HHhtv..000 *)))q)))))))q))) q66Q;;%q))1vv{{$++ae,,...%q)**<a*@@@rE   c                 
  	
 |                      |          }| j        d         rr| j        rk|dk    re|                                dk    rM|                                dk    s|j        r.|j        r't          |                    t          d                    S t          dd          	t          dd          	z   }|                      |          }|                                dk    r.|                      |          |                      d|z            z  S |dk    rdn!t          |                              d          }t          |          dk    rdt          |          dz
  z  |z   }t          |dz   |z             }d	|_        |                                dz
  
t          d                    	
fd
t#          
          D                                 }
dz
  |_        t          |                    |           }t'          d|j                  |_        t          t)          dd|                                z                       }t          |                    |           }t          |                    |           }|S )Nr4   r   rk   rr  rq  r  r   ra  r   c              3   @   K   | ]}d |z
  dz
  z  z   d |z  z   V  dS )r   rk   NrO   )r  r.   _zZ
linelengths     rD   rf  z0PrettyPrinter._print_nth_root.<locals>.<genexpr>  sS       (
 (
 a!#$s*SU2(
 (
 (
 (
 (
 (
rE   r   )rP   r=   rM   r:  r   r   r   r   r^   nth_rootr   r>   ljustr(  r   r   rs  r'  ru   r   r   r   )rB   r  r(   bprettyrootsignrprettyr  diagonalr  r  r  s            @@rD   _print_nth_rootzPrettyPrinter._print_nth_root  s`   ++d## N23 	:8I 	:		gnn..!33A%%_ &)-)< &w||HQK8899 3lla==3&++d##>>q  ;;t$$dkk!D&&9&999AIIbb3w<<#5#5a#8#8s88a<<CHHqL)H4HcDj8344^^%%)
dii (
 (
 (
 (
 (
:&&(
 (
 (
 
 
  
 'Nx~~h778  7#344tCW]]__!45566a(()x(()rE   c                    ddl m} |                                \  }}|j        r|t          j        u r%t          d          |                     |          z  S  ||          \  }}|t          j        u r?|j	        r8|j
        s1|j        s|j        r#| j        d         r|                     ||          S |j        r<|dk     r6t          d          |                     t          || d                    z  S |j        rTt          |                     |                                                               |                     |                    S |                     |          |                     |          z  S )Nr   )fractionr  r5   Fr(  )sympy.simplify.simplifyr  as_base_expr  r   NegativeOner   rP   r  is_Atomr   r  r   r=   r  r   r  r]   __pow__)rB   powerr  r  rU   r   r   s          rD   
_print_PowzPrettyPrinter._print_Pow!  s\   444444  ""1 	OAM!!!#t{{1~~558A;;DAqAEzzaizz!-zSTS^z7 ++Aq111} OQ!#t{{3q1"u3M3M3M'N'NNN? 	Pt{{1~~44667??AOOO{{1~~t{{1~~--rE   c                 B    |                      |j        d                   S r_  )rP   r\   rI   s     rD   _print_UnevaluatedExprz$PrettyPrinter._print_UnevaluatedExpr3  s    {{49Q<(((rE   c                    |dk    rJ|dk     r(t          t          |          t           j                  S t          t          |                    S t          |          dk    rt          |          dk    r|dk     rEt          t          |          t           j                  t          t          |                    z  S t          t          |                    t          t          |                    z  S d S )Nrk   r   )r   
   )r   r>   r  abs)rB   r  r  s      rD   __print_numer_denomz!PrettyPrinter.__print_numer_denom6  s    661uu!#a&&*.AAAA!#a&&)))VVr\\c!ffll1uu!#a&&*.AAA*SQRVVBTBTTT
 "#a&&))*SVV*<*<<<4rE   c                 t    |                      |j        |j                  }||S |                     |          S rG   )!_PrettyPrinter__print_numer_denomr  r  rK   rB   rJ   r,  s      rD   _print_RationalzPrettyPrinter._print_RationalH  s:    ))$&$&99M$$T***rE   c                 t    |                      |j        |j                  }||S |                     |          S rG   )r  	numeratordenominatorrK   r  s      rD   _print_FractionzPrettyPrinter._print_FractionP  s;    ))$.$:JKKM$$T***rE   c                 `   t          |j                  dk    r\t          |j                  sH|                     |j        d                   |                     t          |j                            z  S | j        rt          d          nd}|                     |j        d d d|z  d           S )Nrk   r   Multiplicationr   r   c                 ,    | j         p| j        p| j        S rG   )is_Unionis_Intersectionis_ProductSetsets    rD   r  z1PrettyPrinter._print_ProductSet.<locals>.<lambda>^  s#    CL =L#&#6=L:=:K rE   r  )r(  setsr   rP   rM   r    r[   )rB   r  	prod_chars      rD   _print_ProductSetzPrettyPrinter._print_ProductSetX  s    qv;;!K$7$7;;qvay))T[[QV-E-EEE9=9JS$4555PSI??164v	7I1L 1L # M M MrE   c                 h    t          |j        t                    }|                     |ddd          S )Nr   r  }r  )r   r\   r   r[   )rB   r  rn  s      rD   _print_FiniteSetzPrettyPrinter._print_FiniteSeta  s/    qv#3444uc3666rE   c                 >   | j         rt          d          }nd}|j        j        r(|j        j        r|j        j        r|ddd|f}n|ddd|f}n|j        j        r||d         |j        z
  |d         f}n|j        j        r/t          |          }t          |          t          |          |f}nXt          |          dk    r6t          |          }t          |          t          |          ||d         f}nt          |          }|                     |ddd	          S )
NDots...r  r   rk   r6  r  r  r  )rM   r    startis_infinitestopstepis_positiveiterr   r(  r  r[   )rB   r  dotsprintsetits        rD   _print_RangezPrettyPrinter._print_Rangee  s#    	v&&DDD7 	 16#5 	 v! 0Q4/Ar4/W  		 QrUQV^QrU2HHV 	 aBBxxb4/HHVVaZZaBBxxb426HHQxxHxc4999rE   c                     |j         |j        k    r$|                     |j        d d         dd          S |j        rd}nd}|j        rd}nd}|                     |j        d d         ||          S )	Nrk   r  r  ro   r  rp   r  r   )r  endr[   r\   	left_open
right_openrB   r.   r^   ru   s       rD   _print_IntervalzPrettyPrinter._print_Interval~  s    7ae??16"1":sC888 { | ??16"1":tU;;;rE   c                 R    d}d}|                      |j        d d         ||          S )Nri  rj  r   r[   r\   r  s       rD   _print_AccumulationBoundsz'PrettyPrinter._print_AccumulationBounds  s,    qvbqbz4777rE   c                 h    dt          dd          z  }|                     |j        d d |d           S )Nr   Intersectionr   c                 ,    | j         p| j        p| j        S rG   )r  r  is_Complementr  s    rD   r  z3PrettyPrinter._print_Intersection.<locals>.<lambda>  s#    8I 9A"|9A/2/@ rE   r  r    r[   r\   rB   r.  r  s      rD   _print_Intersectionz!PrettyPrinter._print_Intersection  sJ    [===	qvtT9-A -A  B B 	BrE   c                 h    dt          dd          z  }|                     |j        d d |d           S )Nr   Unionr#   c                 ,    | j         p| j        p| j        S rG   )r  r  r  r  s    rD   r  z,PrettyPrinter._print_Union.<locals>.<lambda>  s$    8I 9H"29H696G rE   r  r  )rB   r.  union_delimiters      rD   _print_UnionzPrettyPrinter._print_Union  sJ     ;w#<#<<qvtT?-H -H  I I 	IrE   c                     | j         st          d          dt          d          z  }|                     |j        d d |          S )Nz?ASCII pretty printing of SymmetricDifference is not implementedr   SymmetricDifference)rM   rj  r    r[   r\   )rB   r.  sym_delimeters      rD   _print_SymmetricDifferencez(PrettyPrinter._print_SymmetricDifference  sJ      	i%&ghhh-B!C!CCqvtT=AAArE   c                 F    d}|                      |j        d d |d           S )Nz \ c                 ,    | j         p| j        p| j        S rG   )r  r  r  r  s    rD   r  z1PrettyPrinter._print_Complement.<locals>.<lambda>  s     c&7 '/3;N '/"%, rE   r  r  r  s      rD   _print_ComplementzPrettyPrinter._print_Complement  s6    	qvtT9/ /  0 0 	0rE   c                    | j         rt          d          nd|j        }|j        }|j        }|                     |j                  }t          |          dk    rA|                     |d         |d         fd          }| 	                    ||ddd	d
          S t          fdt          ||          D                       }|                     |d d         d          }| 	                    ||ddd	d
          S )NSmallElementOfinrk   r   r   r  r  r  Tr^   ru   r  r  c              3   8   K   | ]\  }}|d d |dfD ]}|V  dS )r   r  NrO   )r  rA  setvr:   inns       rD   rf  z0PrettyPrinter._print_ImageSet.<locals>.<genexpr>  sX       < <	TS#tT:< <a! < < < < < < <rE   r  r  )rM   r    r$  	base_setsrf  rP   rJ   r(  r[   r  r  r)  )	rB   tsfunr  rf  rJ   r   pargsr2  s	           @rD   _print_ImageSetzPrettyPrinter._print_ImageSet  sC    	.//CCCh|M	{{38$$ y>>Q1sDG <*-   / /A**4033:># + O O O  < < < <SD-A-A < < < < <Ecrc
b99A**4033:># + O O OrE   c                    | j         rt          d          }t          d          }nd}d}|                     t          |j                            }t          |j        dd           }|-|                     |j                                                  }nQ|                     |j                  }| j         r0|                     |          }t          |
                                 }|j        t          j        u r|                     ||dddd	
          S |                     |j                  }|                     |||||fd	          }|                     ||dddd	
          S )Nr-  r   r.  andas_exprr  r  Tr   r/  r  )rM   r    r[   r   r	  getattr	conditionrP   r:  r   r]   base_setr   UniversalSetr  )	rB   r4  r2  _andr  r:  r  r  rZ  s	            rD   _print_ConditionSetz!PrettyPrinter._print_ConditionSet  sn    	.//C u%%DDCDOOE"&MM22	",	488;;r|335566DD;;r|,,D  2{{4((!4;;==1;!.((**9d14T58 + : : : {{2;''OOYT4>&)  + +&&y!#S6:c ' K K 	KrE   c                 :   | j         rt          d          }nd}|                     |j                  }|                     |j                  }|                     |j                  }|                     |||fd          }|                     ||dddd          S )	Nr-  r.  r   r  r  r  Tr/  )rM   r    r[   r  rP   rJ   r  r  )rB   r4  r2  r  rJ   prodsetsrZ  s          rD   _print_ComplexRegionz"PrettyPrinter._print_ComplexRegion  s     	.//CCCOOBL11	{{27##;;rw''OOYX6&)  + +&&tQS6:c ' K K 	KrE   c           	         |j         \  }}| j        rYdt          d           d}t          t	          j        |                     |          ||                     |                    ddiS t          t          |                    S )Nr   	ElementOfr   rt  )r\   rM   r    r   r   r   rP   r   )rB   rU   rA  r  els        rD   _print_ContainszPrettyPrinter._print_Contains  s    6S 	'0[--000Bzt{{3/?/?/14;;s3C3C E  E QNOQ Q Q d1gg&&&rE   c                 B   |j         j        t          j        u r2|j        j        t          j        u r|                     |j                  S | j        rt          d          }nd}| 	                    |
                                          |                     |          z   S )Nr  r  )r  formular   rn  bnrP   a0rM   r    r  truncate)rB   r  r  s      rD   _print_FourierSeriesz"PrettyPrinter._print_FourierSeries	  s    4<16!!adlaf&<&<;;qt$$$ 	v&&DDDqzz||,,t{{4/@/@@@rE   c                 6    |                      |j                  S rG   )r  infiniterB   r  s     rD   _print_FormalPowerSeriesz&PrettyPrinter._print_FormalPowerSeries	  s    qz***rE   c                     t          |                     |j                                                   }|                     t	          d                    }t          |                    |           S )NSetExpr)r   rP   r  r]   r   ru   )rB   se
pretty_setpretty_names       rD   _print_SetExprzPrettyPrinter._print_SetExpr	  sX    RV!4!4!;!;!=!=>
kk&"3"344;,,Z8899rE   c                    | j         rt          d          }nd}t          |j        j                  dk    st          |j        j                  dk    rt          d          |j        t          j        u rd|j        }||	                    |dz
            |	                    |dz
            |	                    |dz
            |	                    |          f}n\|j        t          j
        u s|j        dk    r/|d d         }|                    |           t          |          }nt          |          }|                     |          S )	Nr  r  r   z@Pretty printing of sequences with symbolic bound not implementedr5  r   rk   r6  )rM   r    r(  r  free_symbolsr  rj  r   r  r  r  lengthrN  r  _print_list)rB   r  r  r  r  s        rD   _print_SeqFormulazPrettyPrinter._print_SeqFormula	  s)    	v&&DDDqw#$$q((C0C,D,Dq,H,H%&hiii7a(((6DaggdQh//1B1Bq!!1774==2HHVqz!!QX\\!uHOOD!!!XHHQxxH)))rE   c                     dS )NFrO   r  s    rD   r  zPrettyPrinter.<lambda>3	  s    5 rE   c                 n   g }|D ]i}|                      |          }	 ||          rt          |	                                 }	|r|                    |           |                    |	           j|st	          d          }
nt          t	          j        |  }
t          |
                    |||           }
|
S )Nr  r  )rP   r   r]   rN  r   r   )rB   seqr^   ru   r  r  r  r  r  r`   r  s              rD   r[   zPrettyPrinter._print_seq2	  s      	! 	!DKK%%E|D!! 4"ELLNN3 )i(((MM%     	62AAJOV45Au^LLMrE   c                     d }|D ]?}||}t          |                    |           }t          |                    |           }@|t          d          S |S )Nr  )r   ru   )rB   r  r\   r`   r   s        rD   rs  zPrettyPrinter.joinF	  sf     	6 	6C}"EKK	$:$:;"EKK$4$45=b>>!LrE   c                 0    |                      |dd          S r#  r[   )rB   r   s     rD   r[  zPrettyPrinter._print_listU	  s    q#s+++rE   c                     t          |          dk    rTt          t          j        |                     |d                   d           }t          |                    ddd           S |                     |dd          S )Nrk   r   r  ro   rp   Tr  )r(  r   r   r   rP   r]   r[   )rB   r  ptuples      rD   _print_tuplezPrettyPrinter._print_tupleX	  sj    q66Q;;QqT1B1BC!H!HIFv}}S#d}KKLL??1c3///rE   c                 ,    |                      |          S rG   )re  rI   s     rD   _print_TuplezPrettyPrinter._print_Tuple_	  s      &&&rE   c                 R   t          |                                t                    }g }|D ]d}|                     |          }|                     ||                   }t	          t          j        |d|           }|                    |           e|                     |dd          S )Nr   z: r  r  )	r   keysr   rP   r   r   r   rN  r[   )rB   r   ri  rn  r   r  Vr  s           rD   _print_dictzPrettyPrinter._print_dictb	  s    affhh$4555 	 	AAAAaD!!AJOAtQ778ALLOOOOuc3///rE   c                 ,    |                      |          S rG   )rk  )rB   r   s     rD   _print_DictzPrettyPrinter._print_Dicto	  s    """rE   c                     |st          d          S t          |t                    }|                     |          }t          |                    ddd           }|S )Nzset()r   r  r  Tr  )r   r   r   r[   r]   rB   r  rn  prettys       rD   
_print_setzPrettyPrinter._print_setr	  s]     	'g&&&q.///''V]]3D]IIJrE   c                 V   |st          d          S t          |t                    }|                     |          }t          |                    ddd           }t          |                    ddd           }t          t          j        t          |          j        |           }|S )	Nzfrozenset()r   r  r  Tr  ro   rp   )	r   r   r   r[   r]   r   r   typer   ro  s       rD   _print_frozensetzPrettyPrinter._print_frozensetz	  s     	-m,,,q.///''V]]3D]IIJV]]3D]IIJZ_T!WW-=vFFGrE   c                 f    | j         rt          t          d                    S t          d          S )NUniverser>  r  rP  s     rD   _print_UniversalSetz!PrettyPrinter._print_UniversalSet	  s1     	.k*55666n---rE   c                 :    t          t          |                    S rG   r   r   )rB   rings     rD   _print_PolyRingzPrettyPrinter._print_PolyRing	      $t**%%%rE   c                 :    t          t          |                    S rG   ry  )rB   fields     rD   _print_FracFieldzPrettyPrinter._print_FracField	  s    $u++&&&rE   c                 :    t          t          |                    S rG   rH   )rB   elms     rD   _print_FreeGroupElementz%PrettyPrinter._print_FreeGroupElement	  s    #c((###rE   c                 :    t          t          |                    S rG   ry  )rB   polys     rD   _print_PolyElementz PrettyPrinter._print_PolyElement	  r|  rE   c                 :    t          t          |                    S rG   ry  )rB   fracs     rD   _print_FracElementz PrettyPrinter._print_FracElement	  r|  rE   c                     |j         r9|                     |                                                                          S |                     |                                          S rG   )
is_aliasedrP   as_polyr:  rI   s     rD   _print_AlgebraicNumberz$PrettyPrinter._print_AlgebraicNumber	  sL    ? 	/;;t||~~5577888;;t||~~...rE   c                     |                      |j        d          |j        g}t          |                     |                                           }t          |                    d           }|S )Nlexr  CRootOf)r  rJ   r  r   r[   r]   r^   rB   rJ   r\   r`   s       rD   _print_ComplexRootOfz"PrettyPrinter._print_ComplexRootOf	  s]    	77DDOOD1188::;EJJy112rE   c                 T   |                      |j        d          g}|j        t          j        ur-|                    |                     |j                             t          |                     |          	                                 }t          |
                    d           }|S )Nr  r  RootSum)r  rJ   r5  r   IdentityFunctionrN  rP   r   r[   r]   r^   r  s       rD   _print_RootSumzPrettyPrinter._print_RootSum	  s    	77881---KKDH--...DOOD1188::;EJJy112rE   c                     | j         rt          d           d}nd}t          t          ||j        z                      S )NIntegersz_%dzGF(%d))rM   r    r   r   mod)rB   rJ   forms      rD   _print_FiniteFieldz PrettyPrinter._print_FiniteField	  sF     	!*--222DDD-tx88999rE   c                 f    | j         rt          t          d                    S t          d          S )Nr  ZZr  rI   s     rD   _print_IntegerRingz PrettyPrinter._print_IntegerRing	  s1     	$k*55666d###rE   c                 f    | j         rt          t          d                    S t          d          S )N	RationalsQQr  rI   s     rD   _print_RationalFieldz"PrettyPrinter._print_RationalField	  s1     	$k+66777d###rE   c                     | j         rt          d          }nd}|j        rt          |          S |                     t          |dz   t          |j                  z                       S )NRealsRRr   rM   r    has_default_precisionr   rP   r   r>   	precisionrB   domainprefixs      rD   _print_RealFieldzPrettyPrinter._print_RealField	  si     	 ))FFF' 	Tf%%%;;}Vc\C@P<Q<Q-QRRSSSrE   c                     | j         rt          d          }nd}|j        rt          |          S |                     t          |dz   t          |j                  z                       S )N	ComplexesCCr   r  r  s      rD   _print_ComplexFieldz!PrettyPrinter._print_ComplexField	  si     	 --FFF' 	Tf%%%;;}Vc\C@P<Q<Q-QRRSSSrE   c                    t          |j                  }|j        j        sVt	          t	          d                              |                     |j                             }|                    |           |                     |dd          }t	          |	                    |                     |j
                             }|S Norder=r  r  r  symbolsr/   
is_defaultr   ru   rP   rN  r[   r^   r  rB   rJ   r\   r/   r`   s        rD   _print_PolynomialRingz#PrettyPrinter._print_PolynomialRing	      DL!!z$ 	
8 4 4 : :4;;tz;R;R S STEKKc3//EJJt{{4;'?'?@@ArE   c                    t          |j                  }|j        j        sVt	          t	          d                              |                     |j                             }|                    |           |                     |dd          }t	          |	                    |                     |j
                             }|S )Nr  ro   rp   r  r  s        rD   _print_FractionFieldz"PrettyPrinter._print_FractionField	  r  rE   c                 4   |j         }t          |j                  t          |j                  k    r|dt          |j                  z   fz   }|                     |dd          }t          |                    |                     |j                             }|S r  )	r  r>   r/   default_orderr[   r   r^   rP   r  )rB   rJ   gr`   s       rD   _print_PolynomialRingBasez'PrettyPrinter._print_PolynomialRingBase	  s    Ltz??c$"45555XDJ/11A3,,EJJt{{4;'?'?@@ArE   c                      fdj         D             }t                               d|                              dd           } fdj        D             }t          t          d                                                   j                             }t          t          d                                                   j                             }                     d|g|z   ||gz             }t          |                                 }t          |	                    j
        j                   }|S )	Nc                 H    g | ]}                     |j                   S )r  )r  r/   )r  r   basisrB   s     rD   r  z6PrettyPrinter._print_GroebnerBasis.<locals>.<listcomp>	  s;     + + + //#U[/99 + + +rE   r  r  r  r  c                 :    g | ]}                     |          S rO   ra  )r  genrB   s     rD   r  z6PrettyPrinter._print_GroebnerBasis.<locals>.<listcomp> 
  s%    999cS!!999rE   zdomain=r  )exprsr   rs  r]   gensru   rP   r  r/   r^   r   r   )rB   r  r  r  r  r/   r`   s   ``     rD   _print_GroebnerBasisz"PrettyPrinter._print_GroebnerBasis	  s3   + + + + +"[+ + +DIIdE2299s#9NNO9999UZ999	""((U\)B)BCCE!!''EK(@(@AAC 		$$&% @AAELLNN+EJJu'?@@ArE   c                 H                          |j                  }t          |                                 }|                                dk    r|                                nd}t          t          d|          |j                  }t          |                    |           }|j        }|                                dz
  |_        t          |                     	                     fdt          |j        |j                  D                                  }||_        |S )Nrk   r   r   r  c           
          g | ][}                                         |d                    t          d                              |d                   fd          \S )r   r_  rk   r  r  )r[   rP   r   )r  ry  rB   s     rD   r  z-PrettyPrinter._print_Subs.<locals>.<listcomp>
  st     9C 9C 9C"# OOT[[1..T

DKK!<M<MN   9C 9C 9CrE   )rP   rJ   r   r]   r:  r   r   r   ru   r[   r)  r  rq  )rB   rU   r`   r@  rvertr  s   `     rD   _print_SubszPrettyPrinter._print_Subs
  s   AF##ELLNN+#llnnq00ELLNNNa4Q<<%.AAAEKK../N!+EKK 9C 9C 9C 9C'*1;'@'@9C 9C 9C )D )D E E F rE   c                 4   t          |          }|                     |j        d                   }t          d|                                z            }t          |                    |           }t          |                    |           }t          |j                  dk    r|S |j        \  }}|}t          |                     |g                                           }	t          t          j
        ||	          dt           j        i}||_        |	|_        |S )Nr   r   rk   r   )r   rP   r\   r   r  ru   r(  r[   r]   r   r   r  r  r  )
rB   rU   rc   r`   r   r   r  r   r  r  s
             rD   _print_number_functionz$PrettyPrinter._print_number_function
  s     4  kk!&)$$s399;;//		 4 45	EKK	223qv;;!Lv1
!!5!5!<!<!>!>?
&0oj*&M&MOOO O%%rE   c                 .    |                      |d          S )Nr  r  rT   s     rD   _print_eulerzPrettyPrinter._print_euler3
      **1c222rE   c                 .    |                      |d          S )NrZ  r  rT   s     rD   _print_catalanzPrettyPrinter._print_catalan6
  r  rE   c                 .    |                      |d          S )Nr  r  rT   s     rD   _print_bernoullizPrettyPrinter._print_bernoulli9
  r  rE   c                 .    |                      |d          S )NLr  rT   s     rD   _print_lucaszPrettyPrinter._print_lucas>
  r  rE   c                 .    |                      |d          S )Nr  r  rT   s     rD   _print_fibonaccizPrettyPrinter._print_fibonacciA
  r  rE   c                 .    |                      |d          S )Nr  r  rT   s     rD   _print_tribonaccizPrettyPrinter._print_tribonacciD
  r  rE   c                 ~    | j         r!|                     |t          d                   S |                     |d          S )Nr  	stieltjes)rM   r  r"   rT   s     rD   _print_stieltjeszPrettyPrinter._print_stieltjesG
  s>     	?..q-2HIII..q+>>>rE   c                    |                      |j        d                   }t          |                    t          d                     }t          |                    |                      |j        d                              }| j        rt          t          d                    }nt          d          }|}t          |                    d|                                z             }t          |                    d|                                z             }t          |	                    |          dt          j
        iS )Nr   r  rk   r%  r   r   r   )rP   r\   r   ru   rM   r   r   r^   r   r  POW)rB   rU   r`   r  r  r  r  s          rD   _print_KroneckerDeltaz#PrettyPrinter._print_KroneckerDeltaM
  s    AF1I&&EKK
3889EKKAF1I(>(>??@ 	 =1122AA3A!&&QWWYY//0!''#aggii-001399S>>B*.BBBrE   c                 .   t          |d          rX|                     d          }t          |                    |                     |                                                     }|S t          |d          r|                     d          }t          |                    |                     |j                             }t          |                    |                     d                     }t          |                    |                     |j                             }|S t          |d          rK|                     d          }t          |                    |                     |j                             }|S |                     d           S )N
as_booleanzDomain: r  z in r  z
Domain on )r  rP   r   ru   r  r  r  )rB   r   r`   s      rD   _print_RandomDomainz!PrettyPrinter._print_RandomDomainZ
  sD   1l## 	%KK
++EDKK,G,G H HIELQ 	%KK
++EDKK	,B,B C CDEDKK,?,? @ @AEDKK,>,> ? ?@ELQ	"" 	%KK--EDKK	,B,B C CDEL;;t$$$rE   c                     	 |j         -|                     |j                             |                    S n# t          $ r Y nw xY w|                     t	          |                    S rG   )rz  rP   to_sympyr   reprrB   r  s     rD   
_print_DMPzPrettyPrinter._print_DMPl
  sn    	v!{{16??1#5#5666 "  	 	 	D	{{477###s   37 
AAc                 ,    |                      |          S rG   )r  r  s     rD   
_print_DMFzPrettyPrinter._print_DMFu
  s    q!!!rE   c                 P    |                      t          |j                            S rG   rP   r   rc   )rB   objects     rD   _print_ObjectzPrettyPrinter._print_Objectx
  s    {{=55666rE   c                     t          d          }|                     |j                  }|                     |j                  }|                    ||          d         }t          |          S )Nz-->r   )r   rP   r  codomainru   r   )rB   morphismri  r  r  tails         rD   _print_MorphismzPrettyPrinter._print_Morphism{
  sZ    UX_--;;x011||E8,,Q/$rE   c                     |                      t          |j                            }|                     |          }t	          |                    d|          d                   S )Nr  r   )rP   r   rc   r  r   ru   )rB   r  rV  pretty_morphisms       rD   _print_NamedMorphismz"PrettyPrinter._print_NamedMorphism
  sS    kk-">">??..x88+++CAA!DEEErE   c                 b    ddl m} |                      ||j        |j        d                    S )Nr   )NamedMorphismid)sympy.categoriesr  r  r  r  )rB   r  r  s      rD   _print_IdentityMorphismz%PrettyPrinter._print_IdentityMorphism
  sE    222222((M(/8+<dCCE E 	ErE   c                 >   t          d          }d |j        D             }|                                 |                    |          dz   }|                     |          }|                     |          }t          |                    |          d                   S )Nr  c                 6    g | ]}t          |j                  S rO   )r   rc   )r  	components     rD   r  z:PrettyPrinter._print_CompositeMorphism.<locals>.<listcomp>
  s8      B  B  B ) !.in = =  B  B  BrE   r  r   )r   ro  reversers  rP   r  r   ru   )rB   r  circlecomponent_names_listcomponent_namesrV  r  s          rD   _print_CompositeMorphismz&PrettyPrinter._print_CompositeMorphism
  s    c B  B-5-@ B  B  B$$&&& ++&:;;cAkk/22..x88+++O<<Q?@@@rE   c                 P    |                      t          |j                            S rG   r  )rB   categorys     rD   _print_CategoryzPrettyPrinter._print_Category
  s    {{=77888rE   c                 J   |j         s|                     t          j                  S |                     |j                   }|j        rHdt          d          z  }|                     |j                  d         }|                    ||          }t          |d                   S )Nr   z==>r   )premisesrP   r   EmptySetconclusionsr   ru   r   )rB   diagrampretty_resultresults_arrowpretty_conclusionss        rD   _print_DiagramzPrettyPrinter._print_Diagram
  s     	+;;qz***G$455 	3"T%[[0M!%W-@!A!A!!D)//13 3M -*+++rE   c                     ddl m}  |fdt          j                  D                       }|                     |          S )Nr   )Matrixc                 T    g | ]#fd t          j                  D             $S )c                 V    g | ]%}|f         r
|f         nt          d           &S )r   r   )r  r:   gridr.   s     rD   r  z?PrettyPrinter._print_DiagramGrid.<locals>.<listcomp>.<listcomp>
  sH     6 6 6 )-QT
C$q!t**s 6 6 6rE   )r'  r   )r  r.   r  s    @rD   r  z4PrettyPrinter._print_DiagramGrid.<locals>.<listcomp>
  sZ     6 6 66 6 6 6 6#(#4#46 6 6 6 6 6rE   )r  r  r'  r:  r  )rB   r  r  matrixs    `  rD   _print_DiagramGridz PrettyPrinter._print_DiagramGrid
  sl    )))))) 6 6 6 6"'"4"46 6 6 7 7 **6222rE   c                 0    |                      |dd          S r#  rb  rB   r  s     rD   _print_FreeModuleElementz&PrettyPrinter._print_FreeModuleElement
  s    q#s+++rE   c                 X    fdj         D             }|                     |dd          S )Nc                 ,    g | ]}fd |D             S )c                 D    g | ]}j                             |          S rO   )rz  r  )r  r  r  s     rD   r  z=PrettyPrinter._print_SubModule.<locals>.<listcomp>.<listcomp>
  s'    111##111rE   rO   )r  r  r  s     rD   r  z2PrettyPrinter._print_SubModule.<locals>.<listcomp>
  s.    DDDc1111S111DDDrE   ri  rj  )r  r[   )rB   r  r  s    ` rD   _print_SubModulezPrettyPrinter._print_SubModule
  s4    DDDDQVDDDtS#...rE   c                 l    |                      |j                  |                      |j                  z  S rG   )rP   rz  r  rB   r  s     rD   _print_FreeModulezPrettyPrinter._print_FreeModule
  s)    {{16""DKK$7$777rE   c                 v    |j         j        |                     fd|j        j        D             dd          S )Nc                 *    g | ]\  } |          S rO   rO   )r  r   r	  s     rD   r  z?PrettyPrinter._print_ModuleImplementedIdeal.<locals>.<listcomp>
  s#    AAA3AAAAArE   ri  rj  )rz  r  r[   _moduler  )rB   r  r	  s     @rD   _print_ModuleImplementedIdealz+PrettyPrinter._print_ModuleImplementedIdeal
  s;    foAAAA!).AAA3LLLrE   c                 l    |                      |j                  |                      |j                  z  S rG   )rP   rz  
base_idealrB   Rs     rD   _print_QuotientRingz!PrettyPrinter._print_QuotientRing
  s)    {{16""T[[%>%>>>rE   c                     |                      |j                            |                    |                      |j        j                  z   S rG   )rP   rz  r  r'  r(  s     rD   _print_QuotientRingElementz(PrettyPrinter._print_QuotientRingElement
  s8    {{16??1--..QV=N1O1OOOrE   c                 v    |                      |j                  |                      |j        j                  z   S rG   )rP   datamodulekilled_moduler  s     rD   _print_QuotientModuleElementz*PrettyPrinter._print_QuotientModuleElement
  s,    {{16""T[[1G%H%HHHrE   c                 l    |                      |j                  |                      |j                  z  S rG   )rP   r  r0  r   s     rD   _print_QuotientModulez#PrettyPrinter._print_QuotientModule
  s)    {{16""T[[%A%AAArE   c                 L   |                      |                                          }|                                dz  |_        t	          |                    d|                      |j                  dt          dd          z  |                      |j                             }|S )Nr   z : z %s> rI  )	rP   _sympy_matrixr:  r   r   ru   r  r   r  )rB   r@  r  r`   s       rD   _print_MatrixHomomorphismz'PrettyPrinter._print_MatrixHomomorphism
  s    Q__..// --//Q.FLLAH0E0Ed3ll"DKK
$;$;= = >rE   c                 6    |                      |j                  S rG   rP   rc   )rB   manifolds     rD   _print_ManifoldzPrettyPrinter._print_Manifold
  s    {{8=)))rE   c                 6    |                      |j                  S rG   r8  )rB   patchs     rD   _print_PatchzPrettyPrinter._print_Patch
  s    {{5:&&&rE   c                 6    |                      |j                  S rG   r8  )rB   coordss     rD   _print_CoordSystemz PrettyPrinter._print_CoordSystem
  s    {{6;'''rE   c                 ~    |j         j        |j                 j        }|                     t          |                    S rG   )
_coord_sysr  _indexrc   rP   r   )rB   r~  strings      rD   _print_BaseScalarFieldz$PrettyPrinter._print_BaseScalarField
  s1    !)%,7<{{=00111rE   c                     t          d          dz   |j        j        |j                 j        z   }|                     t          |                    S )Nr   r   )r#   rB  r  rC  rc   rP   r   )rB   r~  r  s      rD   _print_BaseVectorFieldz$PrettyPrinter._print_BaseVectorField
  sD    $%%+e.>.Fu|.T.YY{{=++,,,rE   c                    | j         rt          d          }nd}|j        }t          |d          rD|j        j        |j                 j        }|                     |dz   t          |          z             S |                     |          }t          |                                 }t          |                    |           S )NDifferentialr   rB  r   )rM   r    _form_fieldr  rB  r  rC  rc   rP   r   r   r]   r^   )rB   r  r   r~  rD  r`   s         rD   _print_Differentialz!PrettyPrinter._print_Differential
  s     	N++AAA 5,'' 	.%-el;@F;;q3wv)>)>>???KK&&E/Euzz!}}--rE   c                     |                      |j        d                   }t          |                    d|j        j        z             }t          |                    d           }|S )Nr   z%s(rp   )rP   r\   r   r^   r   r   ru   )rB   r  r`   s      rD   	_print_TrzPrettyPrinter._print_Tr
  sT    AF1I&&EJJu0D'EFFGEKK,,-rE   c                    |                      |j        d                   }t          |                                 }| j        r(t          |                    t          d                    }nt          |                    d           }|S )Nr   nurP   r\   r   r]   rM   r^   r"   r_   s      rD   _print_primenuzPrettyPrinter._print_primenu
  sn    AF1I&&ELLNN+ 	2

=+> ? ?@EE

4 0 01ErE   c                    |                      |j        d                   }t          |                                 }| j        r(t          |                    t          d                    }nt          |                    d           }|S )Nr   OmegarP  r_   s      rD   _print_primeomegazPrettyPrinter._print_primeomega  sn    AF1I&&ELLNN+ 	5

=+A B BCEE

7 3 34ErE   c                     |j         j         dk    rN| j        r#|                     t          d                    }n"|                     t	          d                    }|S |                     |          S )NdegreeDegree   )rc   rM   rP   r    chrrK   r_   s      rD   _print_QuantityzPrettyPrinter._print_Quantity  sg    6;(""  .K$9$9::CHH--L$$Q'''rE   c                     t          dt          |j                  z   dz             }|                     |j                  }|                     |j                  }t          t          j        |||           }|S )Nr   )r   r   r   rP   r   r   r   r   r   s         rD   _print_AssignmentBasez#PrettyPrinter._print_AssignmentBase  sd    d14jj(3.//KKKKJOAr1556rE   c                 6    |                      |j                  S rG   r8  rP  s     rD   
_print_StrzPrettyPrinter._print_Str#  s    {{16"""rE   rG   )F)T)r  r  )NNr  F)FNro   rp   )FNr  Fro   rp   )r   
__module____qualname____doc__printmethod_default_settingsr;   rK   propertyrM   rR   rV   rX   ra   rf   _print_RandomSymbolri   rm   ry   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   r  r  r2  rG  r\  rM  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/  r5  r7  r:  rH  rN  rS  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/  r3  r5  r9  r=  rA  rF  rH  rJ  rM  rP  rR  rU  rX  r[  r^  r`  rb  rk  rt  rw  ry  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+  r7  r@  rC  rG  rM  rQ  rW  r\  _print_SeqPer_print_SeqAdd_print_SeqMulr[   rs  r[  re  rg  rk  rm  rq  rt  rw  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  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,  r1  r3  r6  r:  r=  r@  rE  rG  rK  rM  rQ  rT  rZ  r\  r^  rO   rE   rD   r*   r*      s3       IIK !%# ~ ~ ~ ~% % % ( ( X(: : :      
        (S S S8 8 8
 
 
    
 
 
    ( ( ( "O)!O!O"!O""&7 7 7           + + +"   *6 6 66 6 66 6 66 6 66 6 6+ + + +6 6 6 6E E E  
+ + ++ + +# # #J  &", ", ",JI I IV4 4 4l
( 
( 
(_ _ _B  8A A AF   
I 
I 
IS S SS S S    *  6    % % %
  ") ) )# # ## # ## # #) ) )  	Y 	Y 	Y, , , H H H  
8 8 8) ) )0 0 0    ""& "& "&H  $  ' ' 'd= d= d=L% % %B @B ! ! ! !F; ; ;
F F F  ) ) )       @6 6 6p3 3 3  4 4 4 4. . .`R R Rh. . .4 4 4 CF!s s s s6 6 66 6 67 7 77 7 7 HLGJ%(# # # #JW W W % % X%4 4 4' ' '' ' '< < << < <@ @ @6 6 66 6 67 7 77 7 78 8 88 8 86 6 68 8 88 8 86 6 6K K K[ [ [  *  < < << < << < << < << < << < <+ + +&' ' '  	 	 	      2 2 2
1 1 1
( ( (  F+ F+ F+ F+P:A :A :Az* * *X. . .$) ) )  $+ + ++ + +M M M7 7 7: : :2< < <"8 8 8B B BI I IB B B0 0 0O O O:K K K>K K K' ' 'A A A+ + +: : :
* * ** &M%M%M#'tt(   (  , , ,0 0 0' ' '0 0 0# # #    . . .& & &' ' '$ $ $& & && & &/ / /  	 	 	: : :$ $ $$ $ $	T 	T 	T	T 	T 	T
 
 

 
 
    &  "  (3 3 33 3 33 3 3 #K3 3 33 3 33 3 3? ? ?C C C% % %$$ $ $" " "7 7 7     F F F
E E E
A A A9 9 9, , ,3 3 3, , ,/ / /8 8 8M M M? ? ?P P PI I IB B B  * * *' ' '( ( (2 2 2- - -. . .      ( ( (  # # # # #rE   r*   c                     t          |          }|j        d         }t          |          }	 |                    |           t          |           S # t          |           w xY w)zReturns a string containing the prettified form of expr.

    For information on keyword arguments see pretty_print function.

    r1   )r*   r=   r!   rR   )rJ   rC   r  r1   uflags        rD   rp  rp  '  sf     
x	 	 B ,}-K{++E"zz$5!!!!5!!!!s   A A"c                 :    t          t          | fi |           dS )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)printrp  )rJ   kwargss     rD   pretty_printrx  :  s)    V 
&
 
 
 
 !!!!!rE   c                     ddl m} ddlm} d|vrd|d<    |t	          | fi |                     |                                 dS )a  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)getpreferredencodingr3   i  N)pydocrz  localer{  rp  encode)rJ   rC   rz  r{  s       rD   pager_printr  j  s{     ++++++H$$"(	E&
"
"
"
"
)
)*>*>*@*@
A
ABBBB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(   r  pprint_use_unicodepprint_try_use_unicoder*   rp  rx  pprintr  rO   rE   rD   <module>r     s                   ' ' ' ' ' ' ( ( ( ( ( (       / / / / / / / /             / / / / / / $ $ $ $ $ $ + + + + + + 7 7 7 7 7 7 T T T T T T T T T T : : : : : : : : # # # # # # 1 1 1 1 1 1 @ @ @ @ @ @ C C C C C C C Cb b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
 ( / F,# F,# F,# F,# F,#G F,# F,# F,#RX " " "$+" +" +"Z 
C C C C CrE   