o
    8Va                 
   @   s  d dl mZmZ d dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZmZ d dlmZmZmZmZmZmZmZ d dlmZmZmZmZmZ d dlmZmZmZ d d	lmZmZmZmZ d d
lmZmZmZmZmZ d dlmZ d dlmZmZmZ d dlmZmZmZmZmZmZmZmZ d dlmZmZ d dlmZmZmZmZ d dlmZ d dlmZmZmZ d dlmZ d dlmZmZ d dlmZmZmZmZmZmZmZ d dlmZ d dlmZmZmZmZmZ d dlZG dd dejZehd\
ZZZZZZZZZZehddd\ZZZdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zed0d1 Zed2d3 Zd4d5 Z d6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG Z	dHdI Z
dJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdZd[ Zd\d] Zd^d_ Zd`da Zdbdc Zddde Zdfdg Zdhdi Zdjdk Zdldm Zdndo Zdpdq Zdrds Zdtdu Z dvdw Z!dxdy Z"dzd{ Z#d|d} Z$d~d Z%dd Z&dd Z'dd Z(dd Z)dd Z*dd Z+dd Z,dd Z-dd Z.dd Z/dd Z0dd Z1dd Z2dd Z3dd Z4dd Z5dd Z6dd Z7dd Z8dd Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?dd Z@dd ZAdd ZBdd ZCdd ZDdd ZEdd ZFddÄ ZGddń ZHddǄ ZIddɄ ZJdd˄ ZKdd̈́ ZLddτ ZMddф ZNddӄ ZOddՄ ZPddׄ ZQddل ZRddۄ ZSdd݄ ZTdd߄ ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbedd Zcdd Zddd Zed d Zfdd Zgdd Zhdd Zidd	 Zjd
d Zkdd Zldd Zmdd Zndd Zodd Zpdd Zqdd Zrdd Zsdd Ztdd Zud d! Zvd"d# Zwd$d% Zxd&d' Zyd(d) Zzd*d+ Z{d,d- Z|d.d/ Z}d0d1 Z~d2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdS (Z      )ArraySymbolArrayElement)PartialDerivative)AbsChiCiCosineTransformDictEiEqFallingFactorial	FiniteSetFloatFourierTransformFunctionIndexedIndexedBaseIntegralIntervalInverseCosineTransformInverseFourierTransform
DerivativeInverseLaplaceTransformInverseMellinTransformInverseSineTransformLambdaLaplaceTransformLimitMatrixMaxMellinTransformMinMulOrder	PiecewisePolyringfieldZZPowProductRangeRationalIntegerRisingFactorialrootofRootSumSShiSiSineTransformSubsSumSymbolImageSetTupleYnmZnmargasinacscasinhModassoc_laguerreassoc_legendrebetabinomialcatalanceiling
chebyshevt
chebyshevu	conjugatecotcothdiffdirichlet_etaeulerexpexpint	factorial
factorial2floorgamma
gegenbauerhermitehyperimjacobilaguerrelegendrelerchphilogfracmeijergoo
polar_liftpolylogrerootsinsqrtsymbols
uppergammazetasubfactorialtotient
elliptic_k
elliptic_f
elliptic_eelliptic_picostanWildtruefalse
EquivalentNotContainsdivisor_sigmaSeqPer
SeqFormulaMatrixSliceSeqAddSeqMulfourier_seriespiConditionSetComplexRegionfpsAccumBoundsreduced_totientprimenu
primeomegaSingularityFunction	stieltjesmathieucmathieusmathieucprimemathieusprimeUnevaluatedExpr
QuaternionIKroneckerProductLambertW)udivisor_sigma)mutau)latex	translategreek_letters_settex_greek_dictionarymultiline_latexlatex_escapeLatexPrinter)ImmutableDenseNDimArrayImmutableSparseNDimArrayMutableSparseNDimArrayMutableDenseNDimArraytensorproduct)XFAILraises_both_exp_pow)
DiracDelta	HeavisideKroneckerDelta
LeviCivita)	bernoullibelllucas	fibonacci
tribonacci)Implies)AndOrXor)TransferFunctionSeriesParallelFeedbackTransferFunctionMatrix
MIMOSeriesMIMOParallelMIMOFeedback)
CommutatorOperator)metergibibyte	microgramsecond)Tr)CyclePermutationAppliedPermutation)PermutationMatrix)MatrixSymbolln)
CoordSys3DCrossCurlDot
DivergenceGradient	Laplacian)SetExpr)UnionIntersection
ComplementSymmetricDifference
ProductSetNc                   @      e Zd ZdS )
lowergammaN__name__
__module____qualname__ r   r   A/usr/lib/python3/dist-packages/sympy/printing/tests/test_latex.pyr   <       r   zx y z t w a b c s pk m nTZintegerc                  C   sL   G dd dt } t| tdksJ G dd dt } t| tdks$J d S )Nc                   @      e Zd Zdd ZdS )test_printmethod.<locals>.Rc                 S   s   d| | jd  S )Nzfoo(%s)r   )_printargsselfZprinterr   r   r   _latexF   s   "test_printmethod.<locals>.R._latexNr   r   r   r   r   r   r   r   RE       r   zfoo(x)c                   @   r   )r   c                 S      dS )Nfoor   r   r   r   r   r   K      r   Nr   r   r   r   r   r   J   r   r   )r   r   x)r   r   r   r   test_printmethodD   s   r   c                  C   s	  t dt dks
J t td dksJ t tdt  dks J t td t d td  dks2J t dt t dks>J t dt t d	d
dksLJ t dtd  t dd
dks\J t ddt  dd
dksjJ t tdddddkswJ t tdddddksJ t tdddddksJ t tdddddksJ t tddddddksJ t tdddddksJ t tdtjdddksJ t tddtjdddksJ t tddddtdddksJ t tdddddksJ t tdddddttdddksJ t tddddt dttddd ksJ t ttddtd!d"ddd#ks/J t dt d$ks:J t dt d%d&d'ksGJ t td d d(ksUJ t td d d%d&d)kseJ t dtd  d*ksrJ t dtt  d d+ksJ t td d,ksJ t td d%d&d-ksJ t tt dt  d.ksJ t tt dt  d%d&d/ksJ t tt dt  dd0d1ksJ t tt t d2ksJ t tt t dd0d2ksJ t dtd t d d3ksJ t dtd t d dd0d4ks
J t t	ttd5ksJ t
d6} td7}t | d d8ks)J t | d dd9d:ks6J t t|| | dd;ksEJ t t|| | ddd9d<ksVJ t dttt d d=ksfJ t dttt d d%d&d>ksxJ t ttd?ksJ t ttdd d@ksJ t ttdd ddAdBksJ t ttd dCksJ t ttd%dDd?ksJ t ttdd d%dDdEksJ t ttd d%dDdCksJ t ttdd dFksJ t ttdd d%dGdHksJ t td tdd dIksJ t td tdd d%dGdJksJ t dKt dLks%J t dKt d	d
dMks2J t dKt dNd
dOks?J t dtt dPksLJ t ttd dPksYJ t tttdd dQksiJ t tttdd d%dGdRks{J t t dSksJ t tt@ dTksJ t tt@ t@ dUksJ t ttB dVksJ t ttB tB dWksJ t tt@ tB dXksJ t tttdYksJ t tt ?  dZksJ t tttttd[ksJ t tttttd\ksJ t tt@  d]ksJ t t td^id_d`ksJ t tt@ td^tdaid_dbks$J t tt@ t@ td^tdatdcid_ddks9J t ttB td^tdaid_deksJJ t ttB tB td^tdatdcid_dfks_J t tt@ tB td^tdatdcid_dgkstJ t ttttd^tdaid_dhksJ t ttddddddiksJ t ttdddjdddkksJ t ttddl ddddmksJ t
dnd%do}t t| t| dpksJ d S )qN   x + 1   zx^{2}z	x^{x + 1}   zx^{3} + x^{2} + x + 1z2 x ydotZ
mul_symbolz2 \cdot x \cdot yz\,z3\,x^{2}\,y      ?z1.5 \cdot 3^{x}r   FZevaluatez	0 \cdot 1z	1 \cdot 0z	1 \cdot 1z\left(-1\right) 1z1 \cdot 1 \cdot 1z	1 \cdot 2z1 \frac{1}{2}z1 \cdot 1 \frac{1}{2}z1 \cdot 1 \cdot 2 \cdot 3 xz1 \left(-1\right)   z%4 \cdot 3 \cdot 2 \cdot 1 \cdot 0 y xz*4 \cdot 3 \cdot 2 \left(z + 1\right) 0 y x      z\frac{2}{3} \frac{5}{7}\frac{1}{x}T)Zfold_short_fracz1 / xz- \frac{3}{2}z- 3 / 2z\frac{1}{x^{2}}z\frac{1}{2 \left(x + y\right)}z\frac{x}{2}zx / 2z\frac{x + y}{2 x}z\left(x + y\right) / 2 x)Zlong_frac_ratioz \frac{1}{2 x} \left(x + y\right)z\frac{x + y}{x}z\frac{2 \sqrt{2} x}{3}z\frac{2 x}{3} \sqrt{2}z{\binom{x}{y}}x^*fz\left(x^{*}\right)^{2})Zparenthesize_superz{x^{*}}^{2}z=\frac{d^{2}}{d \left(x^{*}\right)^{2}} f{\left(x^{*} \right)}z2\frac{d^{2}}{d {x^{*}}^{2}} f{\left(x^{*} \right)}z\frac{2 \int x\, dx}{3}z\left(2 \int x\, dx\right) / 3z\sqrt{x}z\sqrt[3]{x})Zroot_notationzx^{\frac{1}{3}}zx^{\frac{3}{2}}itexz\root{3}{x}zx^{\frac{3}{4}})Zfold_frac_powerszx^{3/4}z \left(x + 1\right)^{\frac{3}{4}}z\left(x + 1\right)^{3/4}g0)VC Dz1.5 \cdot 10^{20} xz1.5 \cdot 10^{20} \cdot xtimesz1.5 \times 10^{20} \times xz\frac{1}{\sin{\left(x \right)}}z#\sin^{\frac{3}{2}}{\left(x \right)}z\sin^{3/2}{\left(x \right)}z\neg xz
x \wedge yzx \wedge y \wedge zzx \vee yzx \vee y \vee zzz \vee \left(x \wedge y\right)zx \Rightarrow yzx \not\Rightarrow \neg yz#\left(x \vee y\right) \Rightarrow zz#z \Rightarrow \left(x \vee y\right)z\neg \left(x \wedge y\right)x_iZsymbol_namesz\neg x_iZy_izx_i \wedge y_iZz_izx_i \wedge y_i \wedge z_izx_i \vee y_izx_i \vee y_i \vee z_iz$z_i \vee \left(x_i \wedge y_i\right)zx_i \Rightarrow y_iz\frac{1}{\frac{1}{3}}z\frac{1}{(\frac{1}{3})^{2}}d   z\frac{1}{\frac{1}{100}}p)Zpositiveze^{- p} \log{\left(p \right)})r   r   yr"   r1   Halfzr,   rf   rD   r7   r   r   r   re   r   r   r)   r-   rO   r]   )x_starr   r  r   r   r   test_latex_basicP   s   $ 


 

"
" 
   






"


""$$r	  c                   C   sT   t ddksJ t ddksJ t d dksJ t tdks J t tdks(J d S )NTz\text{True}Fz\text{False}z\text{None})r   rs   rt   r   r   r   r   test_latex_builtins   s
   r
  c                   C   s@  t ttdddksJ t ttdddksJ t ttdddks$J t ttttdks0J t ttdd	d
ks<J t ttdddksHJ t ttddd dksVJ t ttddd dksdJ t ttddd dksrJ t ttttd dksJ t ttdd	d dksJ t ttddd d dksJ d S )Nr   r   z&{\left\langle x - 4 \right\rangle}^{5}z&{\left\langle x + 3 \right\rangle}^{4}r   z"{\left\langle x \right\rangle}^{4}z({\left\langle - a + x \right\rangle}^{n}r  z'{\left\langle x - 4 \right\rangle}^{-2}r   z'{\left\langle x - 4 \right\rangle}^{-1}r   z.{\left({\langle x - 4 \rangle}^{5}\right)}^{3}z.{\left({\langle x + 3 \rangle}^{4}\right)}^{3}z*{\left({\langle x \rangle}^{4}\right)}^{3}z0{\left({\langle - a + x \rangle}^{n}\right)}^{3}z/{\left({\langle x - 4 \rangle}^{-2}\right)}^{3}z/{\left({\langle x - 4 \rangle}^{-1}\right)}^{9})r   r   r   anr   r   r   r   test_latex_SingularityFunction   sH   r  c                   C   sL   t tddddksJ t tddddddksJ t t dks$J d S )	Nr   r   r   \left( 1\; 2\; 4\right)r      *\left( 1\; 2\right)\left( 4\; 5\; 6\right)\left( \right))r   r   r   r   r   r   test_latex_cycle   s
   r  c                   C   s   t tddddksJ t tddddddksJ t t dks$J t tddtd d	ks3J t tdd
ks=J t tdddddksJJ t tdddddddksZJ t t dddkseJ d S )Nr   r   r   r  r   r  r  r  z"\left( 2\; 4\right)\left( 5\right)z\left( 5\right)r   F)Zperm_cyclicz,\begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix}r   z<\begin{pmatrix} 0 & 1 & 2 & 3 \\ 1 & 0 & 3 & 2 \end{pmatrix})r   r   r   r   r   r   test_latex_permutation   s$   r  c                   C   s   t tddks
J t tddksJ t tddddks J t tdd	d
dddks.J t tdd	d
dddks<J t tdd	d
dddksJJ t tddd
dddksXJ d S )Ng}Ô%ITz1.0 \cdot 10^{100}g0.++z1.0 \cdot 10^{-100}r   r   z1.0 \times 10^{-100}z10000.0Fr  r   )Z	full_precminmaxz1.0 \cdot 10^{4}r   r   z0.099999Tz9.99990000000000 \cdot 10^{-2})r   r   r   r   r   r   test_latex_Float  s"   r  c                  C   s  t d} tt| j| j| j d | j dksJ tt| j| jdks&J ttt| j| j dks5J ttt| j | jdksDJ ttd| j | j dksTJ ttd| j | j | j dksgJ ttdt | j | j d	ksyJ tttd| j | j  d
ksJ ttd| j | j | j dksJ ttd| j | j dksJ tttd| j | j  dksJ tt	| j| j| j d | j dksJ tt	| j| jdksJ tt	t| j | jdksJ ttt	| j| j dksJ tt
| jdksJ tt
| jd| j  dksJ ttt
| j dks,J tt
t| j dks:J tt| jdksFJ tt| jd| j  dksWJ ttt| j dkseJ ttt| j dkssJ d S )NAr   zh\mathbf{\hat{i}_{A}} \times \left((3 \mathbf{{x}_{A}})\mathbf{\hat{j}_{A}} + \mathbf{\hat{k}_{A}}\right)z0\mathbf{\hat{i}_{A}} \times \mathbf{\hat{j}_{A}}z?x \left(\mathbf{\hat{i}_{A}} \times \mathbf{\hat{j}_{A}}\right)zB- \mathbf{\hat{j}_{A}} \times \left((x)\mathbf{\hat{i}_{A}}\right)zB\nabla\times \left((3 \mathbf{{x}_{A}})\mathbf{\hat{j}_{A}}\right)zY\nabla\times \left(\mathbf{\hat{i}_{A}} + (3 \mathbf{{x}_{A}})\mathbf{\hat{j}_{A}}\right)zD\nabla\times \left((3 \mathbf{{x}_{A}} x)\mathbf{\hat{j}_{A}}\right)zQx \left(\nabla\times \left((3 \mathbf{{x}_{A}})\mathbf{\hat{j}_{A}}\right)\right)zX\nabla\cdot \left(\mathbf{\hat{i}_{A}} + (3 \mathbf{{x}_{A}})\mathbf{\hat{j}_{A}}\right)zA\nabla\cdot \left((3 \mathbf{{x}_{A}})\mathbf{\hat{j}_{A}}\right)zPx \left(\nabla\cdot \left((3 \mathbf{{x}_{A}})\mathbf{\hat{j}_{A}}\right)\right)zg\mathbf{\hat{i}_{A}} \cdot \left((3 \mathbf{{x}_{A}})\mathbf{\hat{j}_{A}} + \mathbf{\hat{k}_{A}}\right)z/\mathbf{\hat{i}_{A}} \cdot \mathbf{\hat{j}_{A}}z?\mathbf{\hat{j}_{A}} \cdot \left((x)\mathbf{\hat{i}_{A}}\right)z>x \left(\mathbf{\hat{i}_{A}} \cdot \mathbf{\hat{j}_{A}}\right)z\nabla \mathbf{{x}_{A}}z9\nabla \left(\mathbf{{x}_{A}} + 3 \mathbf{{y}_{A}}\right)z&x \left(\nabla \mathbf{{x}_{A}}\right)z&\nabla \left(\mathbf{{x}_{A}} x\right)z\triangle \mathbf{{x}_{A}}z<\triangle \left(\mathbf{{x}_{A}} + 3 \mathbf{{y}_{A}}\right)z)x \left(\triangle \mathbf{{x}_{A}}\right)z)\triangle \left(\mathbf{{x}_{A}} x\right))r   r   r   ijr   kr   r   r   r   r  r   )r  r   r   r   test_latex_vector_expressions  st     


 r  c                  C   s  t d\} }}t d\}}}}t|dksJ t|dksJ t|dks'J t|dks/J dd tD }t|tt  dksDJ t| | dksNJ t| | d	ksXJ ttd
dksbJ ttddkslJ ttddksvJ ttddksJ ttddksJ ttddksJ ttddksJ ttddksJ ttddksJ ttddksJ ttddksJ ttdtd  d!ksJ d S )"NzGamma, lambda, rhoztau, Tau, TAU, taU\tauTc                 S   s   h | ]}|  qS r   )
capitalize).0lr   r   r   	<setcomp>L      z%test_latex_symbols.<locals>.<setcomp>r   z\Gamma + \lambdaz\Gamma \lambdaZq1zq_{1}Zq21zq_{21}Zepsilon0z\epsilon_{0}omega1
\omega_{1}Z91Z	alpha_newz\alpha_{new}zC^origzC^{orig}zx^alphaz
x^{\alpha}z
beta^alphaz\beta^{\alpha}ze^Alphaze^{A}zomega_alpha^betaz\omega^{\beta}_{\alpha}omegarC   z\omega^{\beta})rg   r   r   lensetr   keysr7   )GammaZlmbdarhor   TauZTAUZtaUZcapitalized_lettersr   r   r   test_latex_symbolsD  s,    r-  c                  C   sb   t d\} }}t||  |kdksJ t|| |  dkdks!J t|d |d  dks/J d S )Nzrho, mass, volumez$\rho \mathrm{volume} = \mathrm{mass}r   z/\rho \mathrm{volume} {\mathrm{mass}}^{(-1)} = 1r   z/{\mathrm{mass}}^{3} \cdot {\mathrm{volume}}^{3}rg   r   )r+  ZmassZvolumer   r   r   test_latex_symbols_failing^  s   
r/  c                  C   s*  t ttdks
J t tdtd dksJ td} t | tdks&J t | dks.J td}t |ttdks=J t |dksEJ td	}t |tttd
ksUJ t |d	ks]J td}t |dksiJ t |tdkssJ td}t |tttdksJ t tttdksJ t tttd dksJ t |tdksJ t |dksJ td}t |tttdksJ t |tdksJ t |dksJ td}t |dksJ t |tdksJ td}t |dksJ t |tdksJ t ttdksJ t ttdd d!ksJ t tdtd  dd d"ks$J t ttd dd d#ks3J t ttd d$ks@J t ttd d%d&d'ksOJ t ttd d(d&d)ks^J t ttd d(dd*d+ksnJ t t	td%d&d,ks{J t t
td%d&d-ksJ t ttd.ksJ t tt d/ksJ t ttd d0ksJ t ttd1ksJ t tt d2ksJ t ttd d3ksJ t ttd4ksJ t tt d5ksJ t ttd d6ksJ t tdtd7ks J t tdtd d8ksJ t td9td:ksJ t td9td;ks&J t ttd<ks1J t ttd=ks<J t ttd>ksGJ t ttd d?ksTJ t ttd d@ksaJ t ttd dAksnJ t ttdtd9 dBks}J t tttd dCksJ t ttdtd9 dDksJ t tttd dEksJ t ttdFksJ t ttd dGksJ t ttdHksJ t ttt dIksJ t ttdJksJ t ttdKksJ t ttd dLksJ t ttd dLksJ t ttdMksJ tdN}t t|dOks"J t ttdPks-J t tttdPks9J t tttdQfdPksGJ t ttttfdRksUJ t ttt ttfdSkseJ t ttttdTksrJ t ttttdTksJ t ttttfttfdUksJ t tttdVksJ t tttd dWksJ t t ttdXksJ t t ttd dYksJ t t!tdZksJ t t"td[ksJ t ttdHksJ t ttdJksJ t t#ttd\ksJ t t$td]ksJ t t%td^ksJ t t%td d_ksJ t t%ttd`ks+J t t%ttd daks9J t t&tdbksDJ t t&td dcksQJ t t'ttddks]J t t'ttd dekskJ t t(ttt)dfksxJ t t(ttt)d dgksJ t t*tdhksJ t t*td diksJ t t*ttdjksJ t t*ttd dkksJ t t+tdlksJ t t+td dmksJ t t,ttdnksJ t t,ttd doksJ t t-ttdpksJ t t-ttd dqksJ t t-tdrksJ t t-td dsksJ t t.tttdtks*J t t.tttd duks9J t t.ttdvksEJ t t.ttd dwksSJ t t/tdxks^J t t/td dykskJ t t0ttdzkswJ t t0ttd d{ksJ t t1td d|ksJ t t2td d}ksJ t t3td d~ksJ t t4td dksJ t t4tdksJ t t5t)t6t7tdksJ t t5t)t6t7td dksJ t t8t)t6tdksJ t t8t)t6td dksJ t t9t)tdks
J t t9t)td dksJ t t:t)tdks$J t t:t)td dks2J t t;t)tdks>J t t;t)td dksLJ t t<t)t6tdksYJ t t<t)t6td dkshJ t t=t)tdkstJ t t=t)td dksJ t t>t)t6tdksJ t t>t)t6td dksJ t t?t)tdksJ t t?t)td dksJ t@ddd}t@ddd}	t tAt)tB||	dksJ t tAt)tB||	d9 dksJ t tCt)tB||	dksJ t tCt)tB||	d9 dks J t tDdQdksJ t tDdQd9 dksJ t tEt)dks#J t tEt)d dks0J t tFt)dks;J t tFt)d dksHJ t tGtdksSJ t tGtd dks`J t tGttdkslJ t tGttd dkszJ t tHtdksJ t tHtd dksJ t tHttdksJ t tHttd dksJ t tIt)dksJ t tIt)d dksJ t tJt)dksJ t tJt)d dksJ t tKt)dksJ t tKt)ddksJ t tKt)tdksJ t tKt)tKt) dksJ t tLtKt)ddksJ t tKt)t dks)J t tKt)ttM dks7J t tNtddksCJ t tNtd ddksQJ t tNdt ddks_J t tNtdd dksmJ t dtNtd dks{J td}
t |
tdksJ t |
dksJ d S )Nze^{x}r   r   z	e + e^{2}r   zf{\left(x \right)}gzg{\left(x,y \right)}hzh{\left(x,y,z \right)}Liz\operatorname{Li}z"\operatorname{Li}{\left(x \right)}rC   z\beta{\left(x,y,z \right)}z!\operatorname{B}\left(x, y\right)z%\operatorname{B}^{2}\left(x, y\right)z\beta{\left(x \right)}\betarT   z\gamma{\left(x,y,z \right)}z\gamma{\left(x \right)}\gammaZa_1z\operatorname{a_{1}}z%\operatorname{a_{1}}{\left(x \right)}r$  r%  z\omega_{1}{\left(x \right)}z\sin{\left(x \right)}T)fold_func_bracketsz\sin {x}z\sin {2 x^{2}}z\sin {x^{2}}z(\operatorname{asin}^{2}{\left(x \right)}Zfull)inv_trig_stylez\arcsin^{2}{\left(x \right)}Zpowerz\sin^{-1}{\left(x \right)}^{2})r6  r5  z\sin^{-1} {x^{2}}z&\operatorname{arccsc}{\left(x \right)}z'\operatorname{arcsinh}{\left(x \right)}zk!z\left(- k\right)!zk!^{2}z!kz!\left(- k\right)z\left(!k\right)^{2}zk!!z\left(- k\right)!!zk!!^{2}z{\binom{2}{k}}z{\binom{2}{k}}^{2}r   z{\left(3\right)}_{k}z{3}^{\left(k\right)}z\left\lfloor{x}\right\rfloorz\left\lceil{x}\right\rceilz#\operatorname{frac}{\left(x\right)}z \left\lfloor{x}\right\rfloor^{2}z\left\lceil{x}\right\rceil^{2}z'\operatorname{frac}{\left(x\right)}^{2}z\min\left(2, x, x^{3}\right)z\min\left(x, y\right)^{2}z\max\left(2, x, x^{3}\right)z\max\left(x, y\right)^{2}\left|{x}\right|z\left|{x}\right|^{2}!\operatorname{re}{\left(x\right)}zE\operatorname{re}{\left(x\right)} + \operatorname{re}{\left(y\right)}!\operatorname{im}{\left(x\right)}z\overline{x}z\overline{x}^{2}z\Gamma\left(x\right)wz\Gamma\left(w\right)zO\left(x\right)r   z$O\left(x; x\rightarrow \infty\right)z#O\left(x - y; x\rightarrow y\right)zGO\left(x; \left( x, \  y\right)\rightarrow \left( 0, \  0\right)\right)zQO\left(x; \left( x, \  y\right)\rightarrow \left( \infty, \  \infty\right)\right)z\gamma\left(x, y\right)z\gamma^{2}\left(x, y\right)z\Gamma\left(x, y\right)z\Gamma^{2}\left(x, y\right)z\cot{\left(x \right)}z\coth{\left(x \right)}zx^{\frac{1}{y}}z\arg{\left(x \right)}z\zeta\left(x\right)z\zeta^{2}\left(x\right)z\zeta\left(x, y\right)z\zeta^{2}\left(x, y\right)z\eta\left(x\right)z\eta^{2}\left(x\right)z#\operatorname{Li}_{x}\left(y\right)z'\operatorname{Li}_{x}^{2}\left(y\right)z\Phi\left(x, y, n\right)z\Phi^{2}\left(x, y, n\right)z
\gamma_{x}z\gamma_{x}^{2}z\gamma_{x}\left(y\right)z\gamma_{x}\left(y\right)^{2}zK\left(z\right)zK^{2}\left(z\right)zF\left(x\middle| y\right)zF^{2}\left(x\middle| y\right)zE\left(x\middle| y\right)zE^{2}\left(x\middle| y\right)zE\left(z\right)zE^{2}\left(z\right)z\Pi\left(x; y\middle| z\right)z"\Pi^{2}\left(x; y\middle| z\right)z\Pi\left(x\middle| y\right)z\Pi^{2}\left(x\middle| y\right)z"\operatorname{Ei}{\left(x \right)}z&\operatorname{Ei}^{2}{\left(x \right)}z"\operatorname{E}_{x}\left(y\right)z&\operatorname{E}_{x}^{2}\left(y\right)z'\operatorname{Shi}^{2}{\left(x \right)}z&\operatorname{Si}^{2}{\left(x \right)}z&\operatorname{Ci}^{2}{\left(x \right)}z$\operatorname{Chi}^{2}\left(x\right)z \operatorname{Chi}\left(x\right)z&P_{n}^{\left(a,b\right)}\left(x\right)z7\left(P_{n}^{\left(a,b\right)}\left(x\right)\right)^{2}z$C_{n}^{\left(a\right)}\left(x\right)z5\left(C_{n}^{\left(a\right)}\left(x\right)\right)^{2}T_{n}\left(x\right)z$\left(T_{n}\left(x\right)\right)^{2}zU_{n}\left(x\right)z$\left(U_{n}\left(x\right)\right)^{2}zP_{n}\left(x\right)z$\left(P_{n}\left(x\right)\right)^{2}z$P_{n}^{\left(a\right)}\left(x\right)z5\left(P_{n}^{\left(a\right)}\left(x\right)\right)^{2}zL_{n}\left(x\right)z$\left(L_{n}\left(x\right)\right)^{2}z$L_{n}^{\left(a\right)}\left(x\right)z5\left(L_{n}^{\left(a\right)}\left(x\right)\right)^{2}zH_{n}\left(x\right)z$\left(H_{n}\left(x\right)\right)^{2}thetarealphiz!Y_{n}^{m}\left(\theta,\phi\right)z2\left(Y_{n}^{m}\left(\theta,\phi\right)\right)^{3}z!Z_{n}^{m}\left(\theta,\phi\right)z2\left(Z_{n}^{m}\left(\theta,\phi\right)\right)^{3}z+\operatorname{polar\_lift}{\left(0 \right)}z/\operatorname{polar\_lift}^{3}{\left(0 \right)}z\phi\left(n\right)z#\left(\phi\left(n\right)\right)^{2}z\lambda\left(n\right)z&\left(\lambda\left(n\right)\right)^{2}z\sigma\left(x\right)z\sigma^{2}\left(x\right)z\sigma_y\left(x\right)z\sigma^{2}_y\left(x\right)z\sigma^*\left(x\right)z\sigma^*^{2}\left(x\right)z\sigma^*_y\left(x\right)z\sigma^*^{2}_y\left(x\right)z\nu\left(n\right)z"\left(\nu\left(n\right)\right)^{2}z\Omega\left(n\right)z%\left(\Omega\left(n\right)\right)^{2}zW\left(n\right)r   zW_{-1}\left(n\right)zW_{k}\left(n\right)zW^{2}\left(n\right)zW^{k}\left(n\right)zW^{p}_{k}\left(n\right)r   z	x\bmod{7}z\left(x + 1\right)\bmod{7}z2 x\bmod{7}z\left(x\bmod{7}\right) + 1z2 \left(x\bmod{7}\right)fjlkdz%\operatorname{fjlkd}{\left(x \right)}z\operatorname{fjlkd})Or   rO   r   r   r  r  rC   re   r=   r>   r?   rQ   r  rj   rR   rD   r   r.   rS   rF   r^   r!   r   r   rc   rX   rI   rT   rr   r#   r`   r   rh   rJ   rK   rd   r<   ri   rM   rb   r\   r  r   rl   rm   rn   ro   r
   rP   r2   r3   r   r   rY   r  brU   rG   rH   r[   rB   rZ   rA   rV   r7   r:   mr;   ra   rk   r   rx   r   r   r   r   r)   r  r@   )r   r0  r1  r2  ZmybetaZa1r$  r:  r<  r?  r@  r   r   r   test_latex_functionsi  s  






























rC  c                  C   s8   G dd dt } t| dksJ t| tdksJ d S )Nc                   @   r   )z6test_function_subclass_different_name.<locals>.mygammaNr   r   r   r   r   mygammam  r   rD  z\operatorname{mygamma}z'\operatorname{mygamma}{\left(x \right)})rT   r   r   )rD  r   r   r   %test_function_subclass_different_namel  s   rE  c               
   C   s   ddl m}  ddlm}m} ttt| | |tddtddd|  |dks(J ttt tdd	t |d
ks:J tt|dfd|dksHJ ttt td|dksWJ d S )Nr   )r   )r   r  r   )r   r   r   r   zt{G_{4, 5}^{2, 3}\left(\begin{matrix} \pi, \pi, x & 1 \\0, 1 & 1, 2, \frac{3}{\pi} \end{matrix} \middle| {z} \right)})r   zS{G_{1, 1}^{1, 0}\left(\begin{matrix}  & 1 \\0 &  \end{matrix} \middle| {z} \right)})r   zL{{}_{2}F_{1}\left(\begin{matrix} x, 2 \\ 3 \end{matrix}\middle| {z} \right)}zH{{}_{0}F_{1}\left(\begin{matrix}  \\ 1 \end{matrix}\middle| {z} \right)})	sympyr   	sympy.abcr   r  r   r_   r9   rW   )r   r   r  r   r   r   test_hyper_printings  s    rH  c                  C   s,  ddl m} m}m}m}m}m}m}m}m	}m
}	 ddlm}
 t| t|
d t dks-J t|t|
dks8J t|t|
dksCJ t|t|
dksNJ t|t|
d d d	ks]J t|t|
d
kshJ t|t|
dkssJ t|t|
dks~J t|t|
dksJ t|	t|
dksJ d S )Nr   )
besseljbesselybesselibesselkhankel1hankel2jnynhn1hn2r  r   zJ^{k}_{n}\left(z^{2}\right)zY_{n}\left(z\right)zI_{n}\left(z\right)zK_{n}\left(z\right)z.\left(H^{(1)}_{n}\left(z^{2}\right)\right)^{2}zH^{(2)}_{n}\left(z\right)zj_{n}\left(z\right)zy_{n}\left(z\right)zh^{(1)}_{n}\left(z\right)zh^{(2)}_{n}\left(z\right))Zsympy.functions.special.besselrI  rJ  rK  rL  rM  rN  rO  rP  rQ  rR  rG  r  r   r  r  )rI  rJ  rK  rL  rM  rN  rO  rP  rQ  rR  r  r   r   r   test_latex_bessel  s   0rT  c                  C   sx   ddl m} m} ddlm} t| |dksJ t||dks"J t| |d dks.J t||d dks:J d S )	Nr   )fresnelsfresnelcrS  zS\left(z\right)zC\left(z\right)r   zS^{2}\left(z\right)zC^{2}\left(z\right))Z'sympy.functions.special.error_functionsrU  rV  rG  r  r   )rU  rV  r  r   r   r   test_latex_fresnel  s   rW  c                   C   s   t dt dks
J d S )Nr   z\left(-1\right)^{x}r   r   r   r   r   r   test_latex_brackets     rY  c                  C   s   t dddd} tt dddd}t| t|  }t|d t|d  }|dks*J |dks0J ttd	t d
dks=J ttddksGJ ttddksQJ ttddks[J d S )NZPsi_0TF)complexr>  Psir   z\Psi_{0} \overline{\Psi_{0}}z \overline{{\Psi}_{0}} {\Psi}_{0}x1r  z{x_{1}}_{i}rT   r4  za bZa_bza_{b})r7   r   r   rI   r   )Z
Psi_symbolZPsi_indexedZsymbol_latexZindexed_latexr   r   r   test_latex_indexed  s   r^  c               	   C   sj  t ttd tdddksJ t ttttd  tdddks"J t tttttd  tdddddks9J t ttttttd  tdddddddksTJ t tttt tddd	kseJ t tttt td  tddd
kszJ t ttttt td  tddtdddksJ t tttttt td  tddtddtdddksJ td} t tt| tttddtdddt | tt ksJ t ttt| tttddtddtdddt | tt ksJ t tttd tdd tdddks
J t ttttttddtdd tddtdddks(J t tttt t tdtftdddksAJ t tttddd dksQJ t t| ttd dksaJ t t| ttt	fdksqJ t
d}t
d}t t| |||dksJ t
d}t t| tt|fdksJ t
d}t t| ttt||fdksJ d S )Nr   Fr   z\frac{d}{d x} x^{3}r   z8\frac{d}{d x} \left(x^{2} + \sin{\left(x \right)}\right)z@\frac{d^{2}}{d x^{2}} \left(x^{2} + \sin{\left(x \right)}\right)z@\frac{d^{3}}{d x^{3}} \left(x^{2} + \sin{\left(x \right)}\right)z3\frac{\partial}{\partial x} \sin{\left(x y \right)}zH\frac{\partial}{\partial x} \left(x^{2} + \sin{\left(x y \right)}\right)zP\frac{\partial^{2}}{\partial x^{2}} \left(x^{2} + \sin{\left(x y \right)}\right)zP\frac{\partial^{3}}{\partial x^{3}} \left(x^{2} + \sin{\left(x y \right)}\right)r   z*\frac{\partial^{2}}{\partial y\partial x} z.\frac{\partial^{3}}{\partial y\partial x^{2}} z0\frac{d}{d x} \left(- \frac{d}{d x} y^{2}\right)z<\frac{d^{2}}{d x^{2}} \left(- \frac{d^{2}}{d x^{2}} y\right)r   z5\frac{d}{d y} \int\limits_{0}^{\infty} e^{- x y}\, dxz \left(\frac{d}{d x} x\right)^{2}z1\left(\frac{d}{d x} f{\left(x \right)}\right)^{2}z(\frac{d^{n}}{d x^{n}} f{\left(x \right)}r]  x2z<\frac{\partial}{\partial x_{1}} f{\left(x_{1},x_{2} \right)}n1z0\frac{d^{n_{1}}}{d x^{n_{1}}} f{\left(x \right)}n2z`\frac{d^{\max\left(n_{1}, n_{2}\right)}}{d x^{\max\left(n_{1}, n_{2}\right)}} f{\left(x \right)})r   rL   r   re   r  r   r   rO   r`   r  r7   r   )r   r]  r_  r`  ra  r   r   r   test_latex_derivatives  sp   $, *4 *,0
&



 rb  c                   C   s$   t ttt ttfddksJ d S )Nr   r   z+\left. x y \right|_{\substack{ x=1\\ y=2 }})r   r5   r   r  r   r   r   r   test_latex_subs  s   $rd  c                	   C   sT  t ttttdksJ t ttd tddfdksJ t ttd tddfdks-J t tttd  tddftd	ks@J t tttd  tddftd
ddksUJ t tttd  tddftd
dddkskJ t tttdfdksxJ t ttt ttdksJ t ttt t tttdksJ t ttt t t ttttdksJ t ttttttttdksJ t tttttddfdksJ t tttd t tdksJ t ttttt t tdksJ t tttd dksJ t ttt tdks
J t tttd  tdksJ t ttt tdks(J d S )Nz\int \log{\left(x \right)}\, dxr   r   r   z\int\limits_{0}^{1} x^{2}\, dx
      z \int\limits_{10}^{20} x^{2}\, dxz)\int\int\limits_{0}^{1} x^{2} y\, dx\, dy	equation*modezI\begin{equation*}\int\int\limits_{0}^{1} x^{2} y\, dx\, dy\end{equation*}Tri  r   z&$$\int\int_{0}^{1} x^{2} y\, dx\, dy$$z\int\limits^{0} x\, dxz\iint x y\, dx\, dyz\iiint x y z\, dx\, dy\, dzz#\iiiint t x y z\, dx\, dy\, dz\, dtz8\int\int\int\int\int\int x\, dx\, dx\, dx\, dx\, dx\, dxz,\int\limits_{0}^{1}\int\int x\, dx\, dy\, dzz(\int \left(- \int y^{2}\, dx\right)\, dxz=\int \left(- \int \left(- \int y\, dx\right)\, dx\right)\, dxz\left(\int z\, dz\right)^{2}z\int \left(x + z\right)\, dzz&\int \left(x + \frac{z}{2}\right)\, dzz\int x^{y}\, dz)r   r   r]   r   r  r  tr   r   r   r   test_latex_integrals  sP    ""
 rl  c                  C   s   t tfD ],} t| tt td gdksJ t| tdddks#J t| tdddks0J qt} t| tt td g dksCJ t| tdd dksPJ t| tdd dks]J d S )Nr   z\left\{x^{2}, x y\right\}r   r  z\left\{1, 2, 3, 4, 5\right\}   z4\left\{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12\right\})	frozensetr(  r   r   r  ranger   sr   r   r   test_latex_sets  s    
 rr  c                  C   s&   t dd} t| }t|dksJ d S )Nr   r   z%SetExpr\left(\left[1, 3\right]\right))r   r   r   )ZivZser   r   r   test_latex_SetExpr'  s   
rs  c                  C   sb  t tdddksJ t tdddksJ t tddddks"J t tdd	dd
ks.J t td	dddks:J t tdtddksFJ t ttdddksRJ t tdt ddks_J t tt tdkskJ t ttt ddksxJ td\} }}t t| ||dksJ t t| dddksJ t td|ddksJ t tdd|dksJ d S )Nr   3   z\left\{1, 2, \ldots, 50\right\}r   z\left\{1, 2, 3\right\}r   r   z\left\{0, 1, 2\right\}   z\left\{0, 1, \ldots, 29\right\}r   z \left\{30, 29, \ldots, 2\right\}r   z\left\{0, 2, \ldots\right\}r  z\left\{\ldots, 2, 0\right\}z\left\{-2, -3, \ldots\right\}z'\left\{\ldots, -1, 0, 1, \ldots\right\}z'\left\{\ldots, 1, 0, -1, \ldots\right\}za:czRange\left(a, b, c\right)re  zRange\left(a, 10, 1\right)zRange\left(0, b, 1\right)zRange\left(0, 10, c\right))r   r+   r`   rg   )r  rA  cr   r   r   test_latex_Range-  s   rw  c            
      C   s  t td dtf} td}d}t| |ksJ d}t||ks!J t td d}tdd}d}t||ks7J d}t||ksAJ t td t df}tdt df}d	}t||ks]J d
}t||ksgJ d}tt| ||kstJ d}tt|||ksJ d}tt|||ksJ d}tt| ||ksJ d}tt|||ksJ d}tt|||ksJ t td tdtf}d}t||ksJ td}t |td  tddf}	d}t|	|ksJ d S )Nr   r   rc  z\left[0, 1, 4, 9, \ldots\right]z\left[1, 2, 1, 2, \ldots\right])r   r   z\left[0, 1, 4\right]z\left[1, 2, 1\right]z\left[\ldots, 9, 4, 1, 0\right]z\left[\ldots, 2, 1, 2, 1\right]z \left[1, 3, 5, 11, \ldots\right]z\left[1, 3, 5\right]z \left[\ldots, 11, 5, 3, 1\right]z \left[0, 2, 4, 18, \ldots\right]z\left[0, 2, 4\right]z \left[\ldots, 18, 4, 2, 0\right]z\left\{a^{2}\right\}_{a=0}^{x}rA  z\left[0, b, 4 b\right])	rz   r  r`   ry   r   r|   r}   r   r7   )
s1s2	latex_strZs3Zs4Zs5Zs6Zs7rA  Zs8r   r   r   test_latex_sequences@  sJ   
r{  c                  C   s&   d} t tttt tf| ksJ d S )Nz`2 \sin{\left(x \right)} - \sin{\left(2 x \right)} + \frac{2 \sin{\left(3 x \right)}}{3} + \ldots)r   r~   r   r   rz  r   r   r   test_latex_FourierSeriesy  s   "r}  c                  C   s$   d} t ttdt | ksJ d S )Nz;\sum_{k=1}^{\infty} - \frac{\left(-1\right)^{- k} x^{k}}{k}r   )r   r   r]   r   r|  r   r   r   test_latex_FormalPowerSeries  s    r~  c                  C   s   t ddd} ttdddksJ ttd| dksJ ttd| dddks)J ttd| dddks6J ttd| ddd	ksCJ ttd| ddd
ksPJ d S )Nr  Tr=  r   z\left\{0\right\}z\left[0, a\right]Fz\left(0, a\right]z\left[0, a\right)z\left(0, a\right))r7   r   r   r  r   r   r   test_latex_intervals  s   r  c                  C   sZ   t ddd} ttdddksJ ttd| dksJ tt| d | d d	ks+J d S )
Nr  Tr=  r   r   z\left\langle 0, 1\right\ranglez\left\langle 0, a\right\rangler   z&\left\langle a + 1, a + 2\right\rangle)r7   r   r   r  r   r   r   test_latex_AccumuBounds  s   r  c                   C      t tjdks	J d S )N	\emptyset)r   r1   EmptySetr   r   r   r   test_latex_emptyset     r  c                   C   r  )Nz
\mathbb{U})r   r1   UniversalSetr   r   r   r   test_latex_universalset  r  r  c                  C   s2   t d} t d}t|| }t| dksJ d S )Nr  Bz- (A B - B A))r   r   r   doit)r  r  Zcommr   r   r   test_latex_commutator  s   
r  c                   C   sP   t ttddtdddksJ t ttddtddtdddks&J d S )Nr   r   r   r   z(\left[0, 1\right] \cup \left[2, 3\right]r   z*\left\{1, 2\right\} \cup \left[3, 4\right])r   r   r   r   r   r   r   test_latex_union  s    r  c                   C   s&   t ttddtttdksJ d S )Nr   r   z(\left[0, 1\right] \cap \left[x, y\right])r   r   r   r   r  r   r   r   r   test_latex_intersection     r  c                   C   s*   t ttddtdddddksJ d S )Nr   r   r   r   Fr   z-\left[2, 5\right] \triangle \left[4, 7\right])r   r   r   r   r   r   r   test_latex_symmetric_difference  s
   r  c                   C   s   t ttjtjdksJ d S )Nz\mathbb{R} \setminus \mathbb{N})r   r   r1   RealsNaturalsr   r   r   r   test_latex_Complement  s   r  c                  C   s   t dd} t dd}tddd}t| d dt|  ksJ t| d dt|  ks,J t| | |  dt| t|t|f ksEJ d S )	Nr   r   re  r   r   z%s^{2}z%s^{10}z%s \times %s \times %s)r   r   r   flatten)lineZbiglinefsetr   r   r   test_latex_productset  s   

r  c                  C   sL  t d\} }}}t| }t|}t|}t|}t||dd}t||dd}	t||dd}
t||dd}t||dd}t||dd}t||dd}t||dd}t||}t||}tt||	dddksgJ tt||	dddkstJ tt||dddksJ tt||dddksJ tt||dddksJ tt||ddd	ksJ tt|
|ddd
ksJ tt||dddksJ tt||dddksJ tt||dddksJ tt||dddksJ tt||	dddksJ tt|
|dddksJ tt||dddksJ tt||dddks J tt||dddks.J tt||	dddks<J tt|
|dddksJJ tt||dddksXJ tt||dddksfJ tt|| dkstJ tt||	dksJ tt|
|dksJ tt||dksJ tt||dksJ d S )Nza:dFr   zI\left\{a\right\} \cap \left(\left\{c\right\} \cup \left\{d\right\}\right)zl\left(\left\{a\right\} \cup \left\{b\right\}\right) \cap \left(\left\{c\right\} \cup \left\{d\right\}\right)zv\left(\left\{a\right\} \setminus \left\{b\right\}\right) \cap \left(\left\{c\right\} \setminus \left\{d\right\}\right)zv\left(\left\{a\right\} \triangle \left\{b\right\}\right) \cap \left(\left\{c\right\} \triangle \left\{d\right\}\right)zp\left(\left\{a\right\} \times \left\{b\right\}\right) \cap \left(\left\{c\right\} \times \left\{d\right\}\right)zI\left\{a\right\} \cup \left(\left\{c\right\} \cap \left\{d\right\}\right)zl\left(\left\{a\right\} \cap \left\{b\right\}\right) \cup \left(\left\{c\right\} \cap \left\{d\right\}\right)zv\left(\left\{a\right\} \setminus \left\{b\right\}\right) \cup \left(\left\{c\right\} \setminus \left\{d\right\}\right)zv\left(\left\{a\right\} \triangle \left\{b\right\}\right) \cup \left(\left\{c\right\} \triangle \left\{d\right\}\right)zp\left(\left\{a\right\} \times \left\{b\right\}\right) \cup \left(\left\{c\right\} \times \left\{d\right\}\right)zS\left\{a\right\} \setminus \left(\left\{c\right\} \setminus \left\{d\right\}\right)zq\left(\left\{a\right\} \cup \left\{b\right\}\right) \setminus \left(\left\{c\right\} \cup \left\{d\right\}\right)zq\left(\left\{a\right\} \cap \left\{b\right\}\right) \setminus \left(\left\{c\right\} \cap \left\{d\right\}\right)z{\left(\left\{a\right\} \triangle \left\{b\right\}\right) \setminus \left(\left\{c\right\} \triangle \left\{d\right\}\right)zu\left(\left\{a\right\} \times \left\{b\right\}\right) \setminus \left(\left\{c\right\} \times \left\{d\right\}\right)zS\left\{a\right\} \triangle \left(\left\{c\right\} \triangle \left\{d\right\}\right)zq\left(\left\{a\right\} \cup \left\{b\right\}\right) \triangle \left(\left\{c\right\} \cup \left\{d\right\}\right)zq\left(\left\{a\right\} \cap \left\{b\right\}\right) \triangle \left(\left\{c\right\} \cap \left\{d\right\}\right)z{\left(\left\{a\right\} \setminus \left\{b\right\}\right) \triangle \left(\left\{c\right\} \setminus \left\{d\right\}\right)zu\left(\left\{a\right\} \times \left\{b\right\}\right) \triangle \left(\left\{c\right\} \times \left\{d\right\}\right)z@\left\{a\right\} \times \left\{c\right\} \times \left\{d\right\}zn\left(\left\{a\right\} \cup \left\{b\right\}\right) \times \left(\left\{c\right\} \cup \left\{d\right\}\right)zn\left(\left\{a\right\} \cap \left\{b\right\}\right) \times \left(\left\{c\right\} \cap \left\{d\right\}\right)zx\left(\left\{a\right\} \setminus \left\{b\right\}\right) \times \left(\left\{c\right\} \setminus \left\{d\right\}\right)zx\left(\left\{a\right\} \triangle \left\{b\right\}\right) \times \left(\left\{c\right\} \triangle \left\{d\right\}\right))	rg   r   r   r   r   r   r   r   r  )r  rA  rv  dr  r  CDZU1ZU2ZI1ZI2ZC1ZC2ZD1ZD2ZP1ZP2r   r   r   test_set_operators_parenthesis  s   













r  c                   C   r  )N
\mathbb{C})r   r1   	Complexesr   r   r   r   test_latex_Complexes=  r  r  c                   C   r  )N
\mathbb{N})r   r1   r  r   r   r   r   test_latex_NaturalsA  r  r  c                   C   r  )N\mathbb{N}_0)r   r1   	Naturals0r   r   r   r   test_latex_Naturals0E  r  r  c                   C   r  )N
\mathbb{Z})r   r1   Integersr   r   r   r   test_latex_IntegersI  r  r  c                  C   s   t d} ttt| | d tjdksJ t d}tt| |f| | h dddh}t|dks2J tt| |ff| | th dddh}t|d	ksNJ d S )
Nr   r   z2\left\{x^{2}\; \middle|\; x \in \mathbb{N}\right\}r  >   r   r   r   r   r   zZ\left\{x + y\; \middle|\; x \in \left\{1, 2, 3\right\} , y \in \left\{3, 4\right\}\right\}zm\left\{x + y\; \middle|\; \left( x, \  y\right) \in \left\{1, 2, 3\right\} \times \left\{3, 4\right\}\right\})r7   r   r8   r   r1   r  r   )r   r  Zimgsetr   r   r   test_latex_ImageSetM  s   "(r  c                  C   sT   t d} tt| t| d dtjdksJ tt| t| d dtjdks(J d S )Nr   r   r   z@\left\{x\; \middle|\; x \in \mathbb{R} \wedge x^{2} = 1 \right\}z(\left\{x\; \middle|\; x^{2} = 1 \right\})r7   r   r   r   r1   r  r  r   r   r   r   test_latex_ConditionSet\  s   r  c                   C   sT   t ttddtdd dksJ t ttddtddt  d	d
dks(J d S )Nr   r   r   r  zX\left\{x + y i\; \middle|\; x, y \in \left[3, 5\right] \times \left[4, 6\right] \right\}r   r   r   T)Zpolarz\left\{r \left(i \sin{\left(\theta \right)} + \cos{\left(\theta \right)}\right)\; \middle|\; r, \theta \in \left[0, 1\right] \times \left[0, 2 \pi\right) \right\})r   r   r   r   r   r   r   r   test_latex_ComplexRegiond  s   "r  c                  C   s$   t d} tt| tjdksJ d S )Nr   zx \in \mathbb{N})r7   r   rw   r1   r  r  r   r   r   test_latex_Containsl     r  c                   C   s   t tttd  tddftddfdksJ t ttd tddfdks&J t ttd t tddfdks8J t ttd t tddfd dksLJ d S )	Nr   r  r   z<\sum_{\substack{-2 \leq x \leq 2\\-5 \leq y \leq 5}} x y^{2}z\sum_{x=-2}^{2} x^{2}z&\sum_{x=-2}^{2} \left(x^{2} + y\right)z7\left(\sum_{x=-2}^{2} \left(x^{2} + y\right)\right)^{2})r   r6   r   r  r   r   r   r   test_latex_sumq  s   "r  c                   C   s   t tttd  tddftddfdksJ t ttd tddfdks&J t ttd t tddfdks8J t tttddfd dksHJ d S )	Nr   r  r  r   z=\prod_{\substack{-2 \leq x \leq 2\\-5 \leq y \leq 5}} x y^{2}z\prod_{x=-2}^{2} x^{2}z'\prod_{x=-2}^{2} \left(x^{2} + y\right)z#\left(\prod_{x=-2}^{2} x\right)^{2})r   r*   r   r  r   r   r   r   test_latex_product|  s   "r  c                  C   s   t ttttdksJ td} t t| ttddksJ t t| ttdddks-J t t| ttdd dks=J t t| ttdd	d
dksMJ d S )Nz\lim_{x \to \infty} xr   r   z#\lim_{x \to 0^+} f{\left(x \right)}-z#\lim_{x \to 0^-} f{\left(x \right)}r   z4\left(\lim_{x \to 0^+} f{\left(x \right)}\right)^{2}z+-)dirz!\lim_{x \to 0} f{\left(x \right)})r   r   r   r`   r   )r   r   r   r   test_latex_limits  s   r  c                   C   s   t ttdks
J t ttdksJ t ttdddks J t tttt dks.J t tttt dddks>J t ttttdksKJ t ttttdddksZJ d S )	Nz\log{\left(x \right)}T)Zln_notationz\ln{\left(x \right)}z-\log{\left(x \right)} + \log{\left(y \right)}z+\ln{\left(x \right)} + \ln{\left(y \right)}z\log{\left(x \right)}^{x}z\ln{\left(x \right)}^{x})r   r]   r   r   r  powr   r   r   r   test_latex_log  s   r  c                  C   sD   t d} | t }t|dv sJ t d} | t }t|dv s J d S )Nr3  )z	\beta + xz	x + \betarC   )r7   r   r   )rC   r  r   r   r   test_issue_3568  s   r  c                   C   s   t dt tdd dksJ t dt tdd dddks J t dt tdd ddd	d
ks2J t dt tgdks>J d S )Nr   r   z8 \sqrt{2} \tau^{\frac{7}{2}}rg  rh  z<\begin{equation*}8 \sqrt{2} \mu^{\frac{7}{2}}\end{equation*}equationTrj  z $$8 \sqrt{2} \mu^{\frac{7}{2}}$$z\left[ \frac{2}{x}, \  y\right])r   r   r,   r   r   r  r   r   r   r   
test_latex  s   r  c                  C   sL   t ddtd dtdtd di} t| dksJ t| }t|dks$J d S )Nr   r   r   r   z;\left\{ 1 : 1, \  x : 3, \  x^{2} : 2, \  x^{3} : 4\right\})r,   r   r   r	   )r  r  r   r   r   test_latex_dict  s    r  c                  C   s*   t dt dt dg} t| dksJ d S )Nr$  r  alphaz)\left[ \omega_{1}, \  a, \  \alpha\right]r7   r   )Zllr   r   r   test_latex_list     r  c                   C   s   t tdd dksJ t tdddksJ t tdddks"J t tdd dks.J t tdd t dks<J t tdd t tddt  d	ksQJ d S )
Nr   r   z- \frac{1}{2}r   r  z\frac{1}{2}z- \frac{x}{2}r   z- \frac{x}{2} - \frac{2 y}{3})r   r,   r   r  r   r   r   r   test_latex_rational  s    r  c                   C   s0   t dt dks
J t dtt  dksJ d S )Nr   r   z\frac{1}{x + y}r   r   r  r   r   r   r   test_latex_inverse  s   r  c                   C   sv   t ttdks
J t ttd dksJ t ttddks!J t ttddks,J t ttdd dks9J d S )Nz\delta\left(x\right)r   z%\left(\delta\left(x\right)\right)^{2}r   r   z)\delta^{\left( 5 \right)}\left( x \right)z:\left(\delta^{\left( 5 \right)}\left( x \right)\right)^{2})r   r   r   r   r   r   r   test_latex_DiracDelta  s   r  c                   C   s0   t ttdks
J t ttd dksJ d S )Nz\theta\left(x\right)r   z%\left(\theta\left(x\right)\right)^{2})r   r   r   r   r   r   r   test_latex_Heaviside  s   r  c                   C   sn   t tttdksJ t tttd dksJ t ttd tdks%J t ttttddddks5J d S )	Nz\delta_{x y}r   z\delta_{x, y + 1}z\delta_{y, x + 1}r   Fr   z\left(\delta_{x y}\right)^{2})r   r   r   r  r)   r   r   r   r   test_latex_KroneckerDelta  s   r  c                   C   s   t ttttdksJ t ttttd dksJ t ttttd dks(J t tttd tdks6J t ttd ttdksDJ d S )Nz\varepsilon_{x y z}r   z$\left(\varepsilon_{x y z}\right)^{2}r   z\varepsilon_{x, y, z + 1}z\varepsilon_{x, y + 1, z}z\varepsilon_{x + 1, y, z})r   r   r   r  r  r   r   r   r   test_latex_LeviCivita  s    r  c                      s~   t t  t dksJ t dddksJ t dddks J t dddks*J t ddd	ks4J tt fd
d d S )Nzx + yplainrh  inlinez$x + y$rg  z%\begin{equation*}x + y\end{equation*}r  z#\begin{equation}x + y\end{equation}c                      s   t  ddS )Nr   rh  r   r   exprr   r   <lambda>      ztest_mode.<locals>.<lambda>)r   r  r   r   
ValueErrorr   r   r  r   	test_mode  s   r  c                   C   s   t ttttdksJ t ttttdksJ t ttttd dks&J t ttttd dks4J t ttttdks@J t ttttdksLJ t ttttd dksZJ t ttttd d	kshJ d S )
NzC\left(x, y, z\right)zS\left(x, y, z\right)r   zC\left(x, y, z\right)^{2}zS\left(x, y, z\right)^{2}zC^{\prime}\left(x, y, z\right)zS^{\prime}\left(x, y, z\right)z"C^{\prime}\left(x, y, z\right)^{2}z"S^{\prime}\left(x, y, z\right)^{2})r   r   r   r  r  r   r   r   r   r   r   r   test_latex_mathieu  s    r  c                  C   s
  t ttdk ftd df} t| dksJ t| dddksJ t ttdk fdtdkf} t| dks4J td	d
d\}}t |d t||f|| df} d}t| |ksVJ t||  d| ksbJ t| | d| ksnJ tt ttdk ftd tdk fdksJ d S )Nr   r   TzK\begin{cases} x & \text{for}\: x < 1 \\x^{2} & \text{otherwise} \end{cases}r   zM\begin{cases} x & \text{for}\: x \lt 1 \\x^{2} & \text{otherwise} \end{cases}r   zG\begin{cases} x & \text{for}\: x < 0 \\0 & \text{otherwise} \end{cases}A BFZcommutativezM\begin{cases} A^{2} & \text{for}\: A = B \\A B & \text{otherwise} \end{cases}zA \left(%s\right)z\left(%s\right) AzM\begin{cases} x & \text{for}\: x < 1 \\x^{2} & \text{for}\: x < 2 \end{cases})r$   r   r   rg   r   )r  r  r  rq  r   r   r   test_latex_Piecewise  s    
  r  c                  C   s   t dt tgttd gg} t| dksJ t| dddks J t| dddks*J t| d	dd
ks4J t| d d	ddks?J t ddtd}t|dksOJ d S )Nr   z;\left[\begin{matrix}x + 1 & y\\y & x - 1\end{matrix}\right]r  rh  zG$\left[\begin{smallmatrix}x + 1 & y\\y & x - 1\end{smallmatrix}\right]$Zarray)mat_strz=\left[\begin{array}{cc}x + 1 & y\\y & x - 1\end{array}\right]Zbmatrixz=\left[\begin{bmatrix}x + 1 & y\\y & x - 1\end{bmatrix}\right])Z	mat_delimr  z0\begin{bmatrix}x + 1 & y\\y & x - 1\end{bmatrix}   z\\left[\begin{array}{ccccccccccc}0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\end{array}\right])r   r   r  r   ro  )MM2r   r   r   test_latex_Matrix$  s(   


r  c                  C   sl   t d} t dtd}tt|| t|| gt|| | t|| | gg}d}t||ks4J d S )Nrk  theta1clsa  \left[\begin{matrix}\sin{\left(\theta_{1}{\left(t \right)} \right)} & \cos{\left(\theta_{1}{\left(t \right)} \right)}\\\cos{\left(\frac{d}{d t} \theta_{1}{\left(t \right)} \right)} & \sin{\left(\frac{d}{d t} \theta_{1}{\left(t \right)} \right)}\end{matrix}\right])rg   r   r   re   rp   rL   r   )rk  r  r  expectedr   r   r    test_latex_matrix_with_functions8  s   "r  c                  C   s&  t d\} }}}ttttfD ]}|| }t|dksJ |d|  |g||gg}|d|  ||g}t||}t||}t|dksCJ t|dksKJ t|dksSJ t|dks[J || |d| gg}	|| g|gd| gg}
||
 g}t|	dksJ t|
d	ksJ t|d
ksJ qd S )Nzx y z wr   r   z=\left[\begin{matrix}\frac{1}{x} & y\\z & w\end{matrix}\right]z:\left[\begin{matrix}\frac{1}{x} & y & z\end{matrix}\right]a  \left[\begin{matrix}\left[\begin{matrix}\frac{1}{x^{2}} & \frac{y}{x}\\\frac{z}{x} & \frac{w}{x}\end{matrix}\right] & \left[\begin{matrix}\frac{y}{x} & y^{2}\\y z & w y\end{matrix}\right] & \left[\begin{matrix}\frac{z}{x} & y z\\z^{2} & w z\end{matrix}\right]\end{matrix}\right]a]  \left[\begin{matrix}\left[\begin{matrix}\frac{1}{x^{2}} & \frac{y}{x}\\\frac{z}{x} & \frac{w}{x}\end{matrix}\right] & \left[\begin{matrix}\frac{y}{x} & y^{2}\\y z & w y\end{matrix}\right]\\\left[\begin{matrix}\frac{z}{x} & y z\\z^{2} & w z\end{matrix}\right] & \left[\begin{matrix}\frac{w}{x} & w y\\w z & w^{2}\end{matrix}\right]\end{matrix}\right]zG\left[\left[\begin{matrix}x & y & \frac{1}{z}\end{matrix}\right]\right]z8\left[\begin{matrix}x\\y\\\frac{1}{z}\end{matrix}\right]z_\left[\begin{matrix}\left[\begin{matrix}x\\y\\\frac{1}{z}\end{matrix}\right]\end{matrix}\right])rg   r   r   r   r   r   r   tolist)r   r  r  r:  Z	ArrayTyper  ZM1r  ZM3ZMrowZMcolumnZMcol2r   r   r   test_latex_NDimArrayJ  sF   


r  c                   C   s   t ddt  dddksJ t ddt  dddksJ t ddt  dddks*J t dt ddd	ks6J t dt ddd
ksBJ t dt dddksNJ d S )Nr   r   r   z4 \times 4^{x}r   z4 \cdot 4^{x}Zldotz4 \,.\, 4^{x}z
4 \times xz	4 \cdot xz	4 \,.\, xrX  r   r   r   r   test_latex_mul_symbolx  s   r  c                  C   s8   ddt d  } t| dksJ td|  dksJ d S )Nr   r   z!4 \cdot 4^{\log{\left(2 \right)}}r   z+\frac{1}{4 \cdot 4^{\log{\left(2 \right)}}})r]   r   )r  r   r   r   test_latex_issue_4381  s   r  c                   C   s  t tddks
J t tddksJ t tddksJ t tddks(J t td	d
ks2J t tddks<J t tddksFJ t tddksPJ t tddksZJ t tddksdJ t tddksnJ t tddksxJ t tddksJ t tddksJ t tddksJ t tddksJ t tddksJ t td d!ksJ t td"d#ksJ t td$d#ksJ d S )%NZ	beta_13_2z\beta_{13 2}Zbeta_132_20z\beta_{132 20}Zbeta_13z
\beta_{13}Zx_a_bzx_{a b}Zx_1_2_3z	x_{1 2 3}Zx_a_b1zx_{a b1}Zx_a_1zx_{a 1}Zx_1_azx_{1 a}zx_1^aaz
x^{aa}_{1}Zx_1__aazx_11^az
x^{a}_{11}Zx_11__aZ	x_a_a_a_azx_{a a a a}z	x_a_a^a^azx^{a a}_{a a}Zx_a_a__a__aZalpha_11z\alpha_{11}Zalpha_11_11z\alpha_{11 11}Zalpha_alphaz\alpha_{\alpha}zalpha^alephz\alpha^{\aleph}Zalpha__alephr   r7   r   r   r   r   test_latex_issue_4576  s(   r  c                  C   sP   t d} dtt|  d ddv sJ dtd|   d ddv s&J d S )Nr   ze^{-x}r     z3^{-x}r   )r7   r   rO   replacer  r   r   r   test_latex_pow_fraction  s   "&r  c                  C   sj   t ddd\} }}t| | |d  dksJ t|d |  | dks%J t| |d  | dks3J d S )NzA,B,CFr  r   z
A B C^{-1}z
C^{-1} A Bz
A C^{-1} Br.  r  r  r  r   r   r   test_noncommutative  s    r  c                  C   sl   t d t d t  td  dt  td   } t| dddks J t| dddks*J t| d	dd
ks4J d S )Nr   r   r   ZlexZorderz#x^{3} + x^{2} y + 3 x y^{3} + y^{4}zrev-lexz#y^{4} + 3 x y^{3} + x^{2} y + x^{3}Znonez#x^{3} + y^{4} + y x^{2} + 3 x y^{3})r   r  r   r  r   r   r   test_latex_order  s   ,r  c                   C   sR   t tttd dksJ t tttftd dksJ t tttdks'J d S )Nr   z\left( x \mapsto x + 1 \right)z2\left( \left( x, \  y\right) \mapsto x + 1 \right)z\left( x \mapsto x \right))r   r   r   r  r   r   r   r   test_latex_Lambda  s   r  c                  C   s  t dt\} }}t d| \}}}}t|| dksJ t|d dks%J t|d dks/J t|d d| |  d |d  | | d d	ksKJ t|d d| |  d |d  | |d |  d
ksiJ t|d d| |  d |d  | |d |  d dksJ t|d  d| |  d |d  | |d |  d dksJ t|d | d  | d| |  d dksJ t|d | d  | d| |  d dksJ d S )Nu,vzx,y,z0r   x - 1r   r   r   z2\left({u}^{2} + 3 u v + 1\right) {x}^{2} y + u + 1zA\left({u}^{2} + 3 u v + 1\right) {x}^{2} y + \left(u + 1\right) xzE\left({u}^{2} + 3 u v + 1\right) {x}^{2} y + \left(u + 1\right) x + 1zF-\left({u}^{2} - 3 u v + 1\right) {x}^{2} y - \left(u + 1\right) x - 1z+-\left({v}^{2} + v + 1\right) x + 3 u v + 1z+-\left({v}^{2} + v + 1\right) x - 3 u v + 1)r&   r(   r   )ZRuvuvZRxyzr   r  r  r   r   r   test_latex_PolyElement  s.   .268((r  c                  C   s  t dt\} }}t d| \}}}}}t|| dksJ t|d dks&J t|d dks0J t|d dks:J t|| d	ksDJ t|| | d
ksPJ t|||  dks\J t|| ||  dksjJ t|d | dksvJ t|d | dksJ t| d | dksJ t|d ||  dksJ t| |d  dksJ t|| |d  dksJ t|d | | d |d | d  dksJ t|d | | d |d | || |  d  dksJ d S )Nr  zx,y,z,tr  r   r  r   r   z\frac{x}{3}z\frac{x}{z}z\frac{x y}{z}z\frac{x}{z t}z\frac{x y}{z t}z\frac{x - 1}{y}z\frac{x + 1}{y}z\frac{-x - 1}{y}z\frac{x + 1}{y z}z\frac{-y}{x + 1}z\frac{y z}{x + 1}z;\frac{\left(u + 1\right) x y + 1}{\left(v - 1\right) z - 1}zC\frac{\left(u + 1\right) x y + 1}{\left(v - 1\right) z - u v t - 1})r'   r(   r   )ZFuvr  r  ZFxyztr   r  r  rk  r   r   r   test_latex_FracElement  s,   &2r  c                   C   s\   t ttd dt  tdksJ t ttt tdksJ t tdt t dks,J d S )Nr   zE\operatorname{Poly}{\left( x^{2} + 2 x, x, domain=\mathbb{Z} \right)}zU\operatorname{Poly}{\left( \frac{1}{y} x, x, domain=\mathbb{Z}\left(y\right) \right)}g       @zJ\operatorname{Poly}{\left( 2.0 x + 1.0 y, x, y, domain=\mathbb{R} \right)})r   r%   r   r  r   r   r   r   test_latex_Poly  s   r  c                   C   s   t ttdtdtdgtdksJ t ttdtt ddgtdks#J t tttd  td t  tt  ttd   tt td   t tt  t ttfdksTJ d S )Nr   r   r   z{\operatorname{Poly}{\left( a x^{5} + x^{4} + b x^{3} + 2 x^{2} + c x + 3, x, domain=\mathbb{Z}\left[a, b, c\right] \right)}z\operatorname{Poly}{\left( a x^{4} + x^{3} + \left(b + c\right) x^{2} + 2 x + 3, x, domain=\mathbb{Z}\left[a, b, c\right] \right)}z\operatorname{Poly}{\left( a x^{3} + x^{2}y -  b xy^{2} - xy -  a x -  c y^{3} + y + b, x, y, domain=\mathbb{Z}\left[a, b, c\right] \right)})r   r%   r  rA  rv  r   r  r   r   r   r   test_latex_Poly_order  s   Nr  c                   C   s&   t ttd t d ddksJ d S )Nr   r   r   z6\operatorname{CRootOf} {\left(x^{5} + x + 3, 0\right)})r   r/   r   r   r   r   r   test_latex_ComplexRootOf
  r  r  c                   C   s&   t ttd t d tdksJ d S )Nr   r   zc\operatorname{RootSum} {\left(x^{5} + x + 3, \left( x \mapsto \sin{\left(x \right)} \right)\right)})r   r0   r   re   r   r   r   r   test_latex_RootSum  r  r  c                   C   s   t tdd  d S )Nc                   S   s   t tt ddS )NZgarbage)methodr  r   r   r   r   r        ztest_settings.<locals>.<lambda>)r   	TypeErrorr   r   r   r   test_settings  s   r  c                   C   s
  t ttdks
J t ttd dksJ t ttdks J t tttdks+J t ttd dks7J t tttd dksDJ t ttdksNJ t tttdksYJ t tttttfdksgJ t ttd dkssJ t tttd dksJ t tttttfd d	ksJ t ttd
ksJ t tttdksJ t ttd dksJ t tttd dksJ t t	tdksJ t t	td dksJ t t
tdksJ t t
ttdksJ t t
td dksJ t t
ttd dksJ d S )NzC_{n}r   z	C_{n}^{2}zB_{n}zB_{n}\left(x\right)z	B_{n}^{2}zB_{n}^{2}\left(x\right)zB_{n, m}\left(x, y\right)zB_{n, m}^{2}\left(x, y\right)zF_{n}zF_{n}\left(x\right)z	F_{n}^{2}zF_{n}^{2}\left(x\right)zL_{n}z	L_{n}^{2}zT_{n}r;  z	T_{n}^{2}zT_{n}^{2}\left(x\right))r   rE   r  r   r   r   rB  r  r   r   r   r   r   r   r   test_latex_numbers  s,     r  c                   C   sH   t ttdks
J t tttdksJ t tttd dks"J d S )NzE_{n}zE_{n}\left(x\right)r   zE_{n}^{2}\left(x\right))r   rN   r  r   r   r   r   r   test_latex_euler1  s   r  c                   C   s,   t tddks
J t tddksJ d S )NZlamda\lambdaZLamda\Lambdar  r   r   r   r   
test_lamda7  s   r  c                  C   s   t d} t d}t| dksJ t| | diddksJ t| | | diddks*J t| d | diddks8J t| | | d|didd	ksHJ d S )
Nr   r  r   r  zx_i + yr   zx_i^{2}Zy_jz	x_i + y_jr  r   r  r   r   r   test_custom_symbol_names<  s   $r  c                  C   s   ddl m}  ddlm} | ddd}| ddd}| }||d|  dv s(J ||d|  d	v s5J ||d|  d
v sBJ ||d|  dv sOJ d S )Nr   r   r   r  r   r  r   )z	- 2 B + CzC -2 B)z2 B + CzC + 2 B)zB - 2 Cz	- 2 C + B)zB + 2 Cz2 C + B)rF  r   sympy.printing.latexr   r   )r   r   r  r  r!  r   r   r   test_matAddF  s   r  c                  C   s  ddl m}  ddlm} | ddd}| ddd}td}| }|d| d	ks*J |d| | d
ks7J |d| dksBJ |d| dksMJ |td| dksZJ |td | dkshJ |dtd | | dksyJ |d| |d|   dv sJ d S )Nr   r  r   r  r   r  r   r   z2 Az2 x Ar  z- 2 Ar   z1.5 Az
\sqrt{2} Az- \sqrt{2} Az2 \sqrt{2} x A)z- 2 A \left(A + 2 B\right)z- 2 A \left(2 B + A\right))rF  r   r  r   r7   Z_print_MatMulrf   )r   r   r  r  r   Zlpr   r   r   test_matMulR  s   "&r  c            	      C   s  t ddd} td\}}}}}td| | }tddd}tddd}tt|d	d	d
ks-J t|||d ||d f dksAJ t|||d d||d df dksWJ t|d ||d f dksgJ t|d ||d f dkswJ t||d d |f dksJ t|||||f dksJ t|||||||f dksJ t||d ||d |f dksJ t|d ||d ||f dksJ t|d d |d d |f dksJ tt|ddd
ksJ tt|d | d fd | d fd
ksJ tt|d| d fd| d fd
ksJ tt|d| dfd| dfdks#J t|ddddddf dks6J t|ddddddf dksIJ t|ddd d ksWJ t|d ddd!df d"ksiJ t|d ddddf d#ks{J t|dd ddf d$ksJ t|ddddf d%ksJ t|ddddddf d&ksJ t|| dd dd f d'ksJ d S )(Nr  Tr   z	x y z w tXYre  Z)NNNzX\left[:, :\right]r   zX\left[x:x + 1, y:y + 1\right]r   z"X\left[x:x + 1:2, y:y + 1:2\right]zX\left[:x, y:\right]zX\left[x:, :y\right]zX\left[x:y, z:w\right]zX\left[x:y:t, w:t:x\right]zX\left[x::y, t::w\right]zX\left[:x:y, :t:w\right]zX\left[::x, ::y\right])r   NNr   zX\left[::2, ::2\right]r   r   r   r  zX\left[1:2:3, 4:5:6\right]   zX\left[1:3:5, 4:6:8\right]zX\left[1:10:2, :\right]	   zY\left[:5, 1:9:2\right]zY\left[:5, 1::2\right]zY\left[5:6, :5:2\right]zX\left[:1, :1\right]zX\left[:1:2, :1:2\right]z%\left(Y + Z\right)\left[2:, 2:\right])r7   rg   r   r   r{   )	r  r   r  r  r:  rk  r  r  r  r   r   r   test_latex_MatrixSliced  s:   (,    $$$$$&&&&$$ "&*r	  c            
      C   s   ddl m} m}m}m}m} ddlm} | ddd}t||dkdks&J |dd}t||d	kd
ks7J |dd}|dd}	t|t	||	j
dksOJ t|tttdddks_J d S )Nr   )NormalDieExponentialpspacewhere)RandomDomainr]  r   z.\text{Domain: }0 < x_{1} \wedge x_{1} < \inftyZd1r  r   z'\text{Domain: }d_{1} = 5 \vee d_{1} = 6r  rA  zK\text{Domain: }0 \leq a \wedge 0 \leq b \wedge a < \infty \wedge b < \inftyr   z=\text{Domain: }\left\{x\right\}\text{ in }\left\{1, 2\right\})Zsympy.statsr
  r  r  r  r  Zsympy.stats.rvr  r   r9   domainr   r   )
r
  r  r  r  r  r  r  r  r  r  r   r   r   test_latex_RandomDomain  s    


r  c                  C   st   ddl m}  | tt}| ttf }t|ttt  tttt  ks'J t|tt ttt ks8J d S )Nr   QQ)sympy.polys.domainsr  Z
frac_fieldr   r  r   Zconvert)r  Fr   r   r   r   test_PrettyPoly  s
   *&r  c                  C   sN  t d} t d}td}t d}t d}tt|| | |dks"J tt|||| ||dks2J tt|| | |dks@J tt|||| ||fd	ksQJ tt|| | |d
ks_J tt|||| dksmJ tt	|| | |dks{J tt
|||| dksJ tt|| | |dksJ tt|||| dksJ d S )Nr   r  r   r  rA  z<\mathcal{M}_{x}\left[f{\left(x \right)}\right]\left(k\right)zA\mathcal{M}^{-1}_{k}\left[f{\left(k \right)}\right]\left(x\right)z<\mathcal{L}_{x}\left[f{\left(x \right)}\right]\left(k\right)zA\mathcal{L}^{-1}_{k}\left[f{\left(k \right)}\right]\left(x\right)z<\mathcal{F}_{x}\left[f{\left(x \right)}\right]\left(k\right)zA\mathcal{F}^{-1}_{k}\left[f{\left(k \right)}\right]\left(x\right)z>\mathcal{COS}_{x}\left[f{\left(x \right)}\right]\left(k\right)zC\mathcal{COS}^{-1}_{k}\left[f{\left(k \right)}\right]\left(x\right)z>\mathcal{SIN}_{x}\left[f{\left(x \right)}\right]\left(k\right)zC\mathcal{SIN}^{-1}_{k}\left[f{\left(k \right)}\right]\left(x\right))r7   r   r   r    r   r   r   r   r   r   r   r4   r   )r   r  r   r  rA  r   r   r   test_integral_transforms  sF   r  c                  C   sD   ddl m}  t| ttdksJ t| jttdddks J d S )Nr   r  z\mathbb{Q}\left[x, y\right]Zilexr  z#S_<^{-1}\mathbb{Q}\left[x, y\right])r  r  r   old_poly_ringr   r  r  r   r   r   test_PolynomialRingBase  s
   r  c                  C   sp  ddl m} m}m}m}m}m} | d}| d}| d}|||d}	|||d}
||}|d}t|d	ks8J t|	d
ks@J t|dksHJ t|
|	 dksRJ t|dksZJ | }t|dkseJ ||	d|
tj	i}t|dksvJ ||	d|
tj	i|
|	 di}t|dksJ | d}| d}| d}|||d}|||d}|||g}||}t|dksJ d S )Nr   )ObjectIdentityMorphismNamedMorphismCategoryDiagramDiagramGridA1A2A3f1f2K1zA_{1}zf_{1}:A_{1}\rightarrow A_{2}zid:A_{1}\rightarrow A_{1}z'f_{2}\circ f_{1}:A_{1}\rightarrow A_{3}z\mathbf{K_{1}}r  uniquea'  \left\{ f_{2}\circ f_{1}:A_{1}\rightarrow A_{3} : \emptyset, \  id:A_{1}\rightarrow A_{1} : \emptyset, \  id:A_{2}\rightarrow A_{2} : \emptyset, \  id:A_{3}\rightarrow A_{3} : \emptyset, \  f_{1}:A_{1}\rightarrow A_{2} : \left\{unique\right\}, \  f_{2}:A_{2}\rightarrow A_{3} : \emptyset\right\}a  \left\{ f_{2}\circ f_{1}:A_{1}\rightarrow A_{3} : \emptyset, \  id:A_{1}\rightarrow A_{1} : \emptyset, \  id:A_{2}\rightarrow A_{2} : \emptyset, \  id:A_{3}\rightarrow A_{3} : \emptyset, \  f_{1}:A_{1}\rightarrow A_{2} : \left\{unique\right\}, \  f_{2}:A_{2}\rightarrow A_{3} : \emptyset\right\}\Longrightarrow \left\{ f_{2}\circ f_{1}:A_{1}\rightarrow A_{3} : \left\{unique\right\}\right\}r  r  r  r   r0  z-\begin{array}{cc}
A & B \\
 & C 
\end{array}
)
Zsympy.categoriesr  r  r  r  r  r  r   r1   r  )r  r  r  r  r  r  r   r!  r"  r#  r$  Zid_A1r%  r  r  r  r  r   r0  Zgridr   r   r   test_categories  s6    
r'  c                  C   s  ddl m}  ddlm} | tt}|d}|ttgdtd g}t	|dks+J t	|dks3J |
td t}t	|dksCJ || }t	|d	ksOJ t	|dtd
 d gdtgdkscJ || td| tdddg}t	|dksJ d S )Nr   r  )homomorphismr   r   z!{\mathbb{Q}\left[x, y\right]}^{2}zP\left\langle {\left[ {x},{y} \right]},{\left[ {1},{x^{2}} \right]} \right\ranglez&\left\langle {x^{2}},{y} \right\ranglezz\frac{{\mathbb{Q}\left[x, y\right]}^{2}}{\left\langle {\left[ {x},{y} \right]},{\left[ {1},{x^{2}} \right]} \right\rangle}r   a  \left\langle {{\left[ {1},{\frac{x^{3}}{2}} \right]} + {\left\langle {\left[ {x},{y} \right]},{\left[ {1},{x^{2}} \right]} \right\rangle}},{{\left[ {2},{y} \right]} + {\left\langle {\left[ {x},{y} \right]},{\left[ {1},{x^{2}} \right]} \right\rangle}} \right\ranglez}{\left[\begin{matrix}0 & 0\\0 & 0\end{matrix}\right]} : {{\mathbb{Q}\left[x\right]}^{2}} \to {{\mathbb{Q}\left[x\right]}^{2}})r  r  Zsympy.polys.agcar(  r  r   r  Zfree_moduleZ	submoduler   Zideal)r  r(  r   r  r  r   Qr1  r   r   r   test_Modules  s0   
r*  c                  C   sJ   ddl m}  | ttd d g }t|dksJ t|jdks#J d S )Nr   r  r   r   zG\frac{\mathbb{Q}\left[x\right]}{\left\langle {x^{2} + 1} \right\rangle}z.{1} + {\left\langle {x^{2} + 1} \right\rangle})r  r  r  r   r   Zone)r  r   r   r   r   test_QuotientRing$  s   r+  c                  C   s0   t ddd\} }t| | }t|dksJ d S )Nr  Fr  z!\operatorname{tr}\left(A B\right))rg   r   r   )r  r  rk  r   r   r   test_Tr-  s   r,  c                  C   s\  ddl m} m}m}m} | ddd}| ddd}t||dks"J t||| dks.J t|||| dks<J t||| d	ksHJ t|||| d
ksVJ t||d dksbJ t||d dksnJ t|||dkszJ t|||dksJ t|||dksJ t|||dksJ t|||| dksJ d S )Nr   )r   AdjointInverse	Transposer  r   r  zX^{\dagger}z\left(X + Y\right)^{\dagger}zX^{\dagger} + Y^{\dagger}z\left(X Y\right)^{\dagger}zY^{\dagger} X^{\dagger}z\left(X^{2}\right)^{\dagger}z\left(X^{\dagger}\right)^{2}z\left(X^{-1}\right)^{\dagger}z\left(X^{\dagger}\right)^{-1}z\left(X^{T}\right)^{\dagger}z\left(X^{\dagger}\right)^{T}z \left(X^{\dagger} + Y\right)^{T})sympy.matricesr   r-  r.  r/  r   )r   r-  r.  r/  r  r  r   r   r   test_Adjoint4  s    r1  c                  C   s   ddl m} m}m} tddd}tddd}t| |dks J t| || dks,J t| ||ddks9J t|| |dd	ksFJ t| ||dd
ksSJ t|| |ddks`J d S )Nr   )r/  MatPowHadamardPowerr  r   r  zX^{T}z\left(X + Y\right)^{T}z\left(X^{\circ {2}}\right)^{T}z\left(X^{T}\right)^{\circ {2}}z\left(X^{2}\right)^{T}z\left(X^{T}\right)^{2})r0  r/  r2  r3  r   r   )r/  r2  r3  r  r  r   r   r   test_TransposeF  s   r4  c                  C   s.  ddl m} m}m} ddlm}m}m} | ddd}| ddd}t|||| dks-J t|||| dks:J t||dd	ksEJ t||d
dksPJ t||||ddks^J t||||ddkslJ t|||d
d
dkszJ t|||d
d
dksJ t||t	d dksJ d S )Nr   )r   HadamardProductr3  )MatAddMatMulr2  r  r   r  zX \circ Y^{2}z\left(X \circ Y\right) YzX^{\circ {2}}r   zX^{\circ \left({-1}\right)}z\left(X + Y\right)^{\circ {2}}z\left(X Y\right)^{\circ {2}}z-\left(X^{-1}\right)^{\circ \left({-1}\right)}z-\left(X^{\circ \left({-1}\right)}\right)^{-1}r   zX^{\circ \left({n + 1}\right)})
r0  r   r5  r3  Zsympy.matrices.expressionsr6  r7  r2  r   r  )r   r5  r3  r6  r7  r2  r  r  r   r   r   test_HadamardS  s.   r8  c                  C   s`   ddl m}  | ddd}|j| t}t|dksJ |ttdt }t|dks.J d S )Nr   r  r  r   zN{\left( d \mapsto \sin{\left(d \right)} \right)}_{\circ}\left({X^{T} X}\right)r   z>{\left( x \mapsto \frac{1}{x} \right)}_{\circ}\left({X}\right))r0  r   r  Z	applyfuncre   r   r   r   )r   r  r  r   r   r   test_ElementwiseApplyFunctionk  s   r9  c                  C   sD   ddl m}  t| dddddksJ t| dddddks J d S )	Nr   
ZeroMatrixr   r  Zmat_symbol_stylez
\mathbb{0}boldz
\mathbf{0})rF  r;  r   r:  r   r   r   test_ZeroMatrixt     r>  c                  C   sD   ddl m}  t| dddddksJ t| ddddd	ks J d S )
Nr   	OneMatrixr   r   r  r<  z
\mathbb{1}r=  z
\mathbf{1})rF  rA  r   r@  r   r   r   test_OneMatrixz  r?  rB  c                  C   s@   ddl m}  t| ddddksJ t| ddddksJ d S )	Nr   Identityr   r  r<  z
\mathbb{I}r=  z
\mathbf{I})rF  rD  r   rC  r   r   r   test_Identity  s   rE  c                  C   sl   t d} t|  }t|dksJ t|  }t|dksJ t|  }t|dks(J t|  }t|dks4J d S )Nza:fz.a \wedge b \wedge c \wedge d \wedge e \wedge fz$a \vee b \vee c \vee d \vee e \vee fz[a \Leftrightarrow b \Leftrightarrow c \Leftrightarrow d \Leftrightarrow e \Leftrightarrow fz3a \veebar b \veebar c \veebar d \veebar e \veebar f)rg   r   r   r   ru   r   )Zsymsr  r   r   r   test_boolean_args_order  s   rF  c                  C   s   t d} t| dksJ d S )Nr   r  )rf   r   )r  r   r   r   test_imaginary  s   rG  c                   C   sd   t tdksJ t tdksJ t tdksJ t tdks J t tdks(J t tdks0J d S )Nz\sinz\cosz\tanz\logz\operatorname{Ei}\zeta)r   re   rp   rq   r]   r
   ri   r   r   r   r   test_builtins_without_args     rI  c                  C   s   t d} t| dksJ t| tdksJ t d} t| dks"J t d} t| dks.J t| tdks8J t d	}t|d
ksDJ t d}t|tdksRJ t|dksZJ d S )NAlphar  zA{\left(x \right)}Betar  EtaHzH{\left(x \right)}Pi\Pichiz\chi{\left(x \right)}\chir   r   r   )rq  r  rv  r   r   r   test_latex_greek_functions  s   rT  c                  C   s   d} t | dks
J d} t | dksJ d} t | dksJ d} t | dks(J d	} t | d
ks2J d} t | dks<J d} t | dksFJ d S )NrK  r  rL  r  rM  rN  omicronorO  rP  r   \piZLamdaHatDOTz\dot{\hat{\Lambda}})r   rp  r   r   r   test_translate  s   rX  c                  C   s2   ddl m}  | D ]}tt|d| ksJ qd S )Nr   )other_symbols\)r  rY  r   rg   )rY  rq  r   r   r   test_other_symbols  s   r[  c                   C   s  t tddks
J t tddksJ t tddksJ t tddks(J t td	d
ks2J t tddks<J t tddksFJ t tddksPJ t tddksZJ t tddksdJ t tddksnJ t tddksxJ t tddksJ t tddksJ t tddksJ t tdd ksJ t td!d"ksJ t td#d$ksJ t td%d$ksJ t td&dksJ t td'dksJ t td(d(ksJ t td)d)ksJ t td*d*ksJ t td+d+ksJ t td,d,ksJ t td-d-ksJ t td.d.ksJ t td/d0ks&J t td1d1ks1J t td2d2ks<J t td3d3ksGJ t td4d4ksRJ t td5d5ks]J t td6d6kshJ t td7d7kssJ t td8d8ks~J t td9d9ksJ t td:d:ksJ t td;d;ksJ t td<d=ksJ t td>d?ksJ t td@dAksJ t tdBdCksJ t tdDdEksJ t tdFdGksJ d S )HNZ	xMathringz\mathring{x}ZxCheckz	\check{x}ZxBrevez	\breve{x}ZxAcutez	\acute{x}ZxGravez	\grave{x}ZxTildez	\tilde{x}ZxPrimez{x}'ZxddDDotz
\ddddot{x}ZxDdDotz	\dddot{x}ZxDDotz\ddot{x}ZxBoldz\boldsymbol{x}ZxnOrMz\left\|{x}\right\|ZxAVGz\left\langle{x}\right\rangleZxHatz\hat{x}ZxDotz\dot{x}ZxBarz\bar{x}ZxVecz\vec{x}ZxAbsr7  ZxMagZxPrMZxBMZMathringZCheckZBreveZAcuteZGraveZTildeZPrimeZDDotz\dot{D}ZBoldZNORmZAVGZHatr   ZBarZVecr   ZMagZPrMZBMZhbarz\hbarZxvecdotz\dot{\vec{x}}ZxDotVecz\vec{\dot{x}}ZxHATNormz\left\|{\hat{x}}\right\|Z xMathringBm_yCheckPRM__zbreveAbszC\boldsymbol{\mathring{x}}^{\left|{\breve{z}}\right|}_{{\check{y}}'}Z alphadothat_nVECDOT__tTildePrimez1\hat{\dot{\alpha}}^{{\tilde{t}}'}_{\dot{\vec{n}}})r   rg   r   r   r   r   test_modifiers  sd   


r\  c                   C   s  t tddks
J t tddksJ t tddksJ t tddks(J t td	d
ks2J t tddks<J t tddksFJ t tddksPJ t tddksZJ t tddksdJ t tddksnJ t tddksxJ t tddksJ t tddksJ t tddksJ t tdd ksJ t td!d"ksJ t td#d$ksJ t td%d&ksJ t td'd(ksJ t td)d*ksJ t td+d,ksJ t td-d.ksJ t td/d0ksJ t td1d2ksJ t td3d4ksJ t td5d6ksJ t td7d8ksJ t td9d:ks&J t td;d<ks1J t td=d>ks<J t td?d@ksGJ t tdAdBksRJ t tdCdDks]J t tdEdFkshJ t tdGdHkssJ t tdIdJks~J t tdKdLksJ t tdMdNksJ t tdOdPksJ t tdQdRksJ t tdSdTksJ t tdUdVksJ t tdWdXksJ t tdYdZksJ t td[d\ksJ t td]d^ksJ t td_d`ksJ t tdadbksJ t tdcddksJ t tdedfksJ t tdgdhks#J t tdidjks.J t tdkdlks9J t tdmdnksDJ d S )oNr  z\alpharC   r3  rT   r4  Zdelta\deltaepsilonz\epsilonri   rH  Zetaz\etar<  z\thetaZiotaz\iotaZkappaz\kappalambdar  r   z\muZnuz\nuZxiz\xirU  rV  r   rW  r+  z\rhoZsigmaz\sigmar   r  Zupsilonz\upsilonr?  z\phirQ  rR  Zpsiz\psir&  z\omegarK  r  rL  r  r*  \GammaZDeltaz\DeltaZEpsilonEZZetar  rM  rN  ZThetaz\ThetaZIotar   ZKappaKr   r  ZMur  ZNuNZXiz\XiZOmicronOrO  rP  ZRhoPZSigmaz\Sigmar,  r  ZUpsilonz\UpsilonZPhiz\Phir   r  r\  z\PsiZOmegaz\OmegaZ
varepsilonz\varepsilonZvarkappaz	\varkappaZvarphiz\varphiZvarpiz\varpiZvarrhoz\varrhoZvarsigmaz	\varsigmaZvarthetaz	\varthetar  r   r   r   r   test_greek_symbols  sn   rf  c                   C   sp   t tjdks	J t tjdksJ t tjdksJ t tjdks$J t tjdks-J t tjdks6J d S )Nz
\mathbb{Q}r  r  r  z
\mathbb{R}r  )r   r1   Z	Rationalsr  r  r  r  r  r   r   r   r   test_fancyset_symbolsH  s   rg  c                   C   s   t tdksJ d S )Nz\mathcal{COS})r   r   r   r   r   r   *test_builtin_without_args_mismatched_namesQ  s   rh  c                   C   sd   t tdksJ t tdksJ t tdksJ t tdks J t tdks(J t tdks0J d S )Nz\operatorname{Chi}z\operatorname{B}r`  r]  r4  )r   r   rC   rT   r   r   r   r   r   r   r   test_builtin_no_argsV  rJ  ri  c                  C   s    t d} t| tdksJ d S )NrO  z\Pi{\left(x \right)}rS  r  r   r   r   test_issue_6853_  s   rk  c                  C   s   t dtd dd} t| dksJ t dtd dd} t| dks"J t tjtd dd} t| dks4J t ttd dd} t| d	ksEJ t t td dd} t| d
ksWJ t dtd } t| dksfJ t dtd } t| dksuJ d S )Nr  r   Fr   z- 2 \left(x + 1\right)r   z2 \left(x + 1\right)z\frac{x + 1}{2}zy \left(x + 1\right)z- y \left(x + 1\right)z	- 2 x - 2z2 x + 2)r"   r   r   r1   r  r  )er   r   r   test_Muld  s   rm  c                  C   sX   t dddd} t| dksJ tttdd dksJ td}t|d d	ks*J d S )
Nr   Fr   z2^{2}r   r   z\frac{1}{\sqrt[3]{x}}zx^2z\left(x^{2}\right)^{2})r)   r   r   r,   r7   )rl  r_  r   r   r   test_Powu  s
   rn  c                   C   s4   t tttdksJ t ttttdksJ d S )Nzx \Leftrightarrow yzx \not\Leftrightarrow y)r   ru   r   r  rv   r   r   r   r   test_issue_7180}  s   ro  c                   C   s   t tjt dksJ d S )Nz\left(\frac{1}{2}\right)^{n})r   r1   r  r  r   r   r   r   test_issue_8409  s   rp  c                  C   ,   ddl m}  | ddd}t|dksJ d S )Nr   
parse_exprz-B*AFr   zA \left(- B\right)Zsympy.parsing.sympy_parserrs  r   )rs  rl  r   r   r   test_issue_8470     ru  c                  C   sx   t ddd} t ddd}t| | || dksJ t| | |d| dks+J t| | | |  dks:J d S )Nr   r   r  zx \left(- y\right)r  zx \left(- 2 y\right)z- x y)r   r   subsr  r   r   r   test_issue_15439  s
    "rx  c                   C   s   t tddks
J d S )Nz\frac{a_1}{b_1}r  r   r   r   r   test_issue_2934  rZ  ry  c                  C   s4   d} t | }t|| ksJ tt|dksJ d S )Nz	C_{x_{0}}z\cos{\left(C_{x_{0}} \right)})r7   r   rp   )ZlatexSymbolWithBracerq  r   r   r   test_issue_10489  s   rz  c                  C   s,   t d\} }t| d |d  dksJ d S )Nz
m__1, l__1r   z/\left(l^{1}\right)^{2} + \left(m^{1}\right)^{2}r.  )Zm__1Zl__1r   r   r   test_issue_12886  s   r{  c                  C   rq  )Nr   rr  z5/1Fr   z\frac{5}{1}rt  )rs  r  r   r   r   test_issue_13559  rv  r|  c                  C   s*   t tdtt dd } t| dksJ d S )Nr   Fr   zc - \left(a + b\right))rv  r"   r  rA  r   r  r   r   r   test_issue_13651  r  r}  c                  C   s|   t d} td|  }t|td|    krdksJ  J t|d dks(J t|d dks2J t| | dks<J d S )Nr   r   r   r   z\left(\frac{1}{x}\right)^{2}z1 + \frac{1}{x}zx \frac{1}{x})rg   r   r   )r   her   r   r   test_latex_UnevaluatedExpr  s   (r  c            	      C   s   t ddd} t ddd}t ddd}t| d dksJ td| d  dks(J |d || | }t|d	ks:J td
\}}}t d||}t d||}t|| ||f dks[J d S )Nr  r   r   r  r  )r   r   zA_{0, 0}z
3 A_{0, 0}z\left(A - B\right)_{0, 0}zi j kr  rc  z0\sum_{i_{1}=0}^{k - 1} M_{i, i_{1}} N_{i_{1}, j})r   r   rw  rg   )	r  r  r  r  r  r  r  r  rc  r   r   r   test_MatrixElement_printing  s   r  c                  C   s|   t ddd} t ddd}t ddd}t|  dksJ t| | |  | dks)J t|  | | | |  | dks<J d S )Nr  r   r  r  z- AzA - A B - Bz- A B - A B C - B)r   r   r  r   r   r   test_MatrixSymbol_printing  s   *r  c                  C   s2   t ddd} t ddd}tt| |dksJ d S )Nr  r   r  r   A \otimes B)r   r   r   )r  r  r   r   r   test_KroneckerProduct_printing  s   r  c            	      C   s  t ttd  t td td  t} t tt tt t}t ttd  tt t  t tt t}tt| |dks;J tt| ||dksGJ tt| | dksSJ tdt	 gddt	  gg}t
|t	}tddt	d  gg}t
|t	}t|||  d  krttt|||ksJ  J tddgddt	 gg}t
|t	}t|| | d	  krttt|||ksJ  J d S )
Nr   r   zQ\left(\frac{x y^{2} - z}{- t^{3} + y^{3}}\right) \left(\frac{x - y}{x + y}\right)z\left(\frac{x y^{2} - z}{- t^{3} + y^{3}}\right) \left(\frac{x - y}{x + y}\right) \left(\frac{t x^{2} - t^{w} x + w}{t - y}\right)zS\left(\frac{- x + y}{x + y}\right) \left(\frac{x y^{2} - z}{- t^{3} + y^{3}}\right)r   r  z\left[\begin{matrix}\frac{5}{s}\\\frac{5}{2 s}\end{matrix}\right]_\tau\cdot\left(\left[\begin{matrix}\frac{5}{1} & \frac{6 s^{3}}{1}\end{matrix}\right]_\tau + \left[\begin{matrix}\frac{5}{1} & \frac{6 s^{3}}{1}\end{matrix}\right]_\tau\right)z\left[\begin{matrix}\frac{5}{s}\\\frac{5}{2 s}\end{matrix}\right]_\tau\cdot\left[\begin{matrix}\frac{5}{1} & \frac{6 s^{3}}{1}\end{matrix}\right]_\tau + \left[\begin{matrix}\frac{5}{1} & \frac{6}{1}\\\frac{6}{1} & \frac{5}{s}\end{matrix}\right]_\tau)r   r   r  r  rk  r:  r   r   r   rq  r   from_Matrixr   r   )	tf1tf2tf3M_1T_1M_2T_2M_3T_3r   r   r   test_Series_printing  s4   $(r  c                  C   sx   t td td t} t| dksJ t td dt t}t|dks$J t ttd dt  d t}t|dks:J d S )Nr   z\frac{x - 1}{x + 1}r   z\frac{x + 1}{2 - y}r   z\frac{y}{y^{2} + 2 y + 3})r   r   r   r  r  r  r  r   r   r   test_TransferFunction_printing  s   r  c                  C   sN  t ttd  t td td  t} t tt tt t}tt| |dks'J tt| | dks3J tddgddt gg}t	
|t}tdt dgddtd  gg}t	
|t}tddttd   gddgg}t	
|t}t|| | d  krtt|||  krtt|t||  krttt|||ksJ  J d S )	Nr   r   z9\frac{x y^{2} - z}{- t^{3} + y^{3}} + \frac{x - y}{x + y}z;\frac{- x + y}{x + y} + \frac{x y^{2} - z}{- t^{3} + y^{3}}r   r  r   a=  \left[\begin{matrix}\frac{5}{1} & \frac{6}{1}\\\frac{6}{1} & \frac{5}{s}\end{matrix}\right]_\tau + \left[\begin{matrix}\frac{5}{s} & \frac{6}{1}\\\frac{6}{1} & \frac{5}{s - 1}\end{matrix}\right]_\tau + \left[\begin{matrix}\frac{6}{1} & \frac{5}{s \left(s - 1\right)}\\\frac{5}{1} & \frac{6}{1}\end{matrix}\right]_\tau)r   r   r  r  rk  r   r   r   rq  r   r  r   )r  r  r  r  r  r  r  r  r   r   r   test_Parallel_printing	  s*   $  r  c                  C   s   t ttt t} t t t tt t}t ttd dt  d t}tt| g|ggdks/J tt| |g||  ggdks@J d S )Nr   r   zP\left[\begin{matrix}\frac{p}{p + x}\\\frac{p - s}{p + s}\end{matrix}\right]_\tauz\left[\begin{matrix}\frac{p}{p + x} & \frac{p - s}{p + s}\\\frac{p}{y^{2} + 2 y + 3} & \frac{\left(-1\right) p}{p + x}\end{matrix}\right]_\tau)r   r  r   rq  r  r   r   r  r   r   r   $test_TransferFunctionMatrix_printing	  s   r  c                  C   s   t ttt t} t t t tt t}tt| |dksJ tt| | t ddtdks/J tt| |ddks;J tt| | dddksIJ d S )Nzc\frac{\frac{p}{p + x}}{\frac{1}{1} + \left(\frac{p}{p + x}\right) \left(\frac{p - s}{p + s}\right)}r   z\frac{\left(\frac{p}{p + x}\right) \left(\frac{p - s}{p + s}\right)}{\frac{1}{1} + \left(\frac{p}{p + x}\right) \left(\frac{p - s}{p + s}\right)}zc\frac{\frac{p}{p + x}}{\frac{1}{1} - \left(\frac{p}{p + x}\right) \left(\frac{p - s}{p + s}\right)})signz\frac{\left(\frac{p}{p + x}\right) \left(\frac{p - s}{p + s}\right)}{\frac{1}{1} - \left(\frac{p}{p + x}\right) \left(\frac{p - s}{p + s}\right)})r   r  r   rq  r   r   )r  r  r   r   r   test_Feedback_printing 	  s   r  c                  C   s   t dtt} t ttd d t}t ttd t}t td td d t}t| |g||gg}t||g|| gg}tt||dksCJ tt|| |ddksQJ d S )Nr   r   a  \left(I_{\tau} + \left[\begin{matrix}\frac{1}{s} & \frac{s}{s^{2} - 1}\\\frac{s}{s - 1} & \frac{s^{2}}{s^{2} - 1}\end{matrix}\right]_\tau\cdot\left[\begin{matrix}\frac{s^{2}}{s^{2} - 1} & \frac{s}{s - 1}\\\frac{s}{s^{2} - 1} & \frac{1}{s}\end{matrix}\right]_\tau\right)^{-1} \cdot \left[\begin{matrix}\frac{1}{s} & \frac{s}{s^{2} - 1}\\\frac{s}{s - 1} & \frac{s^{2}}{s^{2} - 1}\end{matrix}\right]_\taua  \left(I_{\tau} - \left[\begin{matrix}\frac{1}{s} & \frac{s}{s^{2} - 1}\\\frac{s}{s - 1} & \frac{s^{2}}{s^{2} - 1}\end{matrix}\right]_\tau\cdot\left[\begin{matrix}\frac{s^{2}}{s^{2} - 1} & \frac{s}{s - 1}\\\frac{s}{s^{2} - 1} & \frac{1}{s}\end{matrix}\right]_\tau\cdot\left[\begin{matrix}\frac{1}{s} & \frac{s}{s^{2} - 1}\\\frac{s}{s - 1} & \frac{s^{2}}{s^{2} - 1}\end{matrix}\right]_\tau\right)^{-1} \cdot \left[\begin{matrix}\frac{1}{s} & \frac{s}{s^{2} - 1}\\\frac{s}{s - 1} & \frac{s^{2}}{s^{2} - 1}\end{matrix}\right]_\tau\cdot\left[\begin{matrix}\frac{s^{2}}{s^{2} - 1} & \frac{s}{s - 1}\\\frac{s}{s^{2} - 1} & \frac{1}{s}\end{matrix}\right]_\tau)r   rq  r   r   r   )r  r  r  Ztf4Ztfm_1Ztfm_2r   r   r   test_MIMOFeedback_printing/	  s   r  c                  C   sf   t tttt} t| dksJ t ttttt } t| dks J t ttttt } t| dks1J d S )Nzx + y i + z j + t kzx + y i + z j + t x kz$x + y i + z j + \left(t + x\right) k)r   r   r  r  rk  r   )qr   r   r   test_Quaternion_latex_printingG	  s   r  c                  C   s>   ddl m}  tddd}tddd}t| ||dksJ d S )Nr   )TensorProductr  r   r  r  )Zsympy.tensor.functionsr  r   r   )r  r  r  r   r   r   test_TensorProduct_printingP	  s   r  c                  C   s:   ddl m}  ddlm} || j| j}t|dksJ d S )Nr   R2)WedgeProductz*\operatorname{d}x \wedge \operatorname{d}y)sympy.diffgeom.rnr  sympy.diffgeomr  ZdxZdyr   )r  r  Zwpr   r   r   test_WedgeProduct_printingW	  s   r  c                  C   s   t dddd} t| dksJ t dt dddddd}t|dks#J t dddd}t|d	ks2J t dddd}t|d
ksAJ d S )Nr   r   Fr   z1^{-1}z
1^{1^{-1}}r   r  z\frac{1}{9}z1^{-2})r)   r   )Zexpr_1Zexpr_2Zexpr_3Zexpr_4r   r   r   test_issue_9216^	  s   r  c                  C   s^  ddl m} m}m}m} | d}|d|\}}}}|d|}	|d|g\}
}}}|d||g}|d||||g}t|d	ks@J t| d
ksIJ |
|}t|dksUJ |
|	}t|dksaJ |
| }t|dksnJ d|
| }t|dks|J |||| |	 }t|dksJ ||| | |	}t|dksJ ||| ||	 }t|dksJ ||| }t|dksJ |||}t|dksJ || | }t|dksJ dt |
| }t|dksJ ||| }t|dksJ ||| |
| || }t|dksJ |
|d||  }t|dks!J ddl m} |||||||d|di}t|dks>J |||||||di}t|dksSJ |||| |||d|di}t|d kskJ |||| || |d|di}t|d!ksJ ||||| | |d| di}t|d"ksJ ||||| | |di}t|d#ksJ t|
||
|}t|d$ksJ t|
| |
| }t|d%ksJ t|||| | |
t	|
t
 }t|d&ksJ t|| |
|  |
| |
t
 }t|d'ksJ td|
|  |
| |
t
 }t|d(ks-J d S ))Nr   )TensorIndexTypetensor_indices
TensorHeadtensor_headsLzi j k lZi_0zA B C DrN  rb  z{}^{i}z{}_{i}zA{}^{i}zA{}^{i_{0}}zA{}_{i}r  z	-3A{}^{i}zK{}^{ij}{}_{ki_{0}}zK{}^{i}{}_{jk}{}^{i_{0}}zK{}^{i}{}_{j}{}^{k}{}_{i_{0}}zH{}^{i}{}_{j}zH{}^{ij}zH{}_{ij}r   z\left(x + 1\right)A{}^{i}zH{}^{L_{0}}{}_{L_{0}}z#H{}^{i}{}_{L_{0}}A{}^{L_{0}}B{}^{k}r   z3B{}^{i} + A{}^{i})TensorElementr   zK{}^{i=3,j,k=2,l}zK{}^{i=3,jkl}zK{}^{i=3}{}_{j}{}^{k=2,l}zK{}^{i=3}{}_{j}{}^{k=2}{}_{l}zK{}^{i=3,j}{}_{k=2,l}zK{}^{i=3,j}{}_{kl}z4\frac{\partial}{\partial {A{}^{L_{0}}}}{A{}^{L_{0}}}z,\frac{\partial}{\partial {A{}_{j}}}{A{}_{i}}zK\frac{\partial^{2}}{\partial {A{}^{m}} \partial {A{}_{n}}}{K{}^{ij}{}_{kl}}zZ\frac{\partial^{2}}{\partial {A{}_{j}} \partial {A{}_{n}}}{\left(A{}_{i} + B{}_{i}\right)}zQ\frac{\partial^{2}}{\partial {A{}_{j}} \partial {A{}_{n}}}{\left(3A{}_{i}\right)})Zsympy.tensor.tensorr  r  r  r  r   r   r  r   rB  r  )r  r  r  r  r  r  r  r  r!  Zi0r  r  r  r  rN  rb  r  r  r   r   r   test_latex_printer_tensorl	  sx   


 "$("r  c                     s  t d\} }}}}|  d|  d|  d|  d|   d}t dd|ks*J d	}t ddd|ks8J d
}t ddd|ksFJ d}t dddd|ksUJ d}	t d|	ksaJ t ddd|	ksmJ d}
t ddd|
ks{J tt fdd d S )Nza b c d e fr   r   r   r   z\begin{eqnarray}
f & = &- a \nonumber\\
& & + 2 b \nonumber\\
& & - 3 c \nonumber\\
& & + 4 d \nonumber\\
& & - 5 e 
\end{eqnarray}Zeqnarrayenvironmentzc\begin{eqnarray}
f & = &- a + 2 b \nonumber\\
& & - 3 c + 4 d \nonumber\\
& & - 5 e 
\end{eqnarray}zS\begin{eqnarray}
f & = &- a + 2 b - 3 c \nonumber\\
& & + 4 d - 5 e 
\end{eqnarray}zX\begin{eqnarray}
f & = &- a + 2 b - 3 c \dots\nonumber\\
& & + 4 d - 5 e 
\end{eqnarray}T)r  Zuse_dotszB\begin{align*}
f = &- a + 2 b - 3 c \\
& + 4 d - 5 e 
\end{align*}zalign*zp\begin{IEEEeqnarray}{rCl}
f & = &- a + 2 b \nonumber\\
& & - 3 c + 4 d \nonumber\\
& & - 5 e 
\end{IEEEeqnarray}ZIEEEeqnarrayc                      s   t  ddS )Nr   r  )r   r   r  r   r   r   r  	  s    z&test_multiline_latex.<locals>.<lambda>)rg   r   r   r  )r  rA  rv  r  rl  r  Z	expected2Z	expected3Zexpected3dotsZexpected3alignZexpected2ieeer   r  r   test_multiline_latex	  s    &r  c                  C   st   ddl m} m}m}m}m} td\}}| |||t||| dt||| d@ |jd }t	|dks8J d S )Nr   )r   r9   r1   re   rp   za xr   z\left\{\left( x, \  a\right)\; \middle|\; \left( x, \  a\right) \in \mathbb{C}^{2} \wedge \sin{\left(a x \right)} = 0 \wedge \cos{\left(a x \right)} = 0 \right\})
rF  r   r9   r1   re   rp   rg   r   r  r   )r   r9   r1   re   rp   r  r   Zsolr   r   r   test_issue_15353	  s   2r  c                  C   sH   ddl m}  tddd}t| |dksJ t| |d dks"J d S )Nr   tracer  r    \operatorname{tr}\left(A \right)z$\operatorname{tr}\left(A^{2} \right)rF  r  r   r   )r  r  r   r   r   
test_trace
  s   r  c                     s   ddl m m}  G  fddd| fdd}fdd}t|td	ks(J t|td
 dks4J t|tdks>J d S )Nr   )BasicExprc                       s   e Zd Z fddZdS )z+test_print_basic.<locals>.UnimplementedExprc                    s     | |S N)__new__)r  rl  r  r   r   r  
     z3test_print_basic.<locals>.UnimplementedExpr.__new__N)r   r   r   r  r   r  r   r   UnimplementedExpr
  s    r  c                    s    |   S r  )r  r  r  r   r   unimplemented_expr
  r  z,test_print_basic.<locals>.unimplemented_exprc                    s    | }d|j _|S )NzUnimplementedExpr_x^1)	__class__r   )r  resultr  r   r   unimplemented_expr_sup_sub
  s   z4test_print_basic.<locals>.unimplemented_expr_sup_subzUnimplementedExpr\left(x\right)r   z#UnimplementedExpr\left(x^{2}\right)z'UnimplementedExpr^{1}_{x}\left(x\right))rF  r  r  r   r   )r  r  r  r   )r  r  r   test_print_basic
  s   
r  c                  C   s  ddl m}  tddd}t| |dddksJ t| |ddd	ks$J tdd
d
}tdd
d
}tdd
d
}t| dddksAJ t|||  | dddksQJ t| | || |  | dddksfJ tdd
d
}t|dddksvJ tdd
d
}t|dddksJ d S )Nr   r  r  r   r=  r<  z)\operatorname{tr}\left(\mathbf{A} \right)r  r  r   r  r  z- \mathbf{A}z/\mathbf{A} - \mathbf{A} \mathbf{B} - \mathbf{B}zG- \mathbf{A} \mathbf{B} - \mathbf{A} \mathbf{B} \mathbf{C} - \mathbf{B}A_kz\mathbf{A}_{k}z\nabla_kz\mathbf{\nabla}_{k}r  )r  r  r  r  r  r   r   r   test_MatrixSymbol_bold*
  s,    r  c                  C   s.   t ddd} td}tt| |dksJ d S )Nr   r   r   r   z#\sigma_{\left( 0\; 1\; 2\right)}(x))r   r7   r   r   )r  r   r   r   r   test_AppliedPermutationC
  s
   r  c                  C   sH   t ddd} tt| dksJ t dddd} tt| dks"J d S )Nr   r   r   zP_{\left( 0\; 1\; 2\right)}r   z*P_{\left( 0\; 3\right)\left( 1\; 2\right)})r   r   r   rj  r   r   r   test_PermutationMatrixJ
  s   
r  c                   C   s   t dt dks
J t dt dddksJ t dt dddks"J t dt dddks.J t td	dd
ks8J t tdddksBJ d S )Nr   z1 + ir  imaginary_unitr  z1 + jr   z1 + fooZtiz\text{i}Ztjz\text{j})r   r   r   r   r   r   test_imaginary_unitR
  s   r  c                   C   sd   t ttdddksJ t ttdddksJ t ttdddks$J t ttdddks0J d S )NT)Zgothic_re_imz\Im{\left(x\right)}Fr9  z\Re{\left(x\right)}r8  )r   rX   r   rc   r   r   r   r   test_text_re_im[
  s   r  c                  C   s   ddl m} m}m}m}m} ddlm} tddd\}}| dd}t	|d	ks)J |d
|}	t	|	dks6J |d|	||g}
t	|
dksFJ ||
d}t	|dksSJ t
d}||j|j}t	||dkshJ d S )Nr   )ManifoldPatchCoordSystemBaseScalarFieldDifferentialr  zx yTr=  r  r   z\text{M}re  z\text{P}_{\text{M}}rectz!\text{rect}^{\text{P}}_{\text{M}}z
\mathbf{x}r0  zC\operatorname{d}\left(g{\left(\mathbf{x},\mathbf{y} \right)}\right))r  r  r  r  r  r  r  r  rg   r   r   r   r  )r  r  r  r  r  r  r   r  rB  r  r  rA  r0  Zs_fieldr   r   r   test_latex_diffgeomb
  s    



r  c                   C   sD   t dt dks
J t dt dksJ t dt t dks J d S )Nr   z
5 \text{m}r   z3 \text{gibibyte}r   z\frac{4 \mu\text{g}}{\text{s}})r   r   r   r   r   r   r   r   r   test_unit_printingu
  s   r  c                  C   s$   t d} tt| | ddksJ d S )Nr   r   z,\frac{d^{2}}{d \left(x^{*}\right)^{2}} x^{*})r7   r   r   )r  r   r   r   test_issue_17092{
  r  r  c            
      C   s  t d\} }}}t ddd\}}}t dtd\}}}	tg ddd	d
ks&J ttddddd	dks4J tddd	dks>J tddd	dksHJ tg ddd	dksTJ ttddddd	dksbJ tddd	dkslJ tddd	dksvJ tg ddksJ ttddddksJ tddksJ tddksJ ttdddd	dksJ tddd	dksJ t d} t d}t d}t| d d|d   d | dd	d ksJ td!dd	d"ksJ ttd!dd	d"ksJ td#dd	d$ksJ ttd#dd	d$ksJ td%dd	d&ksJ ttd'd( dd	d)ksJ ttd*dd	d)ks)J t d} td+|  d dd	d,ks<J ttddddd	dksKJ ttd-d.  ttd/d.  ttd0d.  d S )1Nzx y z tr   Tr   zf g hr  r   ffffff@      @ZcommaZdecimal_separatorz#\left[ 1; \  2{,}3; \  4{,}5\right]r   r  r  z\left\{1; 2{,}3; 4{,}5\right\})r   r  gffffff@z#\left( 1; \  2{,}3; \  4{,}6\right))r   z\left( 1;\right)Zperiodz\left[ 1, \  2.3, \  4.5\right]z\left\{1, 2.3, 4.5\right\}z\left( 1, \  2.3, \  4.6\right)z\left( 1,\right)g333333@g333333@z18{,}02gQ2@r   r  r  r   z#2^{y^{3{,}4}} + 5{,}3 x + z + 4{,}5g/$?z0{,}987g333333?z0{,}3g|)v>z5{,}8 \cdot 10^{-7}g@gHz>z5{,}7 \cdot 10^{-7}g<sAC >g333333?z1{,}2 x + 3{,}4c                   S   s   t g dddS )Nr  Z&non_existing_decimal_separator_in_listr  r  r   r   r   r   r  
  r  z.test_latex_decimal_separator.<locals>.<lambda>c                   S   s   t tdddddS )Nr   r  r  Z%non_existing_decimal_separator_in_setr  )r   r   r   r   r   r   r  
  r#  c                   S   s   t dddS )Nr  Z'non_existing_decimal_separator_in_tupler  r  r   r   r   r   r  
  r  )rg   r   r   r   r"   r1   r   r  )
r   r  r  rk  r  rB  r  r   r0  r1  r   r   r   test_latex_decimal_separator
  sD   ,r  c                  C   s$   ddl m}  t| ddksJ d S )Nr   Strr   )Zsympy.core.symbolr  strr  r   r   r   test_Str
  s   r  c                   C   s   t ddg dksJ d S )Nz
~^\&%$#_{}r  )
z\textasciitildez\textasciicircumz\textbackslashz\&z\%z\$z\#z\_z\{z\})r   joinr   r   r   r   test_latex_escape
  s   r  c                  C   s8   G dd d} t |  dksJ t |  fdksJ d S )Nc                   @   r   )z#test_emptyPrinter.<locals>.MyObjectc                 S   r   )Nz<MyObject with {...}>r   )r   r   r   r   __repr__
  r   z,test_emptyPrinter.<locals>.MyObject.__repr__N)r   r   r   r  r   r   r   r   MyObject
  r   r  z'\mathtt{\text{<MyObject with \{...\}>}}z6\left( \mathtt{\text{<MyObject with \{...\}>}},\right)r  )r  r   r   r   test_emptyPrinter
  s   r  c                  C   s   dd l } | tjd jdksJ ttdksJ z!tjdd | tjd jdks-J ttdks5J W tjd= ntjd= w | tjd jdksMJ ttdksUJ d S )Nr   r  r  r  r  )	inspectZ	signaturer   Z
parametersdefaultr   r   Zset_global_settingsZ_global_settings)r  r   r   r   test_global_settings
  s   r  c                  C   s$   dd l } | | ttu sJ d S )Nr   )pickleloadsdumpsr   )r  r   r   r   test_pickleable
  s   r  c                   C   sB   t tdddddksJ t tddddt  dfdksJ d S )Nr  r   r   r   r   r   z{{A}_{2, \frac{1}{1 - x}, 0}})r   r   r   r   r   r   r   r   %test_printing_latex_array_expressions
  s   (r  (  Z0sympy.tensor.array.expressions.array_expressionsr   r   Zsympy.tensor.toperatorsr   rF  r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zsympy.ntheory.factor_r   rG  r   r   r  r   r   r   r   r   r   r   Zsympy.tensor.arrayr   r   r   r   r   Zsympy.testing.pytestr   r   r   Zsympy.functionsr   r   r   r   Z%sympy.functions.combinatorial.numbersr   r   r   r   r   Zsympy.logicr   Zsympy.logic.boolalgr   r   r   Zsympy.physics.control.ltir   r   r   r   r   r   r   r   Zsympy.physics.quantumr   r   Zsympy.physics.unitsr   r   r   r   Zsympy.core.tracer   Z sympy.combinatorics.permutationsr   r   r   Z&sympy.matrices.expressions.permutationr   r   r   Zsympy.vectorr   r   r   r   r   r   r   Zsympy.sets.setexprr   Zsympy.sets.setsr   r   r   r   r   Zsymr   r   r  r  rk  r:  r  rA  rv  rq  r  r  rB  r  r   r	  r
  r  r  r  r  r  r-  r/  rC  rE  rH  rT  rW  rY  r^  rb  rd  rl  rr  rs  rw  r{  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  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,  r1  r4  r8  r9  r>  rB  rE  rF  rG  rI  rT  rX  r[  r\  rf  rg  rh  ri  rk  rm  rn  ro  rp  ru  rx  ry  rz  r{  r|  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   <module>   s~    @ $($x1


  




	


=

$



9














w














	
	






	
	






.






	



	











!

	
!

:
!
	




	





	



8
<	

			
	[4	2