o
    *Ī®cŽŃ ć                   @   s6  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mZ d d,lmZ d d-lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m”Z”m¢Z¢m£Z£m¤Z¤m„Z„m¦Z¦m§Z§mØZØm©Z©mŖZŖm«Z«m¬Z¬m­Z­m®Z®mÆZÆm°Z° d d.l±m²Z²m³Z³m“Z“mµZµm¶Z¶m·Z·møZøm¹Z¹ d d/lŗm»Z» d d0l¼m½Z½ d d1l¾mæZæmĄZĄmĮZĮmĀZĀmĆZĆmÄZÄmÅZÅmĘZĘ d d2lĒmČZČmÉZÉ d d3lŹmĖZĖmĢZĶ d d4lĪmĻZĻmŠZŠ d d5lŃmŅZŅ d d6lÓmŌZŌmÕZÕ d d7lÖm×Z× d d8lŲmŁZŁ d d9lŚmŪZŪmÜZÜmŻZŻmŽZŽ d d:lßmąZą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ģ d d=lķmīZīmļZļmšZš d d>lńmņZņmóZómōZōmõZõmöZöm÷Z÷mųZų d d?lłZśG d@dA dAeśjūZūe(dB\ZüZżZžZ’Z ZZZZZZedCZe'dDZe'dEZ		 dxdFdGZĢdxdHdIZ
dJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdZd[ Zd\d] Zd^d_ Zd`da Zdbdc Zddde Zdfdg Zdhdi Zdjdk Zdldm Zdndo Zdpdq Zdrds Zdtdu Z eļdvdw Z!dxdy Z"dzd{ Z#d|d} Z$d~d Z%dd Z&dd Z'dd Z(dd Z)dd Z*dd Z+dd Z,dd Z-dd Z.dd Z/dd Z0dd Z1dd Z2dd Z3dd Z4dd Z5d d” Z6d¢d£ Z7d¤d„ Z8d¦d§ Z9dØd© Z:dŖd« Z;d¬d­ Z<d®dÆ Z=d°d± Z>d²d³ Z?d“dµ Z@d¶d· ZAdød¹ ZBdŗd» ZCd¼d½ ZDd¾dæ ZEdĄdĮ ZFdĀdĆ ZGdÄdÅ ZHdĘdĒ ZIdČdÉ ZJdŹdĖ ZKdĢdĶ ZLdĪdĻ ZMdŠdŃ ZNdŅdÓ ZOdŌdÕ ZPdÖd× ZQdŲdŁ ZRdŚdŪ ZSdÜdŻ ZTdŽdß ZUdądį ZVdādć ZWdädå ZXdędē ZYdčdé ZZdźdė Z[dģdķ Z\dīdļ Z]dšdń Z^dņdó Z_dōdõ Z`död÷ Zadųdł Zbdśdū Zcdüdż Zddžd’ Zed d Zfdd Zgdd Zhdd Zidd	 Zjd
d Zkdd Zldd Zmdd Zndd Zodd Zpdd Zqdd Zrdd Zsdd Ztdd Zud d! Zvd"d# Zwd$d% Zxd&d' Zyd(d) Zzd*d+ Z{d,d- Z|d.d/ Z}d0d1 Z~d2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdZd[ Zd\d] Zd^d_ Zd`da Zdbdc Zddde Zdfdg Zdhdi Zdjdk Zdldm Zdndo Zdpdq Zdrds Zdtdu Z dvdw Z”d?S (y  é    )ŚProduct)ŚSum)ŚAdd)ŚBasic)ŚDictŚTuple)Ś
DerivativeŚFunctionŚLambdaŚSubs)ŚMul)Ś
EulerGammaŚGoldenRatioŚCatalan)ŚIŚRationalŚooŚpi)ŚPow)ŚEqŚGeŚGtŚLeŚLtŚNe)ŚS)ŚSymbolŚsymbols)Ś	conjugate)ŚLambertW)ŚairyaiŚairyaiprimeŚairybiŚairybiprime)Ś	Heaviside)ŚfresnelcŚfresnels)ŚSingularityFunction)Śdirichlet_eta)ŚRayŚSegment)ŚIntegral)	ŚAndŚ
EquivalentŚITEŚImpliesŚNandŚNorŚNotŚOrŚXor)ŚMatrixŚdiag)ŚMatrixSlice)ŚTrace)ŚFF)ŚZZ)ŚQQ)ŚRR)ŚgrlexŚilex)Śgroebner)ŚRootSumŚrootof)Śfps)Śfourier_series)ŚLimit)ŚO)ŚSeqAddŚ
SeqFormulaŚSeqMulŚSeqPer)ŚContains)ŚRange)Ś
ComplementŚ	FiniteSetŚIntersectionŚIntervalŚUnion)Ś
AssignmentŚAddAugmentedAssignmentŚSubAugmentedAssignmentŚMulAugmentedAssignmentŚDivAugmentedAssignmentŚModAugmentedAssignment)ŚUnevaluatedExpr)ŚTr)-ŚAbsŚChiŚCiŚEiŚKroneckerDeltaŚ	PiecewiseŚShiŚSiŚatan2ŚbetaŚbinomialŚcatalanŚceilingŚcosŚeulerŚexpŚexpintŚ	factorialŚ
factorial2ŚfloorŚgammaŚhyperŚlogŚmeijergŚsinŚsqrtŚsubfactorialŚtanŚ
uppergammaŚlerchphiŚ
elliptic_kŚ
elliptic_fŚ
elliptic_eŚelliptic_piŚ
DiracDeltaŚbellŚ	bernoulliŚ	fibonacciŚ
tribonacciŚlucasŚ	stieltjesŚmathieucŚmathieusŚmathieusprimeŚmathieucprime)ŚAdjointŚInverseŚMatrixSymbolŚ	TransposeŚKroneckerProductŚBlockMatrixŚ	OneMatrixŚ
ZeroMatrix)Śhadamard_power)Ś	mechanics)ŚTransferFunctionŚFeedbackŚTransferFunctionMatrixŚSeriesŚParallelŚ
MIMOSeriesŚMIMOParallelŚMIMOFeedback)ŚjouleŚdegree)ŚpprintŚpretty)Ścenter_accentŚis_combining)ŚConditionSet)ŚImageSetŚ
ProductSet)ŚSetExpr)ŚNormal)Ś
CovarianceŚExpectationŚProbabilityŚVariance)ŚImmutableDenseNDimArrayŚImmutableSparseNDimArrayŚMutableDenseNDimArrayŚMutableSparseNDimArrayŚtensorproduct)ŚTensorProduct)ŚTensorIndexTypeŚtensor_indicesŚ
TensorHeadŚTensorElementŚtensor_heads)ŚraisesŚ_both_exp_powŚwarns_deprecated_sympy)Ś
CoordSys3DŚGradientŚCurlŚ
DivergenceŚDotŚCrossŚ	LaplacianNc                   @   ó   e Zd ZdS )Ś
lowergammaN©Ś__name__Ś
__module__Ś__qualname__© rĀ   rĀ   śN/tmp/pip-target-vg8gfxp4/lib/python/sympy/printing/pretty/tests/test_pretty.pyr½   V   ó    r½   za,b,c,d,x,y,z,k,n,s,pŚfŚthetaŚphic                 C   s   t | |dddS )zASCII pretty-printingF©ŚorderŚuse_unicodeŚ	wrap_line©Śxpretty©ŚexprrÉ   rĀ   rĀ   rĆ   r   
  ó   r   c                 C   s   t | |dddS )zUnicode pretty-printingTFrČ   rĢ   rĪ   rĀ   rĀ   rĆ   Śupretty  rŠ   rŃ   c                   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s0J t ddks8J t ddks@J t ddksHJ t ddksPJ d S ©NŚxxxzxxx'xxxzxxx"xxxzxxx"xxx'xxxzxxx
xxx©r   rĀ   rĀ   rĀ   rĆ   Śtest_pretty_ascii_str  ó   rÖ   c                   C   rŅ   rÓ   rÕ   rĀ   rĀ   rĀ   rĆ   Śtest_pretty_unicode_str!  r×   rŲ   c                   C   sP   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   Ī±āŗārb   õ   Ī²Ślambdau   Ī»)rŃ   r   r   rĀ   rĀ   rĀ   rĆ   Śtest_upretty_greek.  s   rÜ   c                   C   sT   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Ā   rĆ   Śtest_upretty_multiindex5  s   rį   c                   C   sø   t tddks
J t tddksJ t tddksJ t tddks(J t td	d
ks2J t tddks<J t tddksFJ t tddksPJ t tddksZJ 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Ā   rĆ   Śtest_upretty_sub_super<  s   rå   c                   C   s  t tddks
J t tddksJ t tddksJ t tddks(J t td	d
ks2J t tddks<J t tddksFJ t tddksPJ t tddksZJ t tddksdJ t tddksnJ t tddksxJ t tddk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Ā   rĆ   Śtest_upretty_subs_missing_in_24H  s   ró   c                   C   s¤   t tddks
J t tddksJ t tddksJ t tddks(J t td	d
ks2J t tddks<J t tddksFJ t tddksPJ 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Ā   rĆ   Śtest_missing_in_2X_issue_9047Y  s   rü   c                   C   s|  t tddks
J t tddksJ t tddksJ t tddks(J t td	d
ks2J t tddks<J t tddksFJ t tddksPJ t tddksZJ t tddksdJ t tddksnJ t tddksxJ t tddk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s1J 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Ā   rĆ   Śtest_upretty_modifiersd  s>   r  c                  C   sh   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s2J d S )Nr   ©ŚCycleé   é   z(1 2)z(2)é   é   é   z
(1 3)(4 5)ś())Ś sympy.combinatorics.permutationsr  r   r  rĀ   rĀ   rĆ   Śtest_pretty_Cycle  s
   r&  c                  C   sŚ   ddl m}  | dddd}t|dddd	k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 & | j}d
| _t|dddksNJ t|d
ddksXJ || _W d    d S 1 sfw   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Ź   )r%  r'  rĶ   r“   Śprint_cyclic)r'  Śp1Śold_print_cyclicrĀ   rĀ   rĆ   Śtest_pretty_Permutation  s*   ’’
’
’"÷r-  c            	      C   st  t td d dksJ t td d dksJ t} d}d}t | |ks(J t| |ks0J td } d	}d	}t | |ks@J t| |ksHJ dt } d
}d}t | |ksXJ t| |ks`J td } d}d}t | |kspJ t| |ksxJ ttdddd} d}d}t | |ksJ t| |ksJ ttd  } d}d}t | |ks§J t| |ksÆJ ttdd } d}d}t| dddd|ksĘJ t| dddd|ksŅJ ttdd } d}d}t | |ksåJ t| |ksķJ dt } d}d}t | |ksżJ t| |ksJ tdddd} d}d}t | |ksJ t| |ks#J td t d } d}d}d}d}d}d}t | |||fv sCJ t| |||fv sOJ dt } d }d!}d }d!}t | ||fv sfJ t| ||fv sqJ ddt  } 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 } d(}d)}t | |ksĮJ t| |ksŹJ td t } d*}d+}d,}d-}t | ||fv sćJ t| ||fv sīJ dt t } d.}d/}d0}d1}d2}d3}t | |||fv sJ t| |||fv sJ dt td4  } d5}d6}d7}d8}t | ||fv s3J t| ||fv s>J tj	 dt  } d9}d:}t | |ksSJ t| |ks\J tj	dt  } d;}d<}t | |kspJ t| |ksyJ tj	 dt d  } d=}d>}t | |ksJ t| |ksJ tj	dt d  } 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_notationTéū’’’z 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_3rĀ   rĀ   rĆ   Śtest_pretty_basicŖ  s  ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
’’’’’’’’’’’’’’’’’’’’’’’’rL  c                  C   s  t  t } d}d}t| |ksJ t| |ksJ t  t t } d}d}t| |ks,J t| |ks4J t d t } d}d}t| |ksFJ t| |ksNJ t d  t } d}d	}t| |ksaJ t| |ksiJ t  tt  } d
}d}t| |ks|J t| |ksJ t td  } d}d}t| |ksJ t| |ksJ tt t  } d}d}t| |ks²J t| |ksŗJ dtd  } d}d}t| |ksĢJ t| |ksŌJ dtd  } 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 )Nr>  r?  z-x*z 
-----
  y  u   -xāz 
āāāāā
  y  r   z 2
x 
--
y u    2
x 
āā
y z  2 
-x  
----
 y  u     2 
-x  
āāāā
 y  z-x 
---
y*zu   -x 
āāā
yāzz-a 
---
  2
 y u   -a 
āāā
  2
 y z -a 
 ---
  b 
y   u    -a 
 āāā
  b 
y   é’’’’z-1 
---
  2
 y u   -1 
āāā
  2
 y iö’’’z-10 
----
  2 
 b  u   -10 
āāāā
  2 
 b  i8’’’é%   z-200 
-----
  37 u   -200 
āāāāā
  37 )rA  rB  r   rŃ   ŚzŚaŚbr   ©rĻ   rD  rE  rĀ   rĀ   rĆ   Śtest_negative_fractionsD  s   
’’’’’’’’’’’’’’’’’’
’’rS  c               
   C   sž  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d} t| d	ks=J t| d
ksEJ t ddddd} t| dksUJ t| dks]J t dddd} t| dkslJ t| dkstJ tdddd} t| dksJ t| dksJ t ddddd} t| dksJ t| dks£J td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tdd} t| dksįJ t| dkséJ t ddddt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dttdd} t| d ks2J t| d!ks;J t ddddt dttdd} t| d"ksRJ t| d#ks[J t tddtd$d%dd} t| d&ksqJ t| d'kszJ t tt tdddd} t| d(ksJ t| d)ksJ t tddtt dd} t| d*ks­J t| d+ks¶J t tj	tt dd} t| d,ksÉJ t| d-ksŅJ t tt tj	dd} t| d.ksåJ t| d/ksīJ t tddtt tj	tt dd} t| d0ksJ t| d1ksJ t tt tddtj	tt dd} t| d2ks+J t| d3ks4J t tt tddtddtd$d4dd} t| d5ksQJ t| d6ksZJ t tddtt tj	tt dd} t| d7kstJ t| d8ks}J d S )9Nr   r  Fr1  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 + 1rM  z1*-1u   1ā-1g      š?z1.0*xu   1.0āxr!  z	1*1*2*3*xu   1ā1ā2ā3āxz-1*1u   -1ā1r"  z4*3*2*1*0*y*xu   4ā3ā2ā1ā0āyāxz4*3*2*(z + 1)*0*y*xu   4ā3ā2ā(z + 1)ā0āyāxr#  é   z2/3*5/7u	   2/3ā5/7z(x + y)*1/2u   (x + y)ā1/2zx + y
-----
  2  u   x + y
āāāāā
  2  z	1*(x + y)u   1ā(x + y)z	(x - y)*1u   (x - y)ā1z1/2*(x - y)*1*(x + y)u   1/2ā(x - y)ā1ā(x + y)z(x + y)*3/4*1*(y - z)u   (x + y)ā3/4ā1ā(y - z)é   z(x + y)*1*3/4*5/6u   (x + y)ā1ā3/4ā5/6z3/4*(x + y)*1*(y - z)u   3/4ā(x + y)ā1ā(y - z))
r   r   rŃ   r   rA  rB  rO  r   r   ŚOne©rĻ   rĀ   rĀ   rĆ   Śtest_Mulč  s   ""("rX  c                   C   s   t t d  t dtd  d  t d t d   dks!J tt d  t dtd  d  t d t d   dksBJ d S )Nr#  r   zO         2           /         ___    \
- (5 - y)  + (x - 5)*\-x - 2*\/ 2  + 5/uO            2                          
- (5 - y)  + (x - 5)ā(-x - 2āā2 + 5))r   rA  rr   rB  rŃ   rĀ   rĀ   rĀ   rĆ   Śtest_issue_5524/  s   8’8’rY  c                  C   s“  t td t d dddksJ t td t d dddks J t dt dddks,J t dt ddd	ks8J t ddt  ddd
ksFJ t ddt  dddksTJ dtd  td  td  td  } t | d ddkspJ t | dddkszJ t | dddksJ ttd d  td d  ttd  }d}d}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 )Nr   r  Ślex©rÉ   r9  zrev-lexr8  r;  r:  r=  r<  r"  r!  z'   4    2    3    2
2*x  - x  + y  + y z' 2    3    2      4
y  + y  - x  + 2*x rU  r#  éx   zS     3     5        
    x     x     / 6\
x - -- + --- + O\x /
    6    120        ue        3     5        
    x     x     ā 6ā
x - āā + āāā + Oāx ā 
    6    120        )r   rA  rB  rE   rŃ   )rÅ   rĻ   rD  rE  rĀ   rĀ   rĆ   Śtest_pretty_ordering<  s>   ’’$
’
’
’(’’r]  c                   C   ó8   t ttt  krdksJ  J ttdksJ d S )Nr   õ   Ī³)r   r   ŚstrrŃ   rĀ   rĀ   rĀ   rĆ   Śtest_EulerGammav  ó   $ra  c                   C   r^  )Nr   u   Ļ)r   r   r`  rŃ   rĀ   rĀ   rĀ   rĆ   Śtest_GoldenRatioz  rb  rc  c                   C   s(   t ttt  krdksJ  J d S )NŚG)r   r   rŃ   rĀ   rĀ   rĀ   rĆ   Śtest_Catalan  s   (re  c                  C   sL  t tt} d}d}t| |ksJ t| |ksJ ttt} d}d}t| |ks*J t| |ks2J ttt} d}d}t| |ksCJ t| |ksKJ ttt} d}d}t| |ks\J t| |ksdJ ttt} d}d}t| |ksuJ t| |ks}J t	ttd  td	 } 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   rA  rB  r   rŃ   r   r   r   r   r   )rĻ   rD  rE  rF  rG  rI  rJ  rĀ   rĀ   rĆ   Śtest_pretty_relational  s\   
’’
’’
’’
’’
’’’’’’rf  c                  C   s6   t tt} d}d}t| |ksJ t| |ksJ d S )Nzx := y)rQ   rA  rB  r   rŃ   rR  rĀ   rĀ   rĆ   Śtest_AssignmentÜ  s   
’’rg  c                  C   sž   t tt} d}d}t| |ksJ t| |ksJ ttt} d}d}t| |ks*J t| |ks2J ttt} d}d}t| |ksCJ t| |ksKJ ttt} d}d}t| |ks\J t| |ksdJ ttt} d}d}t| |ksuJ t| |ks}J d S )Nzx += yzx -= yzx *= yzx /= yzx %= y)	rR   rA  rB  r   rŃ   rS   rT   rU   rV   rR  rĀ   rĀ   rĆ   Śtest_AugmentedAssignmenté  sF   
’’
’’
’’
’’
’’rh  c                  C   s¼   t td  } d}d}t| |ksJ t| |ksJ t tdd ttdd  } d}d}t| |ks4J t| |ks<J ttd ttd  } d	}d
}t| |ksTJ t| |ks\J d S )Nr3  r4  r5  r!  r   r7  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))rB  rA  r   rŃ   r   rq   rt   rR  rĀ   rĀ   rĆ   Śtest_pretty_rational&  s*   ’’’	’’	’ri  c            
      C   sJ  dt  tt  } d}d}d}d}d}t| ||fv sJ t| |||fv s'J tt } d}d}t| |ks7J t| |ks?J tt t d d	  } d
}d}d}d}t| ||fv s[J t| ||fv seJ td	ttt   } d}d}t| |ks{J t| |ksJ tddd}t|} d}d}t| |ksJ t| |ks”J td| } 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	 } 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| } d}d}t| |ks&J t| |ks/J tddd}t	|} d}d}t| |ksFJ t| |ksOJ t	d| } d}d}t| |ksbJ t| |kskJ t	t	t	|} d}d}t| |ksJ t| |ksJ t	|d	 } d }d!}d }d!}t| ||fv s¢J t| ||fv s­J dt
|t } d"}d#}t| |ksĮJ t| |ksŹJ dt
d| t } d$}d%}t| |ksąJ t| |kséJ dt
|d 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s3J t| |ks<J t|} d)}d)}t| |ksMJ t| |ksVJ t|} d)}d)}t| |ksgJ t| |kspJ 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sFJ tt tt} d4}d4}t| |ksYJ t| |ksbJ tt tt} d5}d5}t| |ksuJ t| |ks~J tt } d6}d6}t| |ksJ t| |ksJ td7}	t|	t d	 } 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	  t} d<}d=}d>}d?}t| ||fv sJ t| ||fv sJ |	t t t t t t      } d@}dA}t| |ks9J t| |ksBJ tt d } dB}dB}t| |ksUJ t| |ks^J tttt  } dC}dD}t| |kssJ t| |ks|J ttttt  } dE}dF}t| |ksJ t| |ksJ t|	d	t|	t  } dG}dH}dI}dJ}t| ||fv s»J t| ||fv sĘJ |	t td	  t} d<}d=}d>}d?}t| ||fv sāJ t| ||fv sķJ td	ttt   } dK}dL}t| |ksJ t| |ksJ td	ttt   } dM}dN}t| |ks$J t| |ks-J t |} dO}dO}t| |ks>J t| |ksGJ t d	d	d	d	d	|     } dP}dQ}t| |ksbJ t| |kskJ t |t } dR}dR}t| |ks}J t| |ksJ t |t d } 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)!rA  rh   r   rŃ   rY   rB  r   rj   rs   rk   rc   Śkrd   r|   r}   r~   r   r   r   r   rO  r   r   r   r   r	   rq   rP  rQ  r   rl   re   rg   )
rĻ   rF  rG  rI  rJ  rK  rD  rE  rj  rÅ   rĀ   rĀ   rĆ   Śtest_pretty_functionsb  sŚ  ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
’’’’’’’’’’
’’’’’’’’’’
’’’’’’’
’	’’’’’’’’’’’’’’’’’’’’’’
’’’’rn  c                  C   sź  t d} d}d}t| |ksJ t| |ksJ dtdd } d}d}t| |ks+J t| |ks3J dtdd } d	}d
}t| |ksFJ t| |ksNJ t td d } d}d}t| |ksbJ t| |ksjJ dt d tdd } d}d}t| |ksJ t| |ksJ ddt  } d}d}t| |ksJ t| |ks£J t dt } d}d}t| |ksµJ t| |ks½J ddtd  dt   tdd dttdd  t dtd    } 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 r#  z,   ___________
3 /       ___ 
\/  1 + \/ 5  u   3 ________
ā²ā± 1 + ā5 zx ___
\/ 2 u   x ___
ā²ā± 2 z  ________
\/ 2 + pi u     _______
ā²ā± 2 + Ļ r"  zß     ____________              
    /      2        1000___    
   /      x  + 1      \/ x  + 1
4 /   2 + ------  + -----------
\/        x + 2        ________
                      /  2     
                    \/  x  + 3 u       ____________              
    ā±      2        1000___    
   ā±      x  + 1      ā²ā± x  + 1
4 ā±   2 + āāāāāā  + āāāāāāāāāāā
ā²ā±        x + 2        ________
                      ā±  2     
                    ā²ā±  x  + 3 )rr   r   rŃ   r   rA  r   rR  rĀ   rĀ   rĆ   Śtest_pretty_sqrt`  s|   ’’’’’’’’’’’’’’’’ ’’’
rp  c                  C   s@   t d} d}d}t| ddd|ksJ t| ddd|ksJ d S )Nr   u     ___
ā²ā± 2 ro  TF)rŹ   Śuse_unicode_sqrt_char)rr   rĶ   )rĻ   Ś
ucode_str1Ś
ucode_str2rĀ   rĀ   rĆ   Śtest_pretty_sqrt_char_knobŻ  s   ’’’’’’rt  c                  C   s$   t td} d}t| |ksJ d S )NŚC1u     ____
ā²ā± Cā )rr   r   rŃ   )rĻ   rE  rĀ   rĀ   rĆ   Ś(test_pretty_sqrt_longsymbol_no_sqrt_charķ  s   ’rv  c                  C   sB   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Ń   ©rA  rB  rĻ   rD  rE  rĀ   rĀ   rĆ   Śtest_pretty_KroneckerDeltaų  s   
’’rx  c                  C   s   t d\} }}}t dtd}t|| d d | |d |f}d}d}t|| d d | |d |f|d|f}d	}d
}t||ksBJ t||ksJJ 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Ń   )rj  Śmrm  ŚlrÅ   rĻ   Śunicode_strrD  rĀ   rĀ   rĆ   Śtest_pretty_product		  s    ’’(’’r~  c                  C   sx  t t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 } d}d}t| |ks?J t| |ksGJ t ttd d } d	}d
}t| |ks\J t| |ksdJ t ttft} d}d}t| |kswJ t| |ksJ t ttftd } d}d}t| |ksJ t| |ksJ t ttfftd } 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
   rB  r   rŃ   rA  rR  rĀ   rĀ   rĆ   Śtest_pretty_LambdaB	  sN   
’’’’’’’’r  c                  C   sp   t td td t} t| dksJ t dt d dt t}t|dks&J t ttd t}t|dks6J d S )Nr  u   s - 1
āāāāā
s + 1r   r!  u'   2ās + 1
āāāāāāā
 3 - p u     p  
āāāāā
p + 1)r   ŚsrŃ   Śp)Śtf1Śtf2Śtf3rĀ   rĀ   rĆ   Śtest_pretty_TransferFunction	  s   r  c                  C   s  t tt tdt  t} t tt tt t}t td t tt t}t ddt}t| |g||gg}t|g| gg}t| | | g|| |gg}t| |g|| g| |  gg}t| |  g|| g| |gg}d}	d}
d}d}d}d}tt| ||	ks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   rA  rB  r   rŃ   r   r   r   r   )r  r  r  Śtf4Śtfm1Śtfm2Śtfm3Śtfm4Śtfm5Ś	expected1Ś	expected2Ś	expected3Ś	expected4Ś	expected5Ś	expected6rĀ   rĀ   rĆ   Śtest_pretty_Series	  s6     ’’’’’’ "$r  c                  C   s¢  t tt tdt  t} t tt tt t}t td t tt t}t td t td t t}t| |g|| g| |  gg}t| |  g|| g| |gg}t|  |g| |g|| gg}t|  | g| | gg}d}d}	d}
d}d}d}tt| ||ks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   rA  rB  r   rŃ   r   r   r   r   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  rĀ   rĀ   rĆ   Śtest_pretty_Parallelą	  s4     ’’’’’’ ""r  c                  C   sÄ  t ddt} t tt tdt  t}t tt tt t}t td dt  d td t}t tdtd   tt t}t dt tt t}t ddt}d}d}d}	d}
d	}d
}d}d}d}d}tt| ||ksiJ tt| || | |ksxJ tt||| | |	ksJ tt|| | |
ksJ tt|| ||ks”J tt|| || |ks°J tt|||ks»J tt|| |ksĘJ tt|| |d|ksŌJ tt|| d|ksąJ d S )Nr  r   r#  r!  u§        ā1ā     
     āāā     
     ā1ā      
āāāāāāāāāāāāā
1   ā x + y ā
ā + āāāāāāāāā
1   āx - 2āyā uß                  ā1ā                 
                āāā                 
                ā1ā                  
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
                      ā 2          ā
1   āx - yā ā x + y ā āy  - 2āy + 1ā
ā + āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
1   āx + yā  āx - 2āyā  ā   y + 5    ā uU                   ā x + y ā                  
                 āāāāāāāāā                  
                 āx - 2āyā                   
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
                      ā 2          ā        
1   ā x + y ā āx - yā āy  - 2āy + 1ā ā1 - xā
ā + āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
1   āx - 2āyā  āx + yā  ā   y + 5    ā  āx - yā u-    ā x + y ā āx - yā  
  āāāāāāāāāāāāāāāāā  
  āx - 2āyā  āx + yā   
āāāāāāāāāāāāāāāāāāāāā
1   ā x + y ā āx - yā
ā + āāāāāāāāāāāāāāāāā
1   āx - 2āyā  āx + yā u        ā x + y ā āx - yā      
      āāāāāāāāāāāāāāāāā      
      āx - 2āyā  āx + yā       
āāāāāāāāāāāāāāāāāāāāāāāāāāāāā
1   ā x + y ā āx - yā ā1 - xā
ā + āāāāāāāāāāāāāāāāāāāāāāāāā
1   āx - 2āyā  āx + yā  āx - yā uØ             ā 2          ā                   
           āy  - 2āy + 1ā ā1 - xā           
           āāāāāāāāāāāāāāāāāāāāāā           
           ā   y + 5    ā  āx - yā            
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
    ā 2          ā                          
1   āy  - 2āy + 1ā ā1 - xā āx - yā ā x + y ā
ā + āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
1   ā   y + 5    ā  āx - yā  āx + yā  āx - 2āyā u$      ā       3ā    
    āx - 2āy ā    
    āāāāāāāāāā    
    ā x + y  ā     
āāāāāāāāāāāāāāāāāā
    ā       3ā    
1   āx - 2āy ā ā2ā
ā + āāāāāāāāāāāāāā
1   ā x + y  ā  ā2ā u     ā1 - xā  
  āāāāāāā  
  āx - yā   
āāāāāāāāāāā
1   ā1 - xā
ā + āāāāāāā
1   āx - yā u        ā x + y ā āx - yā      
      āāāāāāāāāāāāāāāāā      
      āx - 2āyā  āx + yā       
āāāāāāāāāāāāāāāāāāāāāāāāāāāāā
1   ā x + y ā āx - yā ā1 - xā
ā - āāāāāāāāāāāāāāāāāāāāāāāāā
1   āx - 2āyā  āx + yā  āx - yā u     ā1 - xā  
  āāāāāāā  
  āx - yā   
āāāāāāāāāāā
1   ā1 - xā
ā - āāāāāāā
1   āx - yā )r   rB  rA  rŃ   r   )Śtfr  r  r  r  Śtf5Śtf6r  r  r  r  r  r  Ś	expected7Ś	expected8Ś	expected9Ś
expected10rĀ   rĀ   rĆ   Śtest_pretty_Feedback.
  sJ    ’’’’’’’’’’
r  c                  C   s¦   t tt tdt  t} t tt tt t}t| |g|| gg}t|| g| |gg}t| | g||gg}d}d}tt||d|ksDJ tt|| ||ksQJ 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   rA  rB  r   rŃ   r   )r  r  Śtfm_1Śtfm_2Śtfm_3r  r  rĀ   rĀ   rĆ   Śtest_pretty_MIMOFeedback­
  s   ’’’’r  c                  C   s\  t tt tdt  t} t tt tt t}t td dt  d td t}t ttd t d t}t dt tt t}t ddt}d}d}d}d}	d}
tt| g|gg|ksZJ tt| g|g| gg|kskJ 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  r#  u   ā” x + y ā¤ 
ā¢āāāāāāāā„ 
ā¢x - 2āyā„ 
ā¢       ā„ 
ā¢ x - y ā„ 
ā¢ āāāāā ā„ 
ā£ x + y ā¦Ļu@  ā”    x + y     ā¤ 
ā¢   āāāāāāā    ā„ 
ā¢   x - 2āy    ā„ 
ā¢              ā„ 
ā¢    x - y     ā„ 
ā¢    āāāāā     ā„ 
ā¢    x + y     ā„ 
ā¢              ā„ 
ā¢   2          ā„ 
ā¢- y  + 2āy - 1ā„ 
ā¢āāāāāāāāāāāāāāā„ 
ā£    y + 5     ā¦Ļuō  ā”   x + y        x - y   ā¤ 
ā¢  āāāāāāā       āāāāā   ā„ 
ā¢  x - 2āy       x + y   ā„ 
ā¢                        ā„ 
ā¢ 2                      ā„ 
ā¢y  - 2āy + 1      y     ā„ 
ā¢āāāāāāāāāāāā  āāāāāāāāāāā„ 
ā¢   y + 5       2        ā„ 
ā¢              x  + x + 1ā„ 
ā¢                        ā„ 
ā¢   1 - x          2     ā„ 
ā¢   āāāāā          ā     ā„ 
ā£   x - y          2     ā¦Ļuß  ā”    x - y        x + y       y     ā¤ 
ā¢    āāāāā       āāāāāāā  āāāāāāāāāāā„ 
ā¢    x + y       x - 2āy   2        ā„ 
ā¢                         x  + x + 1ā„ 
ā¢                                   ā„ 
ā¢   2                               ā„ 
ā¢- y  + 2āy - 1   x - 1      -2     ā„ 
ā¢āāāāāāāāāāāāāā   āāāāā      āāā    ā„ 
ā£    y + 5        x - y       2     ā¦Ļu²  ā” x + y  x - y   x + y       y     ā¤ 
ā¢āāāāāāāāāāāāā  āāāāāāā  āāāāāāāāāāā„ 
ā¢x - 2āy x + y  x - 2āy   2        ā„ 
ā¢                        x  + x + 1ā„ 
ā¢                                  ā„ 
ā¢  1 - x   2     x + y      -2     ā„ 
ā¢  āāāāā + ā    āāāāāāā     āāā    ā„ 
ā£  x - y   2    x - 2āy      2     ā¦Ļ)r   rA  rB  rŃ   r   r   r   )r  r  r  r  r  r  r  r  r  r  r  rĀ   rĀ   rĆ   Ś"test_pretty_TransferFunctionMatrixĻ
  s.    ’’’’’"&*(’r   c                  C   s\  t d} d}d}t| |ksJ t| |ksJ t dt } d}d}t| |ks*J t| |ks2J t td td  } d}d}t| |ksHJ t| |ksPJ t dttf} d}d	}t| |kscJ t| |kskJ t dt ttf} d
}d}t| |ksJ t| |ksJ t td td  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) ā (ā, ā)ā )rE   r   rŃ   rA  rB  r   rR  rĀ   rĀ   rĆ   Śtest_pretty_order  sT   ’’’’’’’’’’ ’’r”  c            	      C   sČ  t tttdd} d}d}t| |ksJ t| |ksJ t tttddt } d}d}d}d}t| ||fv s:J t| ||fv sDJ t ttt t t} d	}d
}d}d}t| ||fv saJ t| ||fv soJ t| t tttd  tt} d}d}d}d}t| ||fv sJ t| ||fv sJ t dt t tttd  } d}d}d}d}t| ||fv s·J t| ||fv sĮJ t dt t tt} d}d}t| |ks×J t| |ksßJ t dt t td} d}d}t| |ksõJ t| |ksżJ t dt t 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sCJ t t	ttt
f} d!}d"}t| |ksYJ t| |ksbJ d S )#NFr1  z d         
--(log(x))
dx        u$   d         
āā(log(x))
dx        z,    d         
x + --(log(x))
    dx        z,d             
--(log(x)) + x
dx            u0       d         
x + āā(log(x))
    dx        u0   d             
āā(log(x)) + x
dx            z8d                 
--(log(x + y) + x)
dx                z8d                 
--(x + log(x + y))
dx                u@   ā                 
āā(log(x + y) + x)
āx                u@   ā                 
āā(x + log(x + y))
āx                r   zK   2              
  d  /          2\
-----\log(x) + x /
dy dx             zK   2              
  d  / 2         \
-----\x  + log(x)/
dy dx             u]      2              
  d  ā          2ā
āāāāāālog(x) + x ā 
dy dx             u]      2              
  d  ā 2         ā
āāāāāāx  + log(x)ā 
dy dx             zG   2             
  d             2
-----(2*x*y) + x 
dx dy            zG        2        
 2     d         
x  + -----(2*x*y)
     dx dy       u[      2             
  ā             2
āāāāā(2āxāy) + x 
āx āy            u[           2        
 2     ā         
x  + āāāāā(2āxāy)
     āx āy       z6  2       
 d        
---(2*x*y)
  2       
dx        uD     2       
 ā        
āāā(2āxāy)
  2       
āx        é   z; 17        
d          
----(2*x*y)
  17       
dx         uK    17        
ā          
āāāā(2āxāy)
  17       
āx         zE   3         
  d          
------(2*x*y)
     2       
dy dx        u[      3         
  ā          
āāāāāā(2āxāy)
     2       
āy āx        Śalpharb   z;  d                
------(beta(alpha))
dalpha             u!   d       
āā(Ī²(Ī±))
dĪ±      z1  n      
 d       
---(f(x))
  n      
dx       u7     n      
 d       
āāā(f(x))
  n      
dx       )r   ro   rA  r   rŃ   rB  r   r	   ŚdiffrÅ   rj  )	rĻ   rD  rE  rF  rG  rI  rJ  r£  rb   rĀ   rĀ   rĆ   Śtest_pretty_derivativesu  s°   ’’’’’’’’’’’’’’’’’’’	’’	’’	’’’’	’r„  c                  C   sü  t ttt} d}d}t| |ksJ t| |ksJ t td t} d}d}t| |ks.J t| |ks6J t ttd ttd  } d}d}t| |ksPJ t| |ksXJ t tdt  t} d}d	}t| |ksmJ t| |ksuJ t td td
df} d}d}t| |ksJ t| |ksJ t td ttd
ddf} d}d}t| |ks¬J t| |ks“J t td td  tt} d}d}t| |ksĢJ t| |ksŌJ t tt	t
t t	dtftddt 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      r@  zO 10      
  /      
 |       
 |   2   
 |  x  dx
 |       
/        
1/2      uC    10      
 ā        
 ā®   2   
 ā®  x  dx
 ā”       
1/2      zk  /  /           
 |  |            
 |  |  2  2      
 |  | x *y  dx dy
 |  |            
/  /             uQ   ā  ā             
ā® ā®  2  2      
ā® ā® x āy  dx dy
ā” ā”            r   aC   2*pi pi                           
   /   /                           
  |   |                            
  |   |  sin(theta)                
  |   |  ---------- d(theta) d(phi)
  |   |   cos(phi)                 
  |   |                            
 /   /                             
 0   0                             u¬   2āĻ Ļ             
 ā   ā              
 ā®  ā® sin(Īø)      
 ā®  ā® āāāāāā dĪø dĻ
 ā®  ā® cos(Ļ)      
 ā”  ā”             
 0  0             )r+   ro   rA  r   rŃ   rq   rt   r   rB  Śthrf   Śphr   rR  rĀ   rĀ   rĆ   Śtest_pretty_integralsf  sp   ’	’’
’’’
’’’’	’’	’
’(’’
rØ  c                  C   sn  t  } d}d}t| |ksJ t| |ksJ t dddd } d}d}t| |ks+J t| |ks3J t dddd } d}d}t| |ksGJ t| |ksOJ t td d dgttt gg} d}d	}d
}d}t| ||fv sqJ t| ||fv s{J t tt ttgdttt t	 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                 S   ó   dS ©Nr   rĀ   ©ŚiŚjrĀ   rĀ   rĆ   Ś<lambda>#  ó    z$test_pretty_matrix.<locals>.<lambda>c                 S   rŖ  r«  rĀ   r¬  rĀ   rĀ   rĆ   rÆ  (  r°  r  z?[     2       ]
[1 + x     1  ]
[             ]
[  y     x + y]z?[ 2           ]
[x  + 1    1  ]
[             ]
[  y     x + y]uO   ā”     2       ā¤
ā¢1 + x     1  ā„
ā¢             ā„
ā£  y     x + yā¦uO   ā” 2           ā¤
ā¢x  + 1    1  ā„
ā¢             ā„
ā£  y     x + yā¦z}[x                 ]
[-     y      theta]
[y                 ]
[                  ]
[    I*k*phi       ]
[0  e           1  ]u}   ā”x           ā¤
ā¢ā    y     Īøā„
ā¢y           ā„
ā¢            ā„
ā¢    āākāĻ   ā„
ā£0  āÆ       1ā¦u“   ā”vĢ_msc_00     0         0    ā¤
ā¢                            ā„
ā¢   0      vĢ_msc_01     0    ā„
ā¢                            ā„
ā£   0         0      vĢ_msc_02ā¦Śvdot_mscr!  )r5   r   rŃ   rA  rB  r¦  rh   r   rm  r§  r6   r   )rĻ   rD  r}  rF  rG  rI  rJ  rE  rĀ   rĀ   rĆ   Śtest_pretty_matrix  sJ    ’’’’(’
’	’	r²  c                  C   sŽ  t d\} }}}ttttfD ]Ž}|| }t|dksJ t|dks$J |d|  |g||gg}|d|  ||g}t||}t||}d}	d}
t||	ksOJ t||
ksWJ d}	d}
t||	kscJ t||
kskJ d}	d	}
t||	kswJ t||
ksJ d
}	d}
t||	ksJ t||
ksJ || |d| gg}|| g|gd| 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 qd S )Nzx y z wrA  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)rA  rB  rO  ŚwŚ	ArrayTypeŚMŚM1ŚM2ŚM3rD  rE  ŚMrowŚMcolumnŚMcol2rĀ   rĀ   rĆ   Śtest_pretty_ndim_arrayso  sp   

’	’’’’’’’’’’’
’’
 Ńr½  c                  C   sJ   t ddd} t ddd}tt| |dksJ tt| || dks#J d S )NŚAr!  ŚBu   AāBu	   AāBāA)r   rŃ   r¬   )r¾  ræ  rĀ   rĀ   rĆ   Śtest_tensor_TensorProduct#  s   rĄ  c                  C   sJ   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Ā  ŚwprĀ   rĀ   rĆ   Ś test_diffgeom_print_WedgeProduct*  s
   rČ  c                  C   s¤  t ddd} t ddd}tt| dksJ tt| | dks"J tt| t| dks0J tt| | dks<J tt|t|  dksJJ tt| d d	ksVJ tt| d d
ksbJ ttt| dksnJ ttt| dkszJ ttt| dksJ ttt| dksJ tt| dksJ tt| | dksØJ tt| t| dks¶J tt| | dksĀJ tt|t|  dksŠJ tt| d dksÜJ tt| d 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||  dks7J ttttdd| f|t	ddffdksPJ 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Ń   r5   r   r   r   ©rÉ  rŹ  r{  rĀ   rĀ   rĆ   Śtest_Adjoint2  s`   ’’’
’
’
’

’
’’žrĪ  c                  C   s<  t ddd} t ddd}tt| dksJ tt| | dks"J tt| t| dks0J tt| | dks<J tt|t|  dksJJ tt| d d	ksVJ tt| d d
ksbJ ttt| dksnJ ttt| dkszJ tt| dksJ tt| | dksJ tt| t| dksJ tt| | dksŖJ tt|t|  dksøJ tt| d dksÄJ tt| d 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||  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Ń   r5   r   r   r   rĶ  rĀ   rĀ   rĆ   Śtest_Transposef  sP   ’’’’
’
’’žrĻ  c                  C   s   t ddgddgg} t ddgddgg}d}d}d	}d
}tt| |ks&J tt| |ks0J tt| t| |ks>J tt| t| |ksLJ d S )Nr  r   r!  r"  rU  é   z   /[1  2]\
tr|[    ]|
  \[3  4]/u8     āā”1  2ā¤ā
trāā¢    ā„ā
  āā£3  4ā¦ā zG  /[1  2]\     /[2  4]\
tr|[    ]| + tr|[    ]|
  \[3  4]/     \[6  8]/uw     āā”1  2ā¤ā     āā”2  4ā¤ā
trāā¢    ā„ā + trāā¢    ā„ā
  āā£3  4ā¦ā      āā£6  8ā¦ā )r5   r   r8   rŃ   )rÉ  rŹ  rF  rI  rG  rJ  rĀ   rĀ   rĆ   Śtest_pretty_Trace_issue_9044  s   ’’’’ rŃ  c            
      C   sö  t ddd} td\}}}}}td| | }tddd}tddd}t|d	d	}	t|	t|	  kr6d
ks9J  J |||d ||d f }	t|	t|	  krVdksYJ  J |||d d||d df }	t|	t|	  krxdks{J  J |d ||d f }	t|	t|	  krdksJ  J |d ||d f }	t|	t|	  kr°dks³J  J ||d d |f }	t|	t|	  krĢdksĻJ  J |||||f }	t|	t|	  krčdksėJ  J |||||||f }	t|	t|	  krdksJ  J ||d ||d |f }	t|	t|	  kr(dks+J  J |d ||d ||f }	t|	t|	  krHdksKJ  J |d d |d d |f }	t|	t|	  krhdkskJ  J t|dd}	t|	t|	  krd
ksJ  J t|d | d fd | d f}	t|	t|	  kr¢d
ks„J  J t|d| d fd| d f}	t|	t|	  krĀd
ksÅJ  J t|d| dfd| df}	t|	t|	  krādksåJ  J |ddddddf }	t|	t|	  krdksJ  J |ddddddf }	t|	t|	  kr"dks%J  J |ddd }	t|	t|	  kr=d ks@J  J |d ddd!df }	t|	t|	  kr\d"ks_J  J |d ddddf }	t|	t|	  kr{d#ks~J  J |dd ddf }	t|	t|	  krd$ksJ  J |ddddf }	t|	t|	  kr¶d%ks¹J  J |ddddddf }	t|	t|	  krÖd&ksŁJ  J || dd dd f }	t|	t|	  kröd'ksłJ  J d S )(Nrj  Trk  z	x y z w trÉ  rŹ  r@  ŚZ)NNNzX[:, :]r  zX[x:x + 1, y:y + 1]r   zX[x:x + 1:2, y:y + 1:2]z	X[:x, y:]z	X[x:, :y]zX[x:y, z:w]zX[x:y:t, w:t:x]zX[x::y, t::w]zX[:x:y, :t:w]zX[::x, ::y])r   NNr   zX[::2, ::2]r!  r"  r#  rU  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   r7   r   rŃ   )
rj  rA  rB  rO  r“  ŚtrÉ  rŹ  rŅ  rĻ   rĀ   rĀ   rĆ   Śtest_MatrixSlice¶  sj   $$ $$$$$((((((((((((((((,rÕ  c                  C   s¼   t ddd} td| | }t|t|  krdksJ  J |j|  t”}d}d}t||ks2J t||ks:J ttdt }| |  |”}d}d	}t||ksTJ t||ks\J d S )
Nrj  Trk  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Ś	applyfuncrq   r
   rA  )rj  rÉ  rĻ   rD  rE  ŚlamdarĀ   rĀ   rĆ   Śtest_MatrixExpressionsļ  s   $rŁ  c                  C   s¬   ddl m}  tddd}td|d}td|d}tdd	g d
¢}tdd	g d¢}t| ||dks3J t| ||dks>J t| ||dksIJ t| ||dksTJ d S )Nr   )Ś
DotProductrj  Trk  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   r5   r   rŃ   )rŚ  rj  r¾  ræ  ŚCŚDrĀ   rĀ   rĆ   Śtest_pretty_dotproduct  s   rß  c                  C   s¼   ddl m} m}m}m}m} td}t| |dksJ t| ||dks(J tddd}t| |dks8J t| || d	ksDJ 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   r5   rŃ   r   )rą  r   r   r   r   r{  rÉ  rĀ   rĀ   rĆ   Śtest_pretty_Determinant"  s    ’’’žrā  c               	   C   s  t ttdk ftd df} d}d}t| |ksJ t| |ks!J t ttdk ftd df } d}d}t| |ks;J t| |ksCJ tt ttdkftdf t tt tdk ftd tdkfd	 d } d
}d}t| |kspJ t| |ksxJ tt ttdkftdf t tt tdk ftd tdkfd	 d } d}d}t| |ks„J t| |ks­J tt ttdkftdf } d}d}t| |ksĘJ t| |ksĪJ t ttdkftdft tt tdk ftd tdkfd	 } d}d}t| |ks÷J t| |ks’J t ttdkftdf t tt tdk ftd tdkfd	 } d}d}t| |ks*J t| |ks3J t dtdt dk fdttdk fttdddt  df} d}d}t| |ks^J t| |ksgJ tt ttdkftdfd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 /2, 1       | 1\             
|y*/__     |           | -|   otherwise 
\  \_|2, 2 \      1, 0 | y/             uø  ā§                                 1     
āŖ            0               for āāā < 1
āŖ                                āyā    
āŖ                                       
āØ            1               for āyā < 1
āŖ                                       
āŖ  ā­āā®0, 2 ā2, 1       ā 1ā             
āŖyāāā¶ā     ā           ā āā   otherwise 
ā©  ā°āāÆ2, 2 ā      1, 0 ā yā              Fr1  zC               2
//x  for x > 0\ 
|<            | 
\\y  otherwise/ uU                  2
āā§x  for x > 0ā 
āāØ            ā 
āā©y  otherwiseā  )r^   rA  r   rŃ   rB  rY   rp   r   rR  rĀ   rĀ   rĆ   Śtest_pretty_piecewise:  s¦   ’	’’	’(’’’’(’’’’’’,’’’’.’’’’(’’’’ ’’rć  c                  C   s0   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.   rA  rB  rO  r   rŃ   rW  rĀ   rĀ   rĆ   Śtest_pretty_ITE  s
   ’rä  c                  C   sŽ  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sDJ t| |ksLJ t||ksTJ dt f} d}d}t | |kseJ t| |ksmJ td dt ttttd ttd  g} d	}d
}t | |ksJ t| |ksJ td dt ttttd ttd  f} d}d}t | |ks·J t| |ksæJ ttd dt ttttd ttd  } 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 dt tttd i} t	dt dt tttd i}d}d}t | |ksJJ t ||ksSJ t| |ks\J t||kseJ td g} d}d}t | |kswJ t| |ksJ td f} d}d}t | |ksJ t| |ksJ ttd } d}d}t | |ks®J t| |ks·J td di} t	td di}d}d}t | |ksŅJ t ||ksŪJ t| |ksäJ t||ksķJ d S )NrĀ   r$  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Ń   rA  rB  rq   r¦  rf   r§  r   r   )rĻ   rD  rE  Śexpr_2rĀ   rĀ   rĆ   Śtest_pretty_seq'  sĪ   ’’’’’’
’’*’	’*’	’,’	’’’ ’’
’’
’’’’’’rę  c                  C   sĄ   t  } t t  }|| g}t|dksJ t|dksJ || h}t|dks(J t|dks0J || | |i}t|| | |i}t|dksFJ t|dksNJ t|dksVJ 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Ļ   Śexpr2rĀ   rĀ   rĆ   Śtest_any_object_in_sequenceū  s4   
’’’’’’rź  c                  C   s    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 th} t| }t | dks6J t| dks>J t |dksFJ t|dksNJ 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Ń   Ś	frozensetrA  )Śs1Śs2rĀ   rĀ   rĆ   Śtest_print_builtin_set  s$   ’’’’rļ  c                  C   s8  t } t| tt td g dksJ t| tdd dksJ t| tdd dks,J ttt td hdks:J tttdddksGJ tttdddksTJ tttt td gdksdJ tttddd	ksqJ 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  rU  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}rM  z{0, 2, ...}u   {0, 2, ā¦}z{..., 2, 0}u   {ā¦, 2, 0}r3  z{-2, -3, ...}u   {-2, -3, ā¦})
rM   r   rA  rB  Śrangerė  rģ  rK   rŃ   r   )r  rD  rE  rĀ   rĀ   rĆ   Śtest_pretty_sets6  sR   ’’’’’ rņ  c                  C   s>   t dd} t| }d}d}t||ksJ t||ksJ d S )Nr  r!  zSetExpr([1, 3]))rO   r”   r   rŃ   )ŚivŚserD  rE  rĀ   rĀ   rĆ   Śtest_pretty_SetExprn  s   
rõ  c                  C   sl  t tttftt h d£ddh} d}d}t| |ksJ t| |ks%J t tttfftt th d£ddh} d}d}t| |ksEJ t| |ksMJ t tttd tj} d	}d
}t| |ksdJ t| |kslJ t ttdtd  tj} d}d}t| |ksJ t| |ksJ t tttfdtt d  tjtj} d}d}t| |ks¬J t| |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)  ā             āŖ
ā©         ā             ā­)	r   r
   rA  rB  r   rŃ   r    r   ŚNaturals)ŚimgsetrD  rE  rĀ   rĀ   rĆ   Śtest_pretty_ImageSetw  s2   "(&rų  c                  C   sŲ  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dt	ddks<J ttttttjddt	ddksPJ t ttt
tdktdk t	dd	d
dksgJ 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	  dk}d} d}t || ksĮJ t||ksÉJ ttdtd	  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   Fr1  r  z{1}rM  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   rA  r   rq   r   ŚRealsrŃ   rJ   rM   r,   r3   )rD  rE  ŚcondsetrĀ   rĀ   rĆ   Śtest_pretty_ConditionSetÆ  s(   $$((..,,rż  c                  C   s0  ddl m}  | tddtdd }d}d}t||ksJ t||ks&J | tdd	tdd
t  dd}d}d}t||ksBJ t||ksJJ | tdd	td
  tdd }d}d}t||ksfJ t||ksnJ | tdd	td
  tdd
t  dd}d}d}t||ksJ t||ksJ d S )Nr   )ŚComplexRegionr!  r#  r"  rU  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.fancysetsrž  rO   r   rŃ   r   rP  )rž  ŚcregionrD  rE  rĀ   rĀ   rĆ   Śtest_pretty_ComplexRegionÜ  s*     (r  c                  C   sN   t ddt dd} }d}d}tt| ||ksJ tt| ||ks%J d S )Nr   r!  r"  rT  u   [2, 3] āŖ [4, 7]z[2, 3] U [4, 7])rO   rŃ   rP   r   )rP  rQ  rE  rD  rĀ   rĀ   rĆ   Śtest_pretty_Union_issue_10414  s
   r  c                  C   s^   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   rO   rŃ   rN   r   )rA  rB  rO  r“  rP  rQ  rE  rD  rĀ   rĀ   rĆ   Ś$test_pretty_Intersection_issue_10414  s   r  c                  C   s@   d} t tddd | ksJ d} t tddd | ksJ d S )Nz      1
[0, 1] r   r  z      2
[0, 1] r   )rŃ   rO   )rE  rĀ   rĀ   rĆ   Śtest_ProductSet_exponent  s   r  c                  C   sB   d} t ddt dd}}tt|| |tdd | ksJ d S )Nu)   ([4, 7] Ć {1, 2}) āŖ ([2, 3] Ć [4, 7])r   r!  r"  rT  r  )rO   rŃ   rP   rM   )rE  rP  rQ  rĀ   rĀ   rĆ   Śtest_ProductSet_parenthesis  s   (r  c                  C   sJ   d} d}t ddt dd}}t|| | ksJ t|| |ks#J d S )Nz[2, 3] x [4, 7]u   [2, 3] Ć [4, 7]r   r!  r"  rT  )rO   r   rŃ   )rD  rE  rP  rQ  rĀ   rĀ   rĆ   Ś%test_ProductSet_prod_char_issue_10413#  s
   r  c            
         s  t td dtf} td}d}d}t| |ksJ t| |ks!J d}d}t||ks-J t||ks5J t td d}tdd}d	}d	}t||ksMJ t||ksUJ d
}d
}t||ksaJ t||ksiJ t td 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s9J tt|||ksEJ t td tdtf t	t
 fdd t	t
 fdd td}t |td  tddf}	d}d}t|	|ks~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Õ   rĀ   ©Śs7rĀ   rĆ   rÆ  |  ó    z'test_pretty_sequences.<locals>.<lambda>c                      r	  r
  )rŃ   rĀ   r  rĀ   rĆ   rÆ  }  r  rQ  z[0, b, 4*b]u   [0, b, 4āb])rG   rP  r   rI   r   rŃ   rF   rH   rA  r²   ŚNotImplementedErrorr   )
rķ  rī  rD  rE  Śs3Śs4Śs5Śs6rQ  Śs8rĀ   r  rĆ   Śtest_pretty_sequences+  s~   
r  c                  C   s>   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         )rC   rA  r   r   rŃ   ©rÅ   rD  rE  rĀ   rĀ   rĆ   Śtest_pretty_FourierSeries  s   ’’r  c                  C   s<   t tdt } 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            )rB   ro   rA  r   rŃ   r  rĀ   rĀ   rĆ   Śtest_pretty_FormalPowerSeries  s   ’’r  c                  C   sf  t ttt} d}d}t| |ksJ t| |ksJ t td td} d}d}t| |ks.J t| |ks6J t dt td} d}d	}t| |ksJJ t| |ksRJ t ttt td} d
}d}t| |kshJ t| |kspJ t ttt tdd} d}d}t| |ksJ t| |ksJ t ttt td} d}d}t| |ks„J t| |ks­J t ttdd } d}d}t| |ksĮJ t| |ksÉJ t tt td td td} d}d}t| |ksćJ t| |ksėJ dt tt td td td } d}d}t| |ksJ t| |ksJ t tttddd} d}d}t| |ks(J t| |ks1J d S )Nz lim x
x->oo u   lim x
xāāā r   r   z      2
 lim x 
x->0+  u         2
 lim x 
xāā0āŗ  r  z     1
 lim -
x->0+xu        1
 lim ā
xāā0āŗxz)     /sin(x)\
 lim |------|
x->0+\  x   /uG        āsin(x)ā
 lim āāāāāāāā
xāā0āŗā  x   ā ś-z)     /sin(x)\
 lim |------|
x->0-\  x   /uG        āsin(x)ā
 lim āāāāāāāā
xāā0ā»ā  x   ā z# lim (x + sin(x))
x->0+            u)    lim (x + sin(x))
xāā0āŗ            z        2
/ lim x\ 
\x->0+ / u+           2
ā lim xā 
āxāā0āŗ ā  z5     /       /y\\
 lim |x* lim |-||
x->0+\  y->0+\2//u]        ā       āyāā
 lim āxā lim āāāā
xāā0āŗā  yāā0āŗā2ā ā z;       /       /y\\
2* lim |x* lim |-||
  x->0+\  y->0+\2//ue          ā       āyāā
2ā lim āxā lim āāāā
  xāā0āŗā  yāā0āŗā2ā ā z+-)Śdirzlim sin(x)
x->0      u   lim sin(x)
xāā0      )rD   rA  r   r   rŃ   rq   rB  rR  rĀ   rĀ   rĆ   Śtest_pretty_limitsæ  s   ’’’’’’’’’’’’’’’’ ’’’’r  c                  C   sF   t td dt  d d} d}d}t| |ksJ t| |ks!J d S )Nr#  é   r   r   z3       / 5              \
CRootOf\x  + 11*x - 2, 0/u=          ā 5              ā
CRootOfāx  + 11āx - 2, 0ā )rA   rA  r   rŃ   rR  rĀ   rĀ   rĆ   Śtest_pretty_ComplexRootOf\  s   ’’r  c                  C   s   t td dt  d dd} d}d}t| |ksJ t| |ks"J t td dt  d tttt} d}d	}t| |ks@J t| |ksHJ d S )
Nr#  r  r   F)Śautoz-       / 5           \
RootSum\x  + 11*x - 2/u7          ā 5           ā
RootSumāx  + 11āx - 2ā z?       / 5                   z\
RootSum\x  + 11*x - 2, z -> e /uK          ā 5                  zā
RootSumāx  + 11āx - 2, z ā¦ āÆ ā )r@   rA  r   rŃ   r
   rO  rh   rR  rĀ   rĀ   rĆ   Śtest_pretty_RootSumm  s   ’’$’’r  c                  C   sŅ   t g tt} d}d}t| |ksJ t| |ksJ td dt  t d td dt  t d g}t |ttdd} d}d	}t| |ksFJ t| |ksNJ |  d
”} d}d}t| |ks_J t| |ksgJ d S )Nz-GroebnerBasis([], x, y, domain=ZZ, order=lex)u.   GroebnerBasis([], x, y, domain=ā¤, order=lex)r   r!  r  r=   r[  z£             /[ 2                 2              ]                              \
GroebnerBasis\[x  - x - 3*y + 1, y  - 2*x + y - 1], x, y, domain=ZZ, order=grlex/u·                āā” 2                 2              ā¤                             ā
GroebnerBasisāā£x  - x - 3āy + 1, y  - 2āx + y - 1ā¦, x, y, domain=ā¤, order=grlexā rZ  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?   rA  rB  r   rŃ   Śfglm)rĻ   rD  rE  ŚFrĀ   rĀ   rĆ   Śtest_GroebnerBasis  s,   ’’0’’
’’r!  c                   C   s(   t tjdks	J ttjdksJ d S )NŚUniversalSetu   š)r   r   r"  rŃ   rĀ   rĀ   rĀ   rĆ   Śtest_pretty_UniversalSet¾  s   r#  c                  C   s"  t td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s8J t| dks@J td	}t| } t| d
ksPJ t| dksXJ t| } t| dksdJ t| dkslJ tttdd} t| dks{J t| dksJ t	ttdd} t| dksJ t| dksJ t
ttdd} t| dks©J t| dks±J tttdd} t| dksĄJ t| dksČJ tttdd} t| dks×J t| dksßJ tttdd} t| dksīJ t| dksöJ tttdd} t| dksJ t| dksJ d S )NFr1  zNot(x)u   Ā¬xz	And(x, y)u   x ā§ yzOr(x, y)u   x āØ yza:fzAnd(a, b, c, d, e, f)u   a ā§ b ā§ c ā§ d ā§ e ā§ fzOr(a, b, c, d, e, f)u   a āØ b āØ c āØ d āØ e āØ fz	Xor(x, y)u   x ā» yz
Nand(x, y)u   x ā¼ yz	Nor(x, y)u   x ā½ yzImplies(x, y)u   x ā yzImplies(y, x)u   y ā xzEquivalent(x, y)õ   x ā y)r2   rA  r   rŃ   r,   rB  r3   r   r4   r0   r1   r/   r-   )rĻ   ŚsymsrĀ   rĀ   rĆ   Śtest_pretty_BooleanĆ  sJ   

r&  c                  C   s¢  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s0J t| dks8J t} t| dksBJ t| d	ksJJ tt } t| d
ksVJ t| dks^J tttf } t| dkslJ t| dkstJ 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j	ttt
d} t| dksÆJ t| dks·J tj	tttd} 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)r[  zQQ[x, y, order=grlex]u   ā[x, y, order=grlex]zQQ[x, y, order=ilex]u   ā[x, y, order=ilex])r9   r   rŃ   r:   r;   r<   rA  rB  Ś
frac_fieldŚ	poly_ringr=   r>   rW  rĀ   rĀ   rĆ   Śtest_pretty_Domain  s<   
r*  c                   C   s²   t tdddddksJ t tdddddksJ t tdddddks'J t tdt dddddv s7J t tdt ddddd	v sGJ t tdt ddddd	v sWJ d S )
Nz0.3TF)Ś	full_precrĖ   z0.300000000000000r  )r+  rŹ   rĖ   )z0.300000000000000*xzx*0.300000000000000)z0.3*xzx*0.3)rĶ   r   rA  rĀ   rĀ   rĀ   rĆ   Śtest_pretty_prec7  s     $r,  c                  C   s\   dd l } ddlm} | }| j}|| _zttddd W || _n|| _w | ” dks,J d S )Nr   )ŚStringIOF)rŹ   rĖ   zpi
)ŚsysŚior-  Śstdoutr   r   Śgetvalue)r.  r-  ŚfdŚssorĀ   rĀ   rĆ   Śtest_pprintI  s   r4  c                  C   sH   G dd d} G dd d}t | t| ksJ t |t|ks"J dS )z;Test that the printer dispatcher correctly handles classes.c                   @   r¼   )ztest_pretty_class.<locals>.CNr¾   rĀ   rĀ   rĀ   rĆ   rŻ  X  rÄ   rŻ  c                   @   r¼   )ztest_pretty_class.<locals>.DNr¾   rĀ   rĀ   rĀ   rĆ   rŽ  [  rÄ   rŽ  N)r   r`  )rŻ  rŽ  rĀ   rĀ   rĆ   Śtest_pretty_classV  s   r5  c                  C   sZ   d} t dD ]}| |t|t  7 } qt|  d”dksJ t| dd d”dks+J d S )Nr   é   Ś
rM  F)rĖ   )rń  rq   rA  rĶ   Śfind)Ś	huge_exprr­  rĀ   rĀ   rĆ   Śtest_pretty_no_wrap_lineb  s
   r:  c                   C   s   t tdd  d S )Nc                   S   s   t tdddS )Nr"  Śgarbage)Śmethod)r   r   rĀ   rĀ   rĀ   rĆ   rÆ  k  s    ztest_settings.<locals>.<lambda>)r²   Ś	TypeErrorrĀ   rĀ   rĀ   rĆ   Śtest_settingsj  s   r>  c            	   	   C   sĢ  ddl m} m}m}m}m}m} t|| |d|f}d}d}t||ks&J t	||ks.J t|| |t
|f}d}d}t||ksDJ t	||ksLJ t|t| | | t
 t
f |d|| f}d}d}t||ksmJ t	||ksuJ t|t| | | t
 t
f |dt| |  | t
 t
ff}d	}d
}t||ksJ t	||ks„J t|t| | | t
 t
f || | | d  |d  | |  d|   t| |  | t
 t
ff}d}d}t||ksßJ t	||ksēJ t|t| | | t
 t
f |d| | | d  |d  | |  d|   f}d}d}t||ksJ t	||ks"J t| | dt
f}d}d}t||ks7J t	||ks@J t| d | dt
f}d}d}t||ksWJ t	||ks`J t| d | dt
f}d}d}t||kswJ t	||ksJ t| d d | dt
f}d}d}t||ksJ t	||ks¢J t| d t| d   | | dt
f}d}d}t||ksĮJ t	||ksŹJ td| d  | dt
f}d}d}t||ksćJ t	||ksģJ tdt||   | dt
f}d}d}t||ksJ t	||ksJ tdt||   | dt
ftddf}d }d!}tddddd|     d |d"dd|  f|dd|  t
fddd|    }d#}d$}t||ks[J t	||ksdJ d S )%Nr   )rA  rP  rQ  rm  r{  rj  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.abcrA  rP  rQ  rm  r{  rj  r   r   rŃ   r   r+   rB  )	rA  rP  rQ  rm  r{  rj  rĻ   rD  rE  rĀ   rĀ   rĆ   Śtest_pretty_sumn  sō    ’’’’*’’’’’’<’’’’,’’’’
’’’’’’’$’’’’’’$’’
’’ ’’’’rA  c                  C   sš   t } d}d}d}d}ddlm}m}m} t| dksJ t| dks$J t|  ||d  |d  ”|ks7J t|  ||d  |d  ”|ksJJ td	| t |d  t	 |d  |ks`J td	| t |d  t	 |d  |ksvJ 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.unitsrB  r{  r  rŃ   r   Ś
convert_torA  rB  )rĻ   Ś
ascii_str1Śunicode_str1Ś
ascii_str2Śunicode_str2rB  r{  r  rĀ   rĀ   rĆ   Ś
test_unitst  s    ’	’
’	’	&&,0rI  c                  C   sÖ   t d} t| tttd }d}d}t||ksJ t||ks"J t| t t”td}d}d}t||ks9J t||ksAJ t| t t”t ttfdtddf}d	}d
}t||ksaJ t||ksiJ 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   rA  r§  r   rŃ   r¤  rB  r   )rÅ   rĻ   rD  r}  rĀ   rĀ   rĆ   Śtest_pretty_Subs   s,   ’’’’(’	’	rJ  c                   C   s   t tttdksJ t tttdksJ tttdddks"J ttdddks,J ttdtdtddd	ks<J ttdtdddd
ksJJ d S )Nu   Ī³(x, y)u   Ī(x, y)Tr)  u   Ī(x)u   Īrm   ry  u   Ī³(x)r_  )	rŃ   r½   rA  rB  ru   rĶ   rm   r   r	   rĀ   rĀ   rĀ   rĆ   Śtest_gammasŲ  s     rK  c                  C   s°   t tttdddksJ t tttdddksJ t tdddks$J t tdddks.J td} t | tddd	ks>J t | tttddd
ksLJ t | dddksVJ d S )NTr)  u   Ī(x, y)FzB(x, y)u   Īræ  rb   u   Ī²(x)zbeta(x, y, z)rŚ   )rĶ   rb   rA  rB  r	   rO  )ŚmybetarĀ   rĀ   rĆ   Ś	test_betaį  s   rM  c                  C   s@   G dd dt } t| dddksJ t| tdddksJ d S )Nc                   @   r¼   )z6test_function_subclass_different_name.<locals>.mygammaNr¾   rĀ   rĀ   rĀ   rĆ   Śmygammaī  rÄ   rN  Tr)  z
mygamma(x))rm   rĶ   rA  )rN  rĀ   rĀ   rĆ   Ś%test_function_subclass_different_nameķ  s   rO  c                   C   s  t ttdtdddksJ t ttdtdddksJ t ttdtdddks*J t ttttddd	ks8J t ttttddd
ksFJ t ttdtdddksTJ t ttdtdddksbJ t ttdtdddkspJ t ttttddd	ks~J t ttttddd
ksJ d S )Nr   Tr)  z	   n
<x> r  z       n
<x - 1> rM  z       n
<x + 1> z        n
<-a + x> z       n
<x - y> F)rĶ   r'   rA  rj  rP  rB  rĀ   rĀ   rĀ   rĆ   Śtest_SingularityFunctionō  s<   ’’’’’’’’’’rP  c                   C   sT   t ttdddksJ t ttddddksJ t tttd dddks(J d S )NTr)  u   Ī“(x)r  u    (1)    
Ī“    (x)u      (1)    
xāĪ“    (x))rĶ   r{   rA  rĀ   rĀ   rĀ   rĆ   Śtest_deltas)  s   ’’rQ  c                  C   s  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s4J t dgdgt} d	}d
}t| |ksHJ t| |ksPJ t td dt fdt} d}d}t| |kshJ t| |kspJ t ttddt fdtd } d}d}t| |ksJ t| |ksJ t ddgddgddddt d  d  d  } 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!  r3  )r!  r"  r#  éż’’’u        ā  Ļ         ā  ā
 āā  ā  ā, -2āk   ā  ā
 āā  ā  3         ā xā
2āµ 4 ā            ā  ā
     ā3, 4, 5, -3 ā  ā z                      
  _  /  pi        |  \
 |_  |  --, -2*k  |  |
 |   |  3         | x|
2  4 |            |  |
     \3, 4, 5, -3 |  /z2/3ui    āā  āĻ, 2/3, -2āk ā  2ā
 āā  ā             ā x ā
3āµ 4 ā3, 4, 5, -3  ā   ā zg  _                      
 |_  /pi, 2/3, -2*k |  2\
 |   |              | x |
3  4 \ 3, 4, 5, -3  |   /r"  us       ā     ā       1      ā
     ā     ā āāāāāāāāāāāāāā
     ā     ā         1    ā
 āā  ā1, 2 ā 1 + āāāāāāāāāā
 āā  ā     ā           1  ā
2āµ 2 ā3, 4 ā     1 + āāāāāā
     ā     ā             1ā
     ā     ā         1 + āā
     ā     ā             xā a                             
     /     |       1      \
     |     | -------------|
  _  |     |         1    |
 |_  |1, 2 | 1 + ---------|
 |   |     |           1  |
2  2 |3, 4 |     1 + -----|
     |     |             1|
     |     |         1 + -|
     \     |             x/)rn   rO  r   rŃ   rA  r   rm  r   ©rĻ   rE  rD  rĀ   rĀ   rĆ   Ś
test_hyper7  sT   ’’’’’’’	’	’’0’’rT  c               
   C   sn  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 gdtdgg g td } d	}d
}t| |ksAJ t| |ksIJ d}d}t dgd dgdgdgt} t| |kscJ t| |kskJ t ddgddgdgddgddddt d  d  d  } d}d}t| |ks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 |  /rT  r   r#  uÄ           ā   Ļ          ā   ā
ā­āā®0, 2 ā1, ā  2, Ļ, 5 ā  2ā
āā¶ā     ā   7          ā z ā
ā°āāÆ5, 0 ā              ā   ā
        ā              ā   ā z        /   pi           |   \
 __0, 2 |1, --  2, pi, 5 |  2|
/__     |   7            | z |
\_|5, 0 |                |   |
        \                |   /u³   ā­āā® 1, 10 ā1, 1, 1, 1, 1, 1, 1, 1, 1, 1  1 ā  ā
āā¶ā       ā                                ā zā
ā°āāÆ11,  2 ā             1                1 ā  ā z __ 1, 10 /1, 1, 1, 1, 1, 1, 1, 1, 1, 1  1 |  \
/__       |                                | z|
\_|11,  2 \             1                1 |  /r@  r"  r!  uĢ          ā           ā       1      ā
        ā           ā āāāāāāāāāāāāāā
        ā           ā         1    ā
ā­āā®1, 2 ā1, 2  4, 3 ā 1 + āāāāāāāāāā
āā¶ā     ā           ā           1  ā
ā°āāÆ4, 3 ā 3    4, 5 ā     1 + āāāāāā
        ā           ā             1ā
        ā           ā         1 + āā
        ā           ā             xā aL          /           |       1      \
        |           | -------------|
        |           |         1    |
 __1, 2 |1, 2  4, 3 | 1 + ---------|
/__     |           |           1  |
\_|4, 3 | 3    4, 5 |     1 + -----|
        |           |             1|
        |           |         1 + -|
        \           |             x/uc  ā                                         
ā®         ā           ā       1      ā   
ā®         ā           ā āāāāāāāāāāāāāā   
ā®         ā           ā         1    ā   
ā® ā­āā®1, 2 ā1, 2  4, 3 ā 1 + āāāāāāāāāā   
ā® āā¶ā     ā           ā           1  ā dx
ā® ā°āāÆ4, 3 ā 3    4, 5 ā     1 + āāāāāā   
ā®         ā           ā             1ā   
ā®         ā           ā         1 + āā   
ā®         ā           ā             xā    
ā”                                        a.    /                                       
 |                                        
 |         /           |       1      \   
 |         |           | -------------|   
 |         |           |         1    |   
 |  __1, 2 |1, 2  4, 3 | 1 + ---------|   
 | /__     |           |           1  | dx
 | \_|4, 3 | 3    4, 5 |     1 + -----|   
 |         |           |             1|   
 |         |           |         1 + -|   
 |         \           |             x/   
 |                                        
/                                         )rp   r   rA  rO  r   rŃ   r+   rS  rĀ   rĀ   rĆ   Śtest_meijerg°  sF    ’’"’	’’’:’’
’’rU  c                  C   sś   t ddd\} }}| | |d  }d}d}t||ksJ t||ks%J |d |  | }d}d}t||ks9J t||ksAJ | |d  | }d	}d
}t||ksUJ t||ks]J | |d  | t }d}d}t||kssJ t||ks{J d S )NzA,B,CF©ŚcommutativerM  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Ń   rA  )r¾  ræ  rŻ  rĻ   rD  rE  rĀ   rĀ   rĆ   Śtest_noncommutative+  s:   ’’’’’’’’rX  c                  C   sN   t d\} }t|td 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   ra   rr   r   rŃ   rw  rĀ   rĀ   rĆ   Śtest_pretty_special_functionsk  s   ’’r[  c                  C   s>   t dd} t| dksJ tddt d} t| dksJ d S )N)r   r  r  z'Segment2D(Point2D(0, 1), Point2D(0, 2)))r  r  g®Gįz@)Śanglez0Ray2D(Point2D(1, 1), Point2D(2, tan(pi/50) + 1)))r*   r   r)   r   )ŚerĀ   rĀ   rĆ   Śtest_pretty_geometry  s   
r^  c                  C   s  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s9J tttdksCJ tttdksMJ tt	tdksWJ tttdksaJ tttdkskJ tttdksuJ 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\   rA  r   rŃ   ri   rO  r_   r`   r[   rZ   )rĻ   ŚstringrE  rD  rĀ   rĀ   rĆ   Śtest_expint  s"   
r`  c                  C   sV  d} d}t dtd  }t|| ksJ t||ksJ d} d}tdddt  }t|| ks1J t||ks9J d} d}tdtd  }t|| ksMJ t||ksUJ d} d	}tdddt  }t|| ksjJ t||ksrJ d
} d}tddt }t|| ksJ t||ksJ d} d}tddt 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ā ā rU  )rw   rO  r   rŃ   rx   ry   rz   rA  )rD  rE  rĻ   rĀ   rĀ   rĆ   Śtest_elliptic_functions  sT   ’’’’’’’’’’’’ra  c            	      C   s   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s1J |d
d}|dd}t|t||jdksIJ d S )Nr   )r¢   ŚDieŚExponentialŚpspaceŚwhereŚx1r  u   Domain: 0 < xā ā§ xā < āŚd1rU  r"  u   Domain: dā = 5 āØ dā = 6rP  rQ  u3   Domain: 0 ā¤ a ā§ 0 ā¤ b ā§ a < ā ā§ b < ā)	Śsympy.statsr¢   rb  rc  rd  re  rŃ   r   Śdomain)	r¢   rb  rc  rd  re  rÉ  rŽ  r¾  ræ  rĀ   rĀ   rĆ   Śtest_RandomDomain   s   


’rj  c                  C   s|   t  tt”} t  tt”}|  ttt  ”}t|dksJ t|dks%J | tt ”}t|dks4J t|dks<J d S )Nz	x/(x + y)zx + y)r;   r(  rA  rB  r)  Śconvertr   rŃ   )r   ŚRrĻ   rĀ   rĀ   rĆ   Śtest_PrettyPoly  s   rm  c                   C   s8   t tdddddksJ t ttdt dksJ d S )Nr   r7  Fr1  z1 
--
 5
2 r  z 1 
 --
 pi
x  )r   r   rA  r   rĀ   rĀ   rĀ   rĆ   Śtest_issue_6285  s   ’rn  c                  C   s  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fd dks0J tttd tddfd dksBJ t ttd tddfd dksTJ tttd tddfd d	ksfJ td
} t t| ttd dksyJ tt| ttd 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+   rA  rŃ   r   r   r	   r   )rÅ   rĀ   rĀ   rĆ   Śtest_issue_6359$  s2   ’
’	’’’
’’’ro  c                  C   s<   d} d}t dtt | ksJ tdtt |ksJ d S )Nz  1  
-----
  ___
\/ x u   1 
āā
āxr  )r   rr   rA  rŃ   )rD  rE  rĀ   rĀ   rĆ   Śtest_issue_6739u  s   ’’rp  c                  C   s"   dD ]} t t| | ksJ qd S )N)Śdexpr2_d1tauzdexpr2^d1tau)r   r   )Ś	symb_namerĀ   rĀ   rĆ   Ś!test_complicated_symbol_unchanged  s   ’rs  c                  C   sČ  ddl m} m}m}m}m}m} | d}| d}| d}|||d}	|||d}
||}|d}t|dks8J t|d	ks@J t|	d
ksHJ t|	dksPJ t|dksXJ t|dks`J t|
|	 dksjJ t|
|	 dkstJ 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|
|	 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.categoriesrt  ru  rv  rw  rx  ry  r   rŃ   r   rł  )rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r~  Śid_A1r  ŚdŚgridrĀ   rĀ   rĆ   Śtest_categories  s<    r  c                  C   sņ   t  tt”} |  d”}| ttgdtd g”}d}d}t||ks#J t||ks+J d}d}t||ks7J t||ks?J |  td t”}d}d}t||ksSJ t||ks[J || }d	}d
}t||kskJ t||kssJ 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_ringrA  rB  Śfree_moduleŚ	submodulerŃ   r   Śideal)rl  r   r¶  rE  rD  r   ŚQrĀ   rĀ   rĆ   Śtest_PrettyModulesĆ  sB   
’’’’’’’
’	’	’r  c                  C   sp   t  t”td d g } d}d}t| |ksJ t| |ks J d}d}t| j|ks-J t| j|ks6J 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  rA  rŃ   r   Śone)rl  rE  rD  rĀ   rĀ   rĆ   Śtest_QuotientRing  s   ’	’’’r  c                  C   sź   ddl m}  t t”}| | d”| d”dg}d}d}t||ks$J t||ks,J | | d”| d”ddg}d}d}t||ksFJ t||ksNJ | | d”| d”tgg dg}d	}d
}t||kskJ t||kssJ 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  rA  r  rŃ   r   )r  rl  rĻ   rE  rD  rĀ   rĀ   rĆ   Śtest_HomomorphismC  s.   
’’’’"’	’r  c                  C   s@   t ddd\} }t| | }t|dksJ t|dksJ d S )NzA BFrV  zTr(A*B)u	   Tr(AāB))r   rX   r   rŃ   )r¾  ræ  rŌ  rĀ   rĀ   rĆ   Śtest_Tr  s   r  c                  C   s*   t dtd ddd } t| dksJ d S )Nr3  r   Fr1  r#  z5 - 2*(x - 2))r   rA  r   )ŚeqrĀ   rĀ   rĆ   Śtest_pretty_Add  s   r  c                   C   s8   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Ń   r2   r-   rA  rB  r/   rĀ   rĀ   rĀ   rĆ   Śtest_issue_7179  s   r  c                   C   s   t tttdksJ d S )Nr$  )rŃ   r-   rA  rB  rĀ   rĀ   rĀ   rĆ   Śtest_issue_7180  s   r  c                   C   sd   t tjtj dksJ ttjtj dksJ t tjtj dks$J ttjtj dks0J d S )Nz(-oo, oo) \ Naturalsu	   ā \ āz(-oo, oo) \ Naturals0u   ā \ āā)r   r   rū  rö  rŃ   Ś	Naturals0rĀ   rĀ   rĀ   rĆ   Śtest_pretty_Complement  s   r  c                  C   s~   ddl m}  t| tddtdddddksJ tt t| tddtdddd W d    d S 1 s8w   Y  d S )	Nr   ©ŚSymmetricDifferencer   r!  r#  Fr1  u   [2, 3] ā [3, 5])Śsympy.sets.setsr  rŃ   rO   r²   r  r   r  rĀ   rĀ   rĆ   Śtest_pretty_SymmetricDifference  s   ’’
 "’r  c                   C   s4   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   rJ   rA  r   ŚIntegersrŃ   rĀ   rĀ   rĀ   rĆ   Śtest_pretty_Contains¦  s   r  c                  C   sD   ddl m}  | d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)Fr1  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]  rE  rD  rĀ   rĀ   rĆ   Śtest_issue_8292«  s   ’	’r”  c                  C   sD   t d} | t t” }d}d}t||ksJ t||ks J d S )NrB  u!    d       
-āā(y(x))
 dx      z   d       
- --(y(x))
  dx      )r	   rA  r¤  r   rŃ   )rB  rĻ   rE  rD  rĀ   rĀ   rĆ   Śtest_issue_4335Ā  s   ’’r¢  c                  C   s0   ddl m}  | ddd}d}t||ksJ d S )Nr   r  z2*x*y**2/1**2 + 1Fr1  uF        2    
2āxāy     
āāāāāā + 1
   2      
  1       )r   r  rŃ   )r  r]  rE  rĀ   rĀ   rĆ   Śtest_issue_8344Õ  s
   ’r£  c                  C   sB   t dddd} t dddd}t| |dd}d}t||ksJ d S )Nr   r!  Fr1  r@  r3  u     3
 2 
āāā
  2
10 )r   r   rŃ   )rA  rB  r]  rE  rĀ   rĀ   rĆ   Śtest_issue_6324ć  s   ’r¤  c                  C   sX   t td ttd  } d}t| |ksJ t ttdd  } d}t| |ks*J d S )Nr   u              āxā
        cosāāā
           ā2ā 
ā   āxāā      
āsināāāā      
ā   ā2ā ā       r  r.  u/           11
        āā
        13
(sin(x))  )rq   rA  rf   rŃ   r   )r]  rE  rĀ   rĀ   rĆ   Śtest_issue_7927ņ  s   ’	’r„  c                  C   s   ddl m} m} td}| t t||t tt|  |ddf | td  t||d t tdt |  |ddf  }d}t||ksHJ 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	   rA  r+   r   rq   rŃ   )rŲ  rŌ  rĒ   r]  rE  rĀ   rĀ   rĆ   Śtest_issue_6134	  s   d’r¦  c            	      C   s   d} t ddddt ddtt}}}tt|t||| ks"J d}ttttttt ddf\}}}}tt||t|||ksFJ d S )Nu   (2, 3) āŖ ([1, 2] \ {x})r   r!  Tr  u   {x} ā© {y} ā© ({z} \ [1, 2]))	rO   rM   rA  rŃ   rP   rL   rB  rO  rN   )	rr  rP  rQ  Ścrs  r  r]  rÅ   ŚgrĀ   rĀ   rĆ   Śtest_issue_9877  s   $&"r©  c                  C   sT   t tdtt dd } t| dksJ t tdtt t dd }t|dks(J d S )NrM  Fr1  zc - (a + b)zc - (a - b + d))r§  r   rP  rQ  r   r  )Śexpr1ré  rĀ   rĀ   rĆ   Śtest_issue_13651#  s   r«  c                  C   óL   ddl m}  d}d}tddd}t| ||ksJ t| ||ks$J d S )Nr   )Śprimenuznu(n)u   Ī½(n)rj  Trk  )Śsympy.ntheory.factor_r­  r   r   rŃ   )r­  rE  rr  rj  rĀ   rĀ   rĆ   Śtest_pretty_primenu*  ó   rÆ  c                  C   r¬  )Nr   )Ś
primeomegazOmega(n)u   Ī©(n)rj  Trk  )r®  r±  r   r   rŃ   )r±  rE  rr  rj  rĀ   rĀ   rĆ   Śtest_pretty_primeomega5  r°  r²  c                  C   s@  ddl m}  d}d}d}d}d}d}d}d}d}	d	}
td
dd}t| |d|ks+J t| |d|ks6J t| |d d|ksCJ t| |d d|ksPJ t| d| d|ks]J t| d| d|ksjJ t| |dd |kswJ t| |dd |ksJ td| |d |	ksJ td| |d |
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)rA  Trk  rT  r  r   )r   r³  r   r   rŃ   )r³  rE  rr  rG  rs  Ś
ascii_str3Ś
ucode_str3Ś
ascii_str4Ś
ucode_str4Ś
ascii_str5Ś
ucode_str5rA  rĀ   rĀ   rĆ   Śtest_pretty_Mod@  s,   rŗ  c                   C   s,   t tddks
J ttddksJ d S )NŚ )r   r   rŃ   rĀ   rĀ   rĀ   rĆ   Śtest_issue_11801_  s   r¼  c                  C   st   t d} td|  }d}t||ksJ d}t|d |ks J d}t|d |ks,J d}t| | |ks8J d S )NrA  r  r0  u!      2
ā1ā 
āāā 
āxā  r   u       1
1 + ā
    xu     1
xāā
  x)r   rW   rŃ   )rA  ŚherE  rĀ   rĀ   rĆ   Śtest_pretty_UnevaluatedExprd  s   ’’’’r¾  c                  C   s8   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ā¦ā )r5   rŃ   )r¶  rE  rĀ   rĀ   rĆ   Śtest_issue_10472  s    ’ræ  c                  C   sĢ   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  |ks:J td| d  |ksFJ d}d}|d  || | ”}t||ks\J t||ksdJ 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Ż  rE  rr  r   rĀ   rĀ   rĆ   Śtest_MatrixElement_printing  s    rĀ  c                  C   s\   t d\} }}}td}d}t| | | |j |ksJ d}td| |j |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®  )rA  rB  rŌ  r®  r]  rE  rĀ   rĀ   rĆ   Śtest_issue_12675°  s   ’’rĆ  c                  C   sŠ   t ddd} t ddd}t ddd}t|  | | dksJ t| | dks)J t| | | | |  ||  dks=J t dtt}t d	tt}t|| d
ksSJ d}tt | d| |  |ksfJ d S )Nr¾  r!  ræ  rŻ  z-A*B*Cz-B + Az-A*B -B*C + A*B*CrA  zy*zx + y*z     2     
-2*y*  -a*xr3  )r   r   rj  rP  )r¾  ræ  rŻ  rA  rB  rD  rĀ   rĀ   rĆ   Śtest_MatrixSymbol_printingÅ  s   (’&rÄ  c                  C   sX   dt  } t| dksJ tt  }t|dksJ ttt  dt   }t|dks*J d S )NéZ   u   90Ā°u   xĀ°u   cos(xĀ° + 90Ā°))r   r   rA  rf   )rŖ  ré  Śexpr3rĀ   rĀ   rĆ   Śtest_degree_printingŚ  s   rĒ  c                  C   s"  t d} tt| j| j| j d| j | j  dksJ ttt| j| j dks+J tt| j| j d| j | j  dksAJ tt| j| j d| j | j  dksWJ tt	| j| j| j d| j | j  dksoJ tt
| jd| j  dksJ tt| jd| j  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­  rA  rB  r®  r·   rø   r¹   r¶   r»   )r¾  rĀ   rĀ   rĆ   Ś test_vector_expr_pretty_printingć  s   0,,0 $rČ  c                  C   sf  t d} td| \}}}td| }td| g\}}}}td| | g}	| }
d}d}t|
|ks1J t|
|ks9J ||}
d}d}t|
|ksIJ t|
|ksQJ ||}
d}d	}t|
|ksaJ t|
|ksiJ || }
d
}d
}t|
|kszJ t|
|ksJ d||  }
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t || }
d}d}t|
|ksJ t|
|ksJ ||d||  }
d}d}t|
|ks(J t|
|ks1J 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 
 irR  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Ń   rA  )rÉ  r­  r®  rm  Śi0r¾  ræ  rŻ  rŽ  rĶ  rĻ   rD  rE  rĀ   rĀ   rĆ   Śtest_pretty_print_tensor_exprō  s   
’’’’’’
’’’’’’’’’’’’’’rĻ  c                  C   s  ddl m}  td}td|\}}}td|g\}}}}td||g}	| ||||}
d}d}t|
|ks8J t|
|ks@J ||| |	|| || }
d	}d
}t|
|ks[J t|
|kscJ ||| ||||  d|	||   || }
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 | || ||  || |t }
d}t|
|ksśJ | d||  || |t }
d}t|
|ksJ t	|	|||di}
d}|}t|
|ks-J t|
|ks6J t	|	|||d|di}
d}|}t|
|ksOJ t|
|ksXJ 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.toperatorsrŠ  r­   r®   r±   rÆ   r   rŃ   rj  r°   )rŠ  rÉ  r­  r®  rm  r¾  ræ  rŻ  rŽ  rĶ  rĻ   rD  rE  rĀ   rĀ   rĆ   Ś&test_pretty_print_tensor_partial_deriv  s   ’	’’	’4’	’"’	’$’	’("’’’’rŅ  c                  C   s2   t ddd} t| t| |  }d}||ksJ d S )NrP  r  z	a*(a x a))r   r   r   )rP  r]  ŚresultrĀ   rĀ   rĆ   Śtest_issue_15560G  s   rŌ  c                  C   sT   t d} tt| dd d}d}tt| dd|ksJ tt| dd|ks(J d S )NrP  r  r   u   Ī¦(a, 1, 2)zlerchphi(a, 1, 2))r   r   rv   rŃ   )rP  ŚuresultŚaresultrĀ   rĀ   rĆ   Śtest_print_lerchphiN  s   r×  c                  C   s2   t  d”} d}t| j| j| jf}||ksJ d S )NŚNz(n_x, n_y, n_z))r   ŚReferenceFramer   rA  rB  rO  )rŲ  rÓ  r]  rĀ   rĀ   rĆ   Śtest_issue_15583W  s   
rŚ  c            
      C   s   d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s5J | |||  | dksCJ | | | || |  | dksVJ tddd}| |dksdJ tddd}| |dksrJ tddd}| |dksJ td}td}tddd}tddd}	| || | ||	  dks¤J tddd}	tddd}| || | ||	  dksĄJ tddd}| |dksĪJ d S )Nc                 S   s   t | ddddS )NTFŚbold)rŹ   rĖ   Śmat_symbol_stylerĢ   rW  rĀ   rĀ   rĆ   Ś
boldprettya  s   z)test_matrixSymbolBold.<locals>.boldprettyr   )Śtracer¾  r   u   tr(š)r!  ræ  rŻ  u   -šu   -š -šāš + šu&   -š -šāš -šāšāšŚAddotu   šĢŚomegau   ĻŚ	omeganormu   āĻār£  rQ  r§  r  r  u   bāš + Ī±āšāšŚdeltaŚBetau   bāĪ“ + Ī±āĪāšŚA_2u   šā)Ś sympy.matrices.expressions.tracerŽ  r   r   )
rŻ  rŽ  r¾  ræ  rŻ  rą  rP  rQ  r§  r  rĀ   rĀ   rĆ   Śtest_matrixSymbolBold_  s4   &  rę  c                   C   sp   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s6J d S )NrP  u   Ģu   aĢŚaau   aaĢŚaaau   aaĢaŚaaaau   aaaĢaŚaaaaau   aaaĢaaŚabcdefgu   āu
   abcdāefg)r   rĀ   rĀ   rĀ   rĆ   Śtest_center_accent  s   rģ  c                      s   ddl m   dt dddksJ  dt dddksJ  dt dd	d
dks+J  dt dd	d
dks8J tt fdd tt fdd d S )Nr   rÕ   r  Fr)  z1 + ITu   1 + ār®  )rŹ   Śimaginary_unitu   1 + āc                      s    t t dS )N©rķ  ©r   rĀ   rÕ   rĀ   rĆ   rÆ    ó    z%test_imaginary_unit.<locals>.<lambda>c                      s    t ddS )NŚkkkrī  rļ  rĀ   rÕ   rĀ   rĆ   rÆ    rš  )Śsympy.printing.prettyr   r   r²   r=  Ś
ValueErrorrĀ   rĀ   rÕ   rĆ   Śtest_imaginary_unit  s   rō  c                  C   s   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s4J t|ddd	ks?J t|ddd
ksJJ d S )Nr   ©ŚIdentityr   r   r"  r   u   šr   Ś0u   šŚ1u   š)rį  rö  r   r   r   rŃ   rõ  rĀ   rĀ   rĆ   Śtest_str_special_matrices  s   rł  c                   C   sÄ  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s4J tttdks>J t ttdksHJ tttdksRJ t ttdks\J tttdksfJ t ttdkspJ tttdkszJ 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   rA  rŃ   rB  r    r"   r!   r#   r%   r&   r$   r(   rĀ   rĀ   rĀ   rĆ   Śtest_pretty_misc_functions„  s,   rś  c                  C   sŅ   t ddd\} }}td| |}td| |}t||}d}d}t||ks&J t||ks.J t|d| }d	}d
}t||ksAJ t||ksIJ t||j d| }d}d}t||ks_J t||ksgJ d S )Nzm, n, pTrk  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{  rj  r  r¾  ræ  rĻ   rD  rE  rĀ   rĀ   rĆ   Śtest_hadamard_power¾  s0   
’’’’’’rū  c                  C   sL   t ddd} tt| | t dfdksJ tt| | t dfdks$J d S )Nrj  Trk  r  z;   1     
  __     
  \ `    
   )    n
  /_,    
n = -oo  uW     1     
 ___    
 ā²      
  ā²     
  ā±    n
 ā±      
 ā¾ā¾ā¾    
n = -ā  )r   r   r   r   rŃ   )rj  rĀ   rĀ   rĆ   Śtest_issue_17258ń  s   ’’rü  c                  C   s"   d} dd | D g d¢ksJ d S )Nu   vĢ_mc                 S   s   g | ]}t |qS rĀ   )r   )Ś.0ŚsymrĀ   rĀ   rĆ   Ś
<listcomp>	  s    z%test_is_combining.<locals>.<listcomp>)FTFFrĀ   )ŚlinerĀ   rĀ   rĆ   Śtest_is_combining  s   ’r  c                  C   sŌ   t tdtd  dksJ ttdtd  dksJ t tdt  dks(J ttdt  dks4J t tdt  dks@J ttdt  dksLJ td} td	d|   d
ks\J t d	d|   dkshJ d S )Nr  z  / -1\
  \e  /
pi     u    ā -1ā
 āāÆ  ā 
Ļ     z  1 
  --
  pi
pi  u    1
 ā
 Ļ
Ļ z3      1     
  ----------
  EulerGamma
pi          u    1
 ā
 Ī³
Ļ Śx_17rT  u   xāā___
 ā²ā± 7 zx_17___
  \/ 7 )r   r   rh   rŃ   r   r   )rO  rĀ   rĀ   rĆ   Śtest_issue_17616  s2   ’’’’’’’’r  c                   C   s6   t tt tdksJ t ttt ddksJ d S )Nz{..., -1, 0, 1, ...}rM  z{..., 1, 0, -1, ...})r   rK   r   rĀ   rĀ   rĀ   rĆ   Śtest_issue_17857:  s   r  c               
   C   sŠ   t d} t d}tt| t|  t|  dtjdksJ tt| t|d tdt	t
| d |d dks9J tt| ttd| dkf| d d	 | dkfd	| dkf| d d
fd	 dtdddksfJ d S )NrA  rj  r   uu   ā§  ā         ā      x    āā«
āØx ā x ā ā ā§ ā-x + āÆ  = 0ā ā¬
ā©  ā                      ā­r   u”   ā§  ā     ā§-n   nā«   ān         āā«
āØx ā x ā āØāāā, āā¬ ā§ āā ā [0, ā)āā¬
ā©  ā     ā© 2   2ā­   ā2         ā ā­r  r!  g      ą?Tu  ā§  ā              āāā§   1     for x ā„ 3ā          āā«
āŖ  ā              āāāŖ                  ā          āāŖ
āŖ  ā              āāāŖx                 ā          āāŖ
āŖ  ā              āāāŖā - 0.5  for x ā„ 2ā          āāŖ
āŖ  ā              āāāŖ2                 ā          āāŖ
āØx ā x ā [0, 3] ā§ āāāØ                  ā - 0.5 = 0āā¬
āŖ  ā              āāāŖ  0.5    for x ā„ 1ā          āāŖ
āŖ  ā              āāāŖ                  ā          āāŖ
āŖ  ā              āāāŖ   x              ā          āāŖ
āŖ  ā              āāāŖ   ā     otherwiseā          āāŖ
ā©  ā              āāā©   2              ā           ā ā­)r   rŃ   r   r   rh   r   Ś	ComplexesrJ   rO   r   rM   r^   )rA  rj  rĀ   rĀ   rĆ   Śtest_issue_18272?  s&    ’.’0
’’’’žr  c                  C   s$   ddl m}  t| ddksJ d S )Nr   ©ŚStrrA  )Śsympy.core.symbolr  r   r  rĀ   rĀ   rĆ   Śtest_StrY  s   r
  c                  C   s   t d} t ddd}td| |}tt|dksJ tt|dks$J tt|dkd	ks0J td
| |}tt||dksAJ 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Ź  rĀ   rĀ   rĆ   Śtest_symbolic_probability_  s   r  c                  C   s  ddl m}  ddlm} td}td\}}|||t tfdtd|dtftt	dt t
|t  | dt|t  |d   |t k|tk @ t|d@ fd	t||  t |dtff}t| |d
kshJ 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)ŚFourierSeriesrA  zk nr  r3  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   rG   r   r^   rf   rq   r   rŃ   r   )r  r  rA  rm  rj  ŚforĀ   rĀ   rĆ   Śtest_issue_21758j  s,    L’
’’ž
’ ’’r  c            
      C   s   ddl m} m}m}m} td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sKJ d S )Nr   )ŚManifoldŚPatchŚCoordSystemŚBaseScalarFieldrY  T)Śrealr¶  r   ŚPŚrectrA  )rÄ  r  r  r  r  r   r   )
r  r  r  r  rA  rB  r{  r  r  rQ  rĀ   rĀ   rĆ   Śtest_diffgeom|  s   


r  c                  C   sĢ   t   ddlm}  | ddksJ W d    n1 sw   Y  t   ddlm} |ddd}W d    n1 s;w   Y  t   |j|j  krQdksTJ  J W d    d S 1 s_w   Y  d S )Nr   )Śxstrr  rų  )Ś
prettyFormr  )Śunicode)r“   Ś&sympy.printing.pretty.pretty_symbologyr  Ś sympy.printing.pretty.stringpictr  r  r  )r  r  r  rĀ   rĀ   rĆ   Śtest_deprecated_prettyForm  s   žž""’r"  r
  (¢  Ś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.   r/   r0   r1   r2   r3   r4   Śsympy.matrices.denser5   r6   Ś sympy.matrices.expressions.slicer7   rå  r8   Śsympy.polys.domains.finitefieldr9   Śsympy.polys.domains.integerringr:   Ś!sympy.polys.domains.rationalfieldr;   Śsympy.polys.domains.realfieldr<   Śsympy.polys.orderingsr=   r>   Śsympy.polys.polytoolsr?   Śsympy.polys.rootoftoolsr@   rA   Śsympy.series.formalrB   r  rC   Śsympy.series.limitsrD   Śsympy.series.orderrE   Śsympy.series.sequencesrF   rG   rH   rI   Śsympy.sets.containsrJ   r   rK   r  rL   rM   rN   rO   rP   Śsympy.codegen.astrQ   rR   rS   rT   rU   rV   Śsympy.core.exprrW   Śsympy.physics.quantum.tracerX   Śsympy.functionsrY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   rį  r   r   r   r   r   r   r   r   Śsympy.matrices.expressionsr   Śsympy.physicsr   Śsympy.physics.control.ltir   r   r   r   r   r   r   r   rC  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½   rP  rQ  r§  r  rA  rB  rO  rm  rj  r  r  rÅ   r¦  r§  rŃ   rÖ   rŲ   rÜ   rį   rå   ró   rü   r  r&  r-  rL  rS  rX  rY  r]  ra  rc  re  rf  rg  rh  ri  rn  rp  rt  rv  rx  r~  r  r  r  r  r  r  r   r”  r„  rØ  r²  r½  rĄ  rČ  rĪ  rĻ  rŃ  rÕ  rŁ  rß  rā  rć  rä  rę  rź  rļ  rņ  rõ  rų  rż  r  r  r  r  r  r  r  r  r  r  r  r  r!  r#  r&  r*  r,  r4  r5  r:  r>  rA  rI  rJ  rK  rM  rO  rP  rQ  rT  rU  rX  r[  r^  r`  ra  rj  rm  rn  ro  rp  rs  r  r  r  r  r  r  r  r  r  r  r  r”  r¢  r£  r¤  r„  r¦  r©  r«  rÆ  r²  rŗ  r¼  r¾  ræ  rĀ  rĆ  rÄ  rĒ  rČ  rĻ  rŅ  rŌ  r×  rŚ  rę  rģ  rō  rł  rś  rū  rü  r  r  r  r  r
  r  r  r  r"  rĀ   rĀ   rĀ   rĆ   Ś<module>   sģ   , ¼(($,


 -








&

   
 
%
G

:



Y

=<      

}



9
K
	
J
N

"
P
V 
r 
7
S 
5


4
.
"
9
%

 
`
 
U

$
8
	
8
-
,





\

# 


 
1

@
4




    


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