
    gD                    
   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-lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d d.lmZmZmZmZmZmZmZmZ d d/lmZ d d0lmZ d d1lmZmZmZmZmZmZmZmZmZ d d2lmZmZ d d3lmZmZ d d4lmZmZmZ 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?lZ G d@ dAej                  Z e(dB          \  ZZ ZZZZZZZZZ	 edC          Z
 e'dD          Z e'dE          Z	 ddFZddGZdH ZdI ZdJ ZdK ZdL ZdM ZdN ZdO ZdP ZdQ ZdR ZdS ZdT ZdU ZdV ZdW ZdX ZdY ZdZ Z d[ Z!d\ Z"d] Z#ed^             Z$d_ Z%d` Z&da Z'db Z(dc Z)dd Z*de Z+df Z,dg Z-dh Z.di Z/dj Z0dk Z1dl Z2dm Z3dn Z4do Z5dp Z6dq Z7dr Z8ds Z9dt Z:du Z;dv Z<dw Z=dx Z>dy Z?dz Z@d{ ZAd| ZBd} ZCd~ ZDd ZEd ZFd ZGd ZHd ZId ZJd ZKd ZLd ZMd ZNd ZOd ZPd ZQd ZRd ZSd ZTd ZUd ZVd ZWd ZXd ZYd ZZd Z[d Z\d Z]d Z^d Z_d Z`d Zad Zbd Zcd Zdd Zed Zfd Zgd Zhd Zid Zjd Zkd Zld Zmd Znd Zod Zpd Zqd Zrd Zsd Ztd Zud Zvd Zwd Zxd Zyd Zzd Z{d Z|d Z}d Z~d Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdÄ ZdĄ Zdń ZdƄ ZdǄ ZdȄ ZdɄ Zdʄ Zd˄ Zd̄ Zd̈́ Zd΄ Zdτ ZdЄ Zdф Zd҄ Zdӄ ZdԄ ZdՄ Zdք Zdׄ Zd؄ Zdل Zdڄ Zdۄ Zd܄ Zd݄ Zdބ Zd߄ Zd Zd Zd Zd Zd?S )    )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polylog
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
StateSpace)jouledegree)pprintpretty)center_accentis_combiningcenter)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                       e Zd ZdS )
lowergammaN__name__
__module____qualname__     c/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/printing/pretty/tests/test_pretty.pyr   r   V   s        Dr   r   za,b,c,d,x,y,z,k,n,s,pfthetaphic                 (    t          | |dd          S )zASCII pretty-printingForderuse_unicode	wrap_linexprettyexprr   s     r   r   r   
  s    4u%5IIIIr   c                 (    t          | |dd          S )zUnicode pretty-printingTFr   r   r   s     r   uprettyr     s    4u$%HHHHr   c                     t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ d S Nxxxzxxx'xxxzxxx"xxxzxxx"xxx'xxxzxxx
xxxr   r   r   r   test_pretty_ascii_strr         5??e####5??e####::----9*,,,,::----9*,,,,::----::----?$$6666::------r   c                     t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ d S r   r   r   r   r   test_pretty_unicode_strr   !  r   r   c                     t          t                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ d S )N   ∞z	alpha^+_1u   α⁺₁rc      βlambdau   λ)r   r   r   r   r   r   test_upretty_greekr   .  s    B==E!!!!F;''))Z7777F6NN$$,,,,6(##$$,,,,,,r   c                     t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ d S )Nbeta12u   β₁₂Y00u   Y₀₀Y_00zF^+-u   F⁺⁻r   r   r   r   r   test_upretty_multiindexr   5  s    F8$$&&*4444F5MM##y0000F6NN$$	1111F6NN$$	111111r   c                  j   t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d	                    d
k    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ d S )Nbeta_1_2u	   β₁ ₂zbeta^1^2u   β¹ ²zbeta_1^2u   β²₁
beta_10_20u   β₁₀ ₂₀zbeta_ax_gamma^iu   βⁱₐₓ ᵧz	F^1^2_3_4u   F¹ ²₃ ₄z	F_1_2^3^4u   F³ ⁴₁ ₂	F_1_2_3_4u   F₁ ₂ ₃ ₄z	F^1^2^3^4u   F¹ ² ³ ⁴r   r   r   r   test_upretty_sub_superr   <  s6   F:&&((K7777F:&&((I5555F:&&((I5555F<((**.?????F,--//3DDDDDF;''))_<<<<F;''))-=====F;''))-?????F;''))_<<<<<<r   c                  z   t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d	                    d
k    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ d S )NF_betau   FᵦF_gammau   FᵧF_rhou   FᵨF_phiu   FᵩF_chiu   FᵪF_au   FₐF_eu   FₑF_iu   FᵢF_ou   FₒF_uu   FᵤF_ru   FᵣF_vu   FᵥF_xu   Fₓr   r   r   r   test_upretty_subs_missing_in_24r   H  s   F8$$&&&0000F9%%''61111F7OO%%////F7OO%%////F7OO%%////F5MM##v----F5MM##v----F5MM##v----F5MM##v----F5MM##v----F5MM##v----F5MM##v----F5MM##v------r   c                  &   t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d	                    d
k    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ d S )NF_hu   FₕF_ku   FₖF_lu   FₗF_mu   FₘF_nu   FₙF_pu   FₚF_su   FₛF_tu   Fₜr   r   r   r   test_missing_in_2X_issue_9047r  Y  s    F5MM##v----F5MM##v----F5MM##v----F5MM##v----F5MM##v----F5MM##v----F5MM##v----F5MM##v------r   c                  B   t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d	                    d
k    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                     d k    sJ t          t          d!                    d!k    sJ t          t          d"                    d"k    sJ t          t          d#                    d$k    sJ t          t          d%                    d&k    sJ t          t          d'                    d(k    sJ t          t          d)                    d(k    sJ t          t          d*                    d+k    sJ t          t          d,                    d-k    sJ t          t          d.                    d/k    sJ t          t          d0                    d1k    sJ t          t          d2                    d3k    sJ t          t          d4                    d4k    sJ t          t          d5                    d5k    sJ d S )6N	Fmathringu   F̊Fddddotu   F⃜Fdddotu   F⃛Fddotu   F̈Fdotu   ḞFchecku   F̌Fbreveu   F̆Facuteu   F́Fgraveu   F̀Ftildeu   F̃Fhatu   F̂Fbaru   F̅Fvecu   F⃗Fprimeu   F′FprmFboldFbmFcalFscrFfrakFnormu   ‖F‖Favgu   ⟨F⟩Fabsz|F|Fmagxvecdotu   x⃗̇xDotVecu   ẋ⃗xHATNormu	   ‖x̂‖xMathring_yCheckPRM__zbreveAbsu   x̊_y̌′__|z̆| alphadothat_nVECDOT__tTildePrimeu   α̇̂_n⃗̇__t̃′x_dotx__dotr   r   r   r   test_upretty_modifiersr(  d  s   F;''))U2222F9%%''61111F8$$&&&0000F7OO%%....F6NN$$----F8$$&&%////F8$$&&%////F8$$&&%////F8$$&&%////F8$$&&%////F6NN$$----F6NN$$----F6NN$$....F8$$&&&0000F6NN$$....F7OO%%0000F5MM##u,,,,F6NN$$....F6NN$$....F7OO%%0000F7OO%%2222F6NN$$	1111F6NN$$----F6NN$$----F9%%''83333F9%%''83333F:&&((K7777F;<<>>BUUUUUF=>>@@D[[[[[F7OO%%0000F8$$&&(222222r   c                     ddl m}  t           | dd                    dk    sJ t           | d                    dk    sJ t            | dd          dd	                    d
k    sJ t           |                       dk    sJ d S )Nr   Cycle      z(1 2)z(2)         z
(1 3)(4 5)()) sympy.combinatorics.permutationsr+  r   r*  s    r   test_pretty_Cycler3    s    666666%%1++'))))%%((u$$$$+%%1++a##$$4444%%''??d""""""r   c                     ddl m}    | dd          dd          }t          |dd          d	k    sJ t          |dd
          d	k    sJ t          |d
d          dk    sJ t          |d
d
          dk    sJ t                      5  | j        }d
| _        t          |d          dk    sJ t          |d
          dk    sJ || _        d d d            d S # 1 swxY w Y   d S )Nr   )Permutationr,  r-  r.  r/  T)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   )r2  r5  r   r   print_cyclic)r5  p1old_print_cyclics      r   test_pretty_Permutationr;    s   <<<<<<	Q		1a	 	 B24T:::lJJJJ24U;;;|KKKK25d;;;    25e<<<    
 	!	! 	4 	4&3#( rt,,,	    ru---	    $4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   ACC #C c                     t          t          d           dz            dk    sJ t          t          d           dz            dk    sJ t          } d}d}t          |           |k    sJ t          |           |k    sJ t          dz  } d	}d	}t          |           |k    sJ t          |           |k    sJ dt          z  } d
}d}t          |           |k    sJ t          |           |k    sJ t          dz  } d}d}t          |           |k    sJ t          |           |k    sJ t          t          d          dd          } d}d}t          |           |k    sJ t          |           |k    sJ t          t          dz  z  } d}d}t          |           |k    sJ t          |           |k    sJ t          t          dd          z  } d}d}t          | ddd          |k    sJ t          | ddd          |k    sJ t          t          dd          z  } d}d}t          |           |k    sJ t          |           |k    sJ dt          z  } d}d}t          |           |k    sJ t          |           |k    sJ t          ddd          } d}d}t          |           |k    sJ t          |           |k    sJ t          dz  t          z   dz   } d}d}d}d}d}d}t          |           |||fv sJ t          |           |||fv sJ dt          z
  } d }d!}d }d!}t          |           ||fv sJ t          |           ||fv sJ ddt          z  z
  } d"}d#}d$}d%}t          |           ||fv sJ t          |           ||fv sJ t          t          z  } d&}d'}t          |           |k    sJ t          |           |k    sJ t           t          z  } d(}d)}t          |           |k    sJ t          |           |k    sJ t          dz   t          z  } d*}d+}d,}d-}t          |           ||fv sJ t          |           ||fv sJ dt          z   t          z  } d.}d/}d0}d1}d2}d3}t          |           |||fv sJ t          |           |||fv sJ dt          z  t          d4z   z  } d5}d6}d7}d8}t          |           ||fv sJ t          |           ||fv sJ t          j	         dt          z  z
  } d9}d:}t          |           |k    sJ t          |           |k    sJ t          j	        dt          z  z
  } d;}d<}t          |           |k    sJ t          |           |k    sJ t          j	         dt          z  dz  z
  } d=}d>}t          |           |k    sJ t          |           |k    sJ t          j	        dt          z  dz  z
  } d?}d@}t          |           |k    sJ t          |           |k    sJ 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   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   xr   r   yr   Half)	r   	ascii_str	ucode_strascii_str_1ascii_str_2ascii_str_3ucode_str_1ucode_str_2ucode_str_3s	            r   test_pretty_basicr[    s   HQKK<>##v----HRLL=#%%    D 
  $<<9$$$$4==I%%%%qDD  
 $<<9$$$$4==I%%%%Q3D   $<<9$$$$4==I%%%% d7D  
 $<<9$$$$4==I%%%% qttTE***D  
 $<<9$$$$4==I%%%%QU7D   $<<9$$$$4==I%%%% hq!nnD  
 4Ue  '( ( ( (4TU  '( ( ( ( hr1ooD   $<<9$$$$4==I%%%%7D  
 $<<9$$$$4==I%%%% q!e$$$D  
 $<<9$$$$4==I%%%%qD1HqLD      
 $<<KkBBBBB4==[+{CCCCCq5D 
 
 
  $<<K555554==[+66666qs7D 
 
 
  $<<K555554==[+66666Q3D   $<<9$$$$4==I%%%%2a4D   $<<9$$$$4==I%%%%E19D     $<<K555554==[+66666E19D 
 
 
 
 
  $<<KkBBBBB4==[+{CCCCC a4R=D     $<<K555554==[+66666F7QqS=D 
  $<<9$$$$4==I%%%%6AaC<D 
  $<<9$$$$4==I%%%%F7QqSU?D   $<<9$$$$4==I%%%%6AaCE>D   $<<9$$$$4==I%%%%%%r   c                     t            t          z  } d}d}t          |           |k    sJ t          |           |k    sJ t            t          z  t          z  } d}d}t          |           |k    sJ t          |           |k    sJ t           dz  t          z  } d}d}t          |           |k    sJ t          |           |k    sJ t           dz   t          z  } d}d	}t          |           |k    sJ t          |           |k    sJ t            t          t          z  z  } d
}d}t          |           |k    sJ t          |           |k    sJ t
           t          dz  z  } d}d}t          |           |k    sJ t          |           |k    sJ t          t
           t          z  z  } d}d}t          |           |k    sJ t          |           |k    sJ dt          dz  z  } d}d}t          |           |k    sJ t          |           |k    sJ dt          dz  z  } d}d}t          |           |k    sJ t          |           |k    sJ t          dd          } d}d}t          |           |k    sJ t          |           |k    sJ d S )NrM  rN  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  )rP  rQ  r   r   zabr   r   rS  rT  s      r   test_negative_fractionsrc  D  s<   2a4D   $<<9$$$$4==I%%%%2a46D   $<<9$$$$4==I%%%%a46D   $<<9$$$$4==I%%%%qD57D   $<<9$$$$4==I%%%%2qs8D   $<<9$$$$4==I%%%%2ad7D   $<<9$$$$4==I%%%%r!t9D   $<<9$$$$4==I%%%%ad7D   $<<9$$$$4==I%%%%q!t8D   $<<9$$$$4==I%%%%D"D   $<<9$$$$4==I%%%%%%r   c            
         t          ddd          } t          |           dk    sJ t          |           dk    sJ t          ddd          } t          |           dk    sJ t          |           dk    sJ t          ddd          } t          |           d	k    sJ t          |           d
k    sJ t          dddd          } t          |           dk    sJ t          |           dk    sJ t          ddd          } t          |           dk    sJ t          |           dk    sJ t          ddd          } t          |           dk    sJ t          |           dk    sJ t          dddd          } t          |           dk    sJ t          |           dk    sJ t          dddd          } t          |           dk    sJ t          |           dk    sJ t          ddd          } t          |           dk    sJ t          |           dk    sJ t          dt          d          } t          |           dk    sJ t          |           dk    sJ t          ddddt          d          } t          |           dk    sJ t          |           dk    sJ t          ddd          } t          |           dk    sJ t          |           dk    sJ t          dddddt
          t          d          } t          |           d k    sJ t          |           d!k    sJ t          ddddt          z   dt
          t          d          } t          |           d"k    sJ t          |           d#k    sJ t          t          dd          t          d$d%          d          } t          |           d&k    sJ t          |           d'k    sJ t          t          t
          z   t          dd          d          } t          |           d(k    sJ t          |           d)k    sJ t          t          dd          t          t
          z   d          } t          |           d*k    sJ t          |           d+k    sJ t          t          j	        t          t
          z   d          } t          |           d,k    sJ t          |           d-k    sJ t          t          t
          z
  t          j	        d          } t          |           d.k    sJ t          |           d/k    sJ t          t          dd          t          t
          z
  t          j	        t          t
          z   d          } t          |           d0k    sJ t          |           d1k    sJ t          t          t
          z   t          dd          t          j	        t
          t          z
  d          } t          |           d2k    sJ t          |           d3k    sJ t          t          t
          z   t          dd          t          dd          t          d$d4          d          } t          |           d5k    sJ t          |           d6k    sJ t          t          dd          t          t
          z   t          j	        t
          t          z
  d          } t          |           d7k    sJ t          |           d8k    sJ 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⋅xr0     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   rP  rQ  r_  r   r   Oner   s    r   test_Mulri    s   q!e$$$D$<<5    4==G####q!e$$$D$<<5    4==G####q!e$$$D$<<5    4==G####q!Q'''D$<<7""""4==K''''q!e$$$D$<<5    4==G####q!e$$$D$<<7""""4==G####q!Q'''D$<<7""""4==K''''q!Q'''D$<<;&&&&4==K''''q"u%%%D$<<6!!!!4==H$$$$sA&&&D$<<7""""4==I%%%%q!Q1u---D$<<;&&&&4==/////r1u%%%D$<<6!!!!4==H$$$$q!Q1aU333D$<<?****4==77777q!Q!Q1u555D$<<000004=======x1~~x1~~>>>D$<<9$$$$4==K''''q1uhq!nnu555D$<<=((((4==O++++x1~~q1uu555D$<<000004==;;;;;qua!ee,,,D$<<;&&&&4==M))))q1uaee,,,D$<<;&&&&4==M))))x1~~q1uaeQUUCCCD$<<222224==99999q1uhq!nnaeQUUCCCD$<<222224==99999q1uhq!nnhq!nnhq!nneTTTD$<<.....4==55555x1~~q1uaeQUUCCCD$<<222224==9999999r   c                  ^   t          t           dz    t           dt          d          z  z
  dz   z  t           dz   t           dz   z  z
            dk    sJ t	          t           dz    t           dt          d          z  z
  dz   z  t           dz   t           dz   z  z
            dk    sJ d S )Nr0  r-  zO         2           /         ___    \
- (5 - y)  + (x - 5)*\-x - 2*\/ 2  + 5/uO            2                          
- (5 - y)  + (x - 5)⋅(-x - 2⋅√2 + 5))r   rP  rs   rQ  r   r   r   r   test_issue_5524rk  1  s    QBF)aR!DGG)^a/0QBFaR!V3DDEE    aR!V9qb1T!WW9nq01aR!Vqb1f4EEFF     r   c                  *   t          t          dz  t          z   dz   d          dk    sJ t          t          dz  t          z   dz   d          dk    sJ t          dt          z
  d          dk    sJ t          dt          z
  d          d	k    sJ t          ddt          z  z
  d          d
k    sJ t          ddt          z  z
  d          dk    sJ dt          dz  z  t          dz  z   t          dz  z
  t          dz  z   } t          | d           dk    sJ t          | d          dk    sJ t          | d          dk    sJ t          t          dz  dz  z
  t          dz  dz  z   t          t          dz            z   }d}d}t          |d           |k    sJ t	          |d           |k    sJ t          |d          |k    sJ t	          |d          |k    sJ t          |d          |k    sJ t	          |d          |k    sJ d S )Nr-  r,  lexr   rH  zrev-lexrG  rJ  rI  rL  rK  r/  r.  z'   4    2    3    2
2*x  - x  + y  + y z' 2    3    2      4
y  + y  - x  + 2*x rf  r0  x   zS     3    5         
    x    x      / 6\
x - -- + --- + O\x /
    6    120        ue        3    5         
    x    x      ⎛ 6⎞
x - ── + ─── + O⎝x ⎠
    6    120        )r   rP  rQ  rF   r   )r   r   rS  rT  s       r   test_pretty_orderingrp  ?  s   !Q$(Q,e,,,   
 !Q$(Q,i000   
 !a%u%%%1111!a%y)))W4444!ac'''':5555!ac'+++y8888	!Q$A1q!t#A!4      
 !5!!!   
 !9%%%    q!tAv:1S 1QT77*D   $d###y00004t$$$	1111$e$$$	11114u%%%2222$i(((I55554y)))Y666666r   c                      t          t                    t          t                    cxk    rdk    sn J t          t                    dk    sJ d S )Nr      γ)r   r   strr   r   r   r   test_EulerGammart  z  sT    *Z@@@@L@@@@@@:$&&&&&&r   c                      t          t                    t          t                    cxk    rdk    sn J t          t                    dk    sJ d S )Nr   u   φ)r   r   rs  r   r   r   r   test_GoldenRatiorv    sV    +#k"2"2CCCCmCCCCCC;4''''''r   c                  p    t          t                    t          t                    cxk    rdk    sn J d S )NG)r   r   r   r   r   r   test_Catalanry    s;    '??gg..5555#55555555r   c                     t          t          t                    } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          t                    } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          t                    } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          t                    } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          t                    } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          t          dz   z  t          d	z            } d
}d}d}d}t          |           ||fv sJ t	          |           ||fv sJ 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   rP  rQ  r   r   r   r   r   r   r   )r   rS  rT  rU  rV  rX  rY  s          r   test_pretty_relationalr{    s   a88D 
  $<<9$$$$4==I%%%%a88D 
  $<<9$$$$4==I%%%%a88D 
  $<<9$$$$4==I%%%%a88D 
  $<<9$$$$4==I%%%%a88D 
  $<<9$$$$4==I%%%%aQiAD     $<<K555554==[+6666666r   c                      t          t          t                    } d}d}t          |           |k    sJ t	          |           |k    sJ d S )Nzx := y)rR   rP  rQ  r   r   rb  s      r   test_Assignmentr}    s[    aD 
  $<<9$$$$4==I%%%%%%r   c                     t          t          t                    } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          t                    } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          t                    } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          t                    } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          t                    } d}d}t          |           |k    sJ t	          |           |k    sJ d S )Nzx += yzx -= yzx *= yzx /= yzx %= y)	rS   rP  rQ  r   r   rT   rU   rV   rW   rb  s      r   test_AugmentedAssignmentr    s   !!Q''D 
  $<<9$$$$4==I%%%%!!Q''D 
  $<<9$$$$4==I%%%%!!Q''D 
  $<<9$$$$4==I%%%%!!Q''D 
  $<<9$$$$4==I%%%%!!Q''D 
  $<<9$$$$4==I%%%%%%r   c                     t           t          dz  z  } d}d}t          |           |k    sJ t          |           |k    sJ t           t	          dd          z  t          t	          dd          z  z  } d}d}t          |           |k    sJ t          |           |k    sJ t          t                    dz  t          t                    dz  z  } d	}d
}t          |           |k    sJ t          |           |k    sJ d S )NrB  rC  rD  r.  r-  rF  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))rQ  rP  r   r   r   rr   ru   rb  s      r   test_pretty_rationalr  .  s#   QU7D   $<<9$$$$4==I%%%%hq!nnq(2q//11D   $<<9$$$$4==I%%%%q6619SVVQYD   $<<9$$$$4==I%%%%%%r   c            
         dt           z  t          t                     z   } d}d}d}d}d}t          |           ||fv sJ t          |           |||fv sJ t	          t                     } d}d}t          |           |k    sJ t          |           |k    sJ t	          t           t           dz  d	z   z            } d
}d}d}d}t          |           ||fv sJ t          |           ||fv sJ t	          d	t
          t	          t                     z
  z            } d}d}t          |           |k    sJ t          |           |k    sJ t          dd          }t          |          } d}d}t          |           |k    sJ t          |           |k    sJ t          d|z            } d}d}t          |           |k    sJ t          |           |k    sJ t          t          t          |                              } d}d}t          |           |k    sJ t          |           |k    sJ t          |d	z             } d}d}d}d}t          |           ||fv sJ t          |           ||fv sJ t          |          } d}d}t          |           |k    sJ t          |           |k    sJ t          d|z            } d}d}t          |           |k    sJ t          |           |k    sJ t          dd          }t          |          } d}d}t          |           |k    sJ t          |           |k    sJ t          d|z            } d}d}t          |           |k    sJ t          |           |k    sJ t          t          t          |                              } d}d}t          |           |k    sJ t          |           |k    sJ t          |d	z             } d }d!}d }d!}t          |           ||fv sJ t          |           ||fv sJ dt          |t                    z  } d"}d#}t          |           |k    sJ t          |           |k    sJ dt          d|z  t                    z  } d$}d%}t          |           |k    sJ t          |           |k    sJ dt          |dz  t                    z  } d&}d'}t          |           |k    sJ t          |           |k    sJ t          |          } d(}d(}t          |           |k    sJ t          |           |k    sJ t          |          } d(}d(}t          |           |k    sJ t          |           |k    sJ t          |          } d)}d)}t          |           |k    sJ t          |           |k    sJ t          |          } d)}d)}t          |           |k    sJ t          |           |k    sJ t          |t                     } d*}d*}t          |           |k    sJ t          |           |k    sJ t          |          } d+}d+}t          |           |k    sJ t          |           |k    sJ t!          |          } d,}d,}t          |           |k    sJ t          |           |k    sJ t#          |          } d-}d-}t          |           |k    sJ t          |           |k    sJ t%          |          } d.}d/}t          |           |k    sJ t          |           |k    sJ t%          |t                     } d0}d1}t          |           |k    sJ t          |           |k    sJ t'          t           t
          t(                    } d2}d2}t          |           |k    sJ t          |           |k    sJ t+          t           t
          t(                    } d3}d3}t          |           |k    sJ t          |           |k    sJ t-          t           t
          t(                    } d4}d4}t          |           |k    sJ t          |           |k    sJ t/          t           t
          t(                    } d5}d5}t          |           |k    sJ t          |           |k    sJ t1          t                     } d6}d6}t          |           |k    sJ t          |           |k    sJ t3          d7          }	t1           |	t           d	z                       } d8}d9}d8}d9}t          |           ||fv sJ t          |           ||fv sJ  |	t                     } d:}d:}t          |           |k    sJ t          |           |k    sJ  |	t           t
                    } d;}d;}t          |           |k    sJ t          |           |k    sJ  |	t           t
          d	z   z  t
                    } d<}d=}d>}d?}t          |           ||fv sJ t          |           ||fv sJ  |	t           t           t           t           t           t           z  z  z  z  z            } d@}dA}t          |           |k    sJ t          |           |k    sJ t5          t                     dz  } dB}dB}t          |           |k    sJ t          |           |k    sJ t1          t6          t8          t:          z  z             } dC}dD}t          |           |k    sJ t          |           |k    sJ t1          t          t6          t8          t:          z  z                       } dE}dF}t          |           |k    sJ t          |           |k    sJ t1           |	d	t1           |	t                               z                       } dG}dH}dI}dJ}t          |           ||fv sJ t          |           ||fv sJ  |	t           t
          d	z   z  t
                    } d<}d=}d>}d?}t          |           ||fv sJ t          |           ||fv sJ t=          d	t
          t=          t                     z
  z            } dK}dL}t          |           |k    sJ t          |           |k    sJ t?          d	t
          t?          t                     z
  z            } dM}dN}t          |           |k    sJ t          |           |k    sJ tA          |          } dO}dO}t          |           |k    sJ t          |           |k    sJ tA          d	d	d	d	d	|z  z   z  z   z            } dP}dQ}t          |           |k    sJ t          |           |k    sJ tA          |t                     } dR}dR}t          |           |k    sJ t          |           |k    sJ tA          |t           dz            } dS}dT}t          |           |k    sJ t          |           |k    sJ 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)!rP  ri   r   r   rZ   rQ  r   rk   rt   rl   rd   kre   r~   r   r   r   r   r   r   r_  r   r   r   r   r
   rr   r`  ra  r   rm   rf   rh   )
r   rU  rV  rX  rY  rZ  rS  rT  r  r   s
             r   test_pretty_functionsr  j  s6    aC#a&&LD     
 $<<K555554==[+{CCCCCq66D 
  $<<9$$$$4==I%%%%q!Q$(|D     $<<K555554==[+66666qAAJ  D   $<<9$$$$4==I%%%%sD!!!AQ<<D 
  $<<9$$$$4==I%%%%QqS>>D 
  $<<9$$$$4==I%%%%Yy||,,--D 
  $<<9$$$$4==I%%%%QUD 
 
 
 
 $<<K555554==[+66666??D 
  $<<9$$$$4==I%%%%!D 
  $<<9$$$$4==I%%%%sD!!!Aa==D 
  $<<9$$$$4==I%%%%ac??D 
  $<<9$$$$4==I%%%%jA//00D 
  $<<9$$$$4==I%%%%a!eD 
 
 
 
 $<<K555554==[+66666Xa^^D   $<<9$$$$4==I%%%%Xac1D   $<<9$$$$4==I%%%%XadAD   $<<9$$$$4==I%%%%1::D  
 $<<9$$$$4==I%%%%1::D  
 $<<9$$$$4==I%%%%77D  
 $<<9$$$$4==I%%%%Q<<D  
 $<<9$$$$4==I%%%%Q??D  
 $<<9$$$$4==I%%%%Q<<D  
 $<<9$$$$4==I%%%%88D  
 $<<9$$$$4==I%%%%a==D  
 $<<9$$$$4==I%%%%Q<<D  
 $<<9$$$$4==I%%%%Q??D  
 $<<9$$$$4==I%%%%Aq!DII$<<9$$$$4==I%%%%Aq!DII$<<9$$$$4==I%%%%Aq!!DII$<<9$$$$4==I%%%%Aq!!DII$<<9$$$$4==I%%%%Q<<D  
 $<<9$$$$4==I%%%%AQQq1uXXD    
 $<<K555554==[+666661Q44D 
  $<<9$$$$4==I%%%%1Q77D 
  $<<9$$$$4==I%%%%1QAY??D     $<<K555554==[+666661Q1aAg:D   $<<9$$$$4==I%%%%q6619D  
 $<<9$$$$4==I%%%%Q1WD  
 $<<9$$$$4==I%%%%SQqS\\""D   $<<9$$$$4==I%%%%aaIaaddOO+,,..D     $<<K555554==[+666661QAY??D     $<<K555554==[+66666a%((l#$$D   $<<9$$$$4==I%%%%1GAJJ'((D   $<<9$$$$4==I%%%%88D  
 $<<9$$$$4==I%%%%A1qs7O$%%D	 	  $<<9$$$$4==I%%%%A;;D  
 $<<9$$$$4==I%%%%AaC==D   $<<9$$$$4==I%%%%%%r   c                     t          d          } d}d}t          |           |k    sJ t          |           |k    sJ dt          dd          z  } d}d}t          |           |k    sJ t          |           |k    sJ dt          dd          z  } d	}d
}t          |           |k    sJ t          |           |k    sJ t          t          dz  dz             } d}d}t          |           |k    sJ t          |           |k    sJ dt          d          z   t          dd          z  } d}d}t          |           |k    sJ t          |           |k    sJ ddt          z  z  } d}d}t          |           |k    sJ t          |           |k    sJ t          dt
          z             } d}d}t          |           |k    sJ t          |           |k    sJ ddt          dz  z   dt          z   z  z   t          dd          z  dt          t          dd          z  z   t          dt          dz  z             z  z   } d}d}t          |           |k    sJ t          |           |k    sJ 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 r0  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 )rs   r   r   r   rP  r   rb  s      r   test_pretty_sqrtr  h  s   77D   $<<9$$$$4==I%%%%hq!nnD  
 $<<9$$$$4==I%%%%hq$D  
 $<<9$$$$4==I%%%%1q>>D   $<<9$$$$4==I%%%%QK(1a..(D  
 $<<9$$$$4==I%%%%qs8D  
 $<<9$$$$4==I%%%%B<<D  
 $<<9$$$$4==I%%%%	AqD1q5 $QNN+./!Xa5F5F2F.FQQRTUQUX-VWD   $<<9$$$$4==I%%%%%%r   c                      t          d          } d}d}t          | dd          |k    sJ t          | dd          |k    sJ d S )Nr-  u     ___
╲╱ 2 r  TF)r   use_unicode_sqrt_char)rs   r   )r   
ucode_str1
ucode_str2s      r   test_pretty_sqrt_char_knobr    s    77D   4T).0 0 03=> > > >4T)-/ / /2<= = = = = =r   c                  l    t          t          d                    } d}t          |           |k    sJ d S )NC1u     ____
╲╱ C₁ )rs   r   r   )r   rT  s     r   (test_pretty_sqrt_longsymbol_no_sqrt_charr    s>    tD 
 4==I%%%%%%r   c                      t          d          \  } }t          | |          }d}d}t          |          |k    sJ t          |          |k    sJ d S )Nzx, yz	d   
 x,yu
   δ   
 x,y)r   r^   r   r   rP  rQ  r   rS  rT  s        r   test_pretty_KroneckerDeltar   	  sj    6??DAq!QD  
 $<<9$$$$4==I%%%%%%r   c                  Z   t          d          \  } }}}t          dt                    }t           || dz  dz            | |dz  |f          }d}d}t           || dz  dz            | |dz  |f|d|f          }d	}d
}t          |          |k    sJ t	          |          |k    sJ 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  mr  lr   r   unicode_strrS  s           r   test_pretty_productr  	  s    ##JAq!Q"""A11acAX;;AqD!--D	 	  11acAX;;AqD!q!Qi88D	 	  $<<9$$$$4==K''''''r   c                  6   t          t          t                    } t          |           dk    sJ t          |           dk    sJ t          t          t          dz             } t          |           dk    sJ t          |           dk    sJ t          t          t          dz            } d}d}t          |           |k    sJ t          |           |k    sJ t          t          t          dz            dz  } d	}d
}t          |           |k    sJ t          |           |k    sJ t          t          t          ft                    } d}d}t          |           |k    sJ t          |           |k    sJ t          t          t          ft          dz            } d}d}t          |           |k    sJ t          |           |k    sJ t          t          t          fft          dz            } d}d}t          |           |k    sJ t          |           |k    sJ 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   rQ  r   r   rP  rb  s      r   test_pretty_Lambdar  J	  s4   !Q<<D$<<8####4==I%%%%!QqS>>D$<<<''''4==M))))!QT??D  
 $<<9$$$$4==I%%%%!QT??AD   $<<9$$$$4==I%%%%1a&!DII$<<9$$$$4==I%%%%1a&!Q$D  
 $<<9$$$$4==I%%%%Aq6)QT""D  
 $<<9$$$$4==I%%%%%%r   c                  h   t          t          dz
  t          dz   t                    } t          |           dk    sJ t          dt          z  dz   dt          z
  t                    }t          |          dk    sJ t          t          t          dz   t                    }t          |          dk    sJ d S )Nr,  u   s - 1
─────
s + 1r-  r.  u'   2⋅s + 1
───────
 3 - p u     p  
─────
p + 1)r   sr   p)tf1tf2tf3s      r   test_pretty_TransferFunctionr  	  s    
1q5!a%
+
+C3<<:::::
1Q37AE1
-
-C3<<FFFFF
1a!eQ
'
'C3<<:::::::r   c            
         t          t          t          z   t          dt          z  z
  t                    } t          t          t          z
  t          t          z   t                    }t          t          dz  t          z   t          t          z
  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J t	          t          | |                      |
k    sJ t	          t          || t          |  |                              |k    sJ t	          t          t          | |          t          ||                              |k    sJ t	          t          ||                    |k    sJ t	          t          t          ||           ||                    |k    sJ 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   rP  rQ  r   r   r   r   r   r   )r  r  r  tf4tfm1tfm2tfm3tfm4tfm5	expected1	expected2	expected3	expected4	expected5	expected6s                  r   test_pretty_Seriesr  	  sS   
1q5!ac'1
-
-C
1q5!a%
+
+C
1a4!8QUA
.
.C
1a
#
#C!C:Sz":;;D!C5C4&/22D!C#t#4sSD#6F"GHHD!C:cT{cTC4L"IJJD!SD3$<#tsCj"IJJD    	    6#s##$$	111163$%%&&)33336#sHcT3$7$78899YFFFF6(3,,hsC.@.@AABBiOOOO:dD))**i7777:l4$77tDDEERRRRRRr   c            
         t          t          t          z   t          dt          z  z
  t                    } t          t          t          z
  t          t          z   t                    }t          t          dz  t          z   t          t          z
  t                    }t          t          dz  t          z
  t          dz  t          z   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J t	          t          | |                      |	k    sJ t	          t          || t          |  |                              |
k    sJ t	          t          t          | |          t          ||                              |k    sJ t	          t          | | |                    |k    sJ t	          t          t          ||           |                    |k    sJ 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   rP  rQ  r   r   r   r   r   r   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  s                 r   test_pretty_Parallelr  	  sV   
1q5!ac'1
-
-C
1q5!a%
+
+C
1a4!8QUA
.
.C
1a4!8QTAXq
1
1C!C:cT{cTC4L"IJJD!SD3$<#tsCj"IJJD!SD#;#sc3Z"HIID!SD3$<3$">??D     "   8C%%&&)33338SD3$''((I55558CfcT3&7&78899YFFFF8F3,,fS#.>.>??@@IMMMM<ud3344	AAAA<
4$ 7 7>>??9LLLLLLr   c                  l   t          ddt                    } t          t          t          z   t          dt          z  z
  t                    }t          t          t          z
  t          t          z   t                    }t          t          dz  dt          z  z
  dz   t          dz   t                    }t          t          dt          dz  z  z
  t          t          z   t                    }t          dt          z
  t          t          z
  t                    }t          ddt                    }d}d}d}	d}
d	}d
}d}d}d}d}t          t	          | |                    |k    sJ t          t	          | ||z  |z                      |k    sJ t          t	          |||z  |z                      |	k    sJ t          t	          ||z  |                     |
k    sJ t          t	          ||z  |                    |k    sJ t          t	          ||z  ||z                      |k    sJ t          t	          ||                    |k    sJ t          t	          ||                     |k    sJ t          t	          ||z  |d                    |k    sJ t          t	          || d                    |k    sJ d S )Nr,  r-  r0  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   rQ  rP  r   r   )tfr  r  r  r  tf5tf6r  r  r  r  r  r  	expected7	expected8	expected9
expected10s                    r   test_pretty_Feedbackr  6
  s   	!Q	"	"B
1q5!ac'1
-
-C
1q5!a%
+
+C
1a4!A#:>1q5!
4
4C
1qAv:q1ua
0
0C
1q5!a%
+
+C
1a
#
#C 	 	   
 
     8B$$%%22228BC,,--::::8CS--..);;;;8CGR(())Y66668CGS))**i77778CGSW--..);;;;8C%%&&)33338C$$%%22228CGS!,,--::::8CQ''((J666666r   c                     t          t          t          z   t          dt          z  z
  t                    } t          t          t          z
  t          t          z   t                    }t          | |g|| gg          }t          || g| |gg          }t          | | g||gg          }d}d}t	          t          ||d                    |k    sJ t	          t          ||z  |                    |k    sJ 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   rP  rQ  r   r   r   )r  r  tfm_1tfm_2tfm_3r  r  s          r   test_pretty_MIMOFeedbackr  
  s   
1q5!ac'1
-
-C
1q5!a%
+
+C"S#Jc
#;<<E"S#Jc
#;<<E"S#Jc
#;<<E   <ua0011   <eU3344     r   c            	         t          t          t          z   t          dt          z  z
  t                    } t          t          t          z
  t          t          z   t                    }t          t          dz  dt          z  z
  dz   t          dz   t                    }t          t          t          dz  t          z   dz   t                    }t          dt          z
  t          t          z
  t                    }t          ddt                    }d}d}d}d}	d}
t          t	          | g|gg                    |k    sJ t          t	          | g|g| gg                    |k    sJ t          t	          | |g||g||gg                    |k    sJ t          t	          || |g| | | gg                    |	k    sJ t          t	          t          ||           | |gt          ||          | | gg                    |
k    sJ d S )	Nr-  r,  r0  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   rP  rQ  r   r   r   r   )r  r  r  r  r  r  r  r  r  r  r  s              r   "test_pretty_TransferFunctionMatrixr  
  s   
1q5!ac'1
-
-C
1q5!a%
+
+C
1a4!A#:>1q5!
4
4C
1adQhlA
.
.C
1q5!a%
+
+C
1a
#
#C    "
 	  )C53%.99::iGGGG)C53%3$*@AABBiOOOO)C:SzC:*NOOPPT]]]]])Cc?cTC4#<N*OPPQQU^^^^^)F3,<,<c3+G(SVX[J\J\^adgcgIh*ijjkk     r   c            
         t          t          t          g          t          t          g          t          t          g          t          t
          g                    } t          ddgddgg          }t          ddg          }t          ddgg          }t          dg          }t          ||||          }t          t          ddgddgg          t          ddgddgg          t          ddgddgg          t          ddgddgg                    }d}d}d	}	t          |           |k    sJ t          |          |k    sJ t          |          |	k    sJ d S )
Nr   r,  g      rB        ?r-  u,   ⎡[a]  [b]⎤
⎢        ⎥
⎣[c]  [d]⎦uq   ⎡⎡0  1⎤  ⎡1⎤⎤
⎢⎢    ⎥  ⎢ ⎥⎥
⎢⎣1  0⎦  ⎣0⎦⎥
⎢           ⎥
⎣[0  1]  [0]⎦u   ⎡⎡-1.5  -2⎤  ⎡0.5  0⎤⎤
⎢⎢        ⎥  ⎢      ⎥⎥
⎢⎣ 1    0 ⎦  ⎣ 0   1⎦⎥
⎢                    ⎥
⎢  ⎡0  1⎤     ⎡2  2⎤ ⎥
⎢  ⎢    ⎥     ⎢    ⎥ ⎥
⎣  ⎣0  2⎦     ⎣1  1⎦ ⎦)r   r6   r`  ra  cdr   )
ss1ABCDss2ss3r  r  r  s
             r   test_pretty_StateSpacer  '  sj   
VQC[[&!++vqc{{FA3KK
H
HCAA  A1vAAxAsA
Q1a
 
 C
VdBZ!Q011S!Hq!f-..QFQF+,,QFQF+,,. .C    3<<9$$$$3<<9$$$$3<<9$$$$$$r   c                     t          d          } d}d}t          |           |k    sJ t          |           |k    sJ t          dt          z            } d}d}t          |           |k    sJ t          |           |k    sJ t          t          dz  t          dz  z             } d}d}t          |           |k    sJ t          |           |k    sJ t          dt          t
          f          } d}d	}t          |           |k    sJ t          |           |k    sJ t          dt          z  t          t
          f          } d
}d}t          |           |k    sJ t          |           |k    sJ t          t          dz  t          dz  z   t          t
          ft          t
          f          } d}d}t          |           |k    sJ t          |           |k    sJ 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) → (∞, ∞)⎠)rF   r   r   rP  rQ  r   rb  s      r   test_pretty_orderr  P  s   Q44D 
  $<<9$$$$4==I%%%%QqS66D   $<<9$$$$4==I%%%%QTAqD[>>D  
 $<<9$$$$4==I%%%%QB==D 
  $<<9$$$$4==I%%%%QqS1b'??D   $<<9$$$$4==I%%%%QTAqD[1b'Ar7++D  
 $<<9$$$$4==I%%%%%%r   c                     t          t          t                    t          d          } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          t                    t          d          t          z   } d}d}d}d}t          |           ||fv sJ t	          |           ||fv sJ t          t          t          t
          z             t          z   t                    } d	}d
}d}d}t          |           ||fv sJ t	          |           ||fv sJ t	          |                       t          t          t                    t          dz  z   t          t
                    } d}d}d}d}d}d}t          |           |||fv sJ t	          |           |||fv sJ t          dt          z  t
          z  t
          t                    t          dz  z   } d}d}d}d}d}d}t          |           |||fv sJ t	          |           |||fv sJ t          dt          z  t
          z  t          t                    } d}d}t          |           |k    sJ t	          |           |k    sJ t          dt          z  t
          z  t          d          } d}d}t          |           |k    sJ t	          |           |k    sJ t          dt          z  t
          z  t          t          t
                    } d}d }t          |           |k    sJ t	          |           |k    sJ t          d!          }	t          d"          }
 |
|	                              |	          } d#}d$}t          |           |k    sJ t	          |           |k    sJ t          t          t                    t          t          f          } d%}d&}t          |           |k    sJ t	          |           |k    sJ 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             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             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       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       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        alpharc   z;  d                
------(beta(alpha))
dalpha             u!   d       
──(β(α))
dα      z1 n       
d        
---(f(x))
  n      
dx       u7    n       
d        
───(f(x))
  n      
dx       )r	   rp   rP  r   r   rQ  r   r
   diffr   r  )r   rS  rT  rU  rV  rX  rY  rW  rZ  r  rc   s              r   test_pretty_derivativesr    s   c!ffa%000D   $<<9$$$$4==I%%%%c!ffa%00014D     $<<K555554==[+66666 c!a%jj1na((D     $<<K555554==[+6666666 c!ffq!tmQ**D       $<<KkBBBBB4==[+{CCCCCac!eQ""QT)D       $<<KkBBBBB4==[+{CCCCCac!eQ""D   $<<9$$$$4==I%%%%ac!eQ##D   $<<9$$$$4==I%%%%ac!eQ1%%D   $<<9$$$$4==I%%%% 7OOEFD4;;E""D   $<<9$$$$4==I%%%%addQF##D   $<<9$$$$4==I%%%%%%r   c                     t          t          t                    t                    } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          dz  t                    } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          t                    dz  t          t                    dz  z            } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          dt          z  z  t                    } d}d	}t          |           |k    sJ t	          |           |k    sJ t          t          dz  t          d
df          } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          dz  t          t          d
d          df          } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          dz  t          dz  z  t          t                    } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          t                    t          t                    z  t          dt          ft          ddt          z  f          } d}d}t          |           |k    sJ t	          |           |k    sJ 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      rO  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,   rp   rP  r   r   rr   ru   r   rQ  thrg   phr   rb  s      r   test_pretty_integralsr    s   CFFAD   $<<9$$$$4==I%%%%AqD!D   $<<9$$$$4==I%%%%SVVaK3q66A+-..D
   $<<9$$$$4==I%%%%A1Iq!!D   $<<9$$$$4==I%%%%AqD1a)$$D	   $<<9$$$$4==I%%%%AqD1hq!nnb122D	   $<<9$$$$4==I%%%%AqDAIq!$$D   $<<9$$$$4==I%%%%CGGCGGOb!R[2q!B$-@@D
   $<<9$$$$4==I%%%%%%r   c                     t                      } d}d}t          |           |k    sJ t          |           |k    sJ t          ddd           } d}d}t          |           |k    sJ t          |           |k    sJ t          ddd           } d}d}t          |           |k    sJ t          |           |k    sJ t          t          dz  dz   dgt          t          t          z   gg          } d}d}d	}d
}t          |           ||fv sJ t          |           ||fv sJ t          t          t          z  t          t
          gdt          t          t          z  t          z            dgg          } d}d}t          |           |k    sJ t          |           |k    sJ d}t          t          ddd           } t          |           |k    sJ d S )N[]r-  r   c                     dS Nr   r   ijs     r   <lambda>z$test_pretty_matrix.<locals>.<lambda>p      Q r   c                     dS r  r   r  s     r   r  z$test_pretty_matrix.<locals>.<lambda>u  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⎦vdot_mscr.  )r6   r   r   rP  rQ  r  ri   r   r  r  r7   r   )r   rS  r  rU  rV  rX  rY  rT  s           r   test_pretty_matrixr  i  s   88DIK$<<9$$$$4==K''''!Q''DIK$<<9$$$$4==K''''!Q''DIK$<<9$$$$4==K''''AqD1Ha=1a!e*-..D     $<<K555554==[+66666AaCB<!S1R[[!!4566D   $<<9$$$$4==I%%%%  j1--.D4==K''''''r   c                  l   t          d          \  } }}}t          t          t          t          fD ]} ||           }t          |          dk    sJ t          |          dk    sJ  |d| z  |g||gg          } |d| z  ||g          }t          ||          }t          ||          }d}	d}
t          |          |	k    sJ t          |          |
k    sJ d}	d}
t          |          |	k    sJ t          |          |
k    sJ d}	d	}
t          |          |	k    sJ t          |          |
k    sJ d
}	d}
t          |          |	k    sJ t          |          |
k    sJ  || |d|z  gg          } || g|gd|z  gg          } ||                                g          }d}	d}
t          |          |	k    sJ t          |          |
k    sJ d}	d}
t          |          |	k    sJ t          |          |
k    sJ d}	d}
t          |          |	k    sJ t          |          |
k    sJ d S )Nzx y z wrP  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   tolist)rP  rQ  r_  w	ArrayTypeMM1M2M3rS  rT  MrowMcolumnMcol2s                 r   test_pretty_ndim_arraysr    s   ##JAq!Q-/GI^`vw n+ n+	IaLLayyCqzzS    I!Qx!Q())Y!Q{##2q!!1a   	 	 ayyI%%%%qzzY&&&& 	 	 bzzY&&&&r{{i''''	 		 	 bzzY&&&&r{{i'''' 	& 	$ bzzY&&&&r{{i''''y1aQ-)))aS1#Aw/00	7>>++,-- 	 	 d||y((((t}}	)))) 	 	 g)++++w9,,,, 	 	 e}}	))))u~~*****]n+ n+r   c                      t          ddd          } t          ddd          }t          t          | |                    dk    sJ t          t          | ||                     dk    sJ d S )Nr  r.  r  u   A⊗Bu	   A⊗B⊗A)r   r   r   )r  r  s     r   test_tensor_TensorProductr  q  ss    S!QAS!QA=A&&'':5555=Aq))**.???????r   c                      ddl m}  ddlm}  || j        | j                  }t          |          dk    sJ t          |          dk    sJ d S )Nr   )R2)WedgeProductu   ⅆ x∧ⅆ yzd x/\d y)sympy.diffgeom.rnr  sympy.diffgeomr  dxdyr   r   )r  r  wps      r    test_diffgeom_print_WedgeProductr  x  so    $$$$$$++++++	beRU	#	#B2;;/))))"::$$$$$$r   c                     t          ddd          } t          ddd          }t          t          |                     dk    sJ t          t          | |z                       dk    sJ t          t          |           t          |          z             dk    sJ t          t          | |z                      dk    sJ t          t          |          t          |           z            dk    sJ t          t          | dz                      d	k    sJ t          t          |           dz            d
k    sJ t          t          t          |                               dk    sJ t          t          t          |                               dk    sJ t          t          t	          |                               dk    sJ t          t	          t          |                               dk    sJ t          t          |                     dk    sJ t          t          | |z                       dk    sJ t          t          |           t          |          z             dk    sJ t          t          | |z                      dk    sJ t          t          |          t          |           z            dk    sJ t          t          | dz                      dk    sJ t          t          |           dz            dk    sJ t          t          t          |                               dk    sJ t          t          t          |                               dk    sJ t          t          t	          |                               dk    sJ t          t	          t          |                               dk    sJ t          d          }t          t          |                    dk    sJ t          t          || z                       dk    sJ t          t          t          t          dd          | f|t          dd          ff                              dk    sJ 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   r6   r   r   r   r  r  r  s      r   test_Adjointr    s{   S!QAS!QA'!**))))'!a%..!!%99999'!**wqzz)**.@@@@@'!A#,,#33333'!**WQZZ'((N::::'!Q$--  $;;;;;'!**a-  $;;;;;''!**%%&&*DDDDD''!**%%&&*DDDDD')A,,''((,CCCCC)GAJJ''((,CCCCC71::*,,,,71q5>>""&<<<<<71::

*++/EEEEE71Q3<<  $8888871::gajj())-AAAAA71a4==!!'( ( ( (71::q=!!'( ( ( (771::&&''*+ + + +771::&&''*+ + + +79Q<<(())'( ( ( (9WQZZ(())'( ( ( (  A71::	   
 71Q3<<  	        
 7;1a!(<)*Jq!,<,<(=(? @ @ A A B B	     r   c                  x   t          ddd          } t          ddd          }t          t          |                     dk    sJ t          t          | |z                       dk    sJ t          t          |           t          |          z             dk    sJ t          t          | |z                      dk    sJ t          t          |          t          |           z            dk    sJ t          t          | dz                      d	k    sJ t          t          |           dz            d
k    sJ t          t          t          |                               dk    sJ t          t          t          |                               dk    sJ t	          t          |                     dk    sJ t	          t          | |z                       dk    sJ t	          t          |           t          |          z             dk    sJ t	          t          | |z                      dk    sJ t	          t          |          t          |           z            dk    sJ t	          t          | dz                      dk    sJ t	          t          |           dz            dk    sJ t	          t          t          |                               dk    sJ t	          t          t          |                               dk    sJ t          d          }t	          t          |                    dk    sJ t	          t          || z                       dk    sJ t	          t          t          t          dd          | f|t          dd          ff                              dk    sJ d S )Nr  r-  r  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 ⎠  r  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   r6   r   r   r   r  s      r   test_Transposer    s   S!QAS!QA)A,,8++++)AE""##';;;;;)A,,1-..2DDDDD)AaC..!!%55555)A,,y||+,,>>>>)AqD//""&=====)A,,/""&=====)GAJJ''((,FFFFF')A,,''((,FFFFF9Q<<  H,,,,9QU##$$(<<<<<9Q<<)A,,.//3EEEEE9QqS>>""&888889Q<<	!,--1AAAAA9QT??##%& & & &9Q<<?##%& & & &9WQZZ(())() ) ) )79Q<<(())() ) ) )  A9Q<<  	   
 9QqS>>""	        
 9[9Q??A*>+,jA.>.>*?*A B B C C D D	     r   c                     t          ddgddgg          } t          ddgddgg          }d}d}d	}d
}t          t          |                     |k    sJ t          t          |                     |k    sJ t          t          |           t          |          z             |k    sJ t          t          |           t          |          z             |k    sJ d S )Nr,  r-  r.  r/  rf     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⎦⎠)r6   r   r9   r   )r  r  rU  rX  rV  rY  s         r   test_pretty_Trace_issue_9044r    s    AA  AAA  A     %(({****588++++%((U1XX%&&+5555588eAhh&'';666666r   c                     t          dd          } t          d          \  }}}}}t          d| |           }t          ddd          }t          ddd          }t          |d	d	          }	t	          |	          t          |	          cxk    rd
k    sn J |||dz   ||dz   f         }	t	          |	          t          |	          cxk    rdk    sn J |||dz   d||dz   df         }	t	          |	          t          |	          cxk    rdk    sn J |d ||d f         }	t	          |	          t          |	          cxk    rdk    sn J |d ||d f         }	t	          |	          t          |	          cxk    rdk    sn J ||d d |f         }	t	          |	          t          |	          cxk    rdk    sn J |||||f         }	t	          |	          t          |	          cxk    rdk    sn J |||||||f         }	t	          |	          t          |	          cxk    rdk    sn J ||d ||d |f         }	t	          |	          t          |	          cxk    rdk    sn J |d ||d ||f         }	t	          |	          t          |	          cxk    rdk    sn J |d d |d d |f         }	t	          |	          t          |	          cxk    rdk    sn J t          |dd          }	t	          |	          t          |	          cxk    rd
k    sn J t          |d | d fd | d f          }	t	          |	          t          |	          cxk    rd
k    sn J t          |d| d fd| d f          }	t	          |	          t          |	          cxk    rd
k    sn J t          |d| dfd| df          }	t	          |	          t          |	          cxk    rdk    sn J |ddddddf         }	t	          |	          t          |	          cxk    rdk    sn J |ddddddf         }	t	          |	          t          |	          cxk    rdk    sn J |ddd         }	t	          |	          t          |	          cxk    rd k    sn J |d ddd!df         }	t	          |	          t          |	          cxk    rd"k    sn J |d ddddf         }	t	          |	          t          |	          cxk    rd#k    sn J |dd ddf         }	t	          |	          t          |	          cxk    rd$k    sn J |ddddf         }	t	          |	          t          |	          cxk    rd%k    sn J |ddddddf         }	t	          |	          t          |	          cxk    rd&k    sn J ||z   dd dd f         }	t	          |	          t          |	          cxk    rd'k    sn J d S )(Nr  Tr  z	x y z w tr  r  rO  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/  r0  rf  zX[1:2:3, 4:5:6]r
  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   r8   r   r   )
r  rP  rQ  r_  r  tr  r  r  r   s
             r   test_MatrixSlicer    s@   sD!!!A[))NAq!QS!QAS"b!!AS"b!!Aq,.@AAD$<<74==5555I555555Qq1uWaAgD$<<74==AAAA,AAAAAAAQq1uQY!a%	!"D$<<74==EEEE,EEEEEEERaRV9D$<<74==7777K777777RaRV9D$<<74==7777K777777QRR!V9D$<<74==7777K777777QqS!A#X;D$<<74==9999M999999QqUAaE\?D$<<74======,=======QTT14a4Z=D$<<74==;;;;O;;;;;;TaT4Aa4Z=D$<<74==;;;;O;;;;;;SSqS##A#X;D$<<74==9999M999999q/?;;D$<<74==5555I555555q4D/D!T?;;D$<<74==5555I555555q1a,At55D$<<74==5555I555555q1a)aAY//D$<<74==9999M999999QqUAaE\?D$<<74======,=======QqUAaE\?D$<<74======,=======Qr!V9D$<<74==::::N::::::RaR1QY<D$<<74==::::N::::::RaR2aZ=D$<<74==9999M999999Q1W:D$<<74==::::N::::::QqS!A#X;D$<<74==7777K777777QqUAaE\?D$<<74==;;;;O;;;;;;E122qrr6?D$<<74======,=========r   c                     t          dd          } t          d| |           }t          |          t          |          cxk    rdk    sn J |j        |z                      t                    }d}d}t          |          |k    sJ t          |          |k    sJ t          t          dt          z            }| |z                      |          }d}d	}t          |          |k    sJ t          |          |k    sJ d S )
Nr  Tr  r  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   T	applyfuncrr   r   rP  )r  r  r   rS  rT  lamdas         r   test_MatrixExpressionsr  =  s   sD!!!AS!QA!99

))))c)))))) CES!!DII $<<9$$$$4==I%%%%1acNNEaC??5!!DI
I
 $<<9$$$$4==I%%%%%%r   c                     ddl m}  t          dd          }t          d|d          }t          d|d          }t	          dd	g d
          }t	          dd	g d          }t           | ||                    dk    sJ t           | ||                    dk    sJ t           | ||                    dk    sJ t           | ||                    dk    sJ d S )Nr   )
DotProductr  Tr  r  r,  r  r.  r,  r-  r.  )r,  r.  r/  zA*Bz[1  2  3]*[1  3  4]u   A⋅Bu   [1  2  3]⋅[1  3  4])%sympy.matrices.expressions.dotproductr  r   r   r6   r   r   )r  r  r  r  r  r  s         r   test_pretty_dotproductr  b  s   @@@@@@T"""AS!QAS!QAq!YYYAq!YYYA**Q""##u,,,,**Q""##'<<<<<::a##$$////::a##$$(???????r   c                     ddl m} m}m}m}m} t          d          }t           | |                    dk    sJ t           |  ||                              dk    sJ t          ddd          }t           | |                    dk    sJ t           | ||z                       d	k    sJ t           |  | |dd          |f| |dd          ff                              d
k    sJ d S )Nr   )Determinantr   r   r   r   r  u    │1  2│
│    │
│3  4│uG   │      -1│
│⎡1  2⎤  │
│⎢    ⎥  │
│⎣3  4⎦  │r  r-  u   │X│u>   │⎡1  2⎤    │
│⎢    ⎥ + X│
│⎣3  4⎦    │ua   │  𝟙     X│
│         │
│⎡1  2⎤   │
│⎢    ⎥  𝟘│
│⎣3  4⎦   │)	sympy.matricesr  r   r   r   r   r6   r   r   )r  r   r   r   r   r  r  s          r   test_pretty_Determinantr  p  sw   WWWWWWWWWWWWWW  A;;q>>""&JJJJJ;;wwqzz**++	   
 	S!QA;;q>>""i////;;q1u%%&&	    ;;{{YYq!__a,@-.

1a0@0@,A,C  D  D E E F F	     r   c                     t          t          t          dk     ft          dz  df          } d}d}t          |           |k    sJ t          |           |k    sJ t          t          t          dk     ft          dz  df           } d}d}t          |           |k    sJ t          |           |k    sJ t          t          t          t          dk    ft          df          z   t          t          t          z  t          dk     ft          dz  t          dk    fd	          z   dz   } d
}d}t          |           |k    sJ t          |           |k    sJ t          t          t          t          dk    ft          df          z
  t          t          t          z  t          dk     ft          dz  t          dk    fd	          z   dz   } d}d}t          |           |k    sJ t          |           |k    sJ t          t          t          t          dk    ft          df          z  } d}d}t          |           |k    sJ t          |           |k    sJ t          t          t          dk    ft          df          t          t          t          z  t          dk     ft          dz  t          dk    fd	          z  } d}d}t          |           |k    sJ t          |           |k    sJ t          t          t          dk    ft          df           t          t          t          z  t          dk     ft          dz  t          dk    fd	          z  } d}d}t          |           |k    sJ t          |           |k    sJ t          dt          dt          z            dk     fdt          t                    dk     ft          t          dddt          z            z  df          } d}d}t          |           |k    sJ t          |           |k    sJ t          t          t          t          dk    ft          df          dd          } d}d}t          |           |k    sJ t          |           |k    sJ 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 /1, 2       | 1\             
|y*/__     |           | -|   otherwise 
\  \_|2, 2 \      0, 1 | y/             u  ⎧                                 1     
⎪            0               for ─── < 1
⎪                                │y│    
⎪                                       
⎨            1               for │y│ < 1
⎪                                       
⎪  ╭─╮0, 2 ⎛1, 2       │ 1⎞             
⎪y⋅│╶┐     ⎜           │ ─⎟   otherwise 
⎩  ╰─╯2, 2 ⎝      0, 1 │ y⎠             Fr@  zC               2
//x  for x > 0\ 
|<            | 
\\y  otherwise/ uU                  2
⎛⎧x  for x > 0⎞ 
⎜⎨            ⎟ 
⎝⎩y  otherwise⎠ )r_   rP  r   r   rQ  rZ   rq   r   rb  s      r   test_pretty_piecewiser     s   aQZ!Q$..D   $<<9$$$$4==I%%%%q!a%j1a4,///D   $<<9$$$$4==I%%%%y!QUaY///)QqS!a%LT1q5M93 3  !"D
 
  $<<9$$$$4==I%%%%y!QUaY///)QqS!a%LT1q5M93 3  !"D
 
  $<<9$$$$4==I%%%%Y1q5zAt9---D   $<<9$$$$4==I%%%%aQZ!T++IqsAElQT1L E- - D
 
  $<<9$$$$4==I%%%%q!a%j1d),,,Y!QU|adA
M F. . D
 
  $<<9$$$$4==I%%%%aQqSA&CFFQJ!G E1Q3=  =  ; !%:' ( (D
 
  $<<9$$$$4==I%%%% y!QUaY//UCCCD   $<<9$$$$4==I%%%%%%r   c                      t          t          t          t                    } t	          |           dk    sJ t          |           dk    sJ d S )Nz)/y    for x  
<            
\z  otherwiseu/   ⎧y    for x  
⎨            
⎩z  otherwise)r/   rP  rQ  r_  r   r   rh  s    r   test_pretty_ITEr"  g  sa    q!Q<<D$<<	
 
 
 

 4==       r   c            
      
   d} d}d}t          |           |k    sJ t          |           |k    sJ g } d}d}t          |           |k    sJ t          |           |k    sJ i } i }d}d}t          |           |k    sJ t          |          |k    sJ t          |           |k    sJ t          |          |k    sJ dt          z  f} d}d}t          |           |k    sJ t          |           |k    sJ t          dz  dt          z  t          t          t	          t
                    dz  t          t                    dz  z  g} d	}d
}t          |           |k    sJ t          |           |k    sJ t          dz  dt          z  t          t          t	          t
                    dz  t          t                    dz  z  f} d}d}t          |           |k    sJ t          |           |k    sJ t          t          dz  dt          z  t          t          t	          t
                    dz  t          t                    dz  z            } d}d}t          |           |k    sJ t          |           |k    sJ t          t	          t                    i} t          t          t	          t                    i          }d}d}t          |           |k    sJ t          |          |k    sJ t          |           |k    sJ t          |          |k    sJ dt          z  dt          z  t          t	          t                    dz  i} t          dt          z  dt          z  t          t	          t                    dz  i          }d}d}t          |           |k    sJ t          |          |k    sJ t          |           |k    sJ t          |          |k    sJ t          dz  g} d}d}t          |           |k    sJ t          |           |k    sJ t          dz  f} d}d}t          |           |k    sJ t          |           |k    sJ t          t          dz            } d}d}t          |           |k    sJ t          |           |k    sJ t          dz  di} t          t          dz  di          }d}d}t          |           |k    sJ t          |          |k    sJ t          |           |k    sJ t          |          |k    sJ d S )Nr   r1  r  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   rP  rQ  rr   r  rg   r  r   r   )r   rS  rT  expr_2s       r   test_pretty_seqr%  u  s   D 
  $<<9$$$$4==I%%%%D 
  $<<9$$$$4==I%%%%DF 
  $<<9$$$$&>>Y&&&&4==I%%%%6??i''''aC6D   $<<9$$$$4==I%%%%qD!A#q!SWWaZB
23D   $<<9$$$$4==I%%%%qD!A#q!SWWaZB
23D   $<<9$$$$4==I%%%%AqsAq#b''1*SWWaZ"788D   $<<9$$$$4==I%%%%s1vv;D1c!ff+F 
  $<<9$$$$&>>Y&&&&4==I%%%%6??i''''aC1aQ#D1Q3!QA	*++F   $<<9$$$$&>>Y&&&&4==I%%%%6??i'''' qD6D  
 $<<9$$$$4==I%%%%qD7D  
 $<<9$$$$4==I%%%%A;;D  
 $<<9$$$$4==I%%%%qD!9D1a4)__F   $<<9$$$$&>>Y&&&&4==I%%%%6??i''''''r   c                     t                      } t          t                                }|| g}t          |          dk    sJ t          |          dk    sJ || h}t          |          dk    sJ t          |          dk    sJ || | |i}t          || | |i          }t          |          dk    sJ t          |          dk    sJ t          |          dk    sJ t          |          dk    sJ d S )Nz[Basic(Basic()), Basic()]z{Basic(), Basic(Basic())}z2{Basic(): Basic(Basic()), Basic(Basic()): Basic()})r   r   r   r   )b1b2r   expr2s       r   test_any_object_in_sequencer*  I  sU   	B	uwwB8D$<<666664==777778D$<<666664==77777BD"b"b!""E$<<OOOOO FG G G G EF F F F FG G G G G Gr   c                     t          t                                dk    sJ t          t                                dk    sJ t          t                                dk    sJ t          t                                dk    sJ dt          z  t          h} t          |           }t          |           dk    sJ t          |           dk    sJ t          |          dk    sJ t          |          dk    sJ 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   	frozensetrP  )s1s2s     r   test_print_builtin_setr0  a  s"   #%%==G####355>>W$$$$)++-////9;;=0000
A#qB	2B"::    2;;    "::    2;;     r   c                     t           } t           | t          t          z  t          dz  g           dk    sJ t           | t	          dd                     dk    sJ t           | t	          dd                     dk    sJ t          t          t          z  t          dz  h          dk    sJ t          t          t	          dd                              dk    sJ t          t          t	          dd                              dk    sJ t          t          t          t          z  t          dz  g                    dk    sJ t          t          t	          dd                              d	k    sJ t          t          t	          dd                              d
k    sJ t          t          ddd                    dk    sJ d}d}t          t          ddd                    |k    sJ t          t          ddd                    |k    sJ d}d}t          t          ddd                    |k    sJ t          t          ddd                    |k    sJ d}d}t          t          dt          d                    |k    sJ t          t          dt          d                    |k    sJ d}d}t          t          t          dd                    |k    sJ t          t          t          dd                    |k    sJ d}d}t          t          dt           d                    |k    sJ t          t          dt           d                    |k    sJ d S )Nr-  z  2      
{x , x*y}r,  rf  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}rB  z{-2, -3, ...}u   {-2, -3, …})
rN   r   rP  rQ  ranger,  r-  rL   r   r   )r  rS  rT  s      r   test_pretty_setsr4    s   A!!ac1a4[/""   
 !!U1a[[/""&77777!!U1b\\"##'PPPPP1Q31+   
 #eAqkk""##'88888#eArll##$$12 2 2 2 )QqS!Q$K(())   
 )E!QKK(())-IIIII)E!RLL))**<= = = = %1a..!![0000!I!I%2q//""i////5B??##y0000"I"I%Ar""##y00005Q##$$	1111II%2q//""i////5B??##y0000II%B##$$	11115R$$%%2222II%RC$$%%22225bS"%%&&)333333r   c                      t          dd          } t          |           }d}d}t          |          |k    sJ t          |          |k    sJ d S )Nr,  r.  zSetExpr([1, 3]))rP   r   r   r   )ivserS  rT  s       r   test_pretty_SetExprr8    sX    	!QB	B!I!I"::""""2;;)######r   c                  J   t          t          t          t          ft          t          z             h dddh          } d}d}t	          |           |k    sJ t          |           |k    sJ t          t          t          t          fft          t          z             t          h dddh                    } d}d}t	          |           |k    sJ t          |           |k    sJ t          t          t          t          dz            t          j                  } d	}d
}t	          |           |k    sJ t          |           |k    sJ t          t          t          dt          dz  z            t          j                  } d}d}t	          |           |k    sJ t          |           |k    sJ t          t          t          t          fdt          t          z   dz  z            t          j        t          j                  } d}d}t	          |           |k    sJ t          |           |k    sJ t          t          d          t          d          dz   z  g          dk    sJ t          t          t          d          t          d          dz   g                    dk    sJ d S )N>   r,  r-  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}}r-  z)  2                 
{x  | x in Naturals}u<   ⎧ 2 │      ⎫
⎨x  │ x ∊ ℕ⎬
⎩   │      ⎭r,  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)  │             ⎪
⎩         │             ⎭ihatr  u/   ⎡  î  ⎤
⎢─────⎥
⎣i + 1⎦u%   ⎡  î  ⎤
⎢     ⎥
⎣i + 1⎦)r   r   rP  rQ  r   r   r   r   Naturalsr   r6   )imgsetrS  rT  s      r   test_pretty_ImageSetr=    s   faVQU++YYYA??F7I;I&>>Y&&&&6??i''''fq!fYA..
999q!f0M0MNNF8I<I&>>Y&&&&6??i''''fQ1ooqz22FII &>>Y&&&&6??i'''' fQ!Q$''44FI
I &>>Y&&&&6??i''''faVQAz\22AJ
KKF-I
#I &>>Y&&&&6??i'''' F6NNfSkkAo6788 =    
 66&>>6#;;?;<<== B      r   c                     d} d}t          t          t          t          t	          t                    d          t
          j                            | k    sJ t          t          t          t          t	          t                    d          t
          j                            |k    sJ t          t          t          t          t          t
          j        d          t          d                              dk    sJ t          t          t          t          t          t
          j        d          t          d                              dk    sJ t          t          t          t          t          dk    t          dk               t          dd	d
                              dk    sJ t          t          t          t          t          dk    t          dk               t          dd	d
                              dk    sJ t          t          t          t          t          dk    t          dk               t          dd	                              dk    sJ t          t          t          t          t          dk    t          dk               t          dd	                              dk    sJ t          t          dt          d	z  z  dk              }d} d}t          |          | k    sJ t          |          |k    sJ t          t          dt          d	z  z  dk    t
          j                  }d} d}t          |          | k    sJ t          |          |k    sJ 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   rP  r   rr   r   Realsr   rK   rN   r-   r4   )rS  rT  condsets      r   test_pretty_ConditionSetrC    s   5I4I,q"SVVQ--99::iGGGG<2c!ffa==!'::;;yHHHH,q(1ag"F"F"F	RSUUVVZ_____<8Aqw#G#G#GSTVVWW[`````,q#a!eQV"4"4i1a6H6HIIJJjXXXX<3q1ua"f#5#5yAq7I7IJJKKuTTTT,q"QUAF"3"3Yq!__EEFF%OOOO<2a!eQV#4#4i1ooFFGG5PPPP1a1fqj))GI
I '??i''''7y((((1a1fqj!'22G#I
 I '??i''''7y((((((r   c                  &   ddl m}   | t          dd          t          dd          z            }d}d}t          |          |k    sJ t	          |          |k    sJ  | t          dd	          t          dd
t
          z            z  d          }d}d}t          |          |k    sJ t	          |          |k    sJ  | t          dd	t          d
z  z            t          dd          z            }d}d}t          |          |k    sJ t	          |          |k    sJ  | t          dd	t          d
z  z            t          dd
t
          z            z  d          }d}d}t          |          |k    sJ t	          |          |k    sJ d S )Nr   )ComplexRegionr.  r0  r/  rf  z#{x + y*I | x, y in [3, 5] x [4, 6]}u+   {x + y⋅ⅈ │ x, y ∊ [3, 5] × [4, 6]}r,  r-  T)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.fancysetsrE  rP   r   r   r   r`  )rE  cregionrS  rT  s       r   test_pretty_ComplexRegionrI  :  s   222222mHQNN8Aq>>9::G5I=I'??i''''7y((((mHQNN8Aqt+<+<<DIIIGRIUI'??i''''7y((((mHQ!Q$//A>??G(I
-I '??i''''7y((((mHQ!Q$//AbD0A0AANNNGEI
=I '??i''''7y((((((r   c                      t          dd          t          dd          }} d}d}t          t          | |                    |k    sJ t          t          | |                    |k    sJ d S )Nr-  r.  r/  re  u   [2, 3] ∪ [4, 7]z[2, 3] U [4, 7])rP   r   rQ   r   )r`  ra  rT  rS  s       r   test_pretty_Union_issue_10414rK  g  sm    Aq>>8Aq>>qA#I!I5A;;9,,,,%1++)++++++r   c                     t          d          \  } }}}t          | |          t          ||          }}d}d}t          t          ||                    |k    sJ t	          t          ||                    |k    sJ d S )Nz
x, y, z, wu   [x, y] ∩ [z, w]z[x, y] n [z, w])r   rP   r   rO   r   )rP  rQ  r_  r  r`  ra  rT  rS  s           r   $test_pretty_Intersection_issue_10414rM  o  s    &&JAq!QAq>>8Aq>>qA#I!I<1%%&&)3333,q!$$%%222222r   c                      d} t          t          dd          dz            | k    sJ d} t          t          dd          dz            | k    sJ d S )Nz      1
[0, 1] r   r,  z      2
[0, 1] r-  )r   rP   )rT  s    r   test_ProductSet_exponentrO  x  s^    "I8Aq>>1$%%2222"I8Aq>>1$%%222222r   c            
          d} t          dd          t          dd          }}t          t          ||z  |t          dd          z                      | k    sJ d S )Nu)   ([4, 7] × {1, 2}) ∪ ([2, 3] × [4, 7])r-  r.  r/  re  r,  )rP   r   rQ   rN   )rT  r`  ra  s      r   test_ProductSet_parenthesisrQ    sZ    ;IAq>>8Aq>>qA51a	!Q/0011Y>>>>>>r   c                      d} d}t          dd          t          dd          }}t          ||z            | k    sJ t          ||z            |k    sJ d S )Nz[2, 3] x [4, 7]u   [2, 3] × [4, 7]r-  r.  r/  re  )rP   r   r   )rS  rT  r`  ra  s       r   %test_ProductSet_prod_char_issue_10413rS    sa    !I"IAq>>8Aq>>qA!A#;;)####1Q3<<9$$$$$$r   c                  .  
 t          t          dz  dt          f          } t          d          }d}d}t	          |           |k    sJ t          |           |k    sJ d}d}t	          |          |k    sJ t          |          |k    sJ t          t          dz  d          }t          dd          }d	}d	}t	          |          |k    sJ t          |          |k    sJ d
}d
}t	          |          |k    sJ t          |          |k    sJ t          t          dz  t           df          }t          dt           df          }d}d}t	          |          |k    sJ t          |          |k    sJ d}d}t	          |          |k    sJ t          |          |k    sJ d}d}t	          t          | |                    |k    sJ t          t          | |                    |k    sJ d}d}t	          t          ||                    |k    sJ t          t          ||                    |k    sJ d}d}t	          t          ||                    |k    sJ t          t          ||                    |k    sJ d}d}t	          t          | |                    |k    sJ t          t          | |                    |k    sJ d}d}t	          t          ||                    |k    sJ t          t          ||                    |k    sJ d}d}t	          t          ||                    |k    sJ t          t          ||                    |k    sJ t          t          dz  t          dt          f          
t          t          
fd           t          t          
fd           t          d          }t          |t          dz  z  t          ddf          }	d}d}t	          |	          |k    sJ t          |	          |k    sJ d S )Nr-  r   r  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                  "    t                     S Nr   s7s   r   r  z'test_pretty_sequences.<locals>.<lambda>  s    r

 r   c                  "    t                     S rW  )r   rX  s   r   r  z'test_pretty_sequences.<locals>.<lambda>  s     r   ra  z[0, b, 4*b]u   [0, b, 4⋅b])rH   r`  r   rJ   r   r   rG   rI   rP  r   NotImplementedErrorr   )r.  r/  rS  rT  s3s4s5s6ra  s8rY  s             @r   test_pretty_sequencesra    sD   	AqD1b'	"	"B	B#I#I"::""""2;;)#####I#I"::""""2;;)####	AqD&	!	!B			BII"::""""2;;)####II"::""""2;;)####	AqDB3(	#	#B	"a	!	!B#I#I"::""""2;;)#####I#I"::""""2;;)####$I$I&R..!!Y....6"b>>""i////II&R..!!Y....6"b>>""i////$I$I&R..!!Y....6"b>>""i////$I$I&R..!!Y....6"b>>""i////II&R..!!Y....6"b>>""i////$I$I&R..!!Y....6"b>>""i//// 
AqD1a)	$	$B
 2 2 2 2333
 3 3 3 3444sA	AadFQ1I	&	&BII"::""""2;;)######r   c                      t          t          t          t           t          f          } d}d}t          |           |k    sJ t	          |           |k    sJ 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         )rD   rP  r   r   r   r   rS  rT  s      r   test_pretty_FourierSeriesrd    sc    q1rc2,''A   !99	!!!!1::""""""r   c                      t          t          dt          z                       } d}d}t          |           |k    sJ t	          |           |k    sJ d S )Nr,  z oo              
____             
\   `            
 \         -k  k 
  \   -(-1)  *x  
  /   -----------
 /         k     
/___,            
k = 1            u    ∞               
____             
╲                
 ╲         -k  k 
  ╲   -(-1)  ⋅x  
  ╱   ───────────
 ╱         k     
╱                
‾‾‾‾             
k = 1            )rC   rp   rP  r   r   rc  s      r   test_pretty_FormalPowerSeriesrf     sa    CAJJA
   !99	!!!!1::""""""r   c            	         t          t          t          t                    } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          dz  t          d          } d}d}t          |           |k    sJ t	          |           |k    sJ t          dt          z  t          d          } d}d	}t          |           |k    sJ t	          |           |k    sJ t          t          t                    t          z  t          d          } d
}d}t          |           |k    sJ t	          |           |k    sJ t          t          t                    t          z  t          dd          } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          t          t                    z   t          d          } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          t          d          dz  } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          t          t          dz  t          d          z  t          d          } d}d}t          |           |k    sJ t	          |           |k    sJ dt          t          t          t          dz  t          d          z  t          d          z  } d}d}t          |           |k    sJ t	          |           |k    sJ t          t          t                    t          dd          } d}d}t          |           |k    sJ t	          |           |k    sJ 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      )rE   rP  r   r   r   rr   rQ  rb  s      r   test_pretty_limitsrj  #  s   Ar??D  
 $<<9$$$$4==I%%%%Aq!D   $<<9$$$$4==I%%%%1aD   $<<9$$$$4==I%%%%Q1a  D   $<<9$$$$4==I%%%%Q1a%%D   $<<9$$$$4==I%%%%SVVQ""D  
 $<<9$$$$4==I%%%%Aq>>1D   $<<9$$$$4==I%%%%51Qq>>!1a((D   $<<9$$$$4==I%%%%U1U1Q3q^^#Q***D   $<<9$$$$4==I%%%%QA4(((D   $<<9$$$$4==I%%%%%%r   c                      t          t          dz  dt          z  z   dz
  d          } d}d}t          |           |k    sJ t          |           |k    sJ d S )Nr0     r-  r   z3       / 5              \
CRootOf\x  + 11*x - 2, 0/u=          ⎛ 5              ⎞
CRootOf⎝x  + 11⋅x - 2, 0⎠)rB   rP  r   r   rb  s      r   test_pretty_ComplexRootOfrm    sk    !Q$A+/1%%D   $<<9$$$$4==I%%%%%%r   c            	         t          t          dz  dt          z  z   dz
  d          } d}d}t          |           |k    sJ t          |           |k    sJ t          t          dz  dt          z  z   dz
  t	          t
          t          t
                                        } d}d	}t          |           |k    sJ t          |           |k    sJ d S )
Nr0  rl  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 ↦ ℯ ⎠)rA   rP  r   r   r   r_  ri   rb  s      r   test_pretty_RootSumrp    s    1a4"Q$;?///D   $<<9$$$$4==I%%%%1a4"Q$;?F1c!ff$5$566D   $<<9$$$$4==I%%%%%%r   c                  4   t          g t          t                    } d}d}t          |           |k    sJ t	          |           |k    sJ t          dz  dt          z  z
  t          z
  dz   t          dz  dt          z  z
  t          z   dz
  g}t          |t          t          d          } d}d	}t          |           |k    sJ t	          |           |k    sJ |                     d
          } d}d}t          |           |k    sJ t	          |           |k    sJ d S )Nz-GroebnerBasis([], x, y, domain=ZZ, order=lex)u.   GroebnerBasis([], x, y, domain=ℤ, order=lex)r-  r.  r,  r>   rn  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⎠rm  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@   rP  rQ  r   r   fglm)r   rS  rT  Fs       r   test_GroebnerBasisrt    s@   B1D 
 
 $<<9$$$$4==I%%%%	
A!a!	QTAaCZ!^a/0AAq!7+++D   $<<9$$$$4==I%%%%99UD   $<<9$$$$4==I%%%%%%r   c                      t          t          j                  dk    sJ t          t          j                  dk    sJ d S )NUniversalSetu   𝕌)r   r   rv  r   r   r   r   test_pretty_UniversalSetrw  "  s>    !.!!^33331>""f,,,,,,r   c                  T   t          t          d          } t          |           dk    sJ t          |           dk    sJ t	          t          t
                    } t          |           dk    sJ t          |           dk    sJ t          t          t
                    } t          |           dk    sJ t          |           dk    sJ t          d	          }t	          | } t          |           d
k    sJ t          |           dk    sJ t          | } t          |           dk    sJ t          |           dk    sJ t          t          t
          d          } t          |           dk    sJ t          |           dk    sJ t          t          t
          d          } t          |           dk    sJ t          |           dk    sJ t          t          t
          d          } t          |           dk    sJ t          |           dk    sJ t          t          t
          d          } t          |           dk    sJ t          |           dk    sJ t          t
          t          d          } t          |           dk    sJ t          |           dk    sJ t          t          t
          d          } t          |           dk    sJ t          |           dk    sJ t          t
          t          d          } t          |           dk    sJ t          |           dk    sJ 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)r3   rP  r   r   r-   rQ  r4   r   r5   r1   r2   r0   r.   )r   symss     r   test_pretty_Booleanr{  '  s   q5!!!D$<<8####4==E!!!!q!99D$<<;&&&&4==I%%%%a88D$<<:%%%%4==I%%%%5>>D:D$<<222224=======t9D$<<111114=======q!e$$$D$<<;&&&&4==I%%%%1u%%%D$<<<''''4==I%%%%q!e$$$D$<<;&&&&4==I%%%%1a%(((D$<<?****4==I%%%% 1a%(((D$<<?****4==I%%%%aU+++D$<<-----4==I%%%%aU+++D$<<-----4==I%%%%%%r   c                     t          d          } t          |           dk    sJ t          |           dk    sJ t          } t          |           dk    sJ t          |           dk    sJ t          } t          |           dk    sJ t          |           dk    sJ t
          } t          |           dk    sJ t          |           d	k    sJ t          t                   } t          |           d
k    sJ t          |           dk    sJ t          t          t          f         } t          |           dk    sJ t          |           dk    sJ t          j        t                    } t          |           dk    sJ t          |           dk    sJ t          j        t          t                    } t          |           dk    sJ t          |           dk    sJ t	          j	        t          t          t                    } t          |           dk    sJ t          |           dk    sJ t	          j	        t          t          t                    } t          |           dk    sJ t          |           dk    sJ 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)rn  zQQ[x, y, order=grlex]u   ℚ[x, y, order=grlex]zQQ[x, y, order=ilex]u   ℚ[x, y, order=ilex])r:   r   r   r;   r<   r=   rP  rQ  
frac_field	poly_ringr>   r?   rh  s    r   test_pretty_Domainr  g  sT   b66D$<<8####4==K''''D$<<44==E!!!!D$<<44==E!!!!D$<<44==E!!!!a5D$<<7""""4==H$$$$ad8D$<<:%%%%4==K''''=D$<<7""""4==H$$$$=AD$<<:%%%%4==K''''<1E***D$<<222224==44444<1D)))D$<<111114==3333333r   c                     t          t          d          dd          dk    sJ t          t          d          dd          dk    sJ t          t          d          dd          dk    sJ t          t          d          t          z  ddd          dv sJ t          t          d          t          z  ddd          d	v sJ t          t          d          t          z  ddd          d	v sJ d S )
Nz0.3TF)	full_precr   z0.300000000000000ro  )r  r   r   )z0.300000000000000*xzx*0.300000000000000)z0.3*xzx*0.3)r   r   rP  r   r   r   test_pretty_precr    s,   1U88tu===ATTTTT1U88v???CVVVVV1U88u>>>%GGGG1U88A:5ERRR W     1U88A:UeTTT Y     1U88A:EUSSS X      r   c                      dd l } ddlm}  |            }| j        }|| _        	 t	          t
          dd           || _        n# || _        w xY w|                                dk    sJ d S )Nr   )StringIOF)r   r   zpi
)sysior  stdoutr   r   getvalue)r  r  fdssos       r   test_pprintr    s    JJJ	B
*CCJru6666

S
;;==F""""""s   A 	Ac                       G d d          }  G d d          }t          |           t          |           k    sJ t          |          t          |          k    sJ dS )z;Test that the printer dispatcher correctly handles classes.c                       e Zd ZdS )test_pretty_class.<locals>.CNr   r   r   r   r  r            r   r  c                       e Zd ZdS )test_pretty_class.<locals>.DNr   r   r   r   r  r    r  r   r  N)r   rs  )r  r  s     r   test_pretty_classr    s                   1;;#q((""""1;;#q((""""""r   c                     d} t          d          D ]}| |t          |t          z             z  z  }  t          |                               d          dk    sJ t          | d                              d          dk    sJ d S )Nr      
r]  F)r   )r3  rr   rP  r   find)	huge_exprr  s     r   test_pretty_no_wrap_liner    s    I2YY " "Qs1q5zz\!		9))..t44::::9...33D99R??????r   c                  2    t          t          d            d S )Nc                  >    t          t          d          d          S )Nr/  garbage)method)r   r   r   r   r   r  ztest_settings.<locals>.<lambda>  s    fQqTT)<<< r   )r   	TypeErrorr   r   r   test_settingsr    s    
9<<=====r   c                  
   ddl m} m}m}m}m}m} t          ||z  |d|f          }d}d}t          |          |k    sJ t          |          |k    sJ t          ||z  |t          |f          }d}d}t          |          |k    sJ t          |          |k    sJ t          |t          | |z  | t           t          f          z  |d||z  f          }d}d}t          |          |k    sJ t          |          |k    sJ t          |t          | |z  | t           t          f          z  |dt          | | z  | t           t          f          f          }d	}d
}t          |          |k    sJ t          |          |k    sJ t          |t          | |z  | t           t          f          z  || |z   | dz  z   |dz  z   | |z  z   d| z  z   t          | | z  | t           t          f          f          }d}d}t          |          |k    sJ t          |          |k    sJ t          |t          | |z  | t           t          f          z  |d| |z   | dz  z   |dz  z   | |z  z   d| z  z   f          }d}d}t          |          |k    sJ t          |          |k    sJ t          | | dt          f          }d}d}t          |          |k    sJ t          |          |k    sJ t          | dz  | dt          f          }d}d}t          |          |k    sJ t          |          |k    sJ t          | dz  | dt          f          }d}d}t          |          |k    sJ t          |          |k    sJ t          | dz  dz  | dt          f          }d}d}t          |          |k    sJ t          |          |k    sJ t          | dz  t          | dz  z  z  |z  | dt          f          }d}d}t          |          |k    sJ t          |          |k    sJ t          d| dz  z  | dt          f          }d}d}t          |          |k    sJ t          |          |k    sJ t          dt          ||z  z  z  | dt          f          }d}d}t          |          |k    sJ t          |          |k    sJ t          dt          ||z  z  z  | dt          ft          ddf          }d }d!}t          ddddd|z  z   z  z   z  dz   |d"dd|z  z   f|dd|z   z  t          f          ddd|z  z   z  z   }d#}d$}t          |          |k    sJ t          |          |k    sJ d S )%Nr   )rP  r`  ra  r  r  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.abcrP  r`  ra  r  r  r  r   r   r   r   r,   rQ  )	rP  r`  ra  r  r  r  r   rS  rT  s	            r   test_pretty_sumr    s   ****************q!taAYD 	  $<<9$$$$4==I%%%%q!taQZ  D 	  $<<9$$$$4==I%%%%q8AqD1rc2,//01aA,??D & $ $<<9$$$$4==I%%%%qAB3|$$&()1hq!ta"b\.J.J'KM MD 2 , $<<9$$$$4==I%%%%q8AqD1rc2,//0	1q51a4<!Q$!A#&!A#.AB3|0L0L3N O OD 6 0 $<<9$$$$4==I%%%%qAB3|$$&()1a!eadlQT.AQqS.IQqS.Q'RT TD ( & $<<9$$$$4==I%%%%q1a*D 	  $<<9$$$$4==I%%%%q!taBZ  D 	  $<<9$$$$4==I%%%%qsQ2JD	   $<<9$$$$4==I%%%%q!tAv1bz""D
   $<<9$$$$4==I%%%%1Q1X!Aq":..D    $<<9$$$$4==I%%%%qAv1bz""D
   $<<9$$$$4==I%%%%qQqSzAq":&&D
   $<<9$$$$4==I%%%%qQqSzAq":1ay11D
   q!a	AaC  3AaC(1aQi*<> >@A1qs7LD ( , $<<9$$$$4==I%%%%%%r   c                  ,   t           } d}d}d}d}ddlm}m}m} t          |           dk    sJ t          |           dk    sJ t          |                     ||dz  z  |dz  z                      |k    sJ t          |                     ||dz  z  |dz  z                      |k    sJ t          d	|z  t          z  |dz  z  t          z  |dz  z            |k    sJ t          d	|z  t          z  |dz  z  t          z  |dz  z            |k    sJ 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   )kgr  r  r   r-  r.  )
r   sympy.physics.unitsr  r  r  r   r   
convert_torP  rQ  )r   
ascii_str1unicode_str1
ascii_str2unicode_str2r  r  r  s           r   
test_unitsr    sY   D     -,,,,,,,,,4==G####$<<7""""4??2ad71a4<0011\AAAA$//"QT'!Q$,//00J>>>>1R46!Q$;q=A%&&,6666!B$q&A+a-1$%%333333r   c            	         t          d          } t           | t                    t          t          dz            }d}d}t	          |          |k    sJ t          |          |k    sJ t           | t                                        t                    t          d          }d}d}t	          |          |k    sJ t          |          |k    sJ t           | t                                        t                    t          z  t          t          fdt          dd          f          }d	}d
}t	          |          |k    sJ t          |          |k    sJ 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   rP  r  r   r   r  rQ  r   )r   r   rS  r  s       r   test_pretty_Subsr    sW   A!aQD   $<<9$$$$4==K''''!		!a##D   $<<9$$$$4==K''''!		!QAHQNN(;<<D   $<<9$$$$4==K''''''r   c                     t          t          t          t                              dk    sJ t          t	          t          t                              dk    sJ t          t          t                    d          dk    sJ t          t          d          dk    sJ t           t          dt                    t                    d          d	k    sJ t          t          dt                    d          d
k    sJ d S )Nu   γ(x, y)u   Γ(x, y)Tr7  u   Γ(x)u   Γrn   r  u   γ(x)rr  )	r   r   rP  rQ  rv   r   rn   r   r
   r   r   r   test_gammasr  =  s    :a##$$
2222:a##$$
2222588...'99995d+++t3333177111!44$GGG7RRRR77111tDDDLLLLLLr   c                  *   t          t          t          t                    d          dk    sJ t          t          t          t                    d          dk    sJ t          t          d          dk    sJ t          t          d          dk    sJ t	          d          } t           | t                    d          d	k    sJ t           | t          t          t
                    d          d
k    sJ t          | d          dk    sJ d S )NTr7  u   Β(x, y)FzB(x, y)u   Βr  rc   u   β(x)zbeta(x, y, z)r   )r   rc   rP  rQ  r
   r_  )mybetas    r   	test_betar  F  s   4!99$///:====4!99%000I====4T***d22224U+++s2222fF66!99$///7::::66!Q??666/IIII6t,,,444444r   c                       G d dt                     } t          | d          dk    sJ t           | t                    d          dk    sJ d S )Nc                       e Zd ZdS )6test_function_subclass_different_name.<locals>.mygammaNr   r   r   r   mygammar  S  r  r   r  Tr7  z
mygamma(x))rn   r   rP  )r  s    r   %test_function_subclass_different_namer  R  sv        %   7---;;;;771::4000MAAAAAAr   c                     t          t          t          dt                    d          dk    sJ t          t          t          dt                    d          dk    sJ t          t          t          dt                    d          dk    sJ t          t          t          t          t                    d          d	k    sJ t          t          t          t
          t                    d          d
k    sJ t          t          t          dt                    d          dk    sJ t          t          t          dt                    d          dk    sJ t          t          t          dt                    d          dk    sJ t          t          t          t          t                    d          d	k    sJ t          t          t          t
          t                    d          d
k    sJ d S )Nr   Tr7  z	   n
<x> r,  z       n
<x - 1> r]  z       n
<x + 1> z        n
<-a + x> z       n
<x - y> F)r   r(   rP  r  r`  rQ  r   r   r   test_SingularityFunctionr  Y  s:   &q!Q//TBBB   
 &q!Q//TBBB   
 &q"a00dCCC   
 &q!Q//TBBB   
 &q!Q//TBBB   
 &q!Q//UCCC   
 &q!Q//UCCC   
 &q"a00eDDD   
 &q!Q//UCCC   
 &q!Q//UCCC     r   c                     t          t          t                    d          dk    sJ t          t          t          d          d          dk    sJ t          t          t          t          d          z  d          dk    sJ d S )NTr7  u   δ(x)r,  u    (1)    
δ    (x)u      (1)    
x⋅δ    (x))r   r}   rP  r   r   r   test_deltasr    s    :a==d333w>>>>:a##666   
 1Z1%%%4888     r   c            	         t          ddt                    } d}d}t          |           |k    sJ t          |           |k    sJ t          ddt                    } d}d}t          |           |k    sJ t          |           |k    sJ t          dgdgt                    } d	}d
}t          |           |k    sJ t          |           |k    sJ t          t
          dz  dt          z  fdt                    } d}d}t          |           |k    sJ t          |           |k    sJ t          t
          t          d          dt          z  fdt          dz            } d}d}t          |           |k    sJ t          |           |k    sJ t          ddgddgddddt          z  dz   z  dz   z  dz   z            } d}d}t          |           |k    sJ t          |           |k    sJ 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.  rB  )r.  r/  r0  u        ⎛  π         │  ⎞
 ┌─  ⎜  ─, -2⋅k   │  ⎟
 ├─  ⎜  3         │ x⎟
2╵ 4 ⎜            │  ⎟
     ⎝-3, 3, 4, 5 │  ⎠z                      
  _  / pi         |  \
 |_  | --, -2*k   |  |
 |   | 3          | x|
2  4 |            |  |
     \-3, 3, 4, 5 |  /z2/3ui    ┌─  ⎛2/3, π, -2⋅k │  2⎞
 ├─  ⎜             │ x ⎟
3╵ 4 ⎝-3, 3, 4, 5  │   ⎠zg  _                      
 |_  /2/3, pi, -2*k |  2\
 |   |              | x |
3  4 \ -3, 3, 4, 5  |   /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/)ro   r_  r   r   rP  r   r  r   r   rT  rS  s      r   
test_hyperr    sR   RD   $<<9$$$$4==I%%%%T1D   $<<9$$$$4==I%%%%!qc1D   $<<9$$$$4==I%%%%"Q$1}a00D   $<<9$$$$4==I%%%%"ahh1%}ad;;D   $<<9$$$$4==I%%%%!Q!QAq!A#'{Q$7!$;!<==D
   $<<9$$$$4==I%%%%%%r   c                  Z   t          t          t          t          gdgddgg dt                    } d}d}t	          |           |k    sJ t          |           |k    sJ t          dt          dz  gdt          dgg g t          dz            } d	}d
}t	          |           |k    sJ t          |           |k    sJ d}d}t          dgdz  dgdgdgt                    } t	          |           |k    sJ t          |           |k    sJ t          ddgddgdgddgddddt          z  dz   z  dz   z  dz   z            } d}d}t	          |           |k    sJ t          |           |k    sJ t          | t                    } d}d}t	          |           |k    sJ t          |           |k    sJ d S )Nr,  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 |  /re  r-  r0  u           ⎛   π          │   ⎞
╭─╮0, 2 ⎜1, ─  2, 5, π │  2⎟
│╶┐     ⎜   7          │ z ⎟
╰─╯5, 0 ⎜              │   ⎟
        ⎝              │   ⎠z        /   pi           |   \
 __0, 2 |1, --  2, 5, pi |  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 |  /rO  r/  r.  u          ⎛           │       1      ⎞
        ⎜           │ ─────────────⎟
        ⎜           │         1    ⎟
╭─╮1, 2 ⎜1, 2  3, 4 │ 1 + ─────────⎟
│╶┐     ⎜           │           1  ⎟
╰─╯4, 3 ⎜ 3    4, 5 │     1 + ─────⎟
        ⎜           │             1⎟
        ⎜           │         1 + ─⎟
        ⎝           │             x⎠aL          /           |       1      \
        |           | -------------|
        |           |         1    |
 __1, 2 |1, 2  3, 4 | 1 + ---------|
/__     |           |           1  |
\_|4, 3 | 3    4, 5 |     1 + -----|
        |           |             1|
        |           |         1 + -|
        \           |             x/uc  ⌠                                        
⎮         ⎛           │       1      ⎞   
⎮         ⎜           │ ─────────────⎟   
⎮         ⎜           │         1    ⎟   
⎮ ╭─╮1, 2 ⎜1, 2  3, 4 │ 1 + ─────────⎟   
⎮ │╶┐     ⎜           │           1  ⎟ dx
⎮ ╰─╯4, 3 ⎜ 3    4, 5 │     1 + ─────⎟   
⎮         ⎜           │             1⎟   
⎮         ⎜           │         1 + ─⎟   
⎮         ⎝           │             x⎠   
⌡                                        a.    /                                       
 |                                        
 |         /           |       1      \   
 |         |           | -------------|   
 |         |           |         1    |   
 |  __1, 2 |1, 2  3, 4 | 1 + ---------|   
 | /__     |           |           1  | dx
 | \_|4, 3 | 3    4, 5 |     1 + -----|   
 |         |           |             1|   
 |         |           |         1 + -|   
 |         \           |             x/   
 |                                        
/                                         )rq   r   rP  r_  r   r   r,   r  s      r   test_meijergr    s   BA;aVYYY::D   $<<9$$$$4==I%%%%Ar!t9q"aj"b!Q$77D   $<<9$$$$4==I%%%%   A3r6A3aS!,,D$<<9$$$$4==I%%%%Aq8aVaS1a&!Q1Q37a5H15L2MNND
 
  $<<9$$$$4==I%%%%D!D   " $<<9$$$$4==I%%%%%%r   c                     t          dd          \  } }}| |z  |dz  z  }d}d}t          |          |k    sJ t          |          |k    sJ |dz  | z  |z  }d}d}t          |          |k    sJ t          |          |k    sJ | |dz  z  |z  }d	}d
}t          |          |k    sJ t          |          |k    sJ | |dz  z  |z  t          z  }d}d}t          |          |k    sJ t          |          |k    sJ d S )NzA,B,CF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   rP  )r  r  r  r   rS  rT  s         r   test_noncommutativer    sx   g5111GAq!Q3q"u9D  
 $<<9$$$$4==I%%%%b5719D  
 $<<9$$$$4==I%%%%QU719D  
 $<<9$$$$4==I%%%%QU719Q;D   $<<9$$$$4==I%%%%%%r   c                      t          d          \  } }t          |t          d          z  t          |                     }d}d}t          |          |k    sJ t	          |          |k    sJ d S )Nx y   zW     /  ___         \
     |\/ 2 *y    ___|
atan2|-------, \/ x |
     \  20          /uI        ⎛√2⋅y    ⎞
atan2⎜────, √x⎟
     ⎝ 20     ⎠)r   rb   rs   r   r   r  s        r   test_pretty_special_functionsr    s|    5>>DAq 499d1gg&&D   $<<9$$$$4==I%%%%%%r   c                      t          dd          } t          |           dk    sJ t          ddt          z            } t          |           dk    sJ d S )N)r   r,  rU  z'Segment2D(Point2D(0, 1), Point2D(0, 2)))r,  r,  gGz@)anglez0Ray2D(Point2D(1, 1), Point2D(2, tan(pi/50) + 1)))r+   r   r*   r   )es    r   test_pretty_geometryr    s]    A!99AAAAAF$r'"""A!99JJJJJJJr   c                  |   t          t                    } d}t          |           |k    sJ t          |           |k    sJ t	          dt
                    } d}d}t          |           |k    sJ t          |           |k    sJ t          t          t                              dk    sJ t          t          t                              dk    sJ t          t          t                              dk    sJ t          t          t                              dk    sJ t          t          t                              dk    sJ t          t          t                              dk    sJ t          t          t                              dk    sJ t          t          t                              dk    sJ 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]   rP  r   r   rj   r_  r`   ra   r\   r[   )r   stringrT  rS  s       r   test_expintr    ss   a55DF$<<6!!!!4==F""""!Q<<DII$<<9$$$$4==I%%%%#a&&>>X%%%%"Q%%==G####"Q%%==G#####a&&>>X%%%%3q66??h&&&&2a55>>W$$$$2a55>>W$$$$3q66??h&&&&&&r   c                  d   d} d}t          dt          dz   z            }t          |          | k    sJ t          |          |k    sJ d} d}t	          dddt          z   z            }t          |          | k    sJ t          |          |k    sJ d} d}t          dt          dz   z            }t          |          | k    sJ t          |          |k    sJ d} d	}t          dddt          z   z            }t          |          | k    sJ t          |          |k    sJ d
} d}t          ddt          z            }t          |          | k    sJ t          |          |k    sJ d} d}t          ddt          z  d          }t          |          | k    sJ t          |          |k    sJ 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│ ⎠rf  )ry   r_  r   r   rz   r{   r|   rP  )rS  rT  r   s      r   test_elliptic_functionsr    s       aQi  D$<<9$$$$4==I%%%%   aAE##D$<<9$$$$4==I%%%%   aQi  D$<<9$$$$4==I%%%%   aAE##D$<<9$$$$4==I%%%%   q!A#D$<<9$$$$4==I%%%%   q!A#q!!D$<<9$$$$4==I%%%%%%r   c                  n   ddl m} m}m}m}m}  | ddd          }t           ||dk                        dk    sJ  |dd          }t           ||dk                        d	k    sJ  |d
d          } |dd          }t           |t          ||                    j                  dk    sJ d S )Nr   )r   DieExponentialpspacewherex1r,  u   Domain: 0 < x₁ ∧ x₁ < ∞d1rf  r/  u   Domain: d₁ = 5 ∨ d₁ = 6r`  ra  u3   Domain: 0 ≤ a ∧ 0 ≤ b ∧ a < ∞ ∧ b < ∞)	sympy.statsr   r  r  r  r  r   r   domain)	r   r  r  r  r  r  r  r  r  s	            r   test_RandomDomainr  f  s    CCCCCCCCCCCCCCtQA55Q<<  $EEEEED!A55Q<<  $CCCCCCACA66%1++&&-..=> > > > > >r   c                     t          j        t          t                    } t          j        t          t                    }|                     t          t          t          z   z            }t          |          dk    sJ t          |          dk    sJ |                    t          t          z             }t          |          dk    sJ t          |          dk    sJ d S )Nz	x/(x + y)zx + y)r<   r~  rP  rQ  r  convertr   r   )rs  Rr   s      r   test_PrettyPolyr  t  s    
aA
QA99QAYD$<<;&&&&4==K''''99QUD$<<7""""4==G######r   c                      t          t          ddd                    dk    sJ t          t          t          dt          z                      dk    sJ d S )Nr-  rF  Fr@  z1 
--
 5
2 r,  z 1 
 --
 pi
x  )r   r   rP  r   r   r   r   test_issue_6285r    se    #ae,,,--1AAAAA#a!B$..!!

 
 
 
 
 
r   c                     t          t          t          dz  t                    dz            dk    sJ t          t          t          dz  t                    dz            dk    sJ t          t	          t          dz  t          ddf          dz            dk    sJ t          t	          t          dz  t          ddf          dz            dk    sJ t          t          t          dz  t          ddf          dz            dk    sJ t          t          t          dz  t          ddf          dz            d	k    sJ t          d
          } t          t           | t                    t                    dz            dk    sJ t          t           | t                    t                    dz            dk    sJ 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,   rP  r   r   r   r
   r	   )r   s    r   test_issue_6359r    s   (1a4##Q&''	 	 	 	 8AqD!$$a'((    #adQ1I&&)**	
 
 
 
 3q!taAY''*++
    '!Q$Aq	**A-..	 	 	 	 71a4!Q++Q.//	 	 	 	 	A*QQqTT1%%q())    :aaddA&&)**     r   c                      d} d}t          dt          t                    z            | k    sJ t          dt          t                    z            |k    sJ d S )Nz  1  
-----
  ___
\/ x u   1 
──
√xr,  )r   rs   rP  r   )rS  rT  s     r   test_issue_6739r    sd       !DGG)	))))1T!WW9******r   c                  T    dD ]$} t          t          |                     | k    sJ %d S )N)dexpr2_d1tauzdexpr2^d1tau)r   r   )	symb_names    r   !test_complicated_symbol_unchangedr    s?    5 6 6	fY''((I555556 6r   c                  b   ddl m} m}m}m}m}m}  | d          } | d          } | d          } |||d          }	 |||d          }
 ||          } |d          }t          |          dk    sJ t          |          d	k    sJ t          |	          d
k    sJ t          |	          dk    sJ t          |          dk    sJ t          |          dk    sJ t          |
|	z            dk    sJ t          |
|	z            dk    sJ t          |          dk    sJ t          |          dk    sJ  |            }t          |          dk    sJ t          |          dk    sJ  ||	d|
t          j
        i          }t          |          dk    sJ t          |          dk    sJ  ||	d|
t          j
        i|
|	z  di          }t          |          dk    sJ t          |          dk    sJ  ||          }t          |          dk    sJ t          |          dk    sJ 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₃    )sympy.categoriesr  r  r  r  r  r  r   r   r   r?  )r  r  r  r  r  r  r  r  r  r  r  id_A1r  r  grids                  r   test_categoriesr    s   7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 
B	B	B	r2t	$	$B	r2t	$	$BR  E	$B"::2;;&    "::%%%%2;;22222%==L((((5>>33333"R%==O++++2b5>><<<<<"::2;;&     			A!99
""""1::Xr1:.//A!99 @ @ @ @ @ 1::      	Xr1:.b(0CDDA!99 ) ) ) ) ) 1:: ? ? ? ? ? ;q>>D$<<333334==:::::::r   c                     t          j        t          t                    } |                     d          }|                    t          t          gdt          dz  g          }d}d}t          |          |k    sJ t          |          |k    sJ d}d}t          |          |k    sJ t          |          |k    sJ |                     t          dz  t                    }d}d}t          |          |k    sJ t          |          |k    sJ ||z  }d	}d
}t          |          |k    sJ t          |          |k    sJ 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_ringrP  rQ  free_module	submoduler   r   ideal)r  rs  r  rT  rS  r   Qs          r   test_PrettyModulesr  *  s   
AA	aA	QFQ1I&&A   1::""""!99	!!!!   1::""""!99	!!!!	1aA   1::""""!99	!!!!	AA   1::""""!99	!!!!  IIr   c                  "   t          j        t                    t          dz  dz   gz  } d}d}t          |           |k    sJ t	          |           |k    sJ d}d}t          | j                  |k    sJ t	          | j                  |k    sJ 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  rP  r   r   one)r  rT  rS  s      r   test_QuotientRingr    s    
QTAXJ&A   1::""""!99	!!!!   15>>Y&&&&!%==I%%%%%%r   c                     ddl m}  t          j        t                    } | |                    d          |                    d          dg          }d}d}t          |          |k    sJ t          |          |k    sJ  | |                    d          |                    d          ddg          }d}d}t          |          |k    sJ t          |          |k    sJ  | |                    d          |                    d          t          ggz  dg          }d	}d
}t          |          |k    sJ t          |          |k    sJ 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]> )sympy.polys.agcar	  r<   r  rP  r   r   r   )r	  r  r   rT  rS  s        r   test_Homomorphismr    s   ------
A<a((!--*:*:QC@@D   4==I%%%%$<<9$$$$<a((!--*:*:QFCCD   4==I%%%%$<<9$$$$<a((!--*:*:qcU*BQCHHD   4==I%%%%$<<9$$$$$$r   c                      t          dd          \  } }t          | |z            }t          |          dk    sJ t          |          dk    sJ d S )NzA BFr  zTr(A*B)u	   Tr(A⋅B))r   rY   r   r   )r  r  r  s      r   test_Trr    s[    5e,,,DAq
1Q3A!99
""""1::$$$$$$r   c                  j    t          dt          dz
  d          dz   } t          |           dk    sJ d S )NrB  r-  Fr@  r0  z5 - 2*(x - 2))r   rP  r   )eqs    r   test_pretty_Addr    s<    	RQ	'	'	'!	+B"::((((((r   c                      t          t          t          t          t                                        dk    sJ t          t          t          t          t                                        dk    sJ d S )Nu   x ⇎ yu   x ↛ y)r   r3   r.   rP  rQ  r0   r   r   r   test_issue_7179r    s\    3z!Q''(())Y66663wq!}}%%&&)333333r   c                  `    t          t          t          t                              dk    sJ d S )Nry  )r   r.   rP  rQ  r   r   r   test_issue_7180r    s+    :a##$$	111111r   c                  f   t          t          j        t          j        z
            dk    sJ t	          t          j        t          j        z
            dk    sJ t          t          j        t          j        z
            dk    sJ t	          t          j        t          j        z
            dk    sJ d S )Nz(-oo, oo) \ Naturalsu	   ℝ \ ℕz(-oo, oo) \ Naturals0u   ℝ \ ℕ₀)r   r   rA  r;  r   	Naturals0r   r   r   test_pretty_Complementr    s    !'AJ&''+BBBBB17QZ'((L8888!'AK'((,DDDDD17Q[())_<<<<<<r   c            
      T   ddl m}  t           | t          dd          t          dd          d                    dk    sJ t	          t
                    5  t           | t          dd          t          dd          d                     d d d            d S # 1 swxY w Y   d S )	Nr   SymmetricDifferencer-  r.  r0  Fr@  u   [2, 3] ∆ [3, 5])sympy.sets.setsr  r   rP   r   r[  r   r  s    r   test_pretty_SymmetricDifferencer    s   333333&&x!}}hqmm    !45 5 5 5	#	$	$ T T""8Aa==(1Q--ERRRSSST T T T T T T T T T T T T T T T T Ts   8BB!$B!c                      t          t          t          t          j                            dk    sJ t          t          t          t          j                            dk    sJ d S )NzContains(x, Integers)u	   x ∈ ℤ)r   rK   rP  r   Integersr   r   r   r   test_pretty_Containsr    sS    (1aj))**.EEEEE8Aqz**++{::::::r   c                      ddl m}   | dd          }d}d}t          |          |k    sJ t          |          |k    sJ 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  rT  rS  s       r   test_issue_8292r$    ss    """"""85IIIA   !99	!!!!1::""""""r   c                      t          d          }  | t                                        t                     }d}d}t          |          |k    sJ t	          |          |k    sJ d S )NrQ  u!    d       
-──(y(x))
 dx      z   d       
- --(y(x))
  dx      )r
   rP  r  r   r   )rQ  r   rT  rS  s       r   test_issue_4335r&  )  sp    AAaDDIIaLL=D   $<<9$$$$4==I%%%%%%r   c                  Z    ddl m}   | dd          }d}t          |          |k    sJ 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  rT  s      r   test_issue_8344r(  <  sR    """"""#e444A  1::""""""r   c                      t          ddd          } t          ddd          }t          | |d          }d}t          |          |k    sJ d S )Nr-  r.  Fr@  rO  rB  u    3 
2  
───
  2
10 )r   r   r   )rP  rQ  r  rT  s       r   test_issue_6324r*  J  sg    Aq5!!!ABU###AAq5!!!A  1::""""""r   c                     t          t          dz            t          t          dz            z  } d}t          |           |k    sJ t          t                    t	          d          dz  z  } d}t          |           |k    sJ d S )Nr-  u              ⎛x⎞
        cos⎜─⎟
           ⎝2⎠
⎛   ⎛x⎞⎞      
⎜sin⎜─⎟⎟      
⎝   ⎝2⎠⎠      rl  r=  u/           11
        ──
        13
(sin(x))  )rr   rP  rg   r   r   )r  rT  s     r   test_issue_7927r,  Y  s    AaC#ac((A  1::""""A2rA  1::""""""r   c            	         ddl m} m} t          d          }| t          z  t           ||          t          z  t          t          |z            z  |ddf          z  | t          dz  z  t           ||          dz  t          z  t          dt          z  |z            z  |ddf          z  z   }d}t          |          |k    sJ d S )Nr   )r  r  r   r,  r-  uH       1                              1                   
   2 ⌠                              ⌠                   
λ⋅x ⋅⎮ 2⋅π⋅φ(t)⋅sin(2⋅π⋅t) dt + λ⋅x⋅⎮ π⋅φ(t)⋅sin(π⋅t) dt
     ⌡                              ⌡                   
     0                              0                   )	r  r  r  r
   rP  r,   r   rr   r   )r  r  r   r  rT  s        r   test_issue_6134r.  p  s    """"""""
5//CaQ3r!t99,q!Qi8885A:hssSTvvVWxXZ{[^_`ac_cde_e[f[fOfijlmophqFrFr;rrA  1::""""""r   c            
         d} t          dddd          t          dd          t          t                    }}}t          t	          |t          ||                              | k    sJ d}t          t                    t          t                    t          t                    t          dd          f\  }}}}t          t          ||t          ||                              |k    sJ d S )Nu   (2, 3) ∪ ([1, 2] \ {x})r-  r.  Tr,  u   {x} ∩ {y} ∩ ({z} \ [1, 2]))	rP   rN   rP  r   rQ   rM   rQ  r_  rO   )	r  r`  ra  r  r  r  r  r   gs	            r   test_issue_9877r1    s    -Jq!T4(((1a..)A,,!qA5Jq!,,--..*<<<<2J1y||Yq\\8Aq>>IJAq!Q<1jA&6&67788JFFFFFFr   c                     t           t          dt          t          z   d          z   } t	          |           dk    sJ t           t          dt          t          z
  t
          z   d          z   }t	          |          dk    sJ d S )Nr]  Fr@  zc - (a + b)zc - (a - b + d))r  r   r`  ra  r   r  )expr1r)  s     r   test_issue_13651r4    su    BA....E%==M))))BA	E2222E%==-------r   c                      ddl m}  d}d}t          dd          }t           | |                    |k    sJ t	           | |                    |k    sJ d S )Nr   )primenuznu(n)u   ν(n)r  Tr  )%sympy.functions.combinatorial.numbersr6  r   r   r   )r6  r  r  r  s       r   test_pretty_primenur8    sx    ======JJT"""A''!**++++771::*,,,,,,r   c                      ddl m}  d}d}t          dd          }t           | |                    |k    sJ t	           | |                    |k    sJ d S )Nr   )
primeomegazOmega(n)u   Ω(n)r  Tr  )r7  r:  r   r   r   )r:  r  r  r  s       r   test_pretty_primeomegar;    sx    @@@@@@JJT"""A**Q--  J....::a==!!Z//////r   c                     ddl m}  d}d}d}d}d}d}d}d}d}	d	}
t          d
d          }t           | |d                    |k    sJ t	           | |d                    |k    sJ t           | |dz   d                    |k    sJ t	           | |dz   d                    |k    sJ t           | d|z  d                    |k    sJ t	           | d|z  d                    |k    sJ t           | |d          dz             |k    sJ t	           | |d          dz             |k    sJ t          d | |d          z            |	k    sJ t	          d | |d          z            |
k    sJ 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)rP  Tr  re  r,  r-  )r#  r=  r   r   r   )r=  r  r  r  r  
ascii_str3
ucode_str3
ascii_str4
ucode_str4
ascii_str5
ucode_str5rP  s               r   test_pretty_ModrD    s   JJ J JJJ J JJ JT"""A##a))
****33q!99++++##a!eQ--  J....33q1ua==!!Z////##a!eQ--  J....33q1ua==!!Z////##a))a-  J....33q!99q=!!Z////!cc!Qii-  J....1ss1ayy=!!Z//////r   c                      t          t          d                    dk    sJ t          t          d                    dk    sJ d S )N )r   r   r   r   r   r   test_issue_11801rG    sF    &**####6"::"$$$$$$r   c                     t          d          } t          d| z            }d}t          |          |k    sJ d}t          |dz            |k    sJ d}t          |dz             |k    sJ d}t          | |z            |k    sJ d S )NrP  r,  r?  u!      2
⎛1⎞ 
⎜─⎟ 
⎝x⎠ r-  u       1
1 + ─
    xu     1
x⋅─
  x)r   rX   r   )rP  herT  s      r   test_pretty_UnevaluatedExprrJ    s    A	1		B  2;;)####  2q5>>Y&&&&  26??i''''  1R4==I%%%%%%r   c                      t          ddgddgg          t          ddg          f} d}t          |           |k    sJ d S )Nr   uM   ⎛⎡0  0⎤  ⎡0⎤⎞
⎜⎢    ⎥, ⎢ ⎥⎟
⎝⎣0  0⎦  ⎣0⎦⎠)r6   r   )r  rT  s     r   test_issue_10472rL    sT    	!Q!Q 	!	!61a&>>2A  1::""""""r   c                     t          ddd          } t          ddd          }t          ddd          }d}d}t          | d                   |k    sJ t          | d                   |k    sJ d	}d
}t          d| d         z            |k    sJ t          d| d         z            |k    sJ d}d}|d                             || |z
            }t          |          |k    sJ t          |          |k    sJ d S )Nr  r,  r.  r  r  A_00u   A₀₀)r   r   z3*A_00u   3⋅A₀₀z(-B + A)[0, 0])r   r   r   subs)r  r  r  r  r  rs  s         r   test_MatrixElement_printingrP     s   S!QAS!QAS!QAJJ!D'??z))))1T7z))))JJ!AdG)++++1QtW9++++!J!J	$QAA!99####1::######r   c                      t          d          \  } }}}t          d          }d}t          | |z  |z  |j        z            |k    sJ d}t          d|z  |j        z            |k    sJ d S )Nzx y t jr  uI   ⎛   t⎞    
⎜⎛x⎞ ⎟ j_e
⎜⎜─⎟ ⎟    
⎝⎝y⎠ ⎠    u%   ⎛1⎞    
⎜─⎟ j_e
⎝y⎠    r,  )r   r   r   r  )rP  rQ  r  r  r  rT  s         r   test_issue_12675rR    s    ##JAq!Q3A  AaC!8AC<  I----  AaC9******r   c                     t          ddd          } t          ddd          }t          ddd          }t          |  |z  |z            dk    sJ t          | |z
            dk    sJ t          | |z  |z  | |z  z
  ||z  z
            dk    sJ t          dt          t                    }t          d	t          t                    }t          ||z             d
k    sJ d}t          t           |z  d|z  |z  z             |k    sJ d S )Nr  r.  r  r  z-A*B*Cz-B + Az-A*B -B*C + A*B*CrP  zy*zx + y*z     2     
-2*y*  -a*xrB  )r   r   r  r`  )r  r  r  rP  rQ  rS  s         r   test_MatrixSymbol_printingrT  ,  s    S!QAS!QAS!QA1"Q$q&>>X%%%%!a%==H$$$$!A#a%!A#+!#$$(;;;;; 	S!QAT1a  A!a%==H$$$$ 
 1"Q$Aa-  I------r   c                     dt           z  } t          |           dk    sJ t          t           z  }t          |          dk    sJ t          t          t           z  dt           z  z             }t          |          dk    sJ d S )NZ   u   90°u   x°u   cos(x° + 90°))r   r   rP  rg   )r3  r)  expr3s      r   test_degree_printingrX  A  sz    vIE%==F""""fHE%==E!!!!&2f9$%%E%==-------r   c                  ~   t          d          } t          t          | j        | j        | j        z  d| j        z  | j        z  z                       dk    sJ t          t          t          | j        | j                  z            dk    sJ t          t          | j        | j        z  d| j        z  | j        z  z                       dk    sJ t          t          | j        | j        z  d| j        z  | j        z  z                       dk    sJ t          t          | j        | j        | j        z  d| j        z  | j        z  z                       dk    sJ t          t          | j        d| j        z  z                       dk    sJ t          t          | j        d| j        z  z                       d	k    sJ d S )
Nr  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   r  rP  rQ  r  r   r   r   r   r   )r  s    r    test_vector_expr_pretty_printingrZ  J  s   3A5ac!#gaeACi/00115YYYYY1U13__$%%);;;;;4AC!AC%)+,,--1SSSSS:ac!#g!#ac	122337ZZZZZ3qsACGAacE!#I-..//3XXXXX8AC!#I&&''+?????9QS13Y''((,@@@@@@@r   c                     t          d          } t          d|           \  }}}t          d|           }t          d| g          \  }}}}t          d| | g          }	| }
d}d}t	          |
          |k    sJ t          |
          |k    sJ  ||          }
d}d}t	          |
          |k    sJ t          |
          |k    sJ  ||          }
d}d	}t	          |
          |k    sJ t          |
          |k    sJ  ||           }
d
}d
}t	          |
          |k    sJ t          |
          |k    sJ d ||           z  }
d}d}t	          |
          |k    sJ t          |
          |k    sJ  |	||           }
d}d}t	          |
          |k    sJ t          |
          |k    sJ  |	||           }
d}d}t	          |
          |k    sJ t          |
          |k    sJ  |	||            ||          z   ||          z  }
d}d}t	          |
          |k    sJ t          |
          |k    sJ dt          z    ||          z  }
d}d}t	          |
          |k    sJ t          |
          |k    sJ  ||          d ||          z  z   }
d}d}t	          |
          |k    sJ t          |
          |k    sJ d S )NLi j k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   rP  )r\  r  r  r  i0r  r  r  r  r`  r   rS  rT  s                r   test_pretty_print_tensor_exprrb  [  s   AWa((GAq!	q	!	!Bi!--JAq!Q3AA2D 
  $<<9$$$$4==I%%%%1Q44D   $<<9$$$$4==I%%%%1R55D   $<<9$$$$4==I%%%%1aR55D   $<<9$$$$4==I%%%%aaee8D   $<<9$$$$4==I%%%%1Q88D   $<<9$$$$4==I%%%%1Q88D   $<<9$$$$4==I%%%%1Q88AAaDD=1D   $<<9$$$$4==I%%%%aC1:D   $<<9$$$$4==I%%%%1Q44!AAaDD&=D   $<<9$$$$4==I%%%%%%r   c            	         ddl m}  t          d          }t          d|          \  }}}t	          d|g          \  }}}}t          d||g          }	 |  ||           ||                    }
d}d}t          |
          |k    sJ t          |
          |k    sJ  ||           |  |	||            ||                    z  }
d	}d
}t          |
          |k    sJ t          |
          |k    sJ  ||           |  ||           ||           z  d |	||           z  z    ||                    z  }
d}d}t          |
          |k    sJ t          |
          |k    sJ  ||           ||          z    |  ||           ||                    z  }
d}d}t          |
          |k    sJ t          |
          |k    sJ  ||           ||          z    |  ||            ||                    z  }
d}d}t          |
          |k    sJ t          |
          |k    sJ  |  ||            ||           z    ||            |t                               }
d}t          |
          |k    sJ  | d ||           z   ||            |t                               }
d}t          |
          |k    sJ t           |	||          |di          }
d}|}t          |
          |k    sJ t          |
          |k    sJ t           |	||          |d|di          }
d}|}t          |
          |k    sJ t          |
          |k    sJ t           |	||          |di          }
d}|}t           |	| |          | di          }
d}|}t          |
          |k    sJ t          |
          |k    sJ 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 )
sympy.tensor.toperatorsrd  r   r   r   r   r   r   r  r   )rd  r\  r  r  r  r  r  r  r  r`  r   rS  rT  s                r   &test_pretty_print_tensor_partial_derivrf    s   999999AWa((GAq!i!--JAq!Q3AAQQqTT11Q44((D   $<<9$$$$4==I%%%%1Q44!!!!Ar((AAaDD111D   $<<9$$$$4==I%%%%1Q44!!!!A$$qq!uu*q1qbz"911Q44@@@D   $<<9$$$$4==I%%%%AaDD11Q44K**11Q441666D   $<<9$$$$4==I%%%%AaDD11Q44K**11aR55!!A$$777D   $<<9$$$$4==I%%%%QQrUUQQrUU]AAqbEE11aR5599DI 4==I%%%%Qqq!uuWaaeeQQrUU33DI 4==I%%%%1a1Q%((D  I$<<9$$$$4==I%%%%1a1aA,//D  I$<<9$$$$4==I%%%%1a1a&))D  IA2qQB7++D  I$<<9$$$$4==I%%%%%%r   c                  |    t          ddd          } t          | t          | |           z            }d}||k    sJ d S )Nr`  r,  z	a*(a x a))r   r   r   )r`  r  results      r   test_issue_15560ri    sF    S!QAq"1a(()**AF;;;;;;r   c                      d} d}t          t          dd                    |k    sJ t          t          dd                    | k    sJ d S )Nu   Li₂(3)zpolylog(2, 3)r-  r.  )r   rx   r   )uresultaresults     r   test_print_polylogrm    sT    GG'!Q--  G++++71a==!!W,,,,,,r   c                  R   t          d          \  } }d}d}t          t          | |                    |k    sJ t          t          | |                    |k    sJ d}d}t          t	          | |                    |k    sJ t          t	          | |                    |k    sJ d S )Ns, zu   Liₛ(z)zpolylog(s, z)u   Eₛ(z)zexpint(s, z))r   r   rx   r   rj   )r  r_  rk  rl  s       r   (test_print_expint_polylog_symbolic_orderrp    s    6??DAqGG'!Q--  G++++71a==!!W,,,,GG&A,,7****6!Q<<  G++++++r   c                  z    t          d          \  } }d}t          t          | dz  |                    |k    sJ d S )Nro  u%          ⎛ 2   ⎞
polylog⎝s , z⎠r-  )r   r   rx   )r  r_  rT  s      r   )test_print_polylog_long_order_issue_25309rr    sJ    6??DAq 
 71a4##$$	111111r   c                      t          d          } t          t          | dd                     d}d}t          t          | dd                    |k    sJ t          t          | dd                    |k    sJ d S )Nr`  r,  r-  u   Φ(a, 1, 2)zlerchphi(a, 1, 2))r   r   rw   r   )r`  rk  rl  s      r   test_print_lerchphirt    s    sA
8Aq!G!G(1a##$$////8Aq!$$%%000000r   c                      t          j        d          } d}t          | j        | j        | j        f          }||k    sJ d S )NNz(n_x, n_y, n_z))r   ReferenceFramer   rP  rQ  r_  )rv  rh  r  s      r   test_issue_15583rx    sA     %%AFQS!#A;;;;;;r   c                     d } ddl m} t          ddd          } |  ||                    dk    sJ t          ddd          }t          ddd          }t          d	dd          } | |           d
k    sJ  | |||z  z
  |z
            dk    sJ  | | |z  ||z  |z  z
  |z
            dk    sJ t          ddd          } | |          dk    sJ t          ddd          } | |          dk    sJ t          ddd          } | |          dk    sJ t          d          }t          d          }t          ddd          }t          ddd          }	 | ||z  |z  ||	z  z             dk    sJ t          ddd          }	t          ddd          } | ||z  |z  ||	z  z             dk    sJ t          ddd          } | |          dk    sJ d S )Nc                 (    t          | ddd          S )NTFbold)r   r   mat_symbol_styler   rh  s    r   
boldprettyz)test_matrixSymbolBold.<locals>.boldpretty  s    tQWXXXXr   r   )tracer  r-  u   tr(𝐀)r.  r  r  u   -𝐀u   -𝐁 -𝐀⋅𝐁 + 𝐀u&   -𝐁 -𝐀⋅𝐁 -𝐀⋅𝐁⋅𝐂Addotu   𝐀̈omegau   ω	omeganormu   ‖ω‖r  ra  r  r,  r  u   b⋅𝐝 + α⋅𝐁⋅𝐜deltaBetau   b⋅δ + α⋅Β⋅𝐜A_2u   𝐀₂) sympy.matrices.expressions.tracer~  r   r   )
r}  r~  r  r  r  r  r`  ra  r  r  s
             r   test_matrixSymbolBoldr    si   Y Y Y 766666S!QA:eeAhh:----S!QAS!QAS!QA:qb>>W$$$$:a!A#gk""&AAAAA:qbdQqSUlQ&''+SSSSSWa##A:a==H$$$$!Q''E:e$$$$a++E:e
****wAsAS!QAS!QA:ac!eAaCi  $AAAAAWa##AVQ""A:ac!eAaCi  $=====UAq!!A:a==I%%%%%%r   c                     t          dd          dk    sJ t          dd          dk    sJ t          dd          dk    sJ t          dd          d	k    sJ t          d
d          dk    sJ t          dd          dk    sJ d S )Nr`  u   ̃u   ãaau   aãaaau   aãaaaaau   aaãaaaaaau   aaãaaabcdefgu   ⃜u
   abcd⃜efg)r   r   r   r   test_center_accentr    s    344====455???? 566'AAAA!6778CCCC"788IEEEE$CDDTTTTTTr   c                  P    ddl m    dt          z   d          dk    sJ   dt          z   d          dk    sJ   dt          z   dd	
          dk    sJ   dt          z   dd	
          dk    sJ t          t           fd           t          t
           fd           d S )Nr   r   r,  Fr7  z1 + ITu   1 + ⅈr  )r   imaginary_unitu   1 + ⅉc                  2      t           t                     S )Nr  r   r   s   r   r  z%test_imaginary_unit.<locals>.<lambda>   s    ffQq999 r   c                  (      t           d          S )Nkkkr  r  r   s   r   r  z%test_imaginary_unit.<locals>.<lambda>!  s    vva>>> r   )sympy.printing.prettyr   r   r   r  
ValueErrorr   s   @r   test_imaginary_unitr    s    ,,,,,,6!a%U+++w66666!a%T***i77776!a%U3???7JJJJ6!a%T#>>>)KKKK
99999:::
:>>>>?????r   c                     ddl m} m}m} t	           | d                    dk    sJ t           | d                    dk    sJ t	           |dd                    dk    sJ t           |dd                    dk    sJ t	           |dd                    d	k    sJ t           |dd                    d
k    sJ d S )Nr   Identityr   r   r/  r   u   𝕀r-  0u   𝟘1u   𝟙)r  r  r   r   r   r   r  s      r   test_str_special_matricesr  $  s    >>>>>>>>>>((1++#%%%%88A;;6))))**Q""##s****::a##$$....))Aq//""c))))99Q??##v------r   c                     t          t          t                              dk    sJ t          t          t                              dk    sJ t          t          t          t                              dk    sJ t          t          t          t                              dk    sJ t          t          t                              dk    sJ t          t          t                              dk    sJ t          t          t                              dk    sJ t          t          t                              dk    sJ t          t          t                              dk    sJ t          t          t                              dk    sJ t          t          t                              dk    sJ t          t          t                              dk    sJ t          t          t                              dk    sJ t          t          t                              dk    sJ t          t          t                              dk    sJ t          t          t                              dk    sJ t          t          t                              d	k    sJ t          t          t                              d
k    sJ t          t          t          t                              dk    sJ t          t          t          t                              dk    sJ t          t          t                              dk    sJ t          t          t                              dk    sJ 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    rP  r   rQ  r!   r#   r"   r$   r&   r'   r%   r)   r   r   r   test_pretty_misc_functionsr  .  s   (1++&((((8A;;6))))(1a..!!Y....8Aq>>""i////&))''''6!99((((&))''''6!99((((+a..!!X----;q>>""h....+a..!!X----;q>>""h....(1++&((((8A;;6))))(1++&((((8A;;6)))))A,,>11119Q<<  G++++)Aq//""&777779Q??##z1111-""##'99999=##$$//////r   c                     t          dd          \  } }}t          d| |          }t          d| |          }t          ||          }d}d}t          |          |k    sJ t	          |          |k    sJ t          |d|z             }d	}d
}t          |          |k    sJ t	          |          |k    sJ t          ||j        z  d|z             }d}d}t          |          |k    sJ t	          |          |k    sJ d S )Nzm, n, pTr  r  r  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  )r  r  r  r  r  r   rS  rT  s           r   test_hadamard_powerr  G  sK   i...GAq!S!QAS!QA !QD  
 $<<9$$$$4==I%%%%!QqS!!D  
 $<<9$$$$4==I%%%%!AC%1%%D   $<<9$$$$4==I%%%%%%r   c                      t          dd          } t          t          | | t           df                    dk    sJ t	          t          | | t           df                    dk    sJ d S )Nr  Tr  r,  z;   1     
  __     
  \ `    
   )    n
  /_,    
n = -oo  uW     1     
 ___    
 ╲      
  ╲     
  ╱    n
 ╱      
 ‾‾‾    
n = -∞  )r   r   r   r   r   )r  s    r   test_issue_17258r  z  s    sD!!!A#a!bS!%%&&    3q1rc1+&&''	
 
 
 
 
 
r   c                  2    d} d | D             g dk    sJ d S )Nu   v̇_mc                 ,    g | ]}t          |          S r   )r   ).0syms     r   
<listcomp>z%test_is_combining.<locals>.<listcomp>  s     ...#L...r   )FTFFr   )lines    r   test_is_combiningr    s?    D.....###$ $ $ $ $ $r   c                  l   t          t          dt          d          z  z            dk    sJ t          t          dt          d          z  z            dk    sJ t          t          dt          z  z            dk    sJ t          t          dt          z  z            dk    sJ t          t          dt          z  z            dk    sJ t          t          dt          z  z            dk    sJ t          d          } t          d	d| z  z            d
k    sJ t          d	d| z  z            dk    sJ d S )Nr,  z  / -1\
  \e  /
pi     u    ⎛ -1⎞
 ⎝ℯ  ⎠
π     z  1 
  --
  pi
pi  u    1
 ─
 π
π z3      1     
  ----------
  EulerGamma
pi          u    1
 ─
 γ
π x_17re  u   x₁₇___
 ╲╱ 7 zx_17___
  \/ 7 )r   r   ri   r   r   r   )r_  s    r   test_issue_17616r    s   "qQx.!!   
 2#a&&>""   
 "qt*    2":

 
 
 
 "q|$%%    2*%&&

 
 
 
 	vA1qs8    !ac(     r   c                      t          t          t           t                              dk    sJ t          t          t          t           d                    dk    sJ d S )Nz{..., -1, 0, 1, ...}r]  z{..., 1, 0, -1, ...})r   rL   r   r   r   r   test_issue_17857r    sT    %R..!!%;;;;;%RC$$%%)???????r   c                  v   t          d          } t          d          }t          t          | t          |  t	          |           z   d          t
          j                            dk    sJ t          t          | t          |dz  t          dt                              t          | dz  |dz                                dk    sJ t          t          | t          t          d| dk    f| dz  d	z
  | dk    fd	| dk    f| dz  d
f          d	z
  d          t          dd                              dk    sJ d S )NrP  r  r   uu   ⎧  │         ⎛      x    ⎞⎫
⎨x │ x ∊ ℂ ∧ ⎝-x + ℯ  = 0⎠⎬
⎩  │                      ⎭r-  u   ⎧  │     ⎧-n   n⎫   ⎛n         ⎞⎫
⎨x │ x ∊ ⎨───, ─⎬ ∧ ⎜─ ∈ [0, ∞)⎟⎬
⎩  │     ⎩ 2   2⎭   ⎝2         ⎠⎭r,  r.  r  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   ri   r   	ComplexesrK   rP   r   rN   r_   )rP  r  s     r   test_issue_18272r    sl   sAsA<2qb3q66k1#5#5q{CCDD(( ( ( ( <8AaC!R#A#A9aRPQTSTUVSVCWCWXXYY66 6 6 6 <2iAFacCia=PSVXY]^X^R_1d' '"'#$%$' $'(0A8 8 9 9
KK K K K K Kr   c                  N    ddl m}  t           | d                    dk    sJ d S )Nr   StrrP  )sympy.core.symbolr  r   r  s    r   test_Strr    s;    %%%%%%##c((s""""""r   c                     t          d          } t          dd          }t          d| |          }t          t          |                    dk    sJ t          t	          |                    dk    sJ t          t          |dk                        d	k    sJ t          d
| |          }t          t          ||                    dk    sJ d S )NmusigmaT)positiver  zE[X]zVar(X)r   zP(X > 0)r  z	Cov(X, Y))r   r   r   r   r   r   r   )r  r  r  r  s       r   test_symbolic_probabilityr    s    	BGd+++EsBA+a..!!W,,,,(1++)+++++a!e$$%%4444sBA*Q""##{222222r   c                     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          z  t          |t          z            z  |z  dt          |t          z            z  |dz  z  z   |t           k    |t          k     z  t          |d          z  fd	          t          ||z            z  t          z  |dt          f          f          }t           | |                    d
k    sJ t           |||t           t          fdt          d|dt          f          t          d|dt          f          f                    dk    sJ d S )Nr   )piecewise_fold)FourierSeriesrP  zk nr,  rB  r-  )r   Tu{  ⎧                      2⋅sin(3⋅x)                                
⎪2⋅sin(x) - sin(2⋅x) + ────────── + …  for n > -∞ ∧ n < ∞ ∧ n ≠ 0
⎨                          3                                     
⎪                                                                
⎩                 0                            otherwise         r  )$sympy.functions.elementary.piecewiser  sympy.series.fourierr  r   r   r   rH   r   r_   rg   rr   r   r   r   )r  r  rP  r  r  fos         r   test_issue_21758r    s   CCCCCC222222sA5>>DAq	q1rc2,Jq1a*,E,Ez2b5QrT?1$qQrT{1a4'77!rc'a"f9MPRSTVWPXPX9XY	 	 1XX	&&(	)+,a*H6 H6 )7 
8 
8B >>"%%&&	NN N N N --AsB<!ZAq":5N5N1;A1bz1J1J2L M M N NQTU U U U U Ur   c                  T   ddl m} m}m}m} t          dd          \  }} | dd          }t          |          dk    sJ  |d|          }t          |          dk    sJ  |d	|||g          }t          |          d	k    sJ  ||d          }	t          |	          d
k    sJ d S )Nr   )ManifoldPatchCoordSystemBaseScalarFieldr  T)realr  r-  PrectrP  )r  r  r  r  r  r   r   )
r  r  r  r  rP  rQ  r  r  r  ra  s
             r   test_diffgeomr    s    LLLLLLLLLLLL
%d
#
#
#CAaaA!99c1A!99;vq1a&))D$<<6!!!!a  A!99r   c                  z   t                      5  ddlm}   | d          dk    sJ 	 d d d            n# 1 swxY w Y   t                      5  ddlm}  |dd          }d d d            n# 1 swxY w Y   t                      5  |j        |j        cxk    rdk    sn J 	 d d d            d S # 1 swxY w Y   d S )Nr   )xstrr,  r  )
prettyFormr  )unicode)r   &sympy.printing.pretty.pretty_symbologyr   sympy.printing.pretty.stringpictr  r  r  )r  r  r  s      r   test_deprecated_prettyFormr    s   		!	!  ??????tAww#~~~~~               
 	!	! ) )??????JsC((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) 
 	!	! ' 'yAC&&&&3&&&&&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's0   488A--A14A1B00B47B4c                      t          dd          dk    sJ t          dd          dk    sJ t          ddd          dk    sJ t          ddd          d	k    sJ d S )
Nr  r-  z1 r.  z 1 rh  z-1-r0  z--1--)r   r   r   r   test_centerr     st    #q>>T!!!!#q>>U""""#q#%''''#q#'))))))r   rW  (  sympy.concrete.productsr   sympy.concrete.summationsr   sympy.core.addr   sympy.core.basicr   sympy.core.containersr   r   sympy.core.functionr	   r
   r   r   sympy.core.mulr   r#  r   r   r   sympy.core.numbersr   r   r   r   sympy.core.powerr   sympy.core.relationalr   r   r   r   r   r   sympy.core.singletonr   r  r   r   $sympy.functions.elementary.complexesr   &sympy.functions.elementary.exponentialr    sympy.functions.special.besselr!   r"   r#   r$   'sympy.functions.special.delta_functionsr%   'sympy.functions.special.error_functionsr&   r'   -sympy.functions.special.singularity_functionsr(   &sympy.functions.special.zeta_functionsr)   sympy.geometry.liner*   r+   sympy.integrals.integralsr,   sympy.logic.boolalgr-   r.   r/   r0   r1   r2   r3   r4   r5   sympy.matrices.denser6   r7    sympy.matrices.expressions.slicer8   r  r9   sympy.polys.domains.finitefieldr:   sympy.polys.domains.integerringr;   !sympy.polys.domains.rationalfieldr<   sympy.polys.domains.realfieldr=   sympy.polys.orderingsr>   r?   sympy.polys.polytoolsr@   sympy.polys.rootoftoolsrA   rB   sympy.series.formalrC   r  rD   sympy.series.limitsrE   sympy.series.orderrF   sympy.series.sequencesrG   rH   rI   rJ   sympy.sets.containsrK   rG  rL   r  rM   rN   rO   rP   rQ   sympy.codegen.astrR   rS   rT   rU   rV   rW   sympy.core.exprrX   sympy.physics.quantum.tracerY   sympy.functionsrZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   sympy.matrices.expressionsr   sympy.physicsr   sympy.physics.control.ltir   r   r   r   r   r   r   r   r   r  r   r   r  r   r   r   r  r   r   r   sympy.sets.conditionsetr   
sympy.setsr   r   sympy.sets.setexprr   sympy.stats.crv_typesr    sympy.stats.symbolic_probabilityr   r   r   r   sympy.tensor.arrayr   r   r   r   r   sympy.tensor.functionsr   sympy.tensor.tensorr   r   r   r   r   sympy.testing.pytestr   r   r   sympy.vectorr   r   r   r   r   r   r   sympyr  r   r`  ra  r  r  rP  rQ  r_  r  r  r  r  r   r  r  r   r   r   r   r   r   r   r  r(  r3  r;  r[  rc  ri  rk  rp  rt  rv  ry  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r"  r%  r*  r0  r4  r8  r=  rC  rI  rK  rM  rO  rQ  rS  ra  rd  rf  rj  rm  rp  rt  rw  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r&  r(  r*  r,  r.  r1  r4  r8  r;  rD  rG  rJ  rL  rP  rR  rT  rX  rZ  rb  rf  ri  rm  rp  rr  rt  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     s   + + + + + + ) ) ) ) ) )       " " " " " " / / / / / / / / D D D D D D D D D D D D       9 9 9 9 9 9 9 9 9 9 4 4 4 4 4 4 4 4 4 4 4 4             : : : : : : : : : : : : : : : : " " " " " " / / / / / / / / : : : : : : ; ; ; ; ; ; U U U U U U U U U U U U = = = = = = H H H H H H H H M M M M M M @ @ @ @ @ @ . . . . . . . . . . . . . . X X X X X X X X X X X X X X X X X X X X X X / / / / / / / / 8 8 8 8 8 8 2 2 2 2 2 2 . . . . . . . . . . . . 0 0 0 0 0 0 , , , , , , / / / / / / / / * * * * * * 5 5 5 5 5 5 5 5 # # # # # # / / / / / / % % % % % %             G G G G G G G G G G G G ( ( ( ( ( ( & & & & & & R R R R R R R R R R R R R Rd d d d d d d d d d d d d d d d + + + + + + * * * * * *" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "R R R R R R R R R R R R R R R R R R R R 5 5 5 5 5 5 # # # # # #J J J J J J J J J J J J J J J J J J J J J J - - - - - - - - ; ; ; ; ; ; ; ; V V V V V V V V V V 0 0 0 0 0 0 + + + + + + + + & & & & & & ( ( ( ( ( (E E E E E E E E E E E E^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 0 0 0 0 0 0> > > > > > > > > > > > > > O N N N N N N N N N V V V V V V V V V V V V V V V V V V    	 	 	 	 	 	 	 	 #*'*A"B"B 1aAq!Q1aHSMMVG__VE]]iXJ J J J
I I I I

. 
. 
.
. 
. 
.- - -2 2 2	= 	= 	=. . .". . .#3 #3 #3L# # #4 4 40W& W& W&tb& b& b&JE: E: E:P  87 87 87v' ' '
( ( (
6 6 6W7 W7 W7t& & &;& ;& ;&|9& 9& 9&x z& z& z&zz& z& z&z= = = & & && & &"6( 6( 6(rH& H& H&V; ; ;GS GS GSTKM KM KM\|7 |7 |7~  DM M M`'% '% '%RS& S& S&lJ& J& J&Zs& s& s&lQ( Q( Q(hq+ q+ q+h@ @ @% % %1 1 1h+ + +\7 7 7D6> 6> 6>r"& "& "&J@ @ @  0\& \& \&~  Q( Q( Q(hG G G0" " "J54 54 54p$ $ $B B BJ+) +) +)\*) *) *)Z, , ,3 3 33 3 3? ? ?% % %Y$ Y$ Y$x# # #* #  #  #FZ& Z& Z&z& & &"& & &@.& .& .&b- - -
=& =& =&@14 14 14h  $
# 
# 
#	# 	# 	#@ @ @> > >C& C& C&L*4 *4 *4Z5( 5( 5(pM M M5 5 5B B B2 2 2j  w& w& w&tx& x& x&v=& =& =&@& & &,K K K' ' ',_& _& _&D> > >
$ 
$ 
$
 
 
O O Od+ + +$6 6 6
4; 4; 4;nW W Wt#& #& #&L<% <% <%~% % %) ) )
4 4 4
2 2 2= = =T T T; ; ;
# # #.& & &&# # ## # ## # #.# # # G G G. . .- - -0 0 00 0 0>% % %
&& && &&R	# 	# 	#$ $ $.+ + +*. . .*. . .A A A"a& a& a&Hl& l& l&^  - - -
, 
, 
,2 2 21 1 1  %& %& %&PU U U@ @ @. . .0 0 020& 0& 0&f  .$ $ $* * *Z@ @ @
K K K6# # #
3 3 3U U U$
 
 

' 
' 
'* * * * *r   