U
    9%e                    @   s4  d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZmZmZ d dlmZ d dlmZmZmZ d d	lmZmZmZmZ d d
lmZ d dlmZmZm Z m!Z!m"Z"m#Z# d dl$m%Z% d dl&m'Z'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1 d dl2m3Z3 d dl4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z<m=Z= d dl>m?Z? d dl@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZI d dlJmKZKmLZL d dlMmNZN d dlOmPZP d dlQmRZR d dlSmTZT d dlUmVZV d dlWmXZX d dlYmZZZm[Z[ d d l\m]Z] d d!l^m_Z_m`Z` d d"lambZb d d#lcmdZd d d$lemfZf d d%lgmhZh d d&limjZjmkZkmlZlmmZm d d'lnmoZo d d(lpmqZq d d)lrmsZsmtZtmuZumvZvmwZw d d*lxmyZymzZzm{Z{m|Z|m}Z}m~Z~ d d+lmZ d d,lmZ d d-lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d d.lmZmZmZmZmZmZmZmZ d d/lmZ d d0lmZ d d1lmZmZmZmZmZmZmZmZ d d2lmZmZ d d3lmZmZ d d4lmZmZ d d5lmZ d d6lmZmZ d d7lmZ d d8lmZ d d9lmZmZmZmZ d d:lmZmZmZmZmZ d d;lmZ d d<lmZmZmZmZmZ d d=lmZmZmZ d d>lmZmZmZmZmZmZmZ d d?lZG d@dA dAejZe(dB\ZZZZZ ZZZZZZedCZe'dDZe'dEZ	dxdFdGZ̐dydHdI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 edvdw 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 Zbdd 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 ZdZ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 Zd?S (z      )Product)Sum)Add)Basic)DictTuple)
DerivativeFunctionLambdaSubs)Mul)
EulerGammaGoldenRatioCatalan)IRationaloopi)Pow)EqGeGtLeLtNe)S)Symbolsymbols)	conjugate)LambertW)airyaiairyaiprimeairybiairybiprime)	Heaviside)fresnelcfresnels)SingularityFunction)dirichlet_eta)RaySegment)Integral)	And
EquivalentITEImpliesNandNorNotOrXor)Matrixdiag)MatrixSlice)Trace)FF)ZZ)QQ)RR)grlexilex)groebner)RootSumrootof)fps)fourier_series)Limit)O)SeqAdd
SeqFormulaSeqMulSeqPer)Contains)Range)
Complement	FiniteSetIntersectionIntervalUnion)
AssignmentAddAugmentedAssignmentSubAugmentedAssignmentMulAugmentedAssignmentDivAugmentedAssignmentModAugmentedAssignment)UnevaluatedExpr)Tr)-AbsChiCiEiKroneckerDelta	PiecewiseShiSiatan2betabinomialcatalanceilingcoseulerexpexpint	factorial
factorial2floorgammahyperlogmeijergsinsqrtsubfactorialtan
uppergammalerchphi
elliptic_k
elliptic_f
elliptic_eelliptic_pi
DiracDeltabell	bernoulli	fibonacci
tribonaccilucas	stieltjesmathieucmathieusmathieusprimemathieucprime)AdjointInverseMatrixSymbol	TransposeKroneckerProductBlockMatrix	OneMatrix
ZeroMatrix)hadamard_power)	mechanics)TransferFunctionFeedbackTransferFunctionMatrixSeriesParallel
MIMOSeriesMIMOParallelMIMOFeedback)jouledegree)pprintpretty)center_accentis_combining)ConditionSet)ImageSet
ProductSet)SetExpr)Normal)
CovarianceExpectationProbabilityVariance)ImmutableDenseNDimArrayImmutableSparseNDimArrayMutableDenseNDimArrayMutableSparseNDimArraytensorproduct)TensorProduct)TensorIndexTypetensor_indices
TensorHeadTensorElementtensor_heads)raises_both_exp_powwarns_deprecated_sympy)
CoordSys3DGradientCurl
DivergenceDotCross	LaplacianNc                   @   s   e Zd ZdS )
lowergammaN__name__
__module____qualname__ r   r   f/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/printing/pretty/tests/test_pretty.pyr   V   s   r   za,b,c,d,x,y,z,k,n,s,pfthetaphic                 C   s   t | |dddS )zASCII pretty-printingForderuse_unicode	wrap_linexprettyexprr   r   r   r   r   
  s    r   c                 C   s   t | |dddS )zUnicode pretty-printingTFr   r   r   r   r   r   upretty  s    r   c                   C   s   t ddkstt ddks tt ddks0tt ddks@tt ddksPtt ddks`tt ddksptt ddkstt ddkstt ddkstd S NZxxxzxxx'xxxzxxx"xxxzxxx"xxx'xxxzxxx
xxxr   AssertionErrorr   r   r   r   test_pretty_ascii_str  s    r   c                   C   s   t ddkstt ddks tt ddks0tt ddks@tt ddksPtt ddks`tt ddksptt ddkstt ddkstt ddkstd S r   r   r   r   r   r   test_pretty_unicode_str!  s    r   c                   C   sP   t tdkstt tddks$tt tddks8tt tddksLtd S )N   ∞z	alpha^+_1u   α⁺₁rb      βlambdau   λ)r   r   r   r   r   r   r   r   test_upretty_greek.  s    r   c                   C   sT   t tddkstt tddks(tt tddks<tt tddksPtd S )NZbeta12u   β₁₂ZY00u   Y₀₀ZY_00zF^+-u   F⁺⁻r   r   r   r   r   r   r   test_upretty_multiindex5  s    r   c                   C   s   t tddkstt tddks(tt tddks<tt tddksPtt td	d
ksdtt tddksxtt tddkstt tddkstt tddkstd S )NZbeta_1_2u	   β₁ ₂zbeta^1^2u   β¹ ²zbeta_1^2u   β²₁Z
beta_10_20u   β₁₀ ₂₀zbeta_ax_gamma^iu   βⁱₐₓ ᵧz	F^1^2_3_4u   F¹ ²₃ ₄z	F_1_2^3^4u   F³ ⁴₁ ₂Z	F_1_2_3_4u   F₁ ₂ ₃ ₄z	F^1^2^3^4u   F¹ ² ³ ⁴r   r   r   r   r   test_upretty_sub_super<  s    r   c                   C   s
  t tddkstt tddks(tt tddks<tt tddksPtt td	d
ksdtt tddksxtt tddkstt tddkstt tddkstt tddkstt tddkstt tddkstt tddkstd S )NZF_betau   FᵦZF_gammau   FᵧZF_rhou   FᵨZF_phiu   FᵩZF_chiu   FᵪZF_au   FₐZF_eu   FₑZF_iu   FᵢZF_ou   FₒZF_uu   FᵤZF_ru   FᵣZF_vu   FᵥZF_xu   Fₓr   r   r   r   r   test_upretty_subs_missing_in_24H  s    r   c                   C   s   t tddkstt tddks(tt tddks<tt tddksPtt td	d
ksdtt tddksxtt tddkstt tddkstd S )NZF_hu   FₕZF_ku   FₖZF_lu   FₗZF_mu   FₘZF_nu   FₙZF_pu   FₚZF_su   FₛZF_tu   Fₜr   r   r   r   r   test_missing_in_2X_issue_9047Y  s    r   c                   C   s  t tddkstt tddks(tt tddks<tt tddksPtt td	d
ksdtt tddksxtt tddkstt tddkstt tddkstt tddkstt tddkstt tddkstt tddkstt tddkstt tddks2tt tddksHtt tddks^tt td d ksttt td!d!kstt td"d"kstt td#d$kstt td%d&kstt td'd(kstt td)d(kstt td*d+kstt td,d-ks$tt td.d/ks:tt td0d1ksPtt td2d3ksftt td4d4ks|tt td5d5kstd S )6NZ	Fmathringu   F̊ZFddddotu   F⃜ZFdddotu   F⃛ZFddotu   F̈ZFdotu   ḞZFchecku   F̌ZFbreveu   F̆ZFacuteu   F́ZFgraveu   F̀ZFtildeu   F̃ZFhatu   F̂ZFbaru   F̅ZFvecu   F⃗ZFprimeu   F′ZFprmZFboldZFbmZFcalZFscrZFfrakZFnormu   ‖F‖ZFavgu   ⟨F⟩ZFabsz|F|ZFmagZxvecdotu   x⃗̇ZxDotVecu   ẋ⃗ZxHATNormu	   ‖x̂‖ZxMathring_yCheckPRM__zbreveAbsu   x̊_y̌′__|z̆|Z alphadothat_nVECDOT__tTildePrimeu   α̇̂_n⃗̇__t̃′Zx_dotZx__dotr   r   r   r   r   test_upretty_modifiersd  s>    r   c                  C   sh   ddl m}  t| dddks"tt| ddks6tt| dddd	d
ksRtt|  dksdtd S )Nr   Cycle      z(1 2)z(2)         z
(1 3)(4 5)()) sympy.combinatorics.permutationsr   r   r   r   r   r   r   test_pretty_Cycle  s
    r   c               	   C   s   ddl m}  | dddd}t|dddd	ks2tt|dd
dd	ksHtt|d
dddks^tt|d
d
ddksttt @ | j}d
| _t|dddkstt|d
ddkst|| _W 5 Q R X d S )Nr   )Permutationr   r   r   r   T)Zperm_cyclicr   z
(1 2)(3 4)Fu   ⎛0 1 2 3 4⎞
⎝0 2 1 4 3⎠z/0 1 2 3 4\
\0 2 1 4 3/r   )r   r   r   r   r   Zprint_cyclic)r   p1Zold_print_cyclicr   r   r   test_pretty_Permutation  s(    

r   c            	      C   s  t td d dkstt td d dks4tt} d}d}t | |ksPtt| |ks`ttd } d	}d	}t | |kstt| |kstdt } d
}d}t | |kstt| |ksttd } d}d}t | |kstt| |kstttdddd} d}d}t | |kstt| |ks.tttd  } d}d}t | |ksTtt| |ksftttdd } d}d}t	| dddd|kstt	| dddd|kstttdd } d}d}t | |kstt| |kstdt } d}d}t | |kstt| |ksttdddd} d}d}t | |ksFtt| |ksXttd t d } d}d}d}d}d}d}t | |||fkstt| |||fkstdt } d }d!}d }d!}t | ||fkstt| ||fkstddt  } d"}d#}d$}d%}t | ||fks&tt| ||fks<ttt } d&}d'}t | |ks^tt| |ksptt t } d(}d)}t | |kstt| |ksttd t } d*}d+}d,}d-}t | ||fkstt| ||fkstdt t } d.}d/}d0}d1}d2}d3}t | |||fks*tt| |||fksBtdt td4  } d5}d6}d7}d8}t | ||fksxtt| ||fksttj
 dt  } d9}d:}t | |kstt| |ksttj
dt  } d;}d<}t | |kstt| |ksttj
 dt d  } d=}d>}t | |ks2tt| |ksDttj
dt d  } d?}d@}t | |ksptt| |kstd S )ANr   r   z-1/2      z-13 
----
 22 r   r   z 2
x z1
-
x   1
─
xg      z -1.0
x    Fevaluatez -1.0
2    y 
--
 2
x    y 
──
 2
x r   z	 1/3
x   )r   r   Zroot_notationTz 1  
----
 5/2
x   u    1  
────
 5/2
x   z    x
(-2) z 1
3          2
1 + x + x  2        
x  + x + 1z 2        
x  + 1 + x1 - x-x + 11 - 2*x-2*x + 1u	   1 - 2⋅xu
   -2⋅x + 1zx
-
yu   x
─
y-x 
---
 y    -x 
───
 y z2 + x
-----
  y  zx + 2
-----
  y  u   2 + x
─────
  y  u   x + 2
─────
  y  z	y*(1 + x)z	(1 + x)*yz	y*(x + 1)u   y⋅(1 + x)u   (1 + x)⋅yu   y⋅(x + 1)
   z-5*x  
------
10 + xz-5*x  
------
x + 10u"   -5⋅x  
──────
10 + xu"   -5⋅x  
──────
x + 10z
-3*x - 1/2u   -3⋅x - 1/2z	1/2 - 3*xu   1/2 - 3⋅xz  3*x   1
- --- - -
   2    2u'     3⋅x   1
- ─── - ─
   2    2z1   3*x
- - ---
2    2 u!   1   3⋅x
─ - ───
2    2 )r   r   r   r   r   xr   r   yr   ZHalf)	r   	ascii_str	ucode_strascii_str_1ascii_str_2Zascii_str_3ucode_str_1ucode_str_2ucode_str_3r   r   r   test_pretty_basic  s   


r  c                  C   s(  t  t } d}d}t| |ks"tt| |ks2tt  t t } d}d}t| |ksXtt| |kshtt d t } d}d}t| |kstt| |kstt d  t } d}d	}t| |kstt| |kstt  tt  } d
}d}t| |kstt| |ks
tt td  } d}d}t| |ks2tt| |ksDttt t  } d}d}t| |ksltt| |ks~tdtd  } d}d}t| |kstt| |kstdtd  } d}d}t| |kstt| |ksttdd} d}d}t| |kstt| |ks$td S )Nr   r   z-x*z 
-----
  y  u   -x⋅z 
─────
  y  r   z 2
x 
--
y u    2
x 
──
y z  2 
-x  
----
 y  u     2 
-x  
────
 y  z-x 
---
y*zu   -x 
───
y⋅zz-a 
---
  2
 y u   -a 
───
  2
 y z -a 
 ---
  b 
y   u    -a 
 ───
  b 
y   z-1 
---
  2
 y u   -1 
───
  2
 y iz-10 
----
  2 
 b  u   -10 
────
  2 
 b  i8%   z-200 
-----
  37 u   -200 
─────
  37 )	r   r   r   r   r   zabr   r   r   r  r   r   r   test_negative_fractionsD  s    

r  c               
   C   s  t dddd} t| dkstt| dks.tt dddd} t| dksLtt| dks\tt dddd} t| d	ksztt| d
kstt ddddd} t| dkstt| dkstt dddd} t| dkstt| dksttdddd} t| dkstt| dkstt ddddd} t| dks<tt| dksNttddddd} t| dksptt| dkstt dddd} t| dkstt| dkstt dtdd} t| dkstt| dkstt ddddtdd} t| dkstt| dkstt dddd} t| dks>tt| dksPtt dddddttdd} t| d ksztt| d!kstt ddddt dttdd} t| d"kstt| d#kstt tddtd$d%dd} t| d&kstt| d'ks
tt tt tdddd} t| d(ks4tt| d)ksFtt tddtt dd} t| d*ksptt| d+kstt t	j
tt dd} t| d,kstt| d-kstt tt t	j
dd} t| d.kstt| d/kstt tddtt t	j
tt dd} t| d0ks&tt| d1ks8tt tt tddt	j
tt dd} t| d2ksltt| d3ks~tt tt tddtddtd$d4dd} t| d5kstt| d6kstt tddtt t	j
tt dd} t| d7kstt| d8kstd S )9Nr   r   Fr   z0*1u   0⋅1z1*0u   1⋅0z1*1u   1⋅1z1*1*1u	   1⋅1⋅1r   z1*2u   1⋅2z0 + 1z1*1*2u	   1⋅1⋅2z	0 + 0 + 1r  z1*-1u   1⋅-1g      ?z1.0*xu   1.0⋅xr   z	1*1*2*3*xu   1⋅1⋅2⋅3⋅xz-1*1u   -1⋅1r   z4*3*2*1*0*y*xu   4⋅3⋅2⋅1⋅0⋅y⋅xz4*3*2*(z + 1)*0*y*xu   4⋅3⋅2⋅(z + 1)⋅0⋅y⋅xr      z2/3*5/7u	   2/3⋅5/7z(x + y)*1/2u   (x + y)⋅1/2zx + y
-----
  2  u   x + y
─────
  2  z	1*(x + y)u   1⋅(x + y)z	(x - y)*1u   (x - y)⋅1z1/2*(x - y)*1*(x + y)u   1/2⋅(x - y)⋅1⋅(x + y)z(x + y)*3/4*1*(y - z)u   (x + y)⋅3/4⋅1⋅(y - z)   z(x + y)*1*3/4*5/6u   (x + y)⋅1⋅3/4⋅5/6z3/4*(x + y)*1*(y - z)u   3/4⋅(x + y)⋅1⋅(y - z))r   r   r   r   r   r   r   r
  r   r   ZOner   r   r   r   test_Mul  s    ""("r  c                   C   s   t t d  t dtd  d  t d t d   dksBttt d  t dtd  d  t d t d   dkstd S )Nr   r   zO         2           /         ___    \
- (5 - y)  + (x - 5)*\-x - 2*\/ 2  + 5/uO            2                          
- (5 - y)  + (x - 5)⋅(-x - 2⋅√2 + 5))r   r   rr   r   r   r   r   r   r   r   test_issue_5524/  s    88r  c                  C   s  t td t d dddks tt td t d dddks@tt dt dddksXtt dt ddd	ksptt ddt  ddd
kstt ddt  dddkstdtd  td  td  td  } t | d ddkstt | dddkstt | dddks
tttd d  td d  ttd  }d}d}t |d d|ksPtt|d d|ksftt |dd|ks|tt|dd|kstt |dd|kstt|dd|kstd S )Nr   r   lexr   r   zrev-lexr   r   r   r   r   r   r   z'   4    2    3    2
2*x  - x  + y  + y z' 2    3    2      4
y  + y  - x  + 2*x r  r   x   zS     3     5        
    x     x     / 6\
x - -- + --- + O\x /
    6    120        ue        3     5        
    x     x     ⎛ 6⎞
x - ── + ─── + O⎝x ⎠
    6    120        )r   r   r   r   rE   r   )r   r   r   r  r   r   r   test_pretty_ordering<  s>    $



(r  c                   C   s6   t ttt  krdks"n tttdks2td S )Nr      γ)r   r   strr   r   r   r   r   r   test_EulerGammav  s    "r  c                   C   s6   t ttt  krdks"n tttdks2td S )Nr   u   φ)r   r   r  r   r   r   r   r   r   test_GoldenRatioz  s    "r  c                   C   s&   t ttt  krdks"n td S )NG)r   r   r   r   r   r   r   r   test_Catalan  s    r  c                  C   sP  t tt} d}d}t| |ks"tt| |ks2tttt} d}d}t| |ksTtt| |ksdtttt} d}d}t| |kstt| |kstttt} d}d}t| |kstt| |kstt	tt} d}d}t| |kstt| |kstt
ttd  td	 } d
}d}d}d}t| ||fks6tt| ||fksLtd S )Nzx = yzx < yzx > yzx <= yu   x ≤ yzx >= yu   x ≥ yr   r   z#  x       2
----- != y 
1 + y      z#  x       2
----- != y 
y + 1      u,     x      2
───── ≠ y 
1 + y     u,     x      2
───── ≠ y 
y + 1     )r   r   r   r   r   r   r   r   r   r   r   )r   r   r  r  r  r  r  r   r   r   test_pretty_relational  s\    




r  c                  C   s6   t tt} d}d}t| |ks"tt| |ks2td S )Nzx := y)rQ   r   r   r   r   r   r  r   r   r   test_Assignment  s    
r  c                  C   s   t tt} d}d}t| |ks"tt| |ks2tttt} d}d}t| |ksTtt| |ksdtttt} d}d}t| |kstt| |kstttt} d}d}t| |kstt| |kstt	tt} d}d}t| |kstt| |kstd S )Nzx += yzx -= yzx *= yzx /= yzx %= y)
rR   r   r   r   r   r   rS   rT   rU   rV   r  r   r   r   test_AugmentedAssignment  sF    




r   c                  C   s   t td  } d}d}t| |ks$tt| |ks4tt tdd ttdd  } d}d}t| |kshtt| |ksxtttd ttd  } d	}d
}t| |kstt| |kstd S )Nr   r   r   r   r   r   z 3/2
y   
----
 5/2
x   u     3/2
y   
────
 5/2
x   z'   3   
sin (x)
-------
   2   
tan (x)u5      3   
sin (x)
───────
   2   
tan (x))r   r   r   r   r   r   rq   rt   r  r   r   r   test_pretty_rational&  s*    		r!  c            
      C   s\  dt  tt  } d}d}d}d}d}t| ||fks8tt| |||fksNttt } d}d}t| |ksntt| |ks~ttt t d d	  } d
}d}d}d}t| ||fkstt| ||fksttd	ttt   } d}d}t| |kstt| |ksttddd}t|} d}d}t| |ks6tt| |ksHttd| } d}d}t| |ksntt| |kstttt|} d}d}t| |kstt| |kstt|d	 } d}d}d}d}t| ||fkstt| ||fkstt	|} d}d}t| |ks&tt| |ks8tt	d| } d}d}t| |ks^tt| |kspttddd}t
|} d}d}t| |kstt| |kstt
d| } d}d}t| |kstt| |kstt
t
t
|} d}d}t| |kstt| |ks$tt
|d	 } d }d!}d }d!}t| ||fksVtt| ||fksltdt|t } d"}d#}t| |kstt| |kstdtd| t } d$}d%}t| |kstt| |kstdt|d t } d&}d'}t| |kstt| |ks"tt|} d(}d(}t| |ksDtt| |ksVtt|} d(}d(}t| |ksxtt| |kstt|} d)}d)}t| |kstt| |kstt|} d)}d)}t| |kstt| |kstt|t } d*}d*}t| |kstt| |ks(tt|} d+}d+}t| |ksJtt| |ks\tt|} d,}d,}t| |ks~tt| |kstt|} d-}d-}t| |kstt| |kstt|} d.}d/}t| |kstt| |kstt|t } d0}d1}t| |kstt| |ks.ttt tt} d2}d2}t| |ksTtt| |ksfttt tt} d3}d3}t| |kstt| |ksttt tt} d4}d4}t| |kstt| |ksttt tt} d5}d5}t| |kstt| |ksttt } d6}d6}t| |ks0tt| |ksBttd7}	t|	t d	 } d8}d9}d8}d9}t| ||fkstt| ||fkst|	t } d:}d:}t| |kstt| |kst|	t t} d;}d;}t| |kstt| |ks t|	t td	  t} d<}d=}d>}d?}t| ||fks8tt| ||fksNt|	t t t t t t      } d@}dA}t| |kstt| |ksttt d } dB}dB}t| |kstt| |ksttttt  } dC}dD}t| |kstt| |k	s
tttttt  } dE}dF}t| |k	s8tt| |k	sJtt|	d	t|	t  } dG}dH}dI}dJ}t| ||fk	stt| ||fk	st|	t td	  t} d<}d=}d>}d?}t| ||fk	stt| ||fk	sttd	ttt   } dK}dL}t| |k
stt| |k
s,tt d	tt t   } dM}dN}t| |k
sZtt| |k
sltt!|} dO}dO}t| |k
stt| |k
stt!d	d	d	d	d	|     } dP}dQ}t| |k
stt| |k
stt!|t } dR}dR}t| |kstt| |kstt!|t d } dS}dT}t| |ksFtt| |ksXtdUS )Vz>Tests for Abs, conjugate, exp, function braces, and factorial.r   z       x
2*x + e z x      
e  + 2*xu          x
2⋅x + ℯ u    x     
ℯ + 2⋅xu    x      
ℯ  + 2⋅xz|x|u   │x│r   z#|  x   |
|------|
|     2|
|1 + x |z#|  x   |
|------|
| 2    |
|x  + 1|u?   │  x   │
│──────│
│     2│
│1 + x │u?   │  x   │
│──────│
│ 2    │
│x  + 1│z    1    
---------
|y - |x||u7       1    
─────────
│y - │x││nTintegerzn!z(2*n)!u   (2⋅n)!z((n!)!)!z(1 + n)!z(n + 1)!z!nz!(2*n)u   !(2⋅n)zn!!z(2*n)!!u	   (2⋅n)!!z((n!!)!!)!!z	(1 + n)!!z	(n + 1)!!z  /n\
2*| |
  \k/u     ⎛n⎞
2⋅⎜ ⎟
  ⎝k⎠z  /2*n\
2*|   |
  \ k /u'     ⎛2⋅n⎞
2⋅⎜   ⎟
  ⎝ k ⎠z  / 2\
  |n |
2*|  |
  \k /u-     ⎛ 2⎞
  ⎜n ⎟
2⋅⎜  ⎟
  ⎝k ⎠zC 
 nzB 
 nzB (x)
 n   zF 
 nzL 
 nzT 
 nzstieltjes 
         nu   γ 
 nzstieltjes (x)
         n   u   γ (x)
 n   z
C(x, y, z)z
S(x, y, z)zC'(x, y, z)zS'(x, y, z)z_
xr   z________
f(1 + x)z________
f(x + 1)zf(x)zf(x, y)z# /  x     \
f|-----, y|
 \1 + y   /z# /  x     \
f|-----, y|
 \y + 1   /u9    ⎛  x     ⎞
f⎜─────, y⎟
 ⎝1 + y   ⎠u9    ⎛  x     ⎞
f⎜─────, y⎟
 ⎝y + 1   ⎠zk / / / / / x\\\\\
 | | | | \x /||||
 | | | \x    /|||
 | | \x       /||
 | \x          /|
f\x             /u    ⎛ ⎛ ⎛ ⎛ ⎛ x⎞⎞⎞⎞⎞
 ⎜ ⎜ ⎜ ⎜ ⎝x ⎠⎟⎟⎟⎟
 ⎜ ⎜ ⎜ ⎝x    ⎠⎟⎟⎟
 ⎜ ⎜ ⎝x       ⎠⎟⎟
 ⎜ ⎝x          ⎠⎟
f⎝x             ⎠z   2   
sin (x)z_     _
a - I*bu   _     _
a - ⅈ⋅bz _     _
 a - I*b
e       u     _     _
 a - ⅈ⋅b
ℯ       z#___________
 /    ____\
f\1 + f(x)/z#___________
 /____    \
f\f(x) + 1/u+   ___________
 ⎛    ____⎞
f⎝1 + f(x)⎠u+   ___________
 ⎛____    ⎞
f⎝f(x) + 1⎠z;     /     1      \
floor|------------|
     \y - floor(x)/u;   ⎢   1   ⎥
⎢───────⎥
⎣y - ⌊x⌋⎦zG       /      1       \
ceiling|--------------|
       \y - ceiling(x)/u;   ⎡   1   ⎤
⎢───────⎥
⎢y - ⌈x⌉⎥zE 
 nzWE         
     1    
 ---------
       1  
 1 + -----
         1
     1 + -
         nuu   E         
     1    
 ─────────
       1  
 1 + ─────
         1
     1 + ─
         nzE (x)
 n   z  /x\
E |-|
 n\2/u     ⎛x⎞
E ⎜─⎟
 n⎝2⎠N)"r   rh   r   r   r   rY   r   r   rj   rs   rk   rc   krd   r|   r}   r~   r   r   r   r   r
  r   r   r   r   r	   rq   r  r  r   rl   re   rg   )
r   r  r  r  r  r  r   r  r"  r   r   r   r   test_pretty_functionsb  s   



	
r&  c                  C   s  t d} d}d}t| |ks tt| |ks0tdtdd } d}d}t| |ksVtt| |ksftdtdd } d	}d
}t| |kstt| |kstt td d } d}d}t| |kstt| |kstdt d tdd } d}d}t| |kstt| |kstddt  } d}d}t| |ks<tt| |ksNtt dt } d}d}t| |ksttt| |kstddtd  dt   tdd dttdd  t dtd    } d}d}t| |kstt| |kstd S )Nr   z  ___
\/ 2    √2r   r   z3 ___
\/ 2 u   3 ___
╲╱ 2 i  z1000___
  \/ 2 u   1000___
  ╲╱ 2 z#   ________
  /  2     
\/  x  + 1 u)      ________
  ╱  2     
╲╱  x  + 1 r   z,   ___________
3 /       ___ 
\/  1 + \/ 5  u   3 ________
╲╱ 1 + √5 zx ___
\/ 2 u   x ___
╲╱ 2 z  ________
\/ 2 + pi u     _______
╲╱ 2 + π r   z     ____________              
    /      2        1000___    
   /      x  + 1      \/ x  + 1
4 /   2 + ------  + -----------
\/        x + 2        ________
                      /  2     
                    \/  x  + 3 u       ____________              
    ╱      2        1000___    
   ╱      x  + 1      ╲╱ x  + 1
4 ╱   2 + ──────  + ───────────
╲╱        x + 2        ________
                      ╱  2     
                    ╲╱  x  + 3 )rr   r   r   r   r   r   r   r  r   r   r   test_pretty_sqrt`  s~    
  
r(  c                  C   s@   t d} d}d}t| ddd|ks&tt| ddd|ks<td S )Nr   u     ___
╲╱ 2 r'  TF)r   Zuse_unicode_sqrt_char)rr   r   r   )r   
ucode_str1
ucode_str2r   r   r   test_pretty_sqrt_char_knob  s    r+  c                  C   s$   t td} d}t| |ks td S )NZC1u     ____
╲╱ C₁ )rr   r   r   r   )r   r  r   r   r   (test_pretty_sqrt_longsymbol_no_sqrt_char  s    r,  c                  C   sB   t d\} }t| |}d}d}t||ks.tt||ks>td S )Nzx, yz	d   
 x,yu
   δ   
 x,y)r   r]   r   r   r   r   r   r   r   r  r   r   r   test_pretty_KroneckerDelta  s    
r.  c                  C   s   t d\} }}}t dtd}t|| d d | |d |f}d}d}t|| d d | |d |f|d|f}d	}d
}t||kstt||kstd S )Nzn m k lr   clsr   r   u       l           
─┬──────┬─      
 │      │   ⎛ 2⎞
 │      │   ⎜n ⎟
 │      │  f⎜──⎟
 │      │   ⎝9 ⎠
 │      │       
       2        
  n = k         z    l           
__________      
 |      |   / 2\
 |      |   |n |
 |      |  f|--|
 |      |   \9 /
 |      |       
       2        
  n = k         r   u_      m          l           
─┬──────┬─ ─┬──────┬─      
 │      │   │      │   ⎛ 2⎞
 │      │   │      │   ⎜n ⎟
 │      │   │      │  f⎜──⎟
 │      │   │      │   ⎝9 ⎠
 │      │   │      │       
  l = 1           2        
             n = k         z    m          l           
__________ __________      
 |      |   |      |   / 2\
 |      |   |      |   |n |
 |      |   |      |  f|--|
 |      |   |      |   \9 /
 |      |   |      |       
  l = 1           2        
             n = k         )r   r	   r   r   r   r   )r"  mr%  lr   r   unicode_strr   r   r   r   test_pretty_product		  s     (r4  c                  C   s  t tt} t| dkstt| dks*tt ttd } t| dksHtt| dksXtt ttd } d}d}t| |ks~tt| |kstt ttd d } d	}d
}t| |kstt| |kstt ttft} d}d}t| |kstt| |kstt ttftd } d}d}t| |ks*tt| |ks<tt ttfftd } d}d}t| |ksjtt| |ks|td S )Nzx -> xu   x ↦ xr   z
x -> x + 1u   x ↦ x + 1r   z      2
x -> x u        2
x ↦ x z          2
/      2\ 
\x -> x / u'           2
⎛     2⎞ 
⎝x ↦ x ⎠ z(x, y) -> xu   (x, y) ↦ xz           2
(x, y) -> x u             2
(x, y) ↦ x z              2
((x, y),) -> x u                2
((x, y),) ↦ x )r
   r   r   r   r   r   r  r   r   r   test_pretty_LambdaB	  sN    
r5  c                  C   sp   t td td t} t| dks$tt dt d dt t}t|dksLtt ttd t}t|dksltd S )Nr   u   s - 1
─────
s + 1r   r   u'   2⋅s + 1
───────
 3 - p u     p  
─────
p + 1)r   sr   r   p)tf1tf2tf3r   r   r   test_pretty_TransferFunction	  s    r;  c                  C   s  t tt tdt  t} t tt tt t}t td t tt t}t ddt}t| |g||gg}t|g| gg}t| | | g|| |gg}t| |g|| g| |  gg}t| |  g|| g| |gg}d}	d}
d}d}d}d}tt| ||	ksttt| |  |
ks ttt|| t|  ||ksBtttt| |t|||ksfttt|||ks~tttt	|| |||kstd S )	Nr   r   u             ⎛ 2    ⎞
⎛ x + y ⎞ ⎜x  + y⎟
⎜───────⎟⋅⎜──────⎟
⎝x - 2⋅y⎠ ⎝-x + y⎠un   ⎛-x + y⎞ ⎛ -x - y⎞
⎜──────⎟⋅⎜───────⎟
⎝x + y ⎠ ⎝x - 2⋅y⎠u   ⎛ 2    ⎞                            
⎜x  + y⎟ ⎛ x + y ⎞ ⎛ -x - y   x - y⎞
⎜──────⎟⋅⎜───────⎟⋅⎜─────── + ─────⎟
⎝-x + y⎠ ⎝x - 2⋅y⎠ ⎝x - 2⋅y   x + y⎠u                     ⎛         2    ⎞
⎛ x + y    x - y⎞ ⎜x - y   x  + y⎟
⎜─────── + ─────⎟⋅⎜───── + ──────⎟
⎝x - 2⋅y   x + y⎠ ⎝x + y   -x + y⎠u]  ⎡ x + y   x - y⎤  ⎡ 2    ⎤ 
⎢───────  ─────⎥  ⎢x  + y⎥ 
⎢x - 2⋅y  x + y⎥  ⎢──────⎥ 
⎢              ⎥  ⎢-x + y⎥ 
⎢ 2            ⎥ ⋅⎢      ⎥ 
⎢x  + y     2  ⎥  ⎢ -2   ⎥ 
⎢──────     ─  ⎥  ⎢ ───  ⎥ 
⎣-x + y     3  ⎦τ ⎣  3   ⎦τu                                                 ⎛⎡ x + y    x - y ⎤    ⎡ x - y    x + y ⎤ ⎞
                                               ⎜⎢───────   ───── ⎥    ⎢ ─────   ───────⎥ ⎟
⎡ x + y   x - y⎤  ⎡                    2    ⎤  ⎜⎢x - 2⋅y   x + y ⎥    ⎢ x + y   x - 2⋅y⎥ ⎟
⎢───────  ─────⎥  ⎢ x + y   -x + y  - x  - y⎥  ⎜⎢                ⎥    ⎢                ⎥ ⎟
⎢x - 2⋅y  x + y⎥  ⎢───────  ──────  ────────⎥  ⎜⎢ 2              ⎥    ⎢          2     ⎥ ⎟
⎢              ⎥  ⎢x - 2⋅y  x + y    -x + y ⎥  ⎜⎢x  + y     -2   ⎥    ⎢  -2     x  + y ⎥ ⎟
⎢ 2            ⎥ ⋅⎢                         ⎥ ⋅⎜⎢──────     ───  ⎥  + ⎢  ───    ────── ⎥ ⎟
⎢x  + y     2  ⎥  ⎢ 2                       ⎥  ⎜⎢-x + y      3   ⎥    ⎢   3     -x + y ⎥ ⎟
⎢──────     ─  ⎥  ⎢x  + y    -2      x - y  ⎥  ⎜⎢                ⎥    ⎢                ⎥ ⎟
⎣-x + y     3  ⎦τ ⎢──────    ───     ─────  ⎥  ⎜⎢-x + y    -x - y⎥    ⎢ -x - y  -x + y ⎥ ⎟
                  ⎣-x + y     3      x + y  ⎦τ ⎜⎢──────   ───────⎥    ⎢───────  ────── ⎥ ⎟
                                               ⎝⎣x + y    x - 2⋅y⎦τ   ⎣x - 2⋅y  x + y  ⎦τ⎠)
r   r   r   r   r   r   r   r   r   r   )r8  r9  r:  tf4tfm1tfm2tfm3tfm4Ztfm5	expected1	expected2	expected3	expected4	expected5	expected6r   r   r   test_pretty_Series	  s6      "$rG  c                  C   s  t tt tdt  t} t tt tt t}t td t tt t}t td t td t t}t| |g|| g| |  gg}t| |  g|| g| |gg}t|  |g| |g|| gg}t|  | g| | gg}d}d}	d}
d}d}d}tt| ||ks
ttt| |  |	ks&ttt|| t|  ||
ksHtttt| |t|||kslttt| | ||kstttt	|| ||kstd S )	Nr   r   uI    x + y    x - y
─────── + ─────
x - 2⋅y   x + yuN   -x + y    -x - y
────── + ───────
x + y    x - 2⋅yu    2                                  
x  + y    x + y    ⎛ -x - y⎞ ⎛x - y⎞
────── + ─────── + ⎜───────⎟⋅⎜─────⎟
-x + y   x - 2⋅y   ⎝x - 2⋅y⎠ ⎝x + y⎠u                               ⎛ 2    ⎞
⎛ x + y ⎞ ⎛x - y⎞   ⎛x - y⎞ ⎜x  + y⎟
⎜───────⎟⋅⎜─────⎟ + ⎜─────⎟⋅⎜──────⎟
⎝x - 2⋅y⎠ ⎝x + y⎠   ⎝x + y⎠ ⎝-x + y⎠u  ⎡ x + y   -x + y ⎤    ⎡ x - y    x + y ⎤    ⎡ x + y    x - y ⎤ 
⎢───────  ────── ⎥    ⎢ ─────   ───────⎥    ⎢───────   ───── ⎥ 
⎢x - 2⋅y  x + y  ⎥    ⎢ x + y   x - 2⋅y⎥    ⎢x - 2⋅y   x + y ⎥ 
⎢                ⎥    ⎢                ⎥    ⎢                ⎥ 
⎢ 2            2 ⎥    ⎢     2    2     ⎥    ⎢ 2            2 ⎥ 
⎢x  + y   x - y  ⎥    ⎢x - y    x  + y ⎥    ⎢x  + y   x - y  ⎥ 
⎢──────   ────── ⎥  + ⎢──────   ────── ⎥  + ⎢──────   ────── ⎥ 
⎢-x + y    3     ⎥    ⎢ 3       -x + y ⎥    ⎢-x + y    3     ⎥ 
⎢         x  + x ⎥    ⎢x  + x          ⎥    ⎢         x  + x ⎥ 
⎢                ⎥    ⎢                ⎥    ⎢                ⎥ 
⎢-x + y    -x - y⎥    ⎢ -x - y  -x + y ⎥    ⎢-x + y    -x - y⎥ 
⎢──────   ───────⎥    ⎢───────  ────── ⎥    ⎢──────   ───────⎥ 
⎣x + y    x - 2⋅y⎦τ   ⎣x - 2⋅y  x + y  ⎦τ   ⎣x + y    x - 2⋅y⎦τu  ⎡ x - y    x + y ⎤                        ⎡-x + y    -x - y ⎤ 
⎢ ─────   ───────⎥                        ⎢──────   ─────── ⎥ 
⎢ x + y   x - 2⋅y⎥  ⎡ -x - y   -x + y⎤    ⎢x + y    x - 2⋅y ⎥ 
⎢                ⎥  ⎢───────   ──────⎥    ⎢                 ⎥ 
⎢     2    2     ⎥  ⎢x - 2⋅y   x + y ⎥    ⎢      2     2    ⎥ 
⎢x - y    x  + y ⎥  ⎢                ⎥    ⎢-x + y   - x  - y⎥ 
⎢──────   ────── ⎥ ⋅⎢   2           2⎥  + ⎢───────  ────────⎥ 
⎢ 3       -x + y ⎥  ⎢- x  - y  x - y ⎥    ⎢  3       -x + y ⎥ 
⎢x  + x          ⎥  ⎢────────  ──────⎥    ⎢ x  + x          ⎥ 
⎢                ⎥  ⎢ -x + y    3    ⎥    ⎢                 ⎥ 
⎢ -x - y  -x + y ⎥  ⎣          x  + x⎦τ   ⎢ x + y    x - y  ⎥ 
⎢───────  ────── ⎥                        ⎢───────   ─────  ⎥ 
⎣x - 2⋅y  x + y  ⎦τ                       ⎣x - 2⋅y   x + y  ⎦τ)
r   r   r   r   r   r   r   r   r   r   )r8  r9  r:  r<  r=  r>  r?  r@  rA  rB  rC  rD  rE  rF  r   r   r   test_pretty_Parallel	  s4      "$rH  c                  C   s  t ddt} t tt tdt  t}t tt tt t}t td dt  d td t}t tdtd   tt t}t dt tt t}t ddt}d}d}d}	d}
d	}d
}d}d}d}d}tt| ||ksttt| || | |ksttt||| | |	ksttt|| | |
ks,ttt|| ||ksHttt|| || |kshttt|||ksttt|| |ksttt|| |d|ksttt|| d|kstd S )Nr   r   r   r   u        ⎛1⎞     
     ⎜─⎟     
     ⎝1⎠     
─────────────
1   ⎛ x + y ⎞
─ + ⎜───────⎟
1   ⎝x - 2⋅y⎠u                  ⎛1⎞                 
                ⎜─⎟                 
                ⎝1⎠                 
────────────────────────────────────
                      ⎛ 2          ⎞
1   ⎛x - y⎞ ⎛ x + y ⎞ ⎜y  - 2⋅y + 1⎟
─ + ⎜─────⎟⋅⎜───────⎟⋅⎜────────────⎟
1   ⎝x + y⎠ ⎝x - 2⋅y⎠ ⎝   y + 5    ⎠uU                   ⎛ x + y ⎞                  
                 ⎜───────⎟                  
                 ⎝x - 2⋅y⎠                  
────────────────────────────────────────────
                      ⎛ 2          ⎞        
1   ⎛ x + y ⎞ ⎛x - y⎞ ⎜y  - 2⋅y + 1⎟ ⎛1 - x⎞
─ + ⎜───────⎟⋅⎜─────⎟⋅⎜────────────⎟⋅⎜─────⎟
1   ⎝x - 2⋅y⎠ ⎝x + y⎠ ⎝   y + 5    ⎠ ⎝x - y⎠u-    ⎛ x + y ⎞ ⎛x - y⎞  
  ⎜───────⎟⋅⎜─────⎟  
  ⎝x - 2⋅y⎠ ⎝x + y⎠  
─────────────────────
1   ⎛ x + y ⎞ ⎛x - y⎞
─ + ⎜───────⎟⋅⎜─────⎟
1   ⎝x - 2⋅y⎠ ⎝x + y⎠u        ⎛ x + y ⎞ ⎛x - y⎞      
      ⎜───────⎟⋅⎜─────⎟      
      ⎝x - 2⋅y⎠ ⎝x + y⎠      
─────────────────────────────
1   ⎛ x + y ⎞ ⎛x - y⎞ ⎛1 - x⎞
─ + ⎜───────⎟⋅⎜─────⎟⋅⎜─────⎟
1   ⎝x - 2⋅y⎠ ⎝x + y⎠ ⎝x - y⎠u             ⎛ 2          ⎞                   
           ⎜y  - 2⋅y + 1⎟ ⎛1 - x⎞           
           ⎜────────────⎟⋅⎜─────⎟           
           ⎝   y + 5    ⎠ ⎝x - y⎠           
────────────────────────────────────────────
    ⎛ 2          ⎞                          
1   ⎜y  - 2⋅y + 1⎟ ⎛1 - x⎞ ⎛x - y⎞ ⎛ x + y ⎞
─ + ⎜────────────⎟⋅⎜─────⎟⋅⎜─────⎟⋅⎜───────⎟
1   ⎝   y + 5    ⎠ ⎝x - y⎠ ⎝x + y⎠ ⎝x - 2⋅y⎠u$      ⎛       3⎞    
    ⎜x - 2⋅y ⎟    
    ⎜────────⎟    
    ⎝ x + y  ⎠    
──────────────────
    ⎛       3⎞    
1   ⎜x - 2⋅y ⎟ ⎛2⎞
─ + ⎜────────⎟⋅⎜─⎟
1   ⎝ x + y  ⎠ ⎝2⎠u     ⎛1 - x⎞  
  ⎜─────⎟  
  ⎝x - y⎠  
───────────
1   ⎛1 - x⎞
─ + ⎜─────⎟
1   ⎝x - y⎠u        ⎛ x + y ⎞ ⎛x - y⎞      
      ⎜───────⎟⋅⎜─────⎟      
      ⎝x - 2⋅y⎠ ⎝x + y⎠      
─────────────────────────────
1   ⎛ x + y ⎞ ⎛x - y⎞ ⎛1 - x⎞
─ - ⎜───────⎟⋅⎜─────⎟⋅⎜─────⎟
1   ⎝x - 2⋅y⎠ ⎝x + y⎠ ⎝x - y⎠u     ⎛1 - x⎞  
  ⎜─────⎟  
  ⎝x - y⎠  
───────────
1   ⎛1 - x⎞
─ - ⎜─────⎟
1   ⎝x - y⎠)r   r   r   r   r   r   )tfr8  r9  r:  r<  tf5tf6rA  rB  rC  rD  rE  rF  Z	expected7Z	expected8Z	expected9Z
expected10r   r   r   test_pretty_Feedback.
  sJ     
  rL  c                  C   s   t tt tdt  t} t tt tt t}t| |g|| gg}t|| g| |gg}t| | g||gg}d}d}tt||d|ksttt|| ||kstd S )Nr   u  ⎛    ⎡ x + y    x - y ⎤  ⎡ x - y    x + y ⎤ ⎞-1   ⎡ x + y    x - y ⎤ 
⎜    ⎢───────   ───── ⎥  ⎢ ─────   ───────⎥ ⎟     ⎢───────   ───── ⎥ 
⎜    ⎢x - 2⋅y   x + y ⎥  ⎢ x + y   x - 2⋅y⎥ ⎟     ⎢x - 2⋅y   x + y ⎥ 
⎜I - ⎢                ⎥ ⋅⎢                ⎥ ⎟   ⋅ ⎢                ⎥ 
⎜    ⎢ x - y    x + y ⎥  ⎢ x + y    x - y ⎥ ⎟     ⎢ x - y    x + y ⎥ 
⎜    ⎢ ─────   ───────⎥  ⎢───────   ───── ⎥ ⎟     ⎢ ─────   ───────⎥ 
⎝    ⎣ x + y   x - 2⋅y⎦τ ⎣x - 2⋅y   x + y ⎦τ⎠     ⎣ x + y   x - 2⋅y⎦τu  ⎛    ⎡ x + y    x - y ⎤  ⎡ x - y    x + y ⎤  ⎡ x + y    x + y ⎤ ⎞-1   ⎡ x + y    x - y ⎤  ⎡ x - y    x + y ⎤ 
⎜    ⎢───────   ───── ⎥  ⎢ ─────   ───────⎥  ⎢───────  ───────⎥ ⎟     ⎢───────   ───── ⎥  ⎢ ─────   ───────⎥ 
⎜    ⎢x - 2⋅y   x + y ⎥  ⎢ x + y   x - 2⋅y⎥  ⎢x - 2⋅y  x - 2⋅y⎥ ⎟     ⎢x - 2⋅y   x + y ⎥  ⎢ x + y   x - 2⋅y⎥ 
⎜I + ⎢                ⎥ ⋅⎢                ⎥ ⋅⎢                ⎥ ⎟   ⋅ ⎢                ⎥ ⋅⎢                ⎥ 
⎜    ⎢ x - y    x + y ⎥  ⎢ x + y    x - y ⎥  ⎢ x - y    x - y ⎥ ⎟     ⎢ x - y    x + y ⎥  ⎢ x + y    x - y ⎥ 
⎜    ⎢ ─────   ───────⎥  ⎢───────   ───── ⎥  ⎢ ─────    ───── ⎥ ⎟     ⎢ ─────   ───────⎥  ⎢───────   ───── ⎥ 
⎝    ⎣ x + y   x - 2⋅y⎦τ ⎣x - 2⋅y   x + y ⎦τ ⎣ x + y    x + y ⎦τ⎠     ⎣ x + y   x - 2⋅y⎦τ ⎣x - 2⋅y   x + y ⎦τr   )r   r   r   r   r   r   r   )r8  r9  Ztfm_1Ztfm_2Ztfm_3rA  rB  r   r   r   test_pretty_MIMOFeedback
  s    rM  c                  C   s`  t tt tdt  t} t tt tt t}t td dt  d td t}t ttd t d t}t dt tt t}t ddt}d}d}d}d}	d}
tt| g|gg|ksttt| g|g| gg|ksttt| |g||g||gg|ksttt|| |g| | | gg|	ks(tttt|| | |gt||| | gg|
ks\td S )	Nr   r   r   u   ⎡ x + y ⎤ 
⎢───────⎥ 
⎢x - 2⋅y⎥ 
⎢       ⎥ 
⎢ x - y ⎥ 
⎢ ───── ⎥ 
⎣ x + y ⎦τu@  ⎡    x + y     ⎤ 
⎢   ───────    ⎥ 
⎢   x - 2⋅y    ⎥ 
⎢              ⎥ 
⎢    x - y     ⎥ 
⎢    ─────     ⎥ 
⎢    x + y     ⎥ 
⎢              ⎥ 
⎢   2          ⎥ 
⎢- y  + 2⋅y - 1⎥ 
⎢──────────────⎥ 
⎣    y + 5     ⎦τu  ⎡   x + y        x - y   ⎤ 
⎢  ───────       ─────   ⎥ 
⎢  x - 2⋅y       x + y   ⎥ 
⎢                        ⎥ 
⎢ 2                      ⎥ 
⎢y  - 2⋅y + 1      y     ⎥ 
⎢────────────  ──────────⎥ 
⎢   y + 5       2        ⎥ 
⎢              x  + x + 1⎥ 
⎢                        ⎥ 
⎢   1 - x          2     ⎥ 
⎢   ─────          ─     ⎥ 
⎣   x - y          2     ⎦τu  ⎡    x - y        x + y       y     ⎤ 
⎢    ─────       ───────  ──────────⎥ 
⎢    x + y       x - 2⋅y   2        ⎥ 
⎢                         x  + x + 1⎥ 
⎢                                   ⎥ 
⎢   2                               ⎥ 
⎢- y  + 2⋅y - 1   x - 1      -2     ⎥ 
⎢──────────────   ─────      ───    ⎥ 
⎣    y + 5        x - y       2     ⎦τu  ⎡ x + y  x - y   x + y       y     ⎤ 
⎢───────⋅─────  ───────  ──────────⎥ 
⎢x - 2⋅y x + y  x - 2⋅y   2        ⎥ 
⎢                        x  + x + 1⎥ 
⎢                                  ⎥ 
⎢  1 - x   2     x + y      -2     ⎥ 
⎢  ───── + ─    ───────     ───    ⎥ 
⎣  x - y   2    x - 2⋅y      2     ⎦τ)r   r   r   r   r   r   r   r   )r8  r9  r:  r<  rJ  rK  rA  rB  rC  rD  rE  r   r   r   "test_pretty_TransferFunctionMatrix
  s.     "&,(rN  c                  C   sd  t d} d}d}t| |ks tt| |ks0tt dt } d}d}t| |ksTtt| |ksdtt td td  } d}d}t| |kstt| |kstt dttf} d}d	}t| |kstt| |kstt dt ttf} d
}d}t| |kstt| |kstt td td  ttfttf} d}d}t| |ksNtt| |ks`td S )Nr   zO(1)z /1\
O|-|
 \x/u    ⎛1⎞
O⎜─⎟
 ⎝x⎠r   z9 / 2    2                  \
O\x  + y ; (x, y) -> (0, 0)/uA    ⎛ 2    2                 ⎞
O⎝x  + y ; (x, y) → (0, 0)⎠zO(1; x -> oo)u   O(1; x → ∞)z) /1         \
O|-; x -> oo|
 \x         /u5    ⎛1       ⎞
O⎜─; x → ∞⎟
 ⎝x       ⎠z= / 2    2                    \
O\x  + y ; (x, y) -> (oo, oo)/uE    ⎛ 2    2                 ⎞
O⎝x  + y ; (x, y) → (∞, ∞)⎠)rE   r   r   r   r   r   r   r  r   r   r   test_pretty_order  sT     rO  c            	      C   s  t tttdd} d}d}t| |ks*tt| |ks:tt tttddt } d}d}d}d}t| ||fksttt| ||fkstt ttt t t} d	}d
}d}d}t| ||fkstt| ||fkstt| t tttd  tt} d}d}d}d}t| ||fkstt| ||fks2tt dt t tttd  } d}d}d}d}t| ||fksttt| ||fkstt dt t tt} d}d}t| |kstt| |kstt dt t td} d}d}t| |kstt| |ks
tt dt t ttt} d}d}t| |ks:tt| |ksLttd}td}||	|} d}d }t| |kstt| |kstt t
tttf} d!}d"}t| |kstt| |kstd S )#NFr   z d         
--(log(x))
dx        u$   d         
──(log(x))
dx        z,    d         
x + --(log(x))
    dx        z,d             
--(log(x)) + x
dx            u0       d         
x + ──(log(x))
    dx        u0   d             
──(log(x)) + x
dx            z8d                 
--(log(x + y) + x)
dx                z8d                 
--(x + log(x + y))
dx                u@   ∂                 
──(log(x + y) + x)
∂x                u@   ∂                 
──(x + log(x + y))
∂x                r   zK   2              
  d  /          2\
-----\log(x) + x /
dy dx             zK   2              
  d  / 2         \
-----\x  + log(x)/
dy dx             u]      2              
  d  ⎛          2⎞
─────⎝log(x) + x ⎠
dy dx             u]      2              
  d  ⎛ 2         ⎞
─────⎝x  + log(x)⎠
dy dx             zG   2             
  d             2
-----(2*x*y) + x 
dx dy            zG        2        
 2     d         
x  + -----(2*x*y)
     dx dy       u[      2             
  ∂             2
─────(2⋅x⋅y) + x 
∂x ∂y            u[           2        
 2     ∂         
x  + ─────(2⋅x⋅y)
     ∂x ∂y       z6  2       
 d        
---(2*x*y)
  2       
dx        uD     2       
 ∂        
───(2⋅x⋅y)
  2       
∂x           z; 17        
d          
----(2*x*y)
  17       
dx         uK    17        
∂          
────(2⋅x⋅y)
  17       
∂x         zE   3         
  d          
------(2*x*y)
     2       
dy dx        u[      3         
  ∂          
──────(2⋅x⋅y)
     2       
∂y ∂x        alpharb   z;  d                
------(beta(alpha))
dalpha             u!   d       
──(β(α))
dα      z1  n      
 d       
---(f(x))
  n      
dx       u7     n      
 d       
───(f(x))
  n      
dx       )r   ro   r   r   r   r   r   r   r	   diffr   r"  )	r   r   r  r  r  r  r  rQ  rb   r   r   r   test_pretty_derivativesu  s    				rS  c                  C   s  t ttt} d}d}t| |ks&tt| |ks6tt td t} d}d}t| |ks\tt| |ksltt ttd ttd  } d}d}t| |kstt| |kstt tdt  t} d}d	}t| |kstt| |kstt td td
df} d}d}t| |kstt| |ks*tt td ttd
ddf} d}d}t| |ks^tt| |ksptt td t	d  tt	} d}d}t| |kstt| |kstt tt
tt t
dtftddt f} d}d}t| |kstt| |kstd S )Nz@  /         
 |          
 | log(x) dx
 |          
/           u)   ⌠          
⎮ log(x) dx
⌡          r   z5  /     
 |      
 |  2   
 | x  dx
 |      
/       u'   ⌠      
⎮  2   
⎮ x  dx
⌡      z}  /          
 |           
 |    2      
 | sin (x)   
 | ------- dx
 |    2      
 | tan (x)   
 |           
/            uv   ⌠           
⎮    2      
⎮ sin (x)   
⎮ ─────── dx
⎮    2      
⎮ tan (x)   
⌡           zS  /        
 |         
 |  / x\   
 |  \2 /   
 | x     dx
 |         
/          uH   ⌠         
⎮  ⎛ x⎞   
⎮  ⎝2 ⎠   
⎮ x     dx
⌡         r   zO  2      
  /      
 |       
 |   2   
 |  x  dx
 |       
/        
1        u7   2      
⌠      
⎮  2   
⎮ x  dx
⌡      
1      r   zO 10      
  /      
 |       
 |   2   
 |  x  dx
 |       
/        
1/2      uC    10      
 ⌠       
 ⎮   2   
 ⎮  x  dx
 ⌡       
1/2      zk  /  /           
 |  |            
 |  |  2  2      
 |  | x *y  dx dy
 |  |            
/  /             uQ   ⌠ ⌠            
⎮ ⎮  2  2      
⎮ ⎮ x ⋅y  dx dy
⌡ ⌡            r   aC   2*pi pi                           
   /   /                           
  |   |                            
  |   |  sin(theta)                
  |   |  ---------- d(theta) d(phi)
  |   |   cos(phi)                 
  |   |                            
 /   /                             
 0   0                             u   2⋅π π             
 ⌠  ⌠             
 ⎮  ⎮ sin(θ)      
 ⎮  ⎮ ────── dθ dφ
 ⎮  ⎮ cos(φ)      
 ⌡  ⌡             
 0  0             )r+   ro   r   r   r   r   rq   rt   r   r   thrf   phr   r  r   r   r   test_pretty_integralsf  sp    	

		
(
rV  c                  C   st  t  } d}d}t| |kstt| |ks.tt dddd } d}d}t| |ksVtt| |ksftt dddd } d}d}t| |kstt| |kstt td d dgttt gg} d}d	}d
}d}t| ||fkstt| ||fkstt tt ttgdttt	 t
 dgg} d}d}t| |ks8tt| |ksJtd}ttddd } t| |ksptd S )N[]r   r   c                 S   s   dS Nr   r   ijr   r   r   <lambda>#      z$test_pretty_matrix.<locals>.<lambda>c                 S   s   dS rX  r   rY  r   r   r   r\  (  r]  r   z?[     2       ]
[1 + x     1  ]
[             ]
[  y     x + y]z?[ 2           ]
[x  + 1    1  ]
[             ]
[  y     x + y]uO   ⎡     2       ⎤
⎢1 + x     1  ⎥
⎢             ⎥
⎣  y     x + y⎦uO   ⎡ 2           ⎤
⎢x  + 1    1  ⎥
⎢             ⎥
⎣  y     x + y⎦z}[x                 ]
[-     y      theta]
[y                 ]
[                  ]
[    I*k*phi       ]
[0  e           1  ]u}   ⎡x           ⎤
⎢─    y     θ⎥
⎢y           ⎥
⎢            ⎥
⎢    ⅈ⋅k⋅φ   ⎥
⎣0  ℯ       1⎦u   ⎡v̇_msc_00     0         0    ⎤
⎢                            ⎥
⎢   0      v̇_msc_01     0    ⎥
⎢                            ⎥
⎣   0         0      v̇_msc_02⎦Zvdot_mscr   )r5   r   r   r   r   r   rT  rh   r   r%  rU  r6   r   )r   r   r3  r  r  r  r  r  r   r   r   test_pretty_matrix  sJ     (
		r^  c                  C   s  t d\} }}}ttttfD ]}|| }t|dks:tt|dksJt|d|  |g||gg}|d|  ||g}t||}t||}d}	d}
t||	kstt||
kstd}	d}
t||	kstt||
kstd}	d	}
t||	kstt||
kstd
}	d}
t||	kstt||
ks.t|| |d| gg}|| g|gd| gg}||	 g}d}	d}
t||	kstt||
kstd}	d}
t||	kstt||
kstd}	d}
t||	kstt||
kstqd S )Nzx y z wr   r   z"[1   ]
[-  y]
[x   ]
[    ]
[z  w]u8   ⎡1   ⎤
⎢─  y⎥
⎢x   ⎥
⎢    ⎥
⎣z  w⎦z[1      ]
[-  y  z]
[x      ]u+   ⎡1      ⎤
⎢─  y  z⎥
⎣x      ⎦a  [[1   y]                       ]
[[--  -]              [z      ]]
[[ 2  x]  [ y    2 ]  [-   y*z]]
[[x    ]  [ -   y  ]  [x      ]]
[[     ]  [ x      ]  [       ]]
[[z   w]  [        ]  [ 2     ]]
[[-   -]  [y*z  w*y]  [z   w*z]]
[[x   x]                       ]u  ⎡⎡1   y⎤                       ⎤
⎢⎢──  ─⎥              ⎡z      ⎤⎥
⎢⎢ 2  x⎥  ⎡ y    2 ⎤  ⎢─   y⋅z⎥⎥
⎢⎢x    ⎥  ⎢ ─   y  ⎥  ⎢x      ⎥⎥
⎢⎢     ⎥  ⎢ x      ⎥  ⎢       ⎥⎥
⎢⎢z   w⎥  ⎢        ⎥  ⎢ 2     ⎥⎥
⎢⎢─   ─⎥  ⎣y⋅z  w⋅y⎦  ⎣z   w⋅z⎦⎥
⎣⎣x   x⎦                       ⎦ag  [ [1   y]             ]
[ [--  -]             ]
[ [ 2  x]   [ y    2 ]]
[ [x    ]   [ -   y  ]]
[ [     ]   [ x      ]]
[ [z   w]   [        ]]
[ [-   -]   [y*z  w*y]]
[ [x   x]             ]
[                     ]
[[z      ]  [ w      ]]
[[-   y*z]  [ -   w*y]]
[[x      ]  [ x      ]]
[[       ]  [        ]]
[[ 2     ]  [      2 ]]
[[z   w*z]  [w*z  w  ]]u#  ⎡ ⎡1   y⎤             ⎤
⎢ ⎢──  ─⎥             ⎥
⎢ ⎢ 2  x⎥   ⎡ y    2 ⎤⎥
⎢ ⎢x    ⎥   ⎢ ─   y  ⎥⎥
⎢ ⎢     ⎥   ⎢ x      ⎥⎥
⎢ ⎢z   w⎥   ⎢        ⎥⎥
⎢ ⎢─   ─⎥   ⎣y⋅z  w⋅y⎦⎥
⎢ ⎣x   x⎦             ⎥
⎢                     ⎥
⎢⎡z      ⎤  ⎡ w      ⎤⎥
⎢⎢─   y⋅z⎥  ⎢ ─   w⋅y⎥⎥
⎢⎢x      ⎥  ⎢ x      ⎥⎥
⎢⎢       ⎥  ⎢        ⎥⎥
⎢⎢ 2     ⎥  ⎢      2 ⎥⎥
⎣⎣z   w⋅z⎦  ⎣w⋅z  w  ⎦⎦z#[[      1]]
[[x  y  -]]
[[      z]]u=   ⎡⎡      1⎤⎤
⎢⎢x  y  ─⎥⎥
⎣⎣      z⎦⎦z[x]
[ ]
[y]
[ ]
[1]
[-]
[z]u9   ⎡x⎤
⎢ ⎥
⎢y⎥
⎢ ⎥
⎢1⎥
⎢─⎥
⎣z⎦z)[[x]]
[[ ]]
[[y]]
[[ ]]
[[1]]
[[-]]
[[z]]uc   ⎡⎡x⎤⎤
⎢⎢ ⎥⎥
⎢⎢y⎥⎥
⎢⎢ ⎥⎥
⎢⎢1⎥⎥
⎢⎢─⎥⎥
⎣⎣z⎦⎦)
r   r   r   r   r   r   r   r   r   tolist)r   r   r
  w	ArrayTypeMZM1ZM2ZM3r   r  ZMrowZMcolumnZMcol2r   r   r   test_pretty_ndim_arrayso  sl    

	

rc  c                  C   sJ   t ddd} t ddd}tt| |dks.ttt| || dksFtd S )NAr   Bu   A⊗Bu	   A⊗B⊗A)r   r   r   r   )rd  re  r   r   r   test_tensor_TensorProduct#  s    rf  c                  C   sJ   ddl m}  ddlm} || j| j}t|dks6tt|dksFtd S )Nr   )R2)WedgeProductu   ⅆ x∧ⅆ yzd x/\d y)	Zsympy.diffgeom.rnrg  sympy.diffgeomrh  ZdxZdyr   r   r   )rg  rh  Zwpr   r   r    test_diffgeom_print_WedgeProduct*  s
    rj  c                  C   s  t ddd} t ddd}tt| dks,ttt| | dksDttt| t| dks`ttt| | dksxttt|t|  dksttt| d d	ksttt| d d
kstttt| dkstttt| dkstttt| dkstttt| dks(ttt| dks>ttt| | dksXttt| t| dksvttt| | dksttt|t|  dksttt| d dksttt| d dkstttt| dkstttt| dkstttt| dks0tttt| dksJttd}tt|dkshttt||  dksttttt	dd| f|t
ddffdkstd S )NXr   Yz +
X z       +
(X + Y) z +    +
X  + Y z     +
(X*Y) z +  +
Y *X z    +
/ 2\ 
\X / z    2
/ +\ 
\X / z     +
/ -1\ 
\X  / z    -1
/ +\  
\X /  z    +
/ T\ 
\X / z    T
/ +\ 
\X / u    †
X u          †
(X + Y) u    †    †
X  + Y u        †
(X⋅Y) u    †  †
Y ⋅X u       †
⎛ 2⎞ 
⎝X ⎠ u       2
⎛ †⎞ 
⎝X ⎠ u        †
⎛ -1⎞ 
⎝X  ⎠ u       -1
⎛ †⎞  
⎝X ⎠  u       †
⎛ T⎞ 
⎝X ⎠ u       T
⎛ †⎞ 
⎝X ⎠ r   r   )r   r   u-         †
⎡1  2⎤ 
⎢    ⎥ 
⎣3  4⎦ uQ               †
⎛⎡1  2⎤    ⎞ 
⎜⎢    ⎥ + X⎟ 
⎝⎣3  4⎦    ⎠ uu              †
⎡  𝟙     X⎤ 
⎢         ⎥ 
⎢⎡1  2⎤   ⎥ 
⎢⎢    ⎥  𝟘⎥ 
⎣⎣3  4⎦   ⎦ )r   r   r   r   r   r   r   r5   r   r   r   rk  rl  r1  r   r   r   test_Adjoint2  s`    








rp  c                  C   sP  t ddd} t ddd}tt| dks,ttt| | dksDttt| t| dks`ttt| | dksxttt|t|  dksttt| d d	ksttt| d d
kstttt| dkstttt| dksttt| dks
ttt| | dks$ttt| t| dksBttt| | dks\ttt|t|  dkszttt| d dksttt| d dkstttt| dkstttt| dksttd}tt|dks ttt||  dkstttttdd| f|t	ddffdksLtd S )Nrk  r   rl  z T
X z       T
(X + Y) z T    T
X  + Y z     T
(X*Y) z T  T
Y *X z    T
/ 2\ 
\X / z    2
/ T\ 
\X / z     T
/ -1\ 
\X  / z    -1
/ T\  
\X /  u        T
(X⋅Y) u    T  T
Y ⋅X u       T
⎛ 2⎞ 
⎝X ⎠ u       2
⎛ T⎞ 
⎝X ⎠ u        T
⎛ -1⎞ 
⎝X  ⎠ u       -1
⎛ T⎞  
⎝X ⎠  rm  u+         T
⎡1  2⎤ 
⎢    ⎥ 
⎣3  4⎦ uO               T
⎛⎡1  2⎤    ⎞ 
⎜⎢    ⎥ + X⎟ 
⎝⎣3  4⎦    ⎠ us              T
⎡  𝟙     X⎤ 
⎢         ⎥ 
⎢⎡1  2⎤   ⎥ 
⎢⎢    ⎥  𝟘⎥ 
⎣⎣3  4⎦   ⎦ )
r   r   r   r   r   r   r5   r   r   r   ro  r   r   r   test_Transposef  sP    






rq  c                  C   s   t ddgddgg} t ddgddgg}d}d}d	}d
}tt| |ksLttt| |ks`ttt| t| |ks|ttt| t| |kstd S )Nr   r   r   r   r     z   /[1  2]\
tr|[    ]|
  \[3  4]/u8     ⎛⎡1  2⎤⎞
tr⎜⎢    ⎥⎟
  ⎝⎣3  4⎦⎠zG  /[1  2]\     /[2  4]\
tr|[    ]| + tr|[    ]|
  \[3  4]/     \[6  8]/uw     ⎛⎡1  2⎤⎞     ⎛⎡2  4⎤⎞
tr⎜⎢    ⎥⎟ + tr⎜⎢    ⎥⎟
  ⎝⎣3  4⎦⎠     ⎝⎣6  8⎦⎠)r5   r   r8   r   r   )rk  rl  r  r  r  r  r   r   r   test_pretty_Trace_issue_9044  s    rs  c            
      C   s  t ddd} td\}}}}}td| | }tddd}tddd}t|d	d	}	t|	t|	  krjd
kspn t|||d ||d f }	t|	t|	  krdksn t|||d d||d df }	t|	t|	  krdksn t|d ||d f }	t|	t|	  kr$dks*n t|d ||d f }	t|	t|	  kr^dksdn t||d d |f }	t|	t|	  krdksn t|||||f }	t|	t|	  krdksn t|||||||f }	t|	t|	  krdksn t||d ||d |f }	t|	t|	  krNdksTn t|d ||d ||f }	t|	t|	  krdksn t|d d |d d |f }	t|	t|	  krdksn tt|dd}	t|	t|	  krd
ksn tt|d | d fd | d f}	t|	t|	  kr:d
ks@n tt|d| d fd| d f}	t|	t|	  krxd
ks~n tt|d| dfd| df}	t|	t|	  krdksn t|ddddddf }	t|	t|	  krdksn t|ddddddf }	t|	t|	  kr2dks8n t|ddd }	t|	t|	  krfd ksln t|d ddd!df }	t|	t|	  krd"ksn t|d ddddf }	t|	t|	  krd#ksn t|dd ddf }	t|	t|	  krd$ksn t|ddddf }	t|	t|	  krPd%ksVn t|ddddddf }	t|	t|	  krd&ksn t|| dd dd f }	t|	t|	  krd'ksn td S )(Nr"  Tr#  z	x y z w trk  rl  r   Z)NNNzX[:, :]r   zX[x:x + 1, y:y + 1]r   zX[x:x + 1:2, y:y + 1:2]z	X[:x, y:]z	X[x:, :y]zX[x:y, z:w]zX[x:y:t, w:t:x]zX[x::y, t::w]zX[:x:y, :t:w]zX[::x, ::y])r   NNr   zX[::2, ::2]r   r   r   r  zX[1:2:3, 4:5:6]rr  zX[1:3:5, 4:6:8]zX[1:10:2, :]	   zY[:5, 1:9:2]zY[:5, 1::2]zY[5:6, :5:2]z	X[:1, :1]zX[:1:2, :1:2]z(Y + Z)[2:, 2:])r   r   r   r7   r   r   r   )
r"  r   r   r
  r`  trk  rl  rt  r   r   r   r   test_MatrixSlice  sj    "" "&&&&&&&&&&&&&&&&&&&&rw  c                  C   s   t ddd} td| | }t|t|  kr4dks:n t|j| t}d}d}t||ksbtt||ksrttt	dt	 }| | |}d}d	}t||kstt||kstd S )
Nr"  Tr#  rk  z)              / T  \
(d -> sin(d)).\X *X/u4                ⎛ T  ⎞
(d ↦ sin(d))˳⎝X ⋅X⎠r   z,/     1\      
|x -> -|.(n*X)
\     x/      u<   ⎛    1⎞      
⎜x ↦ ─⎟˳(n⋅X)
⎝    x⎠      )
r   r   r   r   r   TZ	applyfuncrq   r
   r   )r"  rk  r   r   r  lamdar   r   r   test_MatrixExpressions  s    "rz  c                  C   s   ddl m}  tddd}td|d}td|d}tdd	dd
d	g}tdd	dd	dg}t| ||dksjtt| ||dkstt| ||dkstt| ||dkstd S )Nr   )
DotProductr"  Tr#  rd  r   re  r   r   r   zA*Bz[1  2  3]*[1  3  4]u   A⋅Bu   [1  2  3]⋅[1  3  4])Z%sympy.matrices.expressions.dotproductr{  r   r   r5   r   r   r   )r{  r"  rd  re  CDr   r   r   test_pretty_dotproduct  s    r~  c                  C   s   ddl m} m}m}m}m} td}t| |dks8tt| ||dksPtt	ddd}t| |dksptt| || d	kstt| ||dd|f||ddffd
kstd S )Nr   )Determinantr   r   r   r   rm  u    │1  2│
│    │
│3  4│uG   │      -1│
│⎡1  2⎤  │
│⎢    ⎥  │
│⎣3  4⎦  │rk  r   u   │X│u>   │⎡1  2⎤    │
│⎢    ⎥ + X│
│⎣3  4⎦    │ua   │  𝟙     X│
│         │
│⎡1  2⎤   │
│⎢    ⎥  𝟘│
│⎣3  4⎦   │)
sympy.matricesr  r   r   r   r   r5   r   r   r   )r  r   r   r   r   r1  rk  r   r   r   test_pretty_Determinant"  s     r  c               	   C   s*  t ttdk ftd df} d}d}t| |ks2tt| |ksBtt ttdk ftd df } d}d}t| |ksvtt| |ksttt ttdkftdf t tt tdk ftd tdkfd	 d } d
}d}t| |kstt| |ksttt ttdkftdf t tt tdk ftd tdkfd	 d } d}d}t| |ksLtt| |ks^ttt ttdkftdf } d}d}t| |kstt| |kstt ttdkftdft tt tdk ftd tdkfd	 } d}d}t| |kstt| |ks
tt ttdkftdf t tt tdk ftd tdkfd	 } d}d}t| |ks`tt| |ksrtt dtdt dk fdttdk fttdddt  df} d}d}t| |kstt| |ksttt ttdkftdfddd} d}d}t| |kstt| |ks&td S )Nr   r   TzJ/x   for x < 1
|             
< 2           
|x   otherwise
\             uT   ⎧x   for x < 1
⎪             
⎨ 2           
⎪x   otherwise
⎩             zY //x   for x < 1\
 ||             |
-|< 2           |
 ||x   otherwise|
 \\             /uw    ⎛⎧x   for x < 1⎞
 ⎜⎪             ⎟
-⎜⎨ 2           ⎟
 ⎜⎪x   otherwise⎟
 ⎝⎩             ⎠r   )r   Ta                        //x            \    
                      ||-   for x < 2|    
                      ||y            |    
    //x  for x > 0\   ||             |    
x + |<            | + |< 2           | + 1
    \\y  otherwise/   ||y   for x > 2|    
                      ||             |    
                      ||1   otherwise|    
                      \\             /    u                        ⎛⎧x            ⎞    
                      ⎜⎪─   for x < 2⎟    
                      ⎜⎪y            ⎟    
    ⎛⎧x  for x > 0⎞   ⎜⎪             ⎟    
x + ⎜⎨            ⎟ + ⎜⎨ 2           ⎟ + 1
    ⎝⎩y  otherwise⎠   ⎜⎪y   for x > 2⎟    
                      ⎜⎪             ⎟    
                      ⎜⎪1   otherwise⎟    
                      ⎝⎩             ⎠    a                        //x            \    
                      ||-   for x < 2|    
                      ||y            |    
    //x  for x > 0\   ||             |    
x - |<            | + |< 2           | + 1
    \\y  otherwise/   ||y   for x > 2|    
                      ||             |    
                      ||1   otherwise|    
                      \\             /    u                        ⎛⎧x            ⎞    
                      ⎜⎪─   for x < 2⎟    
                      ⎜⎪y            ⎟    
    ⎛⎧x  for x > 0⎞   ⎜⎪             ⎟    
x - ⎜⎨            ⎟ + ⎜⎨ 2           ⎟ + 1
    ⎝⎩y  otherwise⎠   ⎜⎪y   for x > 2⎟    
                      ⎜⎪             ⎟    
                      ⎜⎪1   otherwise⎟    
                      ⎝⎩             ⎠    z5  //x  for x > 0\
x*|<            |
  \\y  otherwise/uI     ⎛⎧x  for x > 0⎞
x⋅⎜⎨            ⎟
  ⎝⎩y  otherwise⎠a(                  //x            \
                ||-   for x < 2|
                ||y            |
//x  for x > 0\ ||             |
|<            |*|< 2           |
\\y  otherwise/ ||y   for x > 2|
                ||             |
                ||1   otherwise|
                \\             /ut                  ⎛⎧x            ⎞
                ⎜⎪─   for x < 2⎟
                ⎜⎪y            ⎟
⎛⎧x  for x > 0⎞ ⎜⎪             ⎟
⎜⎨            ⎟⋅⎜⎨ 2           ⎟
⎝⎩y  otherwise⎠ ⎜⎪y   for x > 2⎟
                ⎜⎪             ⎟
                ⎜⎪1   otherwise⎟
                ⎝⎩             ⎠a1                   //x            \
                 ||-   for x < 2|
                 ||y            |
 //x  for x > 0\ ||             |
-|<            |*|< 2           |
 \\y  otherwise/ ||y   for x > 2|
                 ||             |
                 ||1   otherwise|
                 \\             /u}                   ⎛⎧x            ⎞
                 ⎜⎪─   for x < 2⎟
                 ⎜⎪y            ⎟
 ⎛⎧x  for x > 0⎞ ⎜⎪             ⎟
-⎜⎨            ⎟⋅⎜⎨ 2           ⎟
 ⎝⎩y  otherwise⎠ ⎜⎪y   for x > 2⎟
                 ⎜⎪             ⎟
                 ⎜⎪1   otherwise⎟
                 ⎝⎩             ⎠))r   r   r   )r   )r   r   ap  /                                 1     
|            0               for --- < 1
|                                |y|    
|                                       
<            1               for |y| < 1
|                                       
|   __0, 2 /2, 1       | 1\             
|y*/__     |           | -|   otherwise 
\  \_|2, 2 \      1, 0 | y/             u  ⎧                                 1     
⎪            0               for ─── < 1
⎪                                │y│    
⎪                                       
⎨            1               for │y│ < 1
⎪                                       
⎪  ╭─╮0, 2 ⎛2, 1       │ 1⎞             
⎪y⋅│╶┐     ⎜           │ ─⎟   otherwise 
⎩  ╰─╯2, 2 ⎝      1, 0 │ y⎠             Fr   zC               2
//x  for x > 0\ 
|<            | 
\\y  otherwise/ uU                  2
⎛⎧x  for x > 0⎞ 
⎜⎨            ⎟ 
⎝⎩y  otherwise⎠ )	r^   r   r   r   r   r   rY   rp   r   r  r   r   r   test_pretty_piecewise:  s    		( ( ,.(  r  c                  C   s0   t ttt} t| dkstt| dks,td S )Nz)/y    for x  
<            
\z  otherwiseu/   ⎧y    for x  
⎨            
⎩z  otherwise)r.   r   r   r
  r   r   r   r  r   r   r   test_pretty_ITE  s
    r  c                  C   s  d} d}d}t | |kstt| |ks,tg } d}d}t | |ksHtt| |ksXti } i }d}d}t | |ksxtt ||kstt| |kstt||kstdt f} d}d}t | |kstt| |ksttd dt ttttd ttd  g} d	}d
}t | |kstt| |ks0ttd dt ttttd ttd  f} d}d}t | |ksttt| |kstt	td dt ttttd ttd  } d}d}t | |kstt| |kstttti} t
ttti}d}d}t | |kstt ||ks&tt| |ks8tt||ksJtdt dt tttd i} t
dt dt tttd i}d}d}t | |kstt ||kstt| |kstt||ksttd g} d}d}t | |kstt| |ksttd f} d}d}t | |ks0tt| |ksBtt	td } d}d}t | |kshtt| |kszttd di} t
td di}d}d}t | |kstt ||kstt| |kstt||kstd S )Nr   r   rW  z{}r   z 1  
(-,)
 x  u   ⎛1 ⎞
⎜─,⎟
⎝x ⎠r   z                 2        
  2  1        sin (theta) 
[x , -, x, y, -----------]
     x            2       
               cos (phi)  u   ⎡                2   ⎤
⎢ 2  1        sin (θ)⎥
⎢x , ─, x, y, ───────⎥
⎢    x           2   ⎥
⎣             cos (φ)⎦z                 2        
  2  1        sin (theta) 
(x , -, x, y, -----------)
     x            2       
               cos (phi)  u   ⎛                2   ⎞
⎜ 2  1        sin (θ)⎟
⎜x , ─, x, y, ───────⎟
⎜    x           2   ⎟
⎝             cos (φ)⎠z{x: sin(x)}z8 1  1        2    
{-: -, x: sin (x)}
 x  y             uH   ⎧1  1        2   ⎫
⎨─: ─, x: sin (x)⎬
⎩x  y            ⎭z	  2 
[x ]u   ⎡ 2⎤
⎣x ⎦z  2  
(x ,)u   ⎛ 2 ⎞
⎝x ,⎠z  2    
{x : 1}u#   ⎧ 2   ⎫
⎨x : 1⎬
⎩     ⎭)r   r   r   r   r   rq   rT  rf   rU  r   r   )r   r   r  Zexpr_2r   r   r   test_pretty_seq'  s    
*	*	,	 

r  c                  C   s   t  } t t  }|| g}t|dks(tt|dks8t|| h}t|dksPtt|dks`t|| | |i}t|| | |i}t|dkstt|dkstt|dkstt|dkstd S )Nz[Basic(Basic()), Basic()]z{Basic(), Basic(Basic())}z2{Basic(): Basic(Basic()), Basic(Basic()): Basic()})r   r   r   r   r   )b1b2r   expr2r   r   r   test_any_object_in_sequence  s4    
r  c                  C   s   t t dksttt dks$tt t dks6ttt dksHtdt th} t| }t | dksltt| dks|tt |dkstt|dkstd S )Nzset()zfrozenset()r   z 1    
{-, x}
 x    u"   ⎧1   ⎫
⎨─, x⎬
⎩x   ⎭z5           1     
frozenset({-, x})
           x     uO            ⎛⎧1   ⎫⎞
frozenset⎜⎨─, x⎬⎟
         ⎝⎩x   ⎭⎠)r   setr   r   	frozensetr   )s1s2r   r   r   test_print_builtin_set  s$    r  c                  C   sJ  t } t| tt td g dks$tt| tdd dks>tt| tdd dksXtttt td hdkstttttdddksttttdddksttttt td gdksttttddd	ksttttddd
kstttddddkstd}d}ttddd|ks8tt	tddd|ksRtd}d}ttddd|ksttt	tddd|kstd}d}ttdt
d|kstt	tdt
d|kstd}d}ttt
dd|kstt	tt
dd|kstd}d}ttdt
 d|ks*tt	tdt
 d|ksFtd S )Nr   z  2      
{x , x*y}r   r  z{1, 2, 3, 4, 5}r   z'{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}z)            2       
frozenset({x , x*y})zfrozenset({1, 2, 3, 4, 5})z2frozenset({1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12})r   r   z	{0, 1, 2}z{0, 1, ..., 29}u   {0, 1, …, 29}   z{30, 29, ..., 2}u   {30, 29, …, 2}r  z{0, 2, ...}u   {0, 2, …}z{..., 2, 0}u   {…, 2, 0}r   z{-2, -3, ...}u   {-2, -3, …})rM   r   r   r   r   ranger  r  rK   r   r   )r6  r   r  r   r   r   test_pretty_sets6  sR    r  c                  C   s>   t dd} t| }d}d}t||ks*tt||ks:td S )Nr   r   zSetExpr([1, 3]))rO   r   r   r   r   )Zivser   r  r   r   r   test_pretty_SetExprn  s    
r  c                  C   sx  t tttftt dddhddh} d}d}t| |ks<tt| |ksLtt tttfftt tdddhddh} d}d}t| |kstt| |kstt tttd tj	} d	}d
}t| |kstt| |kstt ttdtd  tj	} d}d}t| |kstt| |ks"tt tttfdtt d  tj	tj	} d}d}t| |ksbtt| |ksttd S )Nr   r   r   r   z%{x + y | x in {1, 2, 3}, y in {3, 4}}u)   {x + y │ x ∊ {1, 2, 3}, y ∊ {3, 4}}z&{x + y | (x, y) in {1, 2, 3} x {3, 4}}u*   {x + y │ (x, y) ∊ {1, 2, 3} × {3, 4}}z)  2                 
{x  | x in Naturals}u<   ⎧ 2 │      ⎫
⎨x  │ x ∊ ℕ⎬
⎩   │      ⎭zS 1                  
{-- | x in Naturals}
  2                 
 x                  uf   ⎧1  │      ⎫
⎪── │ x ∊ ℕ⎪
⎨ 2 │      ⎬
⎪x  │      ⎪
⎩   │      ⎭z    1                                    
{-------- | x in Naturals, y in Naturals}
        2                                
 (x + y)                                 u   ⎧   1     │             ⎫
⎪──────── │ x ∊ ℕ, y ∊ ℕ⎪
⎨       2 │             ⎬
⎪(x + y)  │             ⎪
⎩         │             ⎭)
r   r
   r   r   r   r   r   r   r   Naturals)Zimgsetr   r  r   r   r   test_pretty_ImageSetw  s2    $*&r  c                  C   s  d} d}t tttttdtj| ks,tttttttdtj|ksPtt ttt	ttjddt
ddksxttttt	ttjddt
ddkstt ttttdktdk t
dd	d
dksttttttdktdk t
dd	d
dkstt ttttdktdk t
dd	dks*ttttttdktdk t
dd	dksXtttdtd	  dk}d} d}t || kstt||kstttdtd	  dktj}d} d}t || kstt||kstd S )Nz#{x | x in (-oo, oo) and sin(x) = 0}u"   {x │ x ∊ ℝ ∧ (sin(x) = 0)}r   Fr   r   z{1}r  r   r   EmptySet   ∅z{2}z3     1      
{x | -- > 0}
      2     
     x      u|   ⎧  │ ⎛1     ⎞⎫
⎪x │ ⎜── > 0⎟⎪
⎨  │ ⎜ 2    ⎟⎬
⎪  │ ⎝x     ⎠⎪
⎩  │         ⎭z                        1      
{x | x in (-oo, oo) and -- > 0}
                         2     
                        x      u   ⎧  │         ⎛1     ⎞⎫
⎪x │ x ∊ ℝ ∧ ⎜── > 0⎟⎪
⎨  │         ⎜ 2    ⎟⎬
⎪  │         ⎝x     ⎠⎪
⎩  │                 ⎭)r   r   r   r   rq   r   Realsr   r   rJ   rM   r,   r3   )r   r  Zcondsetr   r   r   test_pretty_ConditionSet  s(    $$((....r  c                  C   s4  ddl m}  | tddtdd }d}d}t||ks<tt||ksLt| tdd	tdd
t  dd}d}d}t||kstt||kst| tdd	td
  tdd }d}d}t||kstt||kst| tdd	td
  tdd
t  dd}d}d}t||kstt||ks0td S )Nr   )ComplexRegionr   r   r   r  z#{x + y*I | x, y in [3, 5] x [4, 6]}u+   {x + y⋅ⅈ │ x, y ∊ [3, 5] × [4, 6]}r   r   T)Zpolarz@{r*(I*sin(theta) + cos(theta)) | r, theta in [0, 1] x [0, 2*pi)}uC   {r⋅(ⅈ⋅sin(θ) + cos(θ)) │ r, θ ∊ [0, 1] × [0, 2⋅π)}z                       1            
{x + y*I | x, y in [3, --] x [4, 6]}
                        2           
                       a            u   ⎧        │        ⎡   1 ⎤         ⎫
⎪x + y⋅ⅈ │ x, y ∊ ⎢3, ──⎥ × [4, 6]⎪
⎨        │        ⎢    2⎥         ⎬
⎪        │        ⎣   a ⎦         ⎪
⎩        │                        ⎭a                                                   1               
{r*(I*sin(theta) + cos(theta)) | r, theta in [0, --] x [0, 2*pi)}
                                                  2              
                                                 a               uD  ⎧                      │        ⎡   1 ⎤           ⎫
⎪r⋅(ⅈ⋅sin(θ) + cos(θ)) │ r, θ ∊ ⎢0, ──⎥ × [0, 2⋅π)⎪
⎨                      │        ⎢    2⎥           ⎬
⎪                      │        ⎣   a ⎦           ⎪
⎩                      │                          ⎭)sympy.sets.fancysetsr  rO   r   r   r   r   r  )r  Zcregionr   r  r   r   r   test_pretty_ComplexRegion  s*      (r  c                  C   sN   t ddt dd } }d}d}tt| ||ks4ttt| ||ksJtd S )Nr   r   r   r  u   [2, 3] ∪ [4, 7]z[2, 3] U [4, 7])rO   r   rP   r   r   )r  r  r  r   r   r   r   test_pretty_Union_issue_10414  s
    r  c                  C   s^   t d\} }}}t| |t|| }}d}d}tt|||ksDttt|||ksZtd S )Nz
x, y, z, wu   [x, y] ∩ [z, w]z[x, y] n [z, w])r   rO   r   rN   r   r   )r   r   r
  r`  r  r  r  r   r   r   r   $test_pretty_Intersection_issue_10414  s    r  c                  C   s@   d} t tddd | kstd} t tddd | ks<td S )Nz      1
[0, 1] r   r   z      2
[0, 1] r   )r   rO   r   )r  r   r   r   test_ProductSet_exponent  s    r  c                  C   sB   d} t ddt dd }}tt|| |tdd | ks>td S )Nu)   ([4, 7] × {1, 2}) ∪ ([2, 3] × [4, 7])r   r   r   r  r   )rO   r   rP   rM   r   )r  r  r  r   r   r   test_ProductSet_parenthesis  s    r  c                  C   sJ   d} d}t ddt dd }}t|| | ks2tt|| |ksFtd S )Nz[2, 3] x [4, 7]u   [2, 3] × [4, 7]r   r   r   r  )rO   r   r   r   )r   r  r  r  r   r   r   %test_ProductSet_prod_char_issue_10413#  s
    r  c            
         s&  t td dtf} td}d}d}t| |ks2tt| |ksBtd}d}t||ksZtt||ksjtt td d}tdd}d	}d	}t||kstt||kstd
}d
}t||kstt||kstt td t df}tdt df}d}d}t||kstt||ks"td}d}t||ks<tt||ksNtd}d}tt| ||ksnttt| ||kstd}d}tt|||ksttt|||kstd}d}tt|||ksttt|||kstd}d}tt| ||ksttt| ||ks.td}d}tt|||ksNttt|||ksftd}d}tt|||ksttt|||kstt td tdt	f t
t fdd t
t fdd td}t |td  tddf}	d}d}t|	|kstt|	|ks"td S )Nr   r   rn  z[0, 1, 4, 9, ...]u   [0, 1, 4, 9, …]z[1, 2, 1, 2, ...]u   [1, 2, 1, 2, …]r   r   z	[0, 1, 4]z	[1, 2, 1]z[..., 9, 4, 1, 0]u   […, 9, 4, 1, 0]z[..., 2, 1, 2, 1]u   […, 2, 1, 2, 1]z[1, 3, 5, 11, ...]u   [1, 3, 5, 11, …]z	[1, 3, 5]z[..., 11, 5, 3, 1]u   […, 11, 5, 3, 1]z[0, 2, 4, 18, ...]u   [0, 2, 4, 18, …]z	[0, 2, 4]z[..., 18, 4, 2, 0]u   […, 18, 4, 2, 0]c                      s   t  S Nr   r   Zs7r   r   r\  |  r]  z'test_pretty_sequences.<locals>.<lambda>c                      s   t  S r  )r   r   r  r   r   r\  }  r]  r  z[0, b, 4*b]u   [0, b, 4⋅b])rG   r  r   rI   r   r   r   rF   rH   r   r   NotImplementedErrorr   )
r  r  r   r  Zs3Zs4Zs5Zs6r  Zs8r   r  r   test_pretty_sequences+  s~    
r  c                  C   s>   t ttt tf} d}d}t| |ks*tt| |ks:td S )Nzt                      2*sin(3*x)      
2*sin(x) - sin(2*x) + ---------- + ...
                          3           u                         2⋅sin(3⋅x)    
2⋅sin(x) - sin(2⋅x) + ────────── + …
                          3         )rC   r   r   r   r   r   r   r   r  r   r   r   test_pretty_FourierSeries  s    r  c                  C   s<   t tdt } d}d}t| |ks(tt| |ks8td S )Nr   z  oo             
____             
\   `            
 \         -k  k 
  \   -(-1)  *x  
  /   -----------
 /         k     
/___,            
k = 1            u     ∞              
 ____            
 ╲               
  ╲        -k  k 
   ╲  -(-1)  ⋅x  
   ╱  ───────────
  ╱        k     
 ╱               
 ‾‾‾‾            
k = 1            )rB   ro   r   r   r   r   r  r   r   r   test_pretty_FormalPowerSeries  s    r  c                  C   sv  t ttt} d}d}t| |ks$tt| |ks4tt td td} d}d}t| |ks\tt| |ksltt dt td} d}d	}t| |kstt| |kstt ttt td} d
}d}t| |kstt| |kstt ttt tdd} d}d}t| |kstt| |ks"tt ttt td} d}d}t| |ksPtt| |ksbtt ttdd } d}d}t| |kstt| |kstt tt td td td} d}d}t| |kstt| |kstdt tt td td td } d}d}t| |ks tt| |ks2tt tttddd} d}d}t| |ks`tt| |ksrtd S )Nz lim x
x->oo u   lim x
x─→∞ r   r   z      2
 lim x 
x->0+  u         2
 lim x 
x─→0⁺  r   z     1
 lim -
x->0+xu        1
 lim ─
x─→0⁺xz)     /sin(x)\
 lim |------|
x->0+\  x   /uG        ⎛sin(x)⎞
 lim ⎜──────⎟
x─→0⁺⎝  x   ⎠-z)     /sin(x)\
 lim |------|
x->0-\  x   /uG        ⎛sin(x)⎞
 lim ⎜──────⎟
x─→0⁻⎝  x   ⎠z# lim (x + sin(x))
x->0+            u)    lim (x + sin(x))
x─→0⁺            z        2
/ lim x\ 
\x->0+ / u+           2
⎛ lim x⎞ 
⎝x─→0⁺ ⎠ z5     /       /y\\
 lim |x* lim |-||
x->0+\  y->0+\2//u]        ⎛       ⎛y⎞⎞
 lim ⎜x⋅ lim ⎜─⎟⎟
x─→0⁺⎝  y─→0⁺⎝2⎠⎠z;       /       /y\\
2* lim |x* lim |-||
  x->0+\  y->0+\2//ue          ⎛       ⎛y⎞⎞
2⋅ lim ⎜x⋅ lim ⎜─⎟⎟
  x─→0⁺⎝  y─→0⁺⎝2⎠⎠z+-)dirzlim sin(x)
x->0      u   lim sin(x)
x─→0      )rD   r   r   r   r   r   rq   r   r  r   r   r   test_pretty_limits  s     r  c                  C   sF   t td dt  d d} d}d}t| |ks2tt| |ksBtd S )Nr      r   r   z3       / 5              \
CRootOf\x  + 11*x - 2, 0/u=          ⎛ 5              ⎞
CRootOf⎝x  + 11⋅x - 2, 0⎠)rA   r   r   r   r   r  r   r   r   test_pretty_ComplexRootOf\  s    r  c                  C   s   t td dt  d dd} d}d}t| |ks4tt| |ksDtt td dt  d tttt} d}d	}t| |kstt| |kstd S )
Nr   r  r   F)autoz-       / 5           \
RootSum\x  + 11*x - 2/u7          ⎛ 5           ⎞
RootSum⎝x  + 11⋅x - 2⎠z?       / 5                   z\
RootSum\x  + 11*x - 2, z -> e /uK          ⎛ 5                  z⎞
RootSum⎝x  + 11⋅x - 2, z ↦ ℯ ⎠)r@   r   r   r   r   r
   r
  rh   r  r   r   r   test_pretty_RootSumm  s    $r  c                  C   s   t g tt} d}d}t| |ks$tt| |ks4ttd dt  t d td dt  t d g}t |ttdd} d}d	}t| |kstt| |kst| d
} d}d}t| |kstt| |kstd S )Nz-GroebnerBasis([], x, y, domain=ZZ, order=lex)u.   GroebnerBasis([], x, y, domain=ℤ, order=lex)r   r   r   r=   r  z             /[ 2                 2              ]                              \
GroebnerBasis\[x  - x - 3*y + 1, y  - 2*x + y - 1], x, y, domain=ZZ, order=grlex/u                ⎛⎡ 2                 2              ⎤                             ⎞
GroebnerBasis⎝⎣x  - x - 3⋅y + 1, y  - 2⋅x + y - 1⎦, x, y, domain=ℤ, order=grlex⎠r  z             /[       2           4      3      2           ]                            \
GroebnerBasis\[2*x - y  - y + 1, y  + 2*y  - 3*y  - 16*y + 7], x, y, domain=ZZ, order=lex/u                ⎛⎡       2           4      3      2           ⎤                           ⎞
GroebnerBasis⎝⎣2⋅x - y  - y + 1, y  + 2⋅y  - 3⋅y  - 16⋅y + 7⎦, x, y, domain=ℤ, order=lex⎠)r?   r   r   r   r   r   Zfglm)r   r   r  Fr   r   r   test_GroebnerBasis  s,    0
r  c                   C   s(   t tjdkstttjdks$td S )NUniversalSetu   𝕌)r   r   r  r   r   r   r   r   r   test_pretty_UniversalSet  s    r  c                  C   s8  t tdd} t| dkstt| dks,tttt} t| dksFtt| dksVtttt} t| dksptt| dksttd	}t| } t| d
kstt| dkstt| } t| dkstt| dkstt	ttdd} t| dkstt| dkstt
ttdd} t| dks(tt| dks:ttttdd} t| dksZtt| dkslttttdd} t| dkstt| dksttttdd} t| dkstt| dksttttdd} t| dkstt| dksttttdd} t| dks"tt| dks4td S )NFr   zNot(x)u   ¬xz	And(x, y)u   x ∧ yzOr(x, y)u   x ∨ yza:fzAnd(a, b, c, d, e, f)u   a ∧ b ∧ c ∧ d ∧ e ∧ fzOr(a, b, c, d, e, f)u   a ∨ b ∨ c ∨ d ∨ e ∨ fz	Xor(x, y)u   x ⊻ yz
Nand(x, y)u   x ⊼ yz	Nor(x, y)u   x ⊽ yzImplies(x, y)u   x → yzImplies(y, x)u   y → xzEquivalent(x, y)   x ⇔ y)r2   r   r   r   r   r,   r   r3   r   r4   r0   r1   r/   r-   )r   Zsymsr   r   r   test_pretty_Boolean  sJ    

r  c                  C   s  t d} t| dkstt| dks(tt} t| dks<tt| dksLtt} t| dks`tt| dksptt} t| dkstt| d	ksttt } t| d
kstt| dksttttf } t| dkstt| dkstt	t} t| dkstt| dkstt	tt} t| dks4tt| dksFttj
tttd} t| dkshtt| dkszttj
tttd} t| dkstt| dkstd S )N   zGF(23)u	   ℤ₂₃r:   u   ℤr;   u   ℚr<   u   ℝzQQ[x]u   ℚ[x]zQQ[x, y]u	   ℚ[x, y]zZZ(x)u   ℤ(x)zZZ(x, y)u	   ℤ(x, y)r  zQQ[x, y, order=grlex]u   ℚ[x, y, order=grlex]zQQ[x, y, order=ilex]u   ℚ[x, y, order=ilex])r9   r   r   r   r:   r;   r<   r   r   
frac_field	poly_ringr=   r>   r  r   r   r   test_pretty_Domain  s<    
r  c                   C   s   t tdddddkstt tdddddks4tt tdddddksNtt tdt dddddksntt tdt ddddd	kstt tdt ddddd	kstd S )
Nz0.3TF)	full_precr   z0.300000000000000r  )r  r   r   )z0.300000000000000*xzx*0.300000000000000)z0.3*xzx*0.3)r   r   r   r   r   r   r   r   test_pretty_prec7  s      r  c                  C   sV   dd l } ddlm} | }| j}|| _zttddd W 5 || _X | dksRtd S )Nr   )StringIOF)r   r   zpi
)sysior  stdoutr   r   getvaluer   )r  r  fdZssor   r   r   test_pprintI  s    r  c                  C   sH   G dd d} G dd d}t | t| ks0tt |t|ksDtdS )z;Test that the printer dispatcher correctly handles classes.c                   @   s   e Zd ZdS )ztest_pretty_class.<locals>.CNr   r   r   r   r   r|  X  s   r|  c                   @   s   e Zd ZdS )ztest_pretty_class.<locals>.DNr   r   r   r   r   r}  [  s   r}  N)r   r  r   )r|  r}  r   r   r   test_pretty_classV  s    r  c                  C   sZ   d} t dD ]}| |t|t  7 } qt| ddks<tt| ddddksVtd S )Nr      
r  F)r   )r  rq   r   r   findr   )Z	huge_exprrZ  r   r   r   test_pretty_no_wrap_lineb  s
    r  c                   C   s   t tdd  d S )Nc                   S   s   t tdddS )Nr   garbage)method)r   r   r   r   r   r   r\  k  r]  ztest_settings.<locals>.<lambda>)r   	TypeErrorr   r   r   r   test_settingsj  s    r  c            	   	   C   s  ddl m} m}m}m}m}m} t|| |d|f}d}d}t||ksLt	t
||ks\t	t|| |t|f}d}d}t||kst	t
||kst	t|t| | | t tf |d|| f}d}d}t||kst	t
||kst	t|t| | | t tf |dt| |  | t tff}d	}d
}t||ks<t	t
||ksNt	t|t| | | t tf || | | d  |d  | |  d|   t| |  | t tff}d}d}t||kst	t
||kst	t|t| | | t tf |d| | | d  |d  | |  d|   f}d}d}t||ks:t	t
||ksLt	t| | dtf}d}d}t||ksvt	t
||kst	t| d | dtf}d}d}t||kst	t
||kst	t| d | dtf}d}d}t||kst	t
||kst	t| d d | dtf}d}d}t||ks:t	t
||ksLt	t| d t| d   | | dtf}d}d}t||kst	t
||kst	td| d  | dtf}d}d}t||kst	t
||kst	tdt||   | dtf}d}d}t||kst	t
||ks(t	tdt||   | dtftddf}d }d!}tddddd|     d |d"dd|  f|dd|  tfddd|    }d#}d$}t||kst	t
||kst	d S )%Nr   )r   r  r  r%  r1  r"  z>  n     
 ___    
 \  `   
  \    k
  /   k 
 /__,   
k = 0   uU     n     
 ___    
 ╲      
  ╲    k
  ╱   k 
 ╱      
 ‾‾‾    
k = 0   zE  n      
 ___     
 \  `    
  \     k
  /    k 
 /__,    
k = oo   uW     n     
 ___    
 ╲      
  ╲    k
  ╱   k 
 ╱      
 ‾‾‾    
k = ∞   a      n             
   n              
______            
\     `           
 \        oo      
  \        /      
   \      |       
    \     |   n   
     )    |  x  dx
    /     |       
   /     /        
  /      -oo      
 /      k         
/_____,           
 k = 0            u*     n            
  n             
______          
╲               
 ╲              
  ╲     ∞       
   ╲    ⌠       
    ╲   ⎮   n   
    ╱   ⎮  x  dx
   ╱    ⌡       
  ╱     -∞      
 ╱     k        
╱               
‾‾‾‾‾‾          
k = 0           a   oo                 
  /                 
 |                  
 |   x              
 |  x  dx           
 |                  
/                   
-oo                 
 ______             
 \     `            
  \         oo      
   \         /      
    \       |       
     \      |   n   
      )     |  x  dx
     /      |       
    /      /        
   /       -oo      
  /       k         
 /_____,            
  k = 0             u  ∞                 
⌠                 
⎮   x             
⎮  x  dx          
⌡                 
-∞                
 ______           
 ╲                
  ╲               
   ╲      ∞       
    ╲     ⌠       
     ╲    ⎮   n   
     ╱    ⎮  x  dx
    ╱     ⌡       
   ╱      -∞      
  ╱      k        
 ╱                
 ‾‾‾‾‾‾           
 k = 0            r   r   a            oo                          
           /                          
          |                           
          |   x                       
          |  x  dx                    
          |                           
         /                            
         -oo                          
          ______                      
          \     `                     
           \                  oo      
            \                  /      
             \                |       
              \               |   n   
               )              |  x  dx
              /               |       
             /               /        
            /                -oo      
           /                k         
          /_____,                     
     2        2       1   x           
k = n  + n + x  + x + - + -           
                      x   n           uY            ∞                          
          ⌠                          
          ⎮   x                      
          ⎮  x  dx                   
          ⌡                          
          -∞                         
           ______                    
           ╲                         
            ╲                        
             ╲               ∞       
              ╲              ⌠       
               ╲             ⎮   n   
               ╱             ⎮  x  dx
              ╱              ⌡       
             ╱               -∞      
            ╱               k        
           ╱                         
           ‾‾‾‾‾‾                    
     2        2       1   x          
k = n  + n + x  + x + ─ + ─          
                      x   n          a/   2        2       1   x           
n  + n + x  + x + - + -           
                  x   n           
        ______                    
        \     `                   
         \                oo      
          \                /      
           \              |       
            \             |   n   
             )            |  x  dx
            /             |       
           /             /        
          /              -oo      
         /              k         
        /_____,                   
         k = 0                    uO   2        2       1   x          
n  + n + x  + x + ─ + ─          
                  x   n          
         ______                  
         ╲                       
          ╲                      
           ╲             ∞       
            ╲            ⌠       
             ╲           ⎮   n   
             ╱           ⎮  x  dx
            ╱            ⌡       
           ╱             -∞      
          ╱             k        
         ╱                       
         ‾‾‾‾‾‾                  
         k = 0                   z/  oo   
 __    
 \ `   
  )   x
 /_,   
x = 0  uO     ∞    
 ___   
 ╲     
  ╲    
  ╱   x
 ╱     
 ‾‾‾   
x = 0  z>  oo    
 ___    
 \  `   
  \    2
  /   x 
 /__,   
x = 0   uW     ∞     
 ___    
 ╲      
  ╲    2
  ╱   x 
 ╱      
 ‾‾‾    
x = 0   z?  oo   
 ___   
 \  `  
  \   x
   )  -
  /   2
 /__,  
x = 0  ug     ∞    
 ____  
 ╲     
  ╲    
   ╲  x
   ╱  ─
  ╱   2
 ╱     
 ‾‾‾‾  
x = 0  r   zP  oo    
____    
\   `   
 \     3
  \   x 
  /   --
 /    2 
/___,   
x = 0   us     ∞     
 ____   
 ╲      
  ╲    3
   ╲  x 
   ╱  ──
  ╱   2 
 ╱      
 ‾‾‾‾   
x = 0   z  oo          
____          
\   `         
 \           n
  \   /    x\ 
   )  |    -| 
  /   | 3  2| 
 /    \x *y / 
/___,         
x = 0         u     ∞           
_____         
╲             
 ╲            
  ╲          n
   ╲  ⎛    x⎞ 
   ╱  ⎜    ─⎟ 
  ╱   ⎜ 3  2⎟ 
 ╱    ⎝x ⋅y ⎠ 
╱             
‾‾‾‾‾         
x = 0         zP  oo    
____    
\   `   
 \    1 
  \   --
  /    2
 /    x 
/___,   
x = 0   us     ∞     
 ____   
 ╲      
  ╲   1 
   ╲  ──
   ╱   2
  ╱   x 
 ╱      
 ‾‾‾‾   
x = 0   zb  oo      
____      
\   `     
 \     -a 
  \    ---
  /     b 
 /    y   
/___,     
x = 0     u     ∞       
 ____     
 ╲        
  ╲    -a 
   ╲   ───
   ╱    b 
  ╱   y   
 ╱        
 ‾‾‾‾     
x = 0     z  2     oo     
____  ____     
\   ` \   `    
 \     \     -a
  \     \    --
  /     /    b 
 /     /    y  
/___, /___,    
y = 1 x = 0    u     2     ∞      
____  ____     
╲     ╲        
 ╲     ╲     -a
  ╲     ╲    ──
  ╱     ╱    b 
 ╱     ╱    y  
╱     ╱        
‾‾‾‾  ‾‾‾‾     
y = 1 x = 0    o   a                 1                         
           1 + -                         
    oo         n                         
  _____    _____                         
  \    `   \    `                        
   \        \     /        1    \        
    \        \    |1 + ---------|        
     \        \   |          1  |     1  
      )        )  |    1 + -----| + -----
     /        /   |            1|       1
    /        /    |        1 + -|   1 + -
   /        /     \            k/       k
  /____,   /____,                        
      1   k = 111                        
k = -----                                
    m + 1                                u                 1                         
           1 + ─                         
    ∞          n                         
  ______   ______                        
  ╲        ╲                             
   ╲        ╲                            
    ╲        ╲    ⎛        1    ⎞        
     ╲        ╲   ⎜1 + ─────────⎟        
      ╲        ╲  ⎜          1  ⎟     1  
      ╱        ╱  ⎜    1 + ─────⎟ + ─────
     ╱        ╱   ⎜            1⎟       1
    ╱        ╱    ⎜        1 + ─⎟   1 + ─
   ╱        ╱     ⎝            k⎠       k
  ╱        ╱                             
  ‾‾‾‾‾‾   ‾‾‾‾‾‾                        
      1   k = 111                        
k = ─────                                
    m + 1                                )	sympy.abcr   r  r  r%  r1  r"  r   r   r   r   r   r+   r   )	r   r  r  r%  r1  r"  r   r   r  r   r   r   test_pretty_sumn  s     * & ,
$$
 r  c                  C   s   t } d}d}d}d}ddlm}m}m} t| dks8tt| dksHtt| ||d  |d  |ksntt| ||d  |d  |ksttd	| t	 |d  t
 |d  |ksttd	| t	 |d  t
 |d  |kstd S )
NzO              2
kilogram*meter 
---------------
          2    
    second     uo                 2
kilogram⋅meter 
───────────────
          2    
    second     zm                    2
3*x*y*kilogram*meter 
---------------------
             2       
       second        u                       2
3⋅x⋅y⋅kilogram⋅meter 
─────────────────────
             2       
       second        r   )kgr1  r6  r   r   r   )r   sympy.physics.unitsr  r1  r6  r   r   r   Z
convert_tor   r   )r   
ascii_str1Zunicode_str1
ascii_str2Zunicode_str2r  r1  r6  r   r   r   
test_unitst  s     	
		&&,r  c                  C   s   t d} t| tttd }d}d}t||ks4tt||ksDtt| tttd}d}d}t||ksrtt||kstt| ttt ttfdt	ddf}d	}d
}t||kstt||kstd S )Nr   r   z(f(x))|     2
      |x=phi u   (f(x))│   2
      │x=φ r   z,/d       \|   
|--(f(x))||   
\dx      /|x=0uB   ⎛d       ⎞│   
⎜──(f(x))⎟│   
⎝dx      ⎠│x=0r   zm/d       \|          
|--(f(x))||          
|dx      ||          
|--------||          
\   y    /|x=0, y=1/2u   ⎛d       ⎞│          
⎜──(f(x))⎟│          
⎜dx      ⎟│          
⎜────────⎟│          
⎝   y    ⎠│x=0, y=1/2)
r	   r   r   rU  r   r   r   rR  r   r   )r   r   r   r3  r   r   r   test_pretty_Subs  s,    (		r  c                   C   s   t tttdkstt tttdks,ttttdddksDtttdddksXtttdt	dtddd	ksxtttdt	dddd
kstd S )Nu   γ(x, y)u   Γ(x, y)Tr   u   Γ(x)u   Γrm   r/  u   γ(x)r  )
r   r   r   r   r   ru   r   rm   r   r	   r   r   r   r   test_gammas  s     r  c                  C   s   t tttdddkstt tttdddks4tt tdddksHtt tdddks\ttd} t | tddd	ks|tt | tttddd
kstt | dddkstd S )NTr   u   Β(x, y)FzB(x, y)u   Βre  rb   u   β(x)zbeta(x, y, z)r   )r   rb   r   r   r   r	   r
  )Zmybetar   r   r   	test_beta  s    r  c                  C   s@   G dd dt } t| dddks$tt| tdddks<td S )Nc                   @   s   e Zd ZdS )z6test_function_subclass_different_name.<locals>.mygammaNr   r   r   r   r   mygamma  s   r  Tr   z
mygamma(x))rm   r   r   r   )r  r   r   r   %test_function_subclass_different_name  s    r  c                   C   s  t ttdtdddkstt ttdtdddks8tt ttdtdddksTtt ttttddd	ksptt ttttddd
kstt ttdtdddkstt ttdtdddkstt ttdtdddkstt ttttddd	kstt ttttddd
kstd S )Nr   Tr   z	   n
<x> r   z       n
<x - 1> r  z       n
<x + 1> z        n
<-a + x> z       n
<x - y> F)r   r'   r   r"  r   r  r   r   r   r   r   test_SingularityFunction  s<    r  c                   C   sT   t ttdddkstt ttddddks2tt tttd dddksPtd S )NTr   u   δ(x)r   u    (1)    
δ    (x)u      (1)    
x⋅δ    (x))r   r{   r   r   r   r   r   r   test_deltas)  s    r  c                  C   s  t ddt} d}d}t| |ks$tt| |ks4tt ddt} d}d}t| |ksXtt| |kshtt dgdgt} d	}d
}t| |kstt| |kstt td dt fdt} d}d}t| |kstt| |kstt ttddt fdtd } d}d}t| |kstt| |ks*tt ddgddgddddt d  d  d  } d}d}t| |ksttt| |kstd S )Nr   uB    ┌─  ⎛  │  ⎞
 ├─  ⎜  │ z⎟
0╵ 0 ⎝  │  ⎠z3  _         
 |_  /  |  \
 |   |  | z|
0  0 \  |  /)r   uB    ┌─  ⎛  │  ⎞
 ├─  ⎜  │ x⎟
0╵ 1 ⎝1 │  ⎠z3  _         
 |_  /  |  \
 |   |  | x|
0  1 \1 |  /r   r   uB    ┌─  ⎛2 │  ⎞
 ├─  ⎜  │ x⎟
1╵ 1 ⎝1 │  ⎠z3  _         
 |_  /2 |  \
 |   |  | x|
1  1 \1 |  /r   r   )r   r   r   u        ⎛  π         │  ⎞
 ┌─  ⎜  ─, -2⋅k   │  ⎟
 ├─  ⎜  3         │ x⎟
2╵ 4 ⎜            │  ⎟
     ⎝3, 4, 5, -3 │  ⎠z                      
  _  /  pi        |  \
 |_  |  --, -2*k  |  |
 |   |  3         | x|
2  4 |            |  |
     \3, 4, 5, -3 |  /z2/3ui    ┌─  ⎛π, 2/3, -2⋅k │  2⎞
 ├─  ⎜             │ x ⎟
3╵ 4 ⎝3, 4, 5, -3  │   ⎠zg  _                      
 |_  /pi, 2/3, -2*k |  2\
 |   |              | x |
3  4 \ 3, 4, 5, -3  |   /r   us       ⎛     │       1      ⎞
     ⎜     │ ─────────────⎟
     ⎜     │         1    ⎟
 ┌─  ⎜1, 2 │ 1 + ─────────⎟
 ├─  ⎜     │           1  ⎟
2╵ 2 ⎜3, 4 │     1 + ─────⎟
     ⎜     │             1⎟
     ⎜     │         1 + ─⎟
     ⎝     │             x⎠a                             
     /     |       1      \
     |     | -------------|
  _  |     |         1    |
 |_  |1, 2 | 1 + ---------|
 |   |     |           1  |
2  2 |3, 4 |     1 + -----|
     |     |             1|
     |     |         1 + -|
     \     |             x/)	rn   r
  r   r   r   r   r   r%  r   r   r  r   r   r   r   
test_hyper7  sT    		0r  c               
   C   sx  t tttgdgddgdddgt} d}d}t| |ks:tt| |ksJtt dtd gdtdgg g td } d	}d
}t| |kstt| |kstd}d}t dgd dgdgdgt} t| |kstt| |kstt ddgddgdgddgddddt d  d  d  } d}d}t| |ks,tt| |ks>tt| t} d}d}t| |ksbtt| |ksttd S )Nr   r   r   r   u   ╭─╮2, 3 ⎛π, π, x     1    │  ⎞
│╶┐     ⎜                 │ z⎟
╰─╯4, 5 ⎝ 0, 1    1, 2, 3 │  ⎠zb __2, 3 /pi, pi, x     1    |  \
/__     |                   | z|
\_|4, 5 \  0, 1     1, 2, 3 |  /r  r   u           ⎛   π          │   ⎞
╭─╮0, 2 ⎜1, ─  2, π, 5 │  2⎟
│╶┐     ⎜   7          │ z ⎟
╰─╯5, 0 ⎜              │   ⎟
        ⎝              │   ⎠z        /   pi           |   \
 __0, 2 |1, --  2, pi, 5 |  2|
/__     |   7            | z |
\_|5, 0 |                |   |
        \                |   /u   ╭─╮ 1, 10 ⎛1, 1, 1, 1, 1, 1, 1, 1, 1, 1  1 │  ⎞
│╶┐       ⎜                                │ z⎟
╰─╯11,  2 ⎝             1                1 │  ⎠z __ 1, 10 /1, 1, 1, 1, 1, 1, 1, 1, 1, 1  1 |  \
/__       |                                | z|
\_|11,  2 \             1                1 |  /r   r   u          ⎛           │       1      ⎞
        ⎜           │ ─────────────⎟
        ⎜           │         1    ⎟
╭─╮1, 2 ⎜1, 2  4, 3 │ 1 + ─────────⎟
│╶┐     ⎜           │           1  ⎟
╰─╯4, 3 ⎜ 3    4, 5 │     1 + ─────⎟
        ⎜           │             1⎟
        ⎜           │         1 + ─⎟
        ⎝           │             x⎠aL          /           |       1      \
        |           | -------------|
        |           |         1    |
 __1, 2 |1, 2  4, 3 | 1 + ---------|
/__     |           |           1  |
\_|4, 3 | 3    4, 5 |     1 + -----|
        |           |             1|
        |           |         1 + -|
        \           |             x/uc  ⌠                                        
⎮         ⎛           │       1      ⎞   
⎮         ⎜           │ ─────────────⎟   
⎮         ⎜           │         1    ⎟   
⎮ ╭─╮1, 2 ⎜1, 2  4, 3 │ 1 + ─────────⎟   
⎮ │╶┐     ⎜           │           1  ⎟ dx
⎮ ╰─╯4, 3 ⎜ 3    4, 5 │     1 + ─────⎟   
⎮         ⎜           │             1⎟   
⎮         ⎜           │         1 + ─⎟   
⎮         ⎝           │             x⎠   
⌡                                        a.    /                                       
 |                                        
 |         /           |       1      \   
 |         |           | -------------|   
 |         |           |         1    |   
 |  __1, 2 |1, 2  4, 3 | 1 + ---------|   
 | /__     |           |           1  | dx
 | \_|4, 3 | 3    4, 5 |     1 + -----|   
 |         |           |             1|   
 |         |           |         1 + -|   
 |         \           |             x/   
 |                                        
/                                         )rp   r   r   r
  r   r   r   r+   r  r   r   r   test_meijerg  sF    ""	:
r  c                  C   s   t ddd\} }}| | |d  }d}d}t||ks:tt||ksJt|d |  | }d}d}t||ksrtt||kst| |d  | }d	}d
}t||kstt||kst| |d  | t }d}d}t||kstt||kstd S )NzA,B,CFZcommutativer  z     -1
A*B*C  u        -1
A⋅B⋅C  z -1    
C  *A*Bu    -1    
C  ⋅A⋅Bz   -1  
A*C  *Bu      -1  
A⋅C  ⋅Bz   -1  
A*C  *B
-------
   x   u1      -1  
A⋅C  ⋅B
───────
   x   )r   r   r   r   r   )rd  re  r|  r   r   r  r   r   r   test_noncommutative+  s:    r  c                  C   sN   t d\} }t|td t| }d}d}t||ks:tt||ksJtd S )Nx y   zW     /  ___         \
     |\/ 2 *y    ___|
atan2|-------, \/ x |
     \   20         /uI        ⎛√2⋅y    ⎞
atan2⎜────, √x⎟
     ⎝ 20     ⎠)r   ra   rr   r   r   r   r-  r   r   r   test_pretty_special_functionsk  s    r  c                  C   s>   t dd} t| dksttddt d} t| dks:td S )N)r   r   r  z'Segment2D(Point2D(0, 1), Point2D(0, 2)))r   r   gGz@)Zanglez0Ray2D(Point2D(1, 1), Point2D(2, tan(pi/50) + 1)))r*   r   r   r)   r   )er   r   r   test_pretty_geometry  s    
r  c                  C   s  t t} d}t| |kstt| |ks,ttdt} d}d}t| |ksNtt| |ks^ttttdksrttttdksttt	tdksttt
tdksttttdksttttdksttt	tdksttt
tdkstd S )	NzEi(x)r   u   E₁(z)zexpint(1, z)zShi(x)zSi(x)zCi(x)zChi(x))r\   r   r   r   r   ri   r
  r_   r`   r[   rZ   )r   stringr  r   r   r   r   test_expint  s"    
r  c                  C   s^  d} d}t dtd  }t|| ks(tt||ks8td} d}tdddt  }t|| ksbtt||ksrtd} d}tdtd  }t|| kstt||kstd} d	}tdddt  }t|| kstt||kstd
} d}tddt }t|| kstt||kstd} d}tddt d}t|| ksHtt||ksZtd S )Nz /  1  \
K|-----|
 \z + 1/u0    ⎛  1  ⎞
K⎜─────⎟
 ⎝z + 1⎠r   z  / |  1  \
F|1|-----|
 \ |z + 1/u<    ⎛ │  1  ⎞
F⎜1│─────⎟
 ⎝ │z + 1⎠z /  1  \
E|-----|
 \z + 1/u0    ⎛  1  ⎞
E⎜─────⎟
 ⎝z + 1⎠z  / |  1  \
E|1|-----|
 \ |z + 1/u<    ⎛ │  1  ⎞
E⎜1│─────⎟
 ⎝ │z + 1⎠z  / |4\
Pi|3|-|
  \ |x/u)    ⎛ │4⎞
Π⎜3│─⎟
 ⎝ │x⎠r   r   z   /   4| \
Pi|3; -|6|
  \   x| /u2    ⎛   4│ ⎞
Π⎜3; ─│6⎟
 ⎝   x│ ⎠r  )	rw   r
  r   r   r   rx   ry   rz   r   )r   r  r   r   r   r   test_elliptic_functions  sT    r  c            	      C   s   ddl m} m}m}m}m} | ddd}t||dkdks@t|dd}t||dkd	ksbt|d
d}|dd}t|t||j	dkstd S )Nr   )r   DieExponentialpspacewherex1r   u   Domain: 0 < x₁ ∧ x₁ < ∞Zd1r  r   u   Domain: d₁ = 5 ∨ d₁ = 6r  r  u3   Domain: 0 ≤ a ∧ 0 ≤ b ∧ a < ∞ ∧ b < ∞)
Zsympy.statsr   r  r  r  r  r   r   r   domain)	r   r  r  r  r  rk  r}  rd  re  r   r   r   test_RandomDomain   s    


r  c                  C   s|   t tt} t tt}| ttt  }t|dks:tt|dksJt|tt }t|dkshtt|dksxtd S )Nz	x/(x + y)zx + y)	r;   r  r   r   r  convertr   r   r   )r  Rr   r   r   r   test_PrettyPoly  s    r  c                   C   s8   t tdddddkstt ttdt dks4td S )Nr   r   Fr   z1 
--
 5
2 r   z 1 
 --
 pi
x  )r   r   r   r   r   r   r   r   r   test_issue_6285  s    r  c                  C   s  t ttd td dksttttd td dks<tt ttd tddfd dks`ttttd tddfd dkstt ttd tddfd dksttttd tddfd d	ksttd
} t t| ttd dksttt| ttd dkstd S )Nr   zS          2
/  /     \ 
| |      | 
| |  2   | 
| | x  dx| 
| |      | 
\/       / uN            2
⎛⌠      ⎞ 
⎜⎮  2   ⎟ 
⎜⎮ x  dx⎟ 
⎝⌡      ⎠ r   r   z_          2
/  1     \ 
| ___    | 
| \  `   | 
|  \    2| 
|  /   x | 
| /__,   | 
\x = 0   / u             2
⎛  1     ⎞ 
⎜ ___    ⎟ 
⎜ ╲      ⎟ 
⎜  ╲    2⎟ 
⎜  ╱   x ⎟ 
⎜ ╱      ⎟ 
⎜ ‾‾‾    ⎟ 
⎝x = 0   ⎠ zZ           2
/  2      \ 
|______   | 
| |  |   2| 
| |  |  x | 
| |  |    | 
\x = 1    / u              2
⎛  2      ⎞ 
⎜─┬──┬─   ⎟ 
⎜ │  │   2⎟ 
⎜ │  │  x ⎟ 
⎜ │  │    ⎟ 
⎝x = 1    ⎠ r   z/          2
/d       \ 
|--(f(x))| 
\dx      / u?             2
⎛d       ⎞ 
⎜──(f(x))⎟ 
⎝dx      ⎠ )	r   r+   r   r   r   r   r   r	   r   )r   r   r   r   test_issue_6359$  s2    
	
r  c                  C   s<   d} d}t dtt | ks ttdtt |ks8td S )Nz  1  
-----
  ___
\/ x u   1 
──
√xr   )r   rr   r   r   r   )r   r  r   r   r   test_issue_6739u  s    r  c                  C   s"   dD ]} t t| | kstqd S )N)Zdexpr2_d1tauzdexpr2^d1tau)r   r   r   )Z	symb_namer   r   r   !test_complicated_symbol_unchanged  s    r  c                  C   s  ddl m} m}m}m}m}m} | d}| d}| d}|||d}	|||d}
||}|d}t|dksptt	|d	kstt|	d
kstt	|	dkstt|dkstt	|dkstt|
|	 dkstt	|
|	 dkstt|dkstt	|dks
t| }t|dks"tt	|dks4t||	d|
t
ji}t|dksXtt	|dksjt||	d|
t
ji|
|	 di}t|dkstt	|dkst||}t|dkstt	|dkstd S )Nr   )ObjectIdentityMorphismNamedMorphismCategoryDiagramDiagramGridA1A2A3f1f2K1u   A₁z
f1:A1-->A2u   f₁:A₁——▶A₂z
id:A1-->A1u   id:A₁——▶A₁zf2*f1:A1-->A3u   f₂∘f₁:A₁——▶A₃u   K₁r  r  uniquez{f2*f1:A1-->A3: EmptySet, id:A1-->A1: EmptySet, id:A2-->A2: EmptySet, id:A3-->A3: EmptySet, f1:A1-->A2: {unique}, f2:A2-->A3: EmptySet}u   {f₂∘f₁:A₁——▶A₃: ∅, id:A₁——▶A₁: ∅, id:A₂——▶A₂: ∅, id:A₃——▶A₃: ∅, f₁:A₁——▶A₂: {unique}, f₂:A₂——▶A₃: ∅}z{f2*f1:A1-->A3: EmptySet, id:A1-->A1: EmptySet, id:A2-->A2: EmptySet, id:A3-->A3: EmptySet, f1:A1-->A2: {unique}, f2:A2-->A3: EmptySet} ==> {f2*f1:A1-->A3: {unique}}u   {f₂∘f₁:A₁——▶A₃: ∅, id:A₁——▶A₁: ∅, id:A₂——▶A₂: ∅, id:A₃——▶A₃: ∅, f₁:A₁——▶A₂: {unique}, f₂:A₂——▶A₃: ∅} ══▶ {f₂∘f₁:A₁——▶A₃: {unique}}zA1  A2
      
A3    u   A₁  A₂
      
A₃    )Zsympy.categoriesr  r  r  r  r  r  r   r   r   r   r  )r  r  r  r  r  r  r  r  r   r  r  Zid_A1r  dgridr   r   r   test_categories  s<     r  c                  C   s   t tt} | d}|ttgdtd g}d}d}t||ksFtt||ksVtd}d}t||ksntt||ks~t| 	td t}d}d}t||kstt||kst|| }d	}d
}t||kstt||kstd}d}d S )Nr   r   u          2
ℚ[x, y] z        2
QQ[x, y] u3   ╱        ⎡    2⎤╲
╲[x, y], ⎣1, x ⎦╱z#              2  
<[x, y], [1, x ]>u   ╱ 2   ╲
╲x , y╱z  2    
<x , y>u               2    
     ℚ[x, y]     
─────────────────
╱        ⎡    2⎤╲
╲[x, y], ⎣1, x ⎦╱zY            2    
    QQ[x, y]     
-----------------
              2  
<[x, y], [1, x ]>u+  ╱⎡    3⎤                                                ╲
│⎢   x ⎥   ╱        ⎡    2⎤╲           ╱        ⎡    2⎤╲│
│⎢1, ──⎥ + ╲[x, y], ⎣1, x ⎦╱, [2, y] + ╲[x, y], ⎣1, x ⎦╱│
╲⎣   2 ⎦                                                ╱z      3                                                  
     x                   2                           2   
<[1, --] + <[x, y], [1, x ]>, [2, y] + <[x, y], [1, x ]>>
     2                                                   )
r;   old_poly_ringr   r   free_module	submoduler   r   r   Zideal)r  r  rb  r  r   r   Qr   r   r   test_PrettyModules  sB    

		r  c                  C   sp   t ttd d g } d}d}t| |ks0tt| |ks@td}d}t| j|ksZtt| j|ksltd S )Nr   r   u=     ℚ[x]  
────────
╱ 2    ╲
╲x  + 1╱z# QQ[x]  
--------
  2     
<x  + 1>u!       ╱ 2    ╲
1 + ╲x  + 1╱z      2     
1 + <x  + 1>)r;   r  r   r   r   r   one)r  r  r   r   r   r   test_QuotientRing  s    	r  c                  C   s   ddl m}  tt}| |d|ddg}d}d}t||ksHtt||ksXt| |d|dddg}d}d}t||kstt||kst| |d|dtgg dg}d	}d
}t||kstt||kstd S )Nr   )homomorphismr   u3             1         1
[0] : ℚ[x]  ──> ℚ[x] z/           1          1
[0] : QQ[x]  --> QQ[x] r   u^   ⎡0  0⎤       2         2
⎢    ⎥ : ℚ[x]  ──> ℚ[x] 
⎣0  0⎦                  zP[0  0]        2          2
[    ] : QQ[x]  --> QQ[x] 
[0  0]                    ui                       1
          1     ℚ[x] 
[0] : ℚ[x]  ──> ─────
                <[x]>z_                      1
           1     QQ[x] 
[0] : QQ[x]  --> ------
                 <[x]> )	Zsympy.polys.agcar  r;   r  r   r	  r   r   r   )r  r  r   r  r   r   r   r   test_HomomorphismC  s.    
"	r  c                  C   s@   t ddd\} }t| | }t|dks,tt|dks<td S )NzA BFr  zTr(A*B)u	   Tr(A⋅B))r   rX   r   r   r   )rd  re  rv  r   r   r   test_Tr  s    r  c                  C   s*   t dtd ddd } t| dks&td S )Nr   r   Fr   r   z5 - 2*(x - 2))r   r   r   r   )eqr   r   r   test_pretty_Add  s    r  c                   C   s8   t ttttdkstt ttttdks4td S )Nu   x ⇎ yu   x ↛ y)r   r2   r-   r   r   r   r/   r   r   r   r   test_issue_7179  s    r  c                   C   s   t tttdkstd S )Nr  )r   r-   r   r   r   r   r   r   r   test_issue_7180  s    r  c                   C   sd   t tjtj dkstttjtj dks0tt tjtj dksHtttjtj dks`td S )Nz(-oo, oo) \ Naturalsu	   ℝ \ ℕz(-oo, oo) \ Naturals0u   ℝ \ ℕ₀)r   r   r  r  r   r   Z	Naturals0r   r   r   r   test_pretty_Complement  s    r  c               	   C   sh   ddl m}  t| tddtdddddks2ttt$ t| tddtdddd W 5 Q R X d S )	Nr   SymmetricDifferencer   r   r   Fr   u   [2, 3] ∆ [3, 5])sympy.sets.setsr  r   rO   r   r   r  r   r  r   r   r   test_pretty_SymmetricDifference  s    
r  c                   C   s4   t tttjdkstttttjdks0td S )NzContains(x, Integers)u	   x ∈ ℤ)r   rJ   r   r   ZIntegersr   r   r   r   r   r   test_pretty_Contains  s    r  c                  C   sD   ddl m}  | ddd}d}d}t||ks0tt||ks@td S )Nr   sympifyz&((x+x**4)/(x-1))-(2*(x-1)**4/(x-1)**4)Fr   u              4    4    
  2⋅(x - 1)    x  + x
- ────────── + ──────
          4    x - 1 
   (x - 1)           zm           4    4    
  2*(x - 1)    x  + x
- ---------- + ------
          4    x - 1 
   (x - 1)           )
sympy.corer  r   r   r   )r  r  r  r   r   r   r   test_issue_8292  s    	r  c                  C   sD   t d} | tt }d}d}t||ks0tt||ks@td S )Nr   u!    d       
-──(y(x))
 dx      z   d       
- --(y(x))
  dx      )r	   r   rR  r   r   r   )r   r   r  r   r   r   r   test_issue_4335  s    r   c                  C   s0   ddl m}  | ddd}d}t||ks,td S )Nr   r  z2*x*y**2/1**2 + 1Fr   uF        2    
2⋅x⋅y     
────── + 1
   2      
  1       )r  r  r   r   )r  r  r  r   r   r   test_issue_8344  s
    r!  c                  C   sB   t dddd} t dddd}t| |dd}d}t||ks>td S )Nr   r   Fr   r   r   u     3
 2 
───
  2
10 )r   r   r   r   )r   r   r  r  r   r   r   test_issue_6324  s    r"  c                  C   sX   t td ttd  } d}t| |ks,tt ttdd  } d}t| |ksTtd S )Nr   u              ⎛x⎞
        cos⎜─⎟
           ⎝2⎠
⎛   ⎛x⎞⎞      
⎜sin⎜─⎟⎟      
⎝   ⎝2⎠⎠      r  r   u/           11
        ──
        13
(sin(x))  )rq   r   rf   r   r   r   )r  r  r   r   r   test_issue_7927  s    	r#  c                  C   s   ddl m} m} td}| t t||t tt|  |ddf | td  t||d t tdt |  |ddf  }d}t||kst	d S )Nr   )ry  rv  r   r   r   uH       1                              1                   
   2 ⌠                              ⌠                   
λ⋅x ⋅⎮ 2⋅π⋅φ(t)⋅sin(2⋅π⋅t) dt + λ⋅x⋅⎮ π⋅φ(t)⋅sin(π⋅t) dt
     ⌡                              ⌡                   
     0                              0                   )
r  ry  rv  r	   r   r+   r   rq   r   r   )ry  rv  r   r  r  r   r   r   test_issue_6134	  s    dr$  c            	      C   s   d} t ddddt ddtt  }}}tt|t||| ksDtd}ttttttt ddf\}}}}tt	||t|||kstd S )Nu   (2, 3) ∪ ([1, 2] \ {x})r   r   Tr   u   {x} ∩ {y} ∩ ({z} \ [1, 2]))
rO   rM   r   r   rP   rL   r   r   r
  rN   )	r)  r  r  cr*  r  r  r   gr   r   r   test_issue_9877  s    $&r'  c                  C   sT   t tdtt dd } t| dks&tt tdtt t dd }t|dksPtd S )Nr  Fr   zc - (a + b)zc - (a - b + d))r%  r   r  r  r   r   r  )expr1r  r   r   r   test_issue_13651#  s    r)  c                  C   sL   ddl m}  d}d}tddd}t| ||ks4tt| ||ksHtd S )Nr   )primenuznu(n)u   ν(n)r"  Tr#  )sympy.ntheory.factor_r*  r   r   r   r   )r*  r  r)  r"  r   r   r   test_pretty_primenu*  s    r,  c                  C   sL   ddl m}  d}d}tddd}t| ||ks4tt| ||ksHtd S )Nr   )
primeomegazOmega(n)u   Ω(n)r"  Tr#  )r+  r-  r   r   r   r   )r-  r  r)  r"  r   r   r   test_pretty_primeomega5  s    r.  c                  C   sF  ddl m}  d}d}d}d}d}d}d}d}d}	d	}
td
dd}t| |d|ksVtt| |d|ksltt| |d d|kstt| |d d|kstt| d| d|kstt| d| d|kstt| |dd |kstt| |dd |ks
ttd| |d |	ks&ttd| |d |
ksBtd S )Nr   )Modzx mod 7z(x + 1) mod 7z	2*x mod 7u   2⋅x mod 7z(x mod 7) + 1z2*(x mod 7)u   2⋅(x mod 7)r   Tr#  r  r   r   )r  r/  r   r   r   r   )r/  r  r)  r  r*  Z
ascii_str3Z
ucode_str3Z
ascii_str4Z
ucode_str4Z
ascii_str5Z
ucode_str5r   r   r   r   test_pretty_Mod@  s,    r0  c                   C   s,   t tddkstttddks(td S )N )r   r   r   r   r   r   r   r   test_issue_11801_  s    r2  c                  C   st   t d} td|  }d}t||ks(td}t|d |ks@td}t|d |ksXtd}t| | |ksptd S )Nr   r   r   u!      2
⎛1⎞ 
⎜─⎟ 
⎝x⎠ r   u       1
1 + ─
    xu     1
x⋅─
  x)r   rW   r   r   )r   her  r   r   r   test_pretty_UnevaluatedExprd  s    r4  c                  C   s8   t ddgddggt ddgf} d}t| |ks4td S )Nr   uM   ⎛⎡0  0⎤  ⎡0⎤⎞
⎜⎢    ⎥, ⎢ ⎥⎟
⎝⎣0  0⎦  ⎣0⎦⎠)r5   r   r   )rb  r  r   r   r   test_issue_10472  s     r5  c                  C   s   t ddd} t ddd}t ddd}d}d}t| d |ks@tt| d |ksTtd	}d
}td| d  |kstttd| d  |kstd}d}|d || | }t||kstt||kstd S )Nrd  r   r   re  r|  ZA_00u   A₀₀)r   r   z3*A_00u   3⋅A₀₀z(-B + A)[0, 0])r   r   r   r   subs)rd  re  r|  r  r)  r  r   r   r   test_MatrixElement_printing  s     r7  c                  C   s\   t d\} }}}td}d}t| | | |j |ks:td}td| |j |ksXtd S )Nzx y t jr  uI   ⎛   t⎞    
⎜⎛x⎞ ⎟ j_e
⎜⎜─⎟ ⎟    
⎝⎝y⎠ ⎠    u%   ⎛1⎞    
⎜─⎟ j_e
⎝y⎠    r   )r   r   r   r[  r   )r   r   rv  r[  r  r  r   r   r   test_issue_12675  s    r8  c                  C   s   t ddd} t ddd}t ddd}t|  | | dks>tt| | dksRtt| | | | |  ||  dksztt dtt}t d	tt}t|| d
kstd}tt | d| |  |kstd S )Nrd  r   re  r|  z-A*B*Cz-B + Az-A*B -B*C + A*B*Cr   zy*zx + y*z     2     
-2*y*  -a*xr   )r   r   r   r"  r  )rd  re  r|  r   r   r   r   r   r   test_MatrixSymbol_printing  s    (r9  c                  C   sX   dt  } t| dksttt  }t|dks0tttt  dt   }t|dksTtd S )NZ   u   90°u   x°u   cos(x° + 90°))r   r   r   r   rf   )r(  r  Zexpr3r   r   r   test_degree_printing  s    r;  c                  C   s$  t d} tt| j| j| j d| j | j  dks8tttt| j| j dksVttt| j| j d| j | j  dksttt	| j| j d| j | j  dksttt
| j| j| j d| j | j  dksttt| jd| j  dksttt| jd| j  d	ks td S )
Nrd  r   u"   (i_A)×((x_A) i_A + (3⋅y_A) j_A)u   x⋅(i_A)×(j_A)u    ∇×((x_A) i_A + (3⋅y_A) j_A)u!   ∇⋅((x_A) i_A + (3⋅y_A) j_A)u#   (i_A)⋅((x_A) i_A + (3⋅y_A) j_A)u   ∇(x_A + 3⋅y_A)u   ∆(x_A + 3⋅y_A))r   r   r   rZ  r   r   r[  r   r   r   r   r   r   )rd  r   r   r    test_vector_expr_pretty_printing  s    0,,0 r<  c                  C   sx  t d} td| \}}}td| }td| g\}}}}td| | g}	| }
d}d}t|
|ksbtt|
|ksrt||}
d}d}t|
|kstt|
|kst||}
d}d	}t|
|kstt|
|kst|| }
d
}d
}t|
|kstt|
|kstd||  }
d}d}t|
|ks.tt|
|ks@t|	|| }
d}d}t|
|ksftt|
|ksxt|	|| }
d}d}t|
|kstt|
|kst|	|| || || }
d}d}t|
|kstt|
|kstdt || }
d}d}t|
|ks"tt|
|ks4t||d||  }
d}d}t|
|ksbtt|
|ksttd S )NLi j kZi_0A B C DHz-iz i
A 
  z i_0
A   
    u    i₀
A  
   z  
A 
 ir  z     
-3*A 
    iu        
-3⋅A 
    iz i 
H  
  jz L_0   
H      
    L_0u    L₀  
H    
   L₀z) i     L_0  k
H    *A   *B 
  L_0        u+    i    L₀  k
H   ⋅A  ⋅B 
  L₀       r   z          i
(x + 1)*A 
          u"            i
(x + 1)⋅A 
          r   z   i    i
3*B  + A 
         u      i    i
3⋅B  + A 
         )r   r   r   r   r   r   r   r   )r=  rZ  r[  r%  Zi0rd  re  r|  r}  r@  r   r   r  r   r   r   test_pretty_print_tensor_expr  s    

rA  c                  C   s"  ddl m}  td}td|\}}}td|g\}}}}td||g}	| ||||}
d}d}t|
|ksptt|
|kst||| |	|| || }
d	}d
}t|
|kstt|
|kst||| ||||  d|	||   || }
d}d}t|
|kstt|
|ks&t|||| | |||| }
d}d}t|
|ksbtt|
|kstt|||| | || || }
d}d}t|
|kstt|
|kst| || ||  || |t	 }
d}t|
|kst| d||  || |t	 }
d}t|
|ks:tt
|	|||di}
d}|}t|
|kshtt|
|ksztt
|	|||d|di}
d}|}t|
|kstt|
|kstt
|	|||di}
d}|}t
|	| || di}
d}|}t|
|kstt|
|kstd S )Nr   )PartialDerivativer=  r>  r?  r@  z' d / i\
---|A |
  j\  /
dA     
       u=    ∂ ⎛ i⎞
───⎜A ⎟
  j⎝  ⎠
∂A     
       zO L_0  d / k   \
A   *---|H    |
       j\  L_0/
     dA        
               ua    L₀  ∂ ⎛ k  ⎞
A  ⋅───⎜H   ⎟
      j⎝  L₀⎠
    ∂A       
             r   z L_0  d /   k       k     \
A   *---|3*H     + B *C   |
       j\    L_0       L_0/
     dA                    
                           u    L₀  ∂ ⎛   k      k    ⎞
A  ⋅───⎜3⋅H    + B ⋅C  ⎟
      j⎝    L₀       L₀⎠
    ∂A                  
                        zm/ i    i\   d  / L_0\
|A  + B |*-----|C   |
\       /   L_0\    /
          dD         
                     u   ⎛ i    i⎞  ∂  ⎛ L₀⎞
⎜A  + B ⎟⋅────⎜C  ⎟
⎝       ⎠   L₀⎝   ⎠
          ∂D       
                   zw/ L_0    L_0\  d /    \
|A    + B   |*---|C   |
\           /   j\ L_0/
              dD       
                       u   ⎛ L₀    L₀⎞  ∂ ⎛   ⎞
⎜A   + B  ⎟⋅───⎜C  ⎟
⎝         ⎠   j⎝ L₀⎠
            ∂D      
                    u       2           
   ∂   ⎛       ⎞
───────⎜A  + B ⎟
       ⎝ i    i⎠
∂A  ∂A          
  n   j         uu       2        
   ∂   ⎛    ⎞
───────⎜3⋅A ⎟
       ⎝   i⎠
∂A  ∂A       
  n   j      r   z i=1,j
H     
      z i=1,j=1
H       
        z i,j=1
H     
      z    j
H    
 i=1 )Zsympy.tensor.toperatorsrB  r   r   r   r   r   r   r   r"  r   )rB  r=  rZ  r[  r%  rd  re  r|  r}  r@  r   r   r  r   r   r   &test_pretty_print_tensor_partial_deriv  s    		4	"	$	("rC  c                  C   s2   t ddd} t| t| |  }d}||ks.td S )Nr  r   z	a*(a x a))r   r   r   r   )r  r  resultr   r   r   test_issue_15560G  s    rE  c                  C   sT   t d} tt| dd d}d}tt| dd|ks8ttt| dd|ksPtd S )Nr  r   r   u   Φ(a, 1, 2)zlerchphi(a, 1, 2))r   r   rv   r   r   )r  ZuresultZaresultr   r   r   test_print_lerchphiN  s    rF  c                  C   s2   t d} d}t| j| j| jf}||ks.td S )NNz(n_x, n_y, n_z))r   ZReferenceFramer   r   r   r
  r   )rG  rD  r  r   r   r   test_issue_15583W  s    
rH  c            
      C   s  dd } ddl m} tddd}| ||dks4ttddd}td	dd}td
dd}| | dksjt| |||  | dkst| | | || |  | dksttddd}| |dksttddd}| |dksttddd}| |dksttd}td}tddd}tddd}	| || | ||	  dksLttddd}	tddd}| || | ||	  dksttddd}| |dkstd S )Nc                 S   s   t | ddddS )NTFbold)r   r   Zmat_symbol_styler   r  r   r   r   
boldprettya  s    z)test_matrixSymbolBold.<locals>.boldprettyr   )tracerd  r   u   tr(𝐀)r   re  r|  u   -𝐀u   -𝐁 -𝐀⋅𝐁 + 𝐀u&   -𝐁 -𝐀⋅𝐁 -𝐀⋅𝐁⋅𝐂ZAddotu   𝐀̈omegau   ωZ	omeganormu   ‖ω‖rQ  r  r%  r   r  u   b⋅𝐝 + α⋅𝐁⋅𝐜deltaBetau   b⋅δ + α⋅Β⋅𝐜ZA_2u   𝐀₂) sympy.matrices.expressions.tracerK  r   r   r   )
rJ  rK  rd  re  r|  rL  r  r  r%  r  r   r   r   test_matrixSymbolBold_  s4    &""rP  c                   C   sp   t dddkstt dddks$tt dddks6tt ddd	ksHtt d
ddksZtt dddksltd S )Nr  u   ̃u   ãZaau   aãZaaau   aãaZaaaau   aaãaZaaaaau   aaãaaZabcdefgu   ⃜u
   abcd⃜efg)r   r   r   r   r   r   test_center_accent  s    rQ  c                      s   ddl m   dt dddks$t dt dddks<t dt dd	d
dksVt dt dd	d
dkspttt fdd tt fdd d S )Nr   r  r   Fr   z1 + ITu   1 + ⅈr[  )r   imaginary_unitu   1 + ⅉc                      s    t t dS )NrR  r   r   r  r   r   r\    r]  z%test_imaginary_unit.<locals>.<lambda>c                      s    t ddS )NZkkkrS  rT  r   r  r   r   r\    r]  )sympy.printing.prettyr   r   r   r   r  
ValueErrorr   r   r  r   test_imaginary_unit  s    rW  c                  C   s   ddl m} m}m} t| ddks(tt| ddks<tt|dddksRtt|dddkshtt|ddd	ks~tt|ddd
kstd S )Nr   Identityr   r   r   r   u   𝕀r   0u   𝟘1u   𝟙)r  rY  r   r   r   r   r   rX  r   r   r   test_str_special_matrices  s    r\  c                   C   s  t ttdksttttdks(tt tttdks>tttttdksTtt ttdkshttttdks|tt ttdksttttdkstt ttdksttttdkstt t	tdksttt	tdkstt t
tdks
ttt
tdks tt ttdks6ttttdksLtt ttd	ksbttttd
ksxtt tttdkstttttdkstt ttdksttttdkstd S )NzW(x)zW(x, y)zAi(x)zBi(x)zAi'(x)zBi'(x)zC(x)zS(x)zHeaviside(x)u   θ(x)zHeaviside(x, y)u   θ(x, y)zdirichlet_eta(x)u   η(x))r   r   r   r   r   r   r    r"   r!   r#   r%   r&   r$   r(   r   r   r   r   test_pretty_misc_functions  s,    r]  c                  C   s   t ddd\} }}td| |}td| |}t||}d}d}t||ksLtt||ks\tt|d| }d	}d
}t||kstt||kstt||j d| }d}d}t||kstt||kstd S )Nzm, n, pTr#  rd  re  z .n
A  u	    ∘n
A  r   z .(n + 1)
A        u    ∘(n + 1)
A        z,      .(n + 1)
/   T\        
\A*B /        u8         ∘(n + 1)
⎛   T⎞        
⎝A⋅B ⎠        )r   r   r   r   r   r   rx  )r1  r"  r7  rd  re  r   r   r  r   r   r   test_hadamard_power  s0    
r^  c                  C   sL   t ddd} tt| | t dfdks*ttt| | t dfdksHtd S )Nr"  Tr#  r   z;   1     
  __     
  \ `    
   )    n
  /_,    
n = -oo  uW     1     
 ___    
 ╲      
  ╲     
  ╱    n
 ╱      
 ‾‾‾    
n = -∞  )r   r   r   r   r   r   )r"  r   r   r   test_issue_17258  s    r_  c                  C   s&   d} dd | D ddddgks"t d S )Nu   v̇_mc                 S   s   g | ]}t |qS r   )r   ).0symr   r   r   
<listcomp>	  s     z%test_is_combining.<locals>.<listcomp>FT)r   )liner   r   r   test_is_combining  s    
rd  c                  C   s   t tdtd  dkstttdtd  dks8tt tdt  dksPtttdt  dkshtt tdt  dkstttdt  dksttd} td	d|   d
kstt d	d|   dkstd S )Nr   z  / -1\
  \e  /
pi     u    ⎛ -1⎞
 ⎝ℯ  ⎠
π     z  1 
  --
  pi
pi  u    1
 ─
 π
π z3      1     
  ----------
  EulerGamma
pi          u    1
 ─
 γ
π Zx_17r  u   x₁₇___
 ╲╱ 7 zx_17___
  \/ 7 )r   r   rh   r   r   r   r   )r
  r   r   r   test_issue_17616  s2    re  c                   C   s6   t tt tdkstt ttt ddks2td S )Nz{..., -1, 0, 1, ...}r  z{..., 1, 0, -1, ...})r   rK   r   r   r   r   r   r   test_issue_17857:  s    rf  c               
   C   s   t d} t d}tt| t|  t|  dtjdks:ttt| t|d t	dt
t| d |d dksrttt| ttd| dkf| d d	 | dkfd	| dkf| d d
fd	 dt	dddkstd S )Nr   r"  r   uu   ⎧  │         ⎛      x    ⎞⎫
⎨x │ x ∊ ℂ ∧ ⎝-x + ℯ  = 0⎠⎬
⎩  │                      ⎭r   u   ⎧  │     ⎧-n   n⎫   ⎛n         ⎞⎫
⎨x │ x ∊ ⎨───, ─⎬ ∧ ⎜─ ∈ [0, ∞)⎟⎬
⎩  │     ⎩ 2   2⎭   ⎝2         ⎠⎭r   r   g      ?Tu  ⎧  │              ⎛⎛⎧   1     for x ≥ 3⎞          ⎞⎫
⎪  │              ⎜⎜⎪                  ⎟          ⎟⎪
⎪  │              ⎜⎜⎪x                 ⎟          ⎟⎪
⎪  │              ⎜⎜⎪─ - 0.5  for x ≥ 2⎟          ⎟⎪
⎪  │              ⎜⎜⎪2                 ⎟          ⎟⎪
⎨x │ x ∊ [0, 3] ∧ ⎜⎜⎨                  ⎟ - 0.5 = 0⎟⎬
⎪  │              ⎜⎜⎪  0.5    for x ≥ 1⎟          ⎟⎪
⎪  │              ⎜⎜⎪                  ⎟          ⎟⎪
⎪  │              ⎜⎜⎪   x              ⎟          ⎟⎪
⎪  │              ⎜⎜⎪   ─     otherwise⎟          ⎟⎪
⎩  │              ⎝⎝⎩   2              ⎠          ⎠⎭)r   r   r   r   rh   r   Z	Complexesr   rJ   rO   r   rM   r^   )r   r"  r   r   r   test_issue_18272?  s&     .0
rg  c                  C   s$   ddl m}  t| ddks td S )Nr   Strr   )sympy.core.symbolri  r   r   rh  r   r   r   test_StrY  s    rk  c                  C   s   t d} t ddd}td| |}tt|dks4ttt|dksHttt|dkd	ks`ttd
| |}tt||dkstd S )NmusigmaT)Zpositiverk  zE[X]zVar(X)r   zP(X > 0)rl  z	Cov(X, Y))r   r   r   r   r   r   r   r   )rl  rm  rk  rl  r   r   r   test_symbolic_probability^  s    rn  c                  C   s  ddl m}  ddlm} td}td\}}|||t tfdtd|dtftt	dt t
|t  | dt|t  |d   |t k|tk @ t|d@ fd	t||  t |dtff}t| |d
kstt|||t tfdtd|dtftd|dtffdkstd S )Nr   )piecewise_fold)FourierSeriesr   zk nr   r   r   )r   Tu{  ⎧                      2⋅sin(3⋅x)                                
⎪2⋅sin(x) - sin(2⋅x) + ────────── + …  for n > -∞ ∧ n < ∞ ∧ n ≠ 0
⎨                          3                                     
⎪                                                                
⎩                 0                            otherwise         rZ  )Z$sympy.functions.elementary.piecewisero  sympy.series.fourierrp  r   r   r   rG   r   r^   rf   rq   r   r   r   r   )ro  rp  r   r%  r"  for   r   r   test_issue_21758i  s,     L

 rs  c            
      C   s   ddl m} m}m}m} tddd\}}| dd}t|dksBt|d|}t|dks\t|d	|||g}t|d	ks|t||d}	t|	d
kstd S )Nr   )ManifoldPatchCoordSystemBaseScalarFieldr  T)realrb  r   Prectr   )ri  rt  ru  rv  rw  r   r   r   )
rt  ru  rv  rw  r   r   r1  r7  rz  r  r   r   r   test_diffgeom{  s    


r{  c               	   C   s   t  " ddlm}  | ddks$tW 5 Q R X t   ddlm} |ddd}W 5 Q R X t  $ |j|j  krxdks~n tW 5 Q R X d S )Nr   )xstrr   r[  )
prettyFormr6  )unicode)r   &sympy.printing.pretty.pretty_symbologyr|  r   Z sympy.printing.pretty.stringpictr}  r~  r6  )r|  r}  r7  r   r   r   test_deprecated_prettyForm  s    r  )N)N(  Zsympy.concrete.productsr   Zsympy.concrete.summationsr   Zsympy.core.addr   Zsympy.core.basicr   Zsympy.core.containersr   r   Zsympy.core.functionr   r	   r
   r   Zsympy.core.mulr   r  r   r   r   Zsympy.core.numbersr   r   r   r   Zsympy.core.powerr   Zsympy.core.relationalr   r   r   r   r   r   Zsympy.core.singletonr   rj  r   r   Z$sympy.functions.elementary.complexesr   Z&sympy.functions.elementary.exponentialr   Zsympy.functions.special.besselr    r!   r"   r#   Z'sympy.functions.special.delta_functionsr$   Z'sympy.functions.special.error_functionsr%   r&   Z-sympy.functions.special.singularity_functionsr'   Z&sympy.functions.special.zeta_functionsr(   Zsympy.geometry.liner)   r*   Zsympy.integrals.integralsr+   Zsympy.logic.boolalgr,   r-   r.   r/   r0   r1   r2   r3   r4   Zsympy.matrices.denser5   r6   Z sympy.matrices.expressions.slicer7   rO  r8   Zsympy.polys.domains.finitefieldr9   Zsympy.polys.domains.integerringr:   Z!sympy.polys.domains.rationalfieldr;   Zsympy.polys.domains.realfieldr<   Zsympy.polys.orderingsr=   r>   Zsympy.polys.polytoolsr?   Zsympy.polys.rootoftoolsr@   rA   Zsympy.series.formalrB   rq  rC   Zsympy.series.limitsrD   Zsympy.series.orderrE   Zsympy.series.sequencesrF   rG   rH   rI   Zsympy.sets.containsrJ   r  rK   r  rL   rM   rN   rO   rP   Zsympy.codegen.astrQ   rR   rS   rT   rU   rV   Zsympy.core.exprrW   Zsympy.physics.quantum.tracerX   Zsympy.functionsrY   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   Zsympy.matrices.expressionsr   Zsympy.physicsr   Zsympy.physics.control.ltir   r   r   r   r   r   r   r   r  r   r   rU  r   r   r   r  r   r   Zsympy.sets.conditionsetr   Z
sympy.setsr   r   Zsympy.sets.setexprr   Zsympy.stats.crv_typesr   Z sympy.stats.symbolic_probabilityr   r   r   r   Zsympy.tensor.arrayr   r   r   r   r   Zsympy.tensor.functionsr   Zsympy.tensor.tensorr   r   r   r   r   Zsympy.testing.pytestr   r   r   Zsympy.vectorr   r   r   r   r   r   r   Zsympyra  r   r  r  r%  r  r   r   r
  r%  r"  r6  r7  r   rT  rU  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.  r4  r5  r;  rG  rH  rL  rM  rN  rO  rS  rV  r^  rc  rf  rj  rp  rq  rs  rw  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  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  r2  r4  r5  r7  r8  r9  r;  r<  rA  rC  rE  rF  rH  rP  rQ  rW  r\  r]  r^  r_  rd  re  rf  rg  rk  rn  rs  r{  r  r   r   r   r   <module>   s   , (($,


 /







&


   
 %
G

:



Y

=
<      
}



9
K
	
J
N

"
P
V
 r
 7
S
 5


4
.
"
9
%


 `

 U

$
8
	
8
-
,





\

#
 

 
1

@
4





    

,
8
	


5

y
{
@
b	Q7Z&?
)	 % 0	(	
3-