
    gy                     &   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ d dlmZ d dlmZmZ d d	l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! d dl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7m8Z8m9Z9m:Z: d dl;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZD d dlEmFZFmGZG d dlHmIZI d dlJmKZK d dlLmMZM d dlNmOZOmPZPmQZQmRZR d dlSmTZT d dlUmVZV d dlWmXZX d dlYmZZZ d d l[m\Z\ d d!l]m^Z^ d d"l_m`Z` d d#lambZb d d$lcmdZdmeZemfZfmgZg d d%lhmiZimjZjmkZkmlZl d d&lmmnZn d d'lompZp d d(lqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZy d d)lzm{Z{m|Z| d d*l}m~Z~mZmZmZmZmZmZmZmZmZmZmZ d d+lmZmZmZmZmZ d d,lmZ d d-lmZmZ d d.lmZmZ d d/lmZmZmZ d d0lmZ  e:d1          \  ZZZZZ e7d2          Zd3 Zd4 Zd5 Zd6 Zd7 Zd8 Zd9 Zd: Zd; Zd< Zd= Zd> Zd? Zd@ ZdA ZdB ZdC ZdD ZdE ZdF ZdG ZdH ZdI ZdJ ZdK ZdL ZdM ZdN ZdO ZdP ZdQ ZdR ZdS ZdT ZdU ZdV ZdW ZdX ZdY ZdZ Zd[ Zd\ Zd] Zd^ Zd_ Zd` Zda Zdb Zdc Zdd Zde Zdf Zdg Zdh Zdi Zdj Zdk Zdl Zdm Zdn Zdo Zdp Zdq Zdr Zds Zdt Zdu Zdv Zdw Zdx Zdy Zdz Zd{ Zd| Zd} Zd~ Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d Zd Zd Zd Zd Zd ZdS )    )MatAdd)
Quaternion)Q)AccumBounds)	Partition)Sum	summation)Add)DictTuple)UnevaluatedExprExpr)
DerivativeFunctionLambdaSubsWildFunction)Mul)Catalan
EulerGammaGoldenRatioTribonacciConstant)	EFloatIIntegerRationalnanoopizoo)_exp_is_pow)Pow)EqRelNe)S)DummySymbolWildsymbols)	factorial
factorial2subfactorial)Abs)exp)sqrt)cossin)	Heaviside)zeta)Integral)
EquivalentfalsetrueXor)Matrix)MatrixSymbol)Identity)MatrixSlice)SparseMatrix)factor)Limit)O)
Complement	FiniteSetIntervalSymmetricDifference)
CovarianceExpectationProbabilityVariance)RandomSymbol)import_module)TransferFunctionSeriesParallelFeedbackTransferFunctionMatrix
MIMOSeriesMIMOParallelMIMOFeedback)secondjoule)PolyrootofRootSumgroebnerringfieldZZQQZZ_IQQ_Ilexgrlex)PointCirclePolygonEllipseTriangle)	NDimArray)ArraySymbolArrayElement)raiseswarns_deprecated_sympy)sstrsstrrepr
StrPrinter)Trz	x,y,z,w,tdc                       G d dt                     } t           | t                              dk    sJ  G d dt                     } t           | t                              dk    sJ d S )Nc                       e Zd Zd ZdS )test_printmethod.<locals>.Rc                 H    d|                     | j        d                   z  S )Nzfoo(%s)r   )_printargsselfprinters     Y/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/printing/tests/test_str.py	_sympystrz%test_printmethod.<locals>.R._sympystr<   s    w~~dil;;;;    N__name__
__module____qualname__r|    r}   r{   Rrt   ;   s#        	< 	< 	< 	< 	<r}   r   zfoo(x)c                       e Zd Zd ZdS )rt   c                     dS )Nfoor   rx   s     r{   r|   z%test_printmethod.<locals>.R._sympystrA   s    5r}   Nr~   r   r}   r{   r   ztest_printmethod.<locals>.R@   s#        	 	 	 	 	r}   r   )r/   rm   x)r   s    r{   test_printmethodr   :   s    < < < < <C < < < !::!!!!    C    !::r}   c                     t          t          t                              dk    sJ t          t          t          dd                              dk    sJ t          t          t          dd                              dk    sJ d S )NzAbs(x)      1/6)strr/   r   r   r   r}   r{   test_Absr   F   sw    s1vv;;(""""s8Aq>>""##u,,,,s8B??##$$------r}   c                     t          t          t          z             dk    sJ t          t          dz             dk    sJ t          t          t          dz  z             dk    sJ t          t          ddd                    d	k    sJ t          t          dddd                    d
k    sJ t          dt          z            dk    sJ t          dt          z   t          z   t          t          z  z   t          dz  z   t          dz  z             dk    sJ t          dt          z   t          dz  dz  z   t          dz  dz  z             dk    sJ t          dt          z  dt          dz  z  z
  dz   dt          z  z             dk    sJ t          t          t          z
            dk    sJ t          dt          z
            dk    sJ t          t          dz
            dk    sJ t          t          t          z
  t          z
  t
          z
            dk    sJ t          t          t          t          dz  z  t          z  t
          z  z
            dk    sJ t          t          dt          z  t          z  t          z  z
            dk    sJ t          t          t                                        t          dd                    dk    sJ t          t          t          t
           t          d          t          t           t          d          d                    dk    sJ t          t          t          t           t           d          t           d                    dk    sJ t          t          t          t          t           t           d          t           d          t           d                    dk    sJ d S )Nzx + yr   x + 1   zx**2 + xr   Fevaluatez0 + 1z	0 + 0 + 1      ?1.0*x   zx**2 + x*y + x + y**2 + y + 5   zx**3/3 + x**2/2 + x + 1   z-7*x**2 + 2*x + 3*y + 2zx - yz2 - xzx - 2z-w + x - y - zz-w*y**2*z**2 + xz-x*y**2 + x   z^x - x**3/6 + x**5/120 - x**7/5040 + x**9/362880 - x**11/39916800 + x**13/6227020800 + O(x**15)z(-w + x) + (-y + z)z-z + (-x - y)z-t + (-z + (-x - y)))	r   r   yr
   zwr3   seriestr   r}   r{   test_Addr   L   s[   q1u::    q1u::    q1a4x==J&&&&s1a%((())W4444s1aU+++,,;;;;s1u::    q1uqy1Q3A%1,--1PPPPPq1uq!tAv~1Q&''+DDDDDqsQq!tV|a!A#%&&*CCCCCq1u::    q1u::    q1u::    q1uqy1}!11111q1QT6!8A:~"44444q1Q3q57{},,,,s1vv}}Q2&&''  ,L  L  L  L  Ls3r1u---sA2qE/J/J/JV[\\\]]avvvvvs3rA2...UCCCDDWWWWs3sA2rE222QBGGG!V[\\\]]awwwwwwwr}   c                  :    t          t                    dk    sJ d S )Nr   )r   r   r   r}   r{   test_Catalanr   b   s    w<<9$$$$$$r}   c                  :    t          t                    dk    sJ d S )Nr!   )r   r!   r   r}   r{   test_ComplexInfinityr   f       s88ur}   c                  D   t          t          t          t                              dk    sJ t          t          t          dz  t          d                    dk    sJ t          t          t          dz  t          z  t          t          d                    dk    sJ d S )NzDerivative(x, y)r   Fr   zDerivative(x**2, x)zDerivative(x**2/y, x, y))r   r   r   r   r   r}   r{   test_Derivativer   j   s    z!Q  $66666z!Q$E222337LLLLLz	1Q1u& & & ' '*DE E E E E Er}   c                  4   t          ddt          z   i          t          ddt          z   i          cxk    rdk    sn J t          t          dz  t          t          z  d          dv sJ t          t          dz  t          t          z  d          dk    sJ d S Nr   z
{1: x + 1}r   r   r   ){1: x**2, 2: x*y}z{2: x*y, 1: x**2}r   r   r   rm   r   r   r}   r{   	test_dictr   q   s    1q5z??dAq1u:..>>>>,>>>>>>1a4AaC  !!%OOOOOAqDQqS!!""&9999999r}   c                     t          t          ddt          z   i                    t          ddt          z   i          cxk    rdk    sn J t          t          t          dz  t          t          z  d                    dv sJ t          t          t          dz  t          t          z  d                    dk    sJ d S r   )r   r   r   rm   r   r   r}   r{   	test_Dictr   w   s    tQAJ  D!QU$4$4DDDDDDDDDDt11%%&&'' ,2 2 2 2 2A!A#&&''((,???????r}   c                  ~    t          t                    dk    sJ t          t          t          z             dk    sJ d S )N_dz_d + x)r   rq   r   r   r}   r{   
test_Dummyr   ~   s6    q66T>>>>q1u::!!!!!!r}   c                  :    t          t                    dk    sJ d S )Nr   )r   r   r   r}   r{   test_EulerGammar      s    z??l******r}   c                      t          t                    dk    sJ t          d          5  t          t          t                              dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   TzE**x)r   r   r"   r0   r   r   r}   r{   test_Expr      s    q66S====	T		 % %3q66{{f$$$$$% % % % % % % % % % % % % % % % % %s   (A  A$'A$c                     t          dd          } t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    d	k    sJ t          t          |                     d
k    sJ t          t          d| z                      dk    sJ t          t          t          |                               dk    sJ t          t          t          |                               dk    sJ t          t          t          |                               dk    sJ t          t          t          |                               dk    sJ t          t	          d                    dk    sJ t          t	          |                     dk    sJ t          t	          d| z                      dk    sJ d S )NnTintegerr!   r   1r   5040zfactorial(n)r   zfactorial(2*n)zfactorial(factorial(n))zfactorial(factorial2(n))zfactorial2(factorial(n))zfactorial2(factorial2(n))r   2zsubfactorial(n)zsubfactorial(2*n))r)   r   r,   r-   r.   )r   s    r{   test_factorialr      s   sD!!!Ay}}&&&&y||####y||&&&&y||....y1~~"22222y1&&''+DDDDDyA''((,FFFFFz)A,,''((,FFFFFz*Q--(())-HHHHH|A3&&&&|A#44444|AaC  !!%8888888r}   c                      t          d          }  | t                    }t          d          }t          |           dk    sJ t          |          dk    sJ t          |          dk    sJ d S )Nfr   zf(x)w_)r   r   r   r   )r   fxr   s      r{   test_Functionr      sh    A	
1BSAq66S====r77fq66T>>>>>>r}   c                  p   t          t          dd                    dk    sJ t          t          t          dd          d                    dk    sJ t          t          t          dd          dd                    dk    sJ t          t	          t          dd          t          d	d
          t          dd                              dk    sJ t          t          t          dd          t          dd          t          dd          t          dd	                              dk    sJ t          t	          t          dd          t          dd          t          dd                    d          dk    sJ t          t          t          dd          dd          d          dk    sJ d S )Nr   zPoint2D(0, 0)r   zCircle(Point2D(0, 0), 3)r   r      zEllipse(Point2D(1, 2), 3, 4)r      r   z6Triangle(Point2D(1, 1), Point2D(7, 8), Point2D(0, -1))r   r   r   zEPolygon(Point2D(5, 6), Point2D(-2, -3), Point2D(0, 0), Point2D(4, 7))Tsympy_integerszGTriangle(Point2D(S(0), S(0)), Point2D(S(1), S(0)), Point2D(S(0), S(1)))z(Ellipse(Point2D(S(1), S(2)), S(3), S(4)))rm   rc   rd   rf   rg   re   r   r}   r{   test_Geometryr      s   a////uQ{{A&&''+EEEEEaQ**++/MMMMMq!eAqkk5B<<@@AA@A A A AaU2r]]E!QKKq!MMNNOP P P Pq!eAqkk5A;;??PTUUUQR R R RaQ**4@@@23 3 3 3 3 3r}   c                  :    t          t                    dk    sJ d S )Nr   )r   r   r   r}   r{   test_GoldenRatior      s!    {},,,,,,r}   c                  
   t          t          t                              t          t          t          t          j                            cxk    rdk    sn J t          t          t          d                    dk    sJ d S )NzHeaviside(x)r   zHeaviside(x, 1))r   r4   r   r'   Halfr   r}   r{   test_Heavisider      sq    y||Ia$8$8 9 9KKKK^KKKKKKyA#4444444r}   c                  :    t          t                    dk    sJ d S )Nr   )r   r   r   r}   r{   test_TribonacciConstantr      s#    !""&:::::::r}   c                  :    t          t                    dk    sJ d S )Nr   )r   r   r   r}   r{   test_ImaginaryUnitr      s    q66S======r}   c                  ~    t          t                    dk    sJ t          t          t          z            dk    sJ d S )Nr   oo*I)r   r   r   r   r}   r{   test_Infinityr      s6    r77d????r!t99r}   c                  Z   t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          d	                    d
k    sJ d S )Nr   -1r   r   r   z-3r   0   25)r   r   r   r}   r{   test_Integerr      s    wr{{t####wqzz??c!!!!wr{{t####wqzz??c!!!!wr{{t######r}   c                      t          t          t          t                    t                              dk    sJ t          t          t          t                    t          ddf                    dk    sJ d S )NzIntegral(sin(x), y)r   r   zIntegral(sin(x), (y, 0, 1)))r   r6   r3   r   r   r   r}   r{   test_Integralr      sb    xA""##'<<<<<xAAq	**++/LLLLLLLr}   c            
      R   t           j        ddt           j        f} t          t	          |                     D ]o}t          |dz   t	          |                     D ]L}dD ]G}dD ]B}t          | |         | |         ||          }t          t          |                    |k    sJ CHMpd S )Nr   r   )TF)r'   NegativeInfinityInfinityrangelenrE   r   )r   ijlrivals         r{   test_Intervalr      s    	
	Q1:.A3q66]] 0 0q1uc!ff%% 	0 	0A" 0 0& 0 0A#AaD!A$155DSYY<<4/////00	00 0r}   c                      t          dd          } t          t          d|                     dk    sJ t          t          dd                    dk    sJ d S )NaTrealr   zAccumBounds(0, a)r   zAccumBounds(0, 1))r)   r   r   )r   s    r{   test_AccumBoundsr      sb    sA{1a  !!%88888{1a  !!%8888888r}   c                     t          t          t          t          dz                      dk    sJ t          t          dd                    dk    sJ t          t          dt                              dk    sJ t          t          t          t          ft          t          z                       dk    sJ t          t          t          t          fft          t          z                       dk    sJ d S )	Nr   zLambda(_d, _d**2)r   r   zLambda((), 1)zLambda((), x)zLambda((x, y), x + y)zLambda(((x, y),), x + y))r   r   rq   r   r   r   r}   r{   test_Lambdar      s    vaA#66666vb!}}0000vb!}}0000vq!fac""##'>>>>>v1vi1%%&&*DDDDDDDr}   c                     t          t          t          t                    t          z  t          t                              dk    sJ t          t          dt          z  t          d                    dk    sJ t          t          t          t                    t          z  t          t          d                    dk    sJ d S )NzLimit(sin(x)/x, x, y, dir='+')r   r   zLimit(1/x, x, 0, dir='+')-)dirzLimit(sin(x)/x, x, y, dir='-'))r   rA   r3   r   r   r   r}   r{   
test_Limitr      s    uSVVAXq!$$%%)IIIIIuQqS!Q  $?????c!ffQh1#&&&( (+KL L L L L Lr}   c                     t          t          g          t          t          g          cxk    rdk    sn J t          t          dz  t          t          z  dz   g          t          t          dz  t          t          z  dz   g          cxk    rdk    sn J t          t          dz  t          t          z   gg          t          t          dz  t          t          z   gg          cxk    rdk    sn J d S )Nz[x]r   r   z[x**2, x*y + 1]z[x**2, [x + y]]r   r   r}   r{   	test_listr      s    s88tQCyy))))E))))))1acAg4AqsQw#8#8MMMM<MMMMMMM1q1ug4AAw#8#8MMMM<MMMMMMMMMr}   c                     t          t          dz  dgt          t          t          z   gg          } t          |           dk    sJ t	          |           dk    sJ t          dgg          } t          |           t	          |           cxk    rdk    sn J t          ddgg          } t          |           t	          |           cxk    rdk    sn J t                      } t          |           t	          |           cxk    rdk    sn J t          ddd	           } t          |           t	          |           cxk    rd
k    sn J d S )Nr   Matrix([[x, 1], [y, x + y]])!Matrix([
[x,     1],
[y, x + y]])zMatrix([[1]])r   zMatrix([[1, 2]])zMatrix(0, 0, [])r   c                     dS )Nr   r   )r   r   s     r{   <lambda>z!test_Matrix_str.<locals>.<lambda>  s    ! r}   zMatrix(0, 1, []))r;   r   r   r   rm   Ms    r{   test_Matrix_strr      s_   B
QAJ'((Aq663333377;;;;;uAq66T!WW//////////AxAq66T!WW3333!3333333Aq66T!WW2222 2222222q!^^$$Aq66T!WW2222 222222222r}   c                     t          t          t          z            dk    sJ t          t          t          z            dk    sJ t          t          t          z  t          z            dk    sJ t          t          dz   t          dz   z            dk    sJ t          dt          z  dz            dk    sJ t          d	t          z  dz            d
k    sJ t          dt          z            dk    sJ t          dt          z            dk    sJ t          t	          ddd                    dk    sJ t          t	          ddd                    dk    sJ t          t	          ddd                    dk    sJ t          t	          dddd                    dk    sJ t          t	          ddd                    dk    sJ t          t	          dt
          j        d                    dk    sJ t          t	          ddt
          j        d                    dk    sJ t          t	          ddddt          d                    dk    sJ t          t	          ddd                    dk    sJ t          t	          ddd                    dk    sJ t          t	          dddddt          t          d                    dk    sJ t          t	          ddddt          z   dt          t          d                    dk    sJ t          t	          t          dd          t          d d!          d                    d"k    sJ t          t	          d	t          t          t	          t          t          d          dd          d                    d#k    sJ t          t	          t          t          dt          z  dd          d                    d$k    sJ ddl	m
}   | d          5  t          t	          t          t          d          t          d                    t          t          d          t	          t          d          t          d                                                  d%k    sJ 	 d d d            n# 1 swxY w Y    G d& d't                    } G d( d)t                    } |            } |            }t          t          d          |z            d*k    sJ t          |t          d          z            d*k    sJ t          |t          d+          z            d,k    sJ t          |t          d          z            d-k    sJ t          |t          d          z  |z            d.k    sJ t          |t          d          z  |z            d.k    sJ d S )/Nzx/yzy/xzx/(y*z)r   r   z(x + 1)/(y + 2)r   z2*x/3r   z-2*x/3      z-1.0*xr   r   r   Fr   z0*1z1*0z1*1z1*1*1z1*2z1*(1/2)z	1*1*(1/2)z	1*1*2*3*xr   z1*(-1)z-1*1r   z4*3*2*1*0*y*xz4*3*2*(z + 1)*0*y*xr   r   z(2/3)*(5/7)z
-2*x/(y*y)zx/(1/y)z(-1 - 1*1)/2c                       e Zd ZdZdS )test_Mul.<locals>.CustomClass1TNr   r   r   is_commutativer   r}   r{   CustomClass1r  ,          r}   r  c                       e Zd ZdZdS )test_Mul.<locals>.CustomClass2TNr  r   r}   r{   CustomClass2r	  /  r  r}   r
  z2*CustomClass1()z1.5z1.5*CustomClass1()z2*CustomClass2()z2*CustomClass1()*CustomClass2())r   r   r   r   r   r'   r   r   r#   sympy.core.parametersr   r   r
   r   r   )r   r  r
  cc1cc2s        r{   test_Mulr    s   qs88uqs88uqs1u::""""AA#44444qs1u::    r!tAv;;(""""tAv;;(""""s1u::    s1a%((())U2222s1a%((())U2222s1a%((())U2222s1aU+++,,7777s1a%((())U2222s1afu---..);;;;s1a%00011[@@@@s1aAq511122kAAAAs1b5)))**h6666s2q5)))**f4444s1aAq!Q77788OKKKKs1aAaCAq5999::>SSSSSs8Aq>>8Aq>>EBBBCC}TTTTs2q#c!Au555rEJJJ9>@ @ @ A ADPQ Q Q Q s1c!A#rE222UCCCDD	QQQQ /.....	% x x3s71::wr{{33Sc'RT++W^_`WaWaFbFb5c5cddeeiwwwwwwx x x x x x x x x x x x x x x    t       t   
,..C
,..Cx{{3#55555s8A;;#55555s5<<  $88888s8A;;#55555s8A;;s"##'HHHHHs8A;;s"##'HHHHHHHs   :BRRRc                  :    t          t                    dk    sJ d S )Nr   )r   r   r   r}   r{   test_NaNr  ;  r   r}   c                  <    t          t                     dk    sJ d S )Nz-oo)r   r   r   r}   r{   test_NegativeInfinityr  ?  s!    s88ur}   c                  t   t          t          t                              dk    sJ t          t          t          dz                      dk    sJ t          t          t          t          z                      dk    sJ t          t          t          t                              dk    sJ t          t          t          t          df                    dk    sJ t          t          t          t          t          f                    dk    sJ t          t          t          t          t                              dk    sJ t          t          t          t          t                              dk    sJ t          t          t          t          t          ft          t          f                    dk    sJ d S )	NzO(x)r   zO(x**2)zO(x*y, x, y)r   zO(x, (x, oo))z
O(x, x, y)zO(x, (x, oo), (y, oo)))r   rB   r   r   r   r   r}   r{   
test_Orderr  B  s@   qtt99qAww<<9$$$$q1vv;;.((((qAww<<6!!!!qQF||&&&&qQG}}0000qAqzz??l****qAqzz??l****qQGaW%%&&*BBBBBBBr}   c                     ddl m} m}  |            df |d          df |dd          df    |dd          d          d	d
          d          df   |dd          dd          dd          dffD ]\  }}t          |          |k    sJ  | g           df | g d          df | g d          df | g d          df | g d          df | g d          df | g dd          dffD ]\  }}t          |d          |k    sJ  | g           df | g d          df | g d          df | g d          df | g d          df | g d          d f | g dd          d!f | g d"d          d#ffD ]\  }}t          |          |k    sJ t	                      5  | j        }d| _        t           | g d                    dk    sJ || _        d d d            d S # 1 swxY w Y   d S )$Nr   )PermutationCyclez()r   z(2)r   z(1 2)r   r   r   
   z(1 2)(6 7)(10)r   r   z(1 2)(4)zPermutation([]))sizezPermutation([0])zPermutation([0, 1])zPermutation([], size=10))r   r   r   zPermutation([1, 0, 2]))r   r   r   r   r   r   zPermutation([1, 0], size=6)zPermutation([1, 0], size=10)F)perm_cyclicz(0)z(1)z(9)z(2)(0 1)z(5)(0 1)z(9)(0 1))r   r   r   r   r   r   z(9)(2 3))sympy.combinatoricsr  r  rm   rl   print_cyclic)r  r  psold_print_cyclics        r{   test_Permutation_Cycler   N  s   66666666 
		q		q!		q!Q1		b	!	!		q!Q		1a	 	 	  1 Aww!||||| 
R		Ra	 	 	 		Ra	 	 	 		Rb	!	!	!"	$	YYY		 	"	'''	(	(%	'	'''b	1	1	1&	( / /1  A5)))Q..... 
R		Ra	 	 	 		Ra	 	 	 		Rb	!	!	!		YYY				'''	(	(		'''b	1	1	1		'''b	1	1	1	  1$ Aww!||||| 
 	!	! 4 4&3#( KK			**++/GGGGG#3 	4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s   26G55G9<G9c                  :    t          t                    dk    sJ d S )Nr    )r   r    r   r}   r{   test_Pir"    s    r77d??????r}   c                  |
   t          t          dt                              dk    sJ t          t          dt                              dk    sJ t          t          t          t                              dk    sJ t          t          dt          z  dz   t                              dk    sJ t          t          dt          z  dz
  t                              dk    sJ t          t          d	t                              d
k    sJ t          t          t           t                              dk    sJ t          t          dt          z  dz   t                              dk    sJ t          t          dt          z  dz
  t                              dk    sJ t          t          t          dz
  t                              dk    sJ t          t          dt          z  t          dz  z   t                              dk    sJ t          t          ddt          z  z  dt          z                      dk    sJ t          t          t          dz  t          z                      dk    sJ t          t          t          t          z   dz  t          t          z   d                    dk    sJ t          t          t          dz
  dz  t          dz
  d                    dk    sJ t          t          t          dz  dz   t          z   t                              dk    sJ t          t          t          dz  dz
  t          z   t                              dk    sJ t          t          t          dz  t          t          z  z   t                              dk    sJ t          t          t          dz  t          t          z  z
  t                              dk    sJ t          t          t           t          z  t
          z  t          t          z  z   dz
  t          t          t
                              dk    sJ t          t          t           t          dz  z  t          dz  z  t
          z  dt          z   t
          dz  z  z   dt          z  t
          z  z
  dz   t          t          t
                              d k    sJ t          t          t          dz  dz   t          d!                    d"k    sJ t          t          dt          dz  z  dt          z  z   d#z   t          d$!                    d%k    sJ d S )&Nr   zPoly(0, x, domain='ZZ')r   zPoly(1, x, domain='ZZ')zPoly(x, x, domain='ZZ')r   zPoly(2*x + 1, x, domain='ZZ')zPoly(2*x - 1, x, domain='ZZ')r   zPoly(-1, x, domain='ZZ')zPoly(-x, x, domain='ZZ')r   zPoly(-2*x + 1, x, domain='ZZ')zPoly(-2*x - 1, x, domain='ZZ')zPoly(x - 1, x, domain='ZZ')r   z Poly(x**5 + 2*x, x, domain='ZZ')r   z"Poly((3**x)**2, 3**x, domain='ZZ')z)Poly(((x**2)**x), (x**2)**x, domain='ZZ')F)expandz$Poly((x + y)**3, x + y, domain='ZZ')z$Poly((x - 1)**2, x - 1, domain='ZZ')z%Poly(x**2 + y + 1, x, domain='ZZ[y]')z%Poly(x**2 + y - 1, x, domain='ZZ[y]')z"Poly(x**2 + I*x, x, domain='ZZ_I')z"Poly(x**2 - I*x, x, domain='ZZ_I')z,Poly(-x*y*z + x*y - 1, x, y, z, domain='ZZ')   r   zIPoly(-w*x**21*y**7*z - 2*x*z + (w + 1)*z**3 + 1, x, y, z, domain='ZZ[w]'))moduluszPoly(x**2 + 1, x, modulus=2)r      z%Poly(2*x**2 + 3*x + 4, x, modulus=17))r   rW   r   r   r   r   r   r   r}   r{   	test_Polyr(    s   tAqzz??77777tAqzz??77777tAqzz??77777tAaC!GQ  $CCCCCtAaC!GQ  $CCCCCtB{{99999tQB{{99999tBqD1Ha  !!%EEEEEtBqD1Ha  !!%EEEEEtAE1~~"?????tAaC!Q$J""##'IIIIItA!Had##$$(LLLLLtQTAI#NNNNNtQUQJQ666  ;< < < <tQUQJQ666  ;< < < < QTAX\1 "IJ J J JQTAX\1 "IJ J J J tAqD1Q3J""##'KKKKKtAqD1Q3J""##'KKKKKtQBqDFQqSL1$aA..  BC C C CtQBq"uHQTM!Oq1uadl2QqSU:Q>1aHHIIST T T T tAqD1Ha+++,,0NNNNNtAadFQqSL1$a444559```````r}   c                  J   t          t          dt          t                    d                   dk    sJ t          t          dt          t
                    d                   dk    sJ t          t          dt          d         t                    d                   dk    sJ d S )	Nr   r   z+Polynomial ring in x over ZZ with lex orderx,yz0Polynomial ring in x, y over QQ with grlex orderx,y,zr   z4Polynomial ring in x, y, z over ZZ[t] with lex order)r   r[   r]   ra   r^   rb   r   r}   r{   test_PolyRingr,    s    tCS!!!$%%)VVVVVtE2u%%a())-_____tGRWc**1-..2hhhhhhhr}   c                  J   t          t          dt          t                    d                   dk    sJ t          t          dt          t
                    d                   dk    sJ t          t          dt          d         t                    d                   dk    sJ d S )	Nr   r   z3Rational function field in x over ZZ with lex orderr*  z8Rational function field in x, y over QQ with grlex orderr+  r   z<Rational function field in x, y, z over ZZ[t] with lex order)r   r\   r]   ra   r^   rb   r   r}   r{   test_FracFieldr.    s    uS"c""1%&&*_____uUB&&q)**.hhhhhuWbgs++A.//3qqqqqqqr}   c                     t          dt                    \  } }}t          d|           \  }}}}t          dt                    \  }}t          ||z
            dk    sJ t          |dz
            dk    sJ t          |dz             dk    sJ t          |dz            d	k    sJ t          |d
z            dk    sJ t          |t	          dd          z            dk    sJ t          |dz  d|z  |z  z   dz   |dz  z  |z  |z   dz             dk    sJ t          |dz  d|z  |z  z   dz   |dz  z  |z  |dz   |z  z             dk    sJ t          |dz  d|z  |z  z   dz   |dz  z  |z  |dz   |z  z   dz             dk    sJ t          |dz   d|z  |z  z   dz
  |dz  z  |z  |dz   |z  z
  dz
            dk    sJ t          |dz  |z   dz    |z  d|z  |z  z   dz             dk    sJ t          |dz  |z   dz    |z  d|z  |z  z
  dz             dk    sJ t          dt
          z   |z  dz             dk    sJ d S )Nu,vr+  r   r   r   x - 1r   r   x**2r   x**(-2)zx**(1/2)r   z!(u**2 + 3*u*v + 1)*x**2*y + u + 1z%(u**2 + 3*u*v + 1)*x**2*y + (u + 1)*xz)(u**2 + 3*u*v + 1)*x**2*y + (u + 1)*x + 1z*-(u**2 - 3*u*v + 1)*x**2*y - (u + 1)*x - 1z-(v**2 + v + 1)*x + 3*u*v + 1z-(v**2 + v + 1)*x - 3*u*v + 1z(1 + 1*I)*x + (2 + 0*I))r[   r]   r_   r   r^   r   )	RuvuvRxyzr   r   r   Rx_zzixzs	            r{   test_PolyElementr:    s   E2HC1w$$KD!Aac4JFBq1u::q1u::    q1u::    q!t99q2w<<9$$$$q"Q(({z))))1qs1uq !Q$&q(1,q0115XXXXX1qs1uq !Q$&q(AE194559`````1qs1uq !Q$&q(AE194q899=hhhhhA!A!1a4')QUAI59::>jjjjjAAq 1Q3q5(1,--1PPPPPAAq 1Q3q5(1,--1PPPPP!Rx!| 9999999r}   c                     t          dt                    \  } }}t          d|           \  }}}}}t          dt                    \  }}	t          dd          }
t          ||z
            dk    sJ t          |dz
            dk    sJ t          |dz             dk    sJ t          |d	z            d
k    sJ t          ||z            dk    sJ t          ||z  |z            dk    sJ t          |||z  z            dk    sJ t          ||z  ||z  z            dk    sJ t          |dz
  |z            dk    sJ t          |dz   |z            dk    sJ t          | dz
  |z            dk    sJ t          |dz   ||z  z            dk    sJ t          | |dz   z            dk    sJ t          ||z  |dz   z            dk    sJ t          |dz   |z  |z  dz   |dz
  |z  dz
  z            dk    sJ t          |dz   |z  |z  dz   |dz
  |z  ||z  |z  z
  dz
  z            dk    sJ t          d|
z   |	z            dk    sJ t          d|
z   |	z  |
z
  |	z            dk    sJ d S )Nr0  zx,y,z,tr   r   r   r   r1  r   r   zx/3zx/zzx*y/zzx/(z*t)z	x*y/(z*t)z	(x - 1)/yz	(x + 1)/yz
(-x - 1)/yz(x + 1)/(y*z)z
-y/(x + 1)zy*z/(x + 1)z!((u + 1)*x*y + 1)/((v - 1)*z - 1)z)((u + 1)*x*y + 1)/((v - 1)*z - u*v*t - 1)z(1 + 1*I)/xz((1 + 1*I)*x + (0 + -1*I))/x)r\   r]   r`   r   )Fuvr5  r6  Fxyztr   r   r   r   r8  r9  r   s              r{   test_FracElementr>    s   UBHC19c**NE1QqsD!!JFBQ

Aq1u::q1u::    q1u::    qs88uqs88uqs1u::    q!A#w<<9$$$$qsAaCy>>[((((Aqy>>[((((Aqy>>[((((Qz??l****A!}0000r1q5z??l****qsAE{},,,,Q	!a1q5!)a-0115XXXXXQ	!a1q5!)ac!e"3a"7899=hhhhh!Rx==M))))1b1b !!%CCCCCCCr}   c                  |   t          t          dd                    dk    sJ t          t          dd                    dk    sJ t          t          dd                    dk    sJ t          t          dd                    dk    sJ t          t          dd                    d	k    sJ t          t          dd
                    dk    sJ t          t          dd                    dk    sJ t          t          dd                    dk    sJ t          t          dd
                    dk    sJ d S )Nr   r   r   r   r   r   z-Ir   z2*Ir   z-2*Iz1 + Iz-1 - Iz-1 - 2*I)r   r_   r   r}   r{   test_GaussianIntegerr@    s)   tAqzz??c!!!!tB{{t####tAqzz??c!!!!tAr{{t####tAqzz??e####tAr{{v%%%%tAqzz??g%%%%tB||((((tB||
******r}   c            	         t          t          dd                    dk    sJ t          t          t          dd          d                    dk    sJ t          t          dt          dd                              dk    sJ t          t          t          dd          t          dd                              d	k    sJ d S )
Nr   r   r   r   r   z2/3z2*I/3r   z1/2 - 2*I/3)r   r`   r^   r   r}   r{   test_GaussianRationalrB  
  s    tAqzz??c!!!!tBq!HHa  !!U****tAr!Qxx  !!W,,,,tBq!HHbQii(())]::::::r}   c                     t          t          dz            dk    sJ t          t          dz            dk    sJ t          t          dz            dk    sJ t          t          t          z   dz            dk    sJ t          t          t          z   dz            dk    sJ t          t          t          z   dz            d	k    sJ t          t          t          z   d
t          z   z            dk    sJ t          t          t          d
d          z            dk    sJ t          d
t          t          d
d          z  z            dk    sJ t          t	          t	          t                                        dk    sJ t          t          dz            dk    sJ t          t          t          d          dd                    dk    sJ d S )Nr   z1/xr   r3  r   r2  z	1/(x + y)z(x + y)**(-2)z
(x + y)**2r   z(x + y)**(x + 1)r   zx**(1/3)z	x**(-1/3)zx**(1/4)r  z	x**(-1.0)Fr   z	2**(-1.0))r   r   r   r   r1   r#   r'   r   r}   r{   test_PowrD    s   q"u::q"u::""""q!t99A{{****A{....Az??l****AQ  $66666q(1a.. !!Z////qHQNN""##{2222tDGG}}++++q$w<<;&&&&s1Q44...//;>>>>>>r}   c                  .   t          t          t                              dk    sJ t          t          t          dz                      dk    sJ t          dt          t                    z            dk    sJ t          dt          t          dz            z            dk    sJ t          t          t          t                    z            dk    sJ t          t          dz            d	k    sJ t          dt          dz  z            d
k    sJ d S )Nzsqrt(x)r   z
sqrt(x**2)r   z	1/sqrt(x)z1/sqrt(x**2)z	y/sqrt(x)g      ?zx**0.5z	x**(-0.5))r   r1   r   r   r   r}   r{   	test_sqrtrF  "  s    tAww<<9$$$$tAqDzz??l****qay>>[((((qad|....qay>>[((((q#v;;(""""qCx==K''''''r}   c            
         t          dd          } t          dd          }t          dd          }t          dd          }t          d          }t          d          }t          d          }t          | |z            dk    sJ t          | |z            dk    sJ t          |          d	k    sJ t          | |z            d
k    sJ t          | |z             dk    sJ t          | |z             dk    sJ t          | |z             dk    sJ t          ||z            dk    sJ t          ||z             dk    sJ t          ||z             dk    sJ t          ||z            dk    sJ t          ||z             dk    sJ t          | |z            dk    sJ t          ||z            dk    sJ t          ||z            dk    sJ t          ||z            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                    dk    sJ t          t          dd                    d k    sJ t          t          d!d                    d"k    sJ t          t          d#d                    d$k    sJ t          t          d%d                    d&k    sJ t          t          t          dd                              d	k    sJ t          t          t          dd'                              d(k    sJ t          d)d*z  t          dd*          z            d+k    sJ t          d)d*z  dz   t          dd*          z            d+k    sJ t          d)d*z  dz
  t          dd*          z            d+k    sJ t          d)d*z  dz
  t          dd*          z            d,k    sJ t          t          t          d-d'                    dz            d.k    sJ t          dt          t          d-d'                    dz  z            d/k    sJ t          t          d                    t          dt          z            k    sJ t          dt          dd0          z            d1k    sJ t          t          dd          d23          d4k    sJ t          d5          }t          |t          dd          z  d23          d6k    sJ t          t          |t          dd                    d23          d7k    sJ t          t          ||t          d8d                    d23          d9k    sJ d S ):Nr   r   r   r   r   r   z1/12z1/2z1/8z3/4z7/12z-1/4z1/4z-1/6z-1/2r   z1/64z1/2727z-25z1.25z5/4z-2.6e-2z-13/500z25/7z-123/569z0.1[23])rationalz61/495z5.1[666]z31/6z	-5.1[666]z-31/6z0.[9]r   z-0.[9]r   $   r   {   r   123122Q   z27/8z8/27l    d(	 z2**(1/10000000000)Tr   zS(2)/3r   zx**(S(2)/3)zEq(x, S(2)/3)r   zLimit(x, x, S(7)/2, dir='+'))	r   r   r'   r1   r   rm   r)   r$   rA   )n1n2n3n4n5n7n8r   s           r{   test_RationalrW  ,  s   	!QB	!QB	!QB	!RB	!B	!B	"Br"u::r"u::r77er"u::rBw<<5    rBw<<6!!!!rBw<<6!!!!r"u::rBw<<6!!!!rBw<<6!!!!r"u::rBw<<3r2v;;&    r2v;;&    r2v;;$r2v;;&    x5((((x  E))))x	""##y0000qyy>>V####q}}++++qQ'''((H4444qa((())V3333qq)))**g5555q1%%%&&#----qA&&&''4////tHQNN##$$----tHQOO$$%%....RHQOO+,,5555R!hq"oo-..%7777R!hq"oo-..%7777R!hq"oo-..%7777tHR$$%%q())V3333qhr2&&''**++v5555tBxx==C!HH$$$$q(1f%%%&&*>>>>>At444@@@@sA8Aq>>!$777=HHHH1hq!nn%%d;;;NNNNaHQNN++DAAA&' ' ' ' ' 'r}   c                     t          t          dd                    dk    sJ t          t          dd                    dk    sJ t          t          dd                    dk    sJ t          t          j        d                    dk    sJ t          t          j        d	                    d
k    sJ t          t          j        d                    dk    sJ t          t          j        d                    dk    sJ t          t          dz  t          dz                      d          z
                      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          ddd          dk    sJ t          t          d          dd          dk    sJ d S )Nz1.23r   )dpsz
1.23456789	   z1.234567890123456789   z3.14r   z3.14159265358979A   zB3.1415926535897932384626433832795028841971693993751058209749445923r   z0.0i  r   r   z-0.e+88100Fr   )	full_precminmaxz1.0e+2z100.0z0.1z0.099)r_  r`  z9.90000000000000e-2)r   r   r    evalfroundr   rm   r   r}   r{   
test_Floatrc  e  s   uV'''((F2222u\u---..,>>>>$&1113 36LM M M Mrx6))))rx  $66666rx   &J K K K Krx||%%%%C2s7//!,,,//2233y@@@@e21===IIIIe21===HHHHe21===FFFFgBA...2GGGGGGGr}   c                  "   t          t          t          t          d                    dk    sJ t          t          t          t          z   t          d                    dk    sJ t          t          t          t          d                    dk    sJ t          t	          t          d          t	          t          d          z            d	k    sJ t          t          t          d          t          t          d          z            d
k    sJ d S )N<zx < yz==zEq(x + y, y)z!=zNe(x, y)r   r   zEq(x, 1) | Eq(x, 2)zNe(x, 1) & Ne(x, 2))r   r%   r   r   r$   r&   r   r}   r{   test_Relationalrf  w  s    s1a~~'))))s1q5!T""##~5555s1a:----r!Qxx"Q(("##'<<<<<r!Qxx"Q(("##'<<<<<<<r}   c                      t          t          j        t          t                              dk    sJ t          t          j        t          t                              dk    sJ d S )Nz
Q.eq(x, y)z
Q.ne(x, y))r   r   eqr   r   ner   r}   r{   test_AppliedBinaryRelationrj    sJ    qtAqzz??l****qtAqzz??l******r}   c                  x    t          t          t          dz  dt          z  z   dz
  d                    dk    sJ d S )Nr   r   r   r   zCRootOf(x**5 + 2*x - 1, 0))r   rX   r   r   r}   r{   test_CRootOfrl    s<    vadQqSj1na(())-IIIIIIIr}   c            
      0   t           dz  dt           z  z   dz
  } t          t          | t          t          t                    d                    dk    sJ t          t          | t          t          t          dz            d                    dk    sJ d S )Nr   r   r   F)autozRootSum(x**5 + 2*x - 1)z(RootSum(x**5 + 2*x - 1, Lambda(z, z**2)))r   r   rY   r   r   )r   s    r{   test_RootSumro    s    	1qs
QA6!Q<<e,,,. .1JK K K Kwq&	1a4     "LM M M M M Mr}   c                  r   t          t          g t          t                              dk    sJ t          dz  dt          z  z
  t          z
  dz   t          dz  dt          z  z
  t          z   dz
  g} t          t          | d                    dk    sJ t          t          | d                    d	k    sJ d S )
Nz1GroebnerBasis([], x, y, domain='ZZ', order='lex')r   r   r   rb   )orderzYGroebnerBasis([x**2 - x - 3*y + 1, y**2 - 2*x + y - 1], x, y, domain='ZZ', order='grlex')ra   zfGroebnerBasis([2*x - y**2 - y + 1, y**4 + 2*y**3 - 3*y**2 - 16*y + 7], x, y, domain='ZZ', order='lex'))r   rZ   r   r   )Fs    r{   test_GroebnerBasisrs    s    x
Aq   IJ J J J 
A!a!	QTAaCZ!^a/0Ax)))**cd d d dx'''((pq q q q q qr}   c            
      h   t          t                                dk    sJ t          t                                dk    sJ t          dh          dk    sJ t          t          dg                    dk    sJ t          h d          dk    sJ t          t          g d                    d	k    sJ t          dt          t          d
z  t          dz  t          dz  h          dk    sJ t          t          dt          t          d
z  t          dz  t          dz  g                    dk    sJ d S )Nzset()zfrozenset()r   z{1}zfrozenset({1})>   r   r   r   z	{1, 2, 3})r   r   r   zfrozenset({1, 2, 3})r   r   r   z{1, x, x**2, x**3, x**4}z#frozenset({1, x, x**2, x**3, x**4}))rm   set	frozensetr   r   r}   r{   test_setrw    sN   ;;'!!!!	----99	1##33333			??k))))	)))$$%%)?????	
Aq!tQT1a4 " "%?@ @ @ @1aAq!tQT*++- -0UV V V V V Vr}   c                      t          t          dz  dgt          t          t          z   gg          } t          |           dk    sJ t	          |           dk    sJ d S )Nr   r   r   )r?   r   r   r   rm   r   s    r{   test_SparseMatrixry    sZ    q"uaj1a!e*-..Aq663333377;;;;;;;r}   c            	      "   t          t          t          dt          z            t          t          t
          f                    dk    sJ t          t          t          t
          dz  z  t          ddft
          ddf                    dk    sJ d S )Nr   zSum(cos(3*z), (z, x, y))r   r   r   z#Sum(x*y**2, (x, -2, 2), (y, -5, 5)))r   r	   r2   r   r   r   r   r   r}   r{   test_Sumr|    s    yQqSAq!9--..2LLLLLs1QT6Ar1:2qz2233-. . . . . .r}   c                      t          t                    dk    sJ t          t                    dk    sJ t          } t          |           dk    sJ d S )Nr   r   )r   r   r   es    r{   test_Symbolr    sD    q66S====q66S====	Aq66S======r}   c                      t          t          f          t          t          f          cxk    rdk    sn J t          t          t          z   dt          z   f          t          t          t          z   dt          z   f          cxk    rdk    sn J t          t          t          z   dt          z   t          dz  ff          t          t          t          z   dt          z   t          dz  ff          cxk    rdk    sn J d S )Nz(x,)r   z(x + y, x + 1)r   z(x + y, (x + 1, x**2))r   r   r}   r{   
test_tupler    s   t99aT

,,,,f,,,,,,Aq1u~$Aq1u~"6"6JJJJ:JJJJJJJA	Aq!t   AAq!t}566S S S S:RS S S S S S S Sr}   c                  d   t          t          t          dz  z  t          z
  t          dz  t          dz  z
  t                    } t          t          t          z
  t          t          z   t                    }t          t          t          dz  z  t          t
          z  t          z  z
  t
          z   t          t          z
  t                    }t          t          | |                    dk    sJ t          t          | ||                    dk    sJ t          t          | |                     dk    sJ d S )Nr   r   zXSeries(TransferFunction(x*y**2 - z, -t**3 + y**3, y), TransferFunction(x - y, x + y, y))zSeries(TransferFunction(x*y**2 - z, -t**3 + y**3, y), TransferFunction(x - y, x + y, y), TransferFunction(t*x**2 - t**w*x + w, t - y, y))zYSeries(TransferFunction(-x + y, x + y, y), TransferFunction(x*y**2 - z, -t**3 + y**3, y)))rM   r   r   r   r   r   r   rN   tf1tf2tf3s      r{   test_Series_strr    s   
1QT6A:q!tad{A
6
6C
1q5!a%
+
+C
1QT6AqDF?Q.Aq
9
9Cvc3  bc c c cvc3$$%% 	TT T T TvsdC  !!cd d d d d dr}   c                     t          t          t          dz  z  t          z
  t          dz  t          dz  z
  t                    } t          t          t          z
  t          t          z   t                    }t          | |g|| gg          }t          || g| |gg          }t          t          ||                    dk    sJ d S )Nr   r   a  MIMOSeries(TransferFunctionMatrix(((TransferFunction(x*y**2 - z, -t**3 + y**3, y), TransferFunction(x - y, x + y, y)), (TransferFunction(x - y, x + y, y), TransferFunction(x*y**2 - z, -t**3 + y**3, y)))), TransferFunctionMatrix(((TransferFunction(x - y, x + y, y), TransferFunction(x*y**2 - z, -t**3 + y**3, y)), (TransferFunction(x*y**2 - z, -t**3 + y**3, y), TransferFunction(x - y, x + y, y))))))rM   r   r   r   r   rQ   r   rR   r  r  tfm_1tfm_2s       r{   test_MIMOSeries_strr    s    
1QT6A:q!tad{A
6
6C
1q5!a%
+
+C"S#Jc
#;<<E"S#Jc
#;<<Ez%''((	ll l l l l lr}   c                  ~   t          t          dz
  t          dz   t                    } t          |           dk    sJ t          t          dz   dt          z
  t                    }t          |          dk    sJ t          t          t          dz  dt          z  z   dz   t                    }t          |          dk    sJ d S )Nr   z!TransferFunction(x - 1, x + 1, x)r   z!TransferFunction(x + 1, 2 - y, x)r   z&TransferFunction(y, y**2 + 2*y + 3, y))rM   r   r   r   r  s      r{   test_TransferFunction_strr    s    
1q5!a%
+
+Cs88:::::
1q5!a%
+
+Cs88:::::
1adQqSj1na
0
0Cs88???????r}   c                  d   t          t          t          dz  z  t          z
  t          dz  t          dz  z
  t                    } t          t          t          z
  t          t          z   t                    }t          t          t          dz  z  t          t
          z  t          z  z
  t
          z   t          t          z
  t                    }t          t          | |                    dk    sJ t          t          | ||                    dk    sJ t          t          | |                     dk    sJ d S )Nr   r   zZParallel(TransferFunction(x*y**2 - z, -t**3 + y**3, y), TransferFunction(x - y, x + y, y))zParallel(TransferFunction(x*y**2 - z, -t**3 + y**3, y), TransferFunction(x - y, x + y, y), TransferFunction(t*x**2 - t**w*x + w, t - y, y))z[Parallel(TransferFunction(-x + y, x + y, y), TransferFunction(x*y**2 - z, -t**3 + y**3, y)))rM   r   r   r   r   r   r   rO   r  s      r{   test_Parallel_strr    s   
1QT6A:q!tad{A
6
6C
1q5!a%
+
+C
1QT6AqDF?Q.Aq
9
9CxS!!""de e e exS#&&'' 	VV V V Vxc""##ef f f f f fr}   c                     t          t          t          dz  z  t          z
  t          dz  t          dz  z
  t                    } t          t          t          z
  t          t          z   t                    }t          | |g|| gg          }t          || g| |gg          }t          t          ||                    dk    sJ d S )Nr   r   a  MIMOParallel(TransferFunctionMatrix(((TransferFunction(x*y**2 - z, -t**3 + y**3, y), TransferFunction(x - y, x + y, y)), (TransferFunction(x - y, x + y, y), TransferFunction(x*y**2 - z, -t**3 + y**3, y)))), TransferFunctionMatrix(((TransferFunction(x - y, x + y, y), TransferFunction(x*y**2 - z, -t**3 + y**3, y)), (TransferFunction(x*y**2 - z, -t**3 + y**3, y), TransferFunction(x - y, x + y, y))))))rM   r   r   r   r   rQ   r   rS   r  s       r{   test_MIMOParallel_strr    s    
1QT6A:q!tad{A
6
6C
1q5!a%
+
+C"S#Jc
#;<<E"S#Jc
#;<<E|E5))**	ll l l l l lr}   c            
      J   t          t          t          dz  z  t          z
  t          dz  t          dz  z
  t                    } t          t          t          z
  t          t          z   t                    }t          t          t          dz  z  t          t
          z  t          z  z
  t
          z   t          t          z
  t                    }t          t          | |z  |                    dk    sJ t          t          | t          ddt                    d                    dk    sJ d S )Nr   r   zFeedback(Series(TransferFunction(x*y**2 - z, -t**3 + y**3, y), TransferFunction(x - y, x + y, y)), TransferFunction(t*x**2 - t**w*x + w, t - y, y), -1)r   zUFeedback(TransferFunction(x*y**2 - z, -t**3 + y**3, y), TransferFunction(1, 1, y), 1))rM   r   r   r   r   r   r   rP   r  s      r{   test_Feedback_strr    s    
1QT6A:q!tad{A
6
6C
1q5!a%
+
+C
1QT6AqDF?Q.Aq
9
9CxC%%&&	?? ? ? ? x-aA66::;;_` ` ` ` ` `r}   c                     t          t          dz  t          dz  z
  t          t          z
  t                    } t          t          t          z
  t          t          z   t                    }t	          || g| |gg          }t	          | |g|| gg          }t          t          ||                    dk    sJ t          t          ||d                    dk    sJ d S )Nr   r   a  MIMOFeedback(TransferFunctionMatrix(((TransferFunction(-x + y, y + z, x), TransferFunction(x**2 - y**3, y - z, x)), (TransferFunction(x**2 - y**3, y - z, x), TransferFunction(-x + y, y + z, x)))), TransferFunctionMatrix(((TransferFunction(x**2 - y**3, y - z, x), TransferFunction(-x + y, y + z, x)), (TransferFunction(-x + y, y + z, x), TransferFunction(x**2 - y**3, y - z, x)))), -1)r   a  MIMOFeedback(TransferFunctionMatrix(((TransferFunction(-x + y, y + z, x), TransferFunction(x**2 - y**3, y - z, x)), (TransferFunction(x**2 - y**3, y - z, x), TransferFunction(-x + y, y + z, x)))), TransferFunctionMatrix(((TransferFunction(x**2 - y**3, y - z, x), TransferFunction(-x + y, y + z, x)), (TransferFunction(-x + y, y + z, x), TransferFunction(x**2 - y**3, y - z, x)))), 1))rM   r   r   r   rQ   r   rT   r  s       r{   test_MIMOFeedback_strr  	  s    
1a4!Q$;Aq
1
1C
1q5!a%
+
+C"S#Jc
#;<<E"S#Jc
#;<<EUE**++HH H H H
 UE1--..bb b b b b br}   c                  *   t          t          t          dz  z  t          z
  t          dz  t          dz  z
  t                    } t          t          t          z
  t          t          z   t                    }t          t          t          dz  z  t          t
          z  t          z  z
  t
          z   t          t          z
  t                    }t          t          | g|gg                    dk    sJ t          t          | |g||gg                    dk    sJ d S )Nr   r   zpTransferFunctionMatrix(((TransferFunction(x*y**2 - z, -t**3 + y**3, y),), (TransferFunction(x - y, x + y, y),)))zTransferFunctionMatrix(((TransferFunction(x*y**2 - z, -t**3 + y**3, y), TransferFunction(x - y, x + y, y)), (TransferFunction(t*x**2 - t**w*x + w, t - y, y), TransferFunction(x - y, x + y, y)))))rM   r   r   r   r   r   r   rQ   r  s      r{   test_TransferFunctionMatrix_strr    s    
1QT6A:q!tad{A
6
6C
1q5!a%
+
+C
1QT6AqDF?Q.Aq
9
9C%usen5566z{ { { {%SzC:&>??@@ 	MM M M M M Mr}   c                     t          t          t          t          t                    } t          |           dk    sJ t          t          t          t          t          t          z            } t          |           dk    sJ t          t          t          t          t          t          z             } t          |           dk    sJ d S )Nzx + y*i + z*j + t*kzx + y*i + z*j + t*x*kzx + y*i + z*j + (t + x)*k)r   r   r   r   r   r   )qs    r{   test_Quaternion_str_printerr  $  s    1aAAq66*****1Qq1Aq66,,,,,1Qq1Aq660000000r}   c                      t          t          d          dk    sJ t          t          d          dk    sJ t          t                    dk    sJ t          t                    dk    sJ d S )NT)abbrevr  JrU   rV   )rm   rU   rV   r   r   r}   r{   test_Quantity_strr  -  sr    t$$$++++d###s****v;;(""""u::      r}   c                  |   t          d          } t          | dz             dk    sJ t          t          d| z            dz             dk    sJ t          d| z  dz             dk    sJ t          d| z  dz             d	k    sJ t          | dz  dz             d
k    sJ t          dd| z
  z            dk    sJ d S )Nr   r   zx_ + 1r   r   zexp(2**x_) + 5r   z3*x_ + 1z1 + 1/x_z	x_**2 + 1z
1/(1 - x_))r*   r   r0   )r   s    r{   test_wild_strr  4  s    S		Aq1u::!!!!s1a4yy1}!11111qsQw<<:%%%%qsQw<<:%%%%q!tax==K''''q!a%y>>\))))))r}   c                     ddl m} m}m} t	          d          }|d S  | d          } |d          } |d          }t          |          dk    sJ t          |          dk    sJ t          |          dk    sJ t          ||z  d|z  z             dk    sJ t          t          |          t          |          z  t          |          z            d	k    sJ d S )
Nr   )WildDotWildPlusWildStarmatchpyr   w__w___r   z2**w_ + w__/w___zsqrt(w___)*sin(w_)*cos(w__))	!sympy.utilities.matchpy_connectorr  r  r  rL   r   r3   r2   r1   )r  r  r  r  wdwpwss          r{   test_wild_matchpyr  ?  s   MMMMMMMMMMI&&G	B	%B	&		Br77d????r77er77fr"uq"u}!33333s2wws2wwtBxx'((,IIIIIIIr}   c                  J    t          t          d                    dk    sJ d S )Nr   zzeta(3))r   r5   r   r}   r{   	test_zetar  S  s%    tAww<<9$$$$$$r}   c                  p    t           t          z
  } t          |           }t          |           }||k    sJ d S N)r   r   r   )r  r   bs      r{   test_issue_3101r  W  s2    	AAAAAA666666r}   c                      dt          t                    z  t          t          t                    z  dz  z
  } t          |           dvsJ t          |           dk    sJ d S )Nr   r   )z(-2)*x**1/2(-1/2)*x**(-1/2)*yz-2*x**1/2(-1/2)*x**(-1/2)*yz-2*x**1/2-1/2*x**-1/2*wz-2*sqrt(x) - y/(2*sqrt(x)))r1   r   r   r   r~  s    r{   test_issue_3103r  ^  si    
477
QtAwwYq[ Aq66 F F F F Fq661111111r}   c                  j    t          t          t                    dz   } t          |           dk    sJ d S )Nr   zIntegral(x, x) + 1)r6   r   r   r~  s    r{   test_issue_4021r  e  s2    AAq66)))))))r}   c                      t          d          dk    sJ t          d          dk    sJ dddt          g} t          |           dk    sJ t          |           dk    sJ d S )Nabcz'abc'r   r  cz[a, b, c, x]z['a', 'b', 'c', x])rm   rn   r   r~  s    r{   test_sstrreprr  j  ss    ;;%E??g%%%%	c3A77n$$$$A;;.......r}   c                  J    t          t          t          z            dk    sJ d S )Nr   )rm   r   r   r   r}   r{   test_infinityr  s  s#    1::r}   c                     t          t          d          d          dk    sJ t          t          d          d          dk    sJ t          t          d          d          dk    sJ t          t          d          t          z  d          dv sJ t          t          d          t          z  d          dv sJ t          t          d          t          z  d          dv sJ d S )	Nz0.3Tr^  z0.300000000000000rn  F)z0.300000000000000*xzx*0.300000000000000)z0.3*xzx*0.3)rm   r'   r   r   r}   r{   test_full_precr  w  s   %D)))-@@@@@%F+++/BBBBB%E***e3333%
d+++ 0     %
f--- 2     %
e,,, 1      r}   c                  r   t          dd          \  } }}t          | |z  |dz  z            dk    sJ t          |dz  | z  |z            dk    sJ t          | |dz  z  |z            dk    sJ t          t          |                     dk    sJ t          d	t          |           z            d
k    sJ d S )NzA,B,CFcommutativer   zA*B*C**(-1)zC**(-1)*A*BzA*C**(-1)*Bzsqrt(A)r   z	A**(-1/2))r+   rm   r1   )ABCs      r{   test_noncommutativer    s    g5111GAq!!ArE	??m++++2a	??m++++!R%	??m++++Q==I%%%%$q''	??k))))))r}   c                      t                      } |                     d          dk    sJ |                     t          t          z            dk    sJ |                     d          dk    sJ d S )Nr   zx*y    32)ro   emptyPrinterr   r   )str_printers    r{   test_empty_printerr    sr    ,,K##E**e3333##AaC((E1111##B''4//////r}   c                  2    t          t          d            d S )Nc                  >    t          t          d          d          S )Nr   garbage)method)rm   r'   r   r}   r{   r   ztest_settings.<locals>.<lambda>  s    d1Q44	::: r}   )rk   	TypeErrorr   r}   r{   test_settingsr    s    
9::;;;;;r}   c                  n   ddl m} m}m}m}m}  | ddd          }t           ||dk                        dk    sJ  |dd          }t           ||dk                        d	k    sJ  |d
d          } |dd          }t           |t          ||                    j                  dk    sJ d S )Nr   )NormalDieExponentialpspacewherex1r   zDomain: (0 < x1) & (x1 < oo)d1r   r   zDomain: Eq(d1, 5) | Eq(d1, 6)r   r  z1Domain: (0 <= a) & (0 <= b) & (a < oo) & (b < oo))	sympy.statsr  r  r  r  r  r   r   domain)	r  r  r  r  r  XDr  r  s	            r{   test_RandomDomainr    s    CCCCCCCCCCCCCCtQAuuQU|| >>>>>D!AuuQU|| ?????CACAvveAqkk"")**.aaaaaaar}   c            
         t          t          t          dd                     dk    sJ t          t          t          dd                     dk    sJ t          t          t          t          z  t          dz  g           dk    sJ t          t          t          t          t          t                    d          t          t          t                    d                    d	k    sJ d S )
Nr   3   z{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}r   z{1, 2, 3, 4, 5}r   z{x**2, x*y}r   z*FiniteSet(5, FiniteSet(5, {x, y}), {x, y}))r   rD   r   r   r   r   r}   r{   test_FiniteSetr    s    y%2,,'((	K   
 y%1++&''+<<<<<y1Q31+&''=8888y9Q??A66	!AJJ  @A A A A A Ar}   c                      t          t          t          t          t                    t
          h                    dk    sJ d S )NzPartition({z}, {x, y}))r   r   rD   r   r   r   r   r}   r{   test_Partitionr    s6    y1a1#..//3KKKKKKKr}   c                  D    t          t          j                  dk    sJ d S )NUniversalSet)r   r'   r  r   r}   r{   test_UniversalSetr    s#    q~.000000r}   c                     t          j        t          t                    } t           t          t          f         }t	          |                     t          t          t          z   z                      t	          t          t          t          z   z            k    sJ t	          |                    t          t          z                       t	          t          t          z             k    sJ d S r  )r^   
frac_fieldr   r   rm   convert)rr  r   s     r{   test_PrettyPolyr    s    
aA
1a4A		!QU)$$%%aQi8888		!a%  !!T!a%[[000000r}   c                  8   ddl m} m}m}m}  | d          } | d          } |||d          } ||          } |d          }t          |          dk    sJ t          |          dk    sJ t          |          d	k    sJ t          |          d
k    sJ d S )Nr   )ObjectNamedMorphismIdentityMorphismCategoryr  r  r   KzObject("A")z,NamedMorphism(Object("A"), Object("B"), "f")zIdentityMorphism(Object("A"))zCategory("K"))sympy.categoriesr  r  r  r  r   )	r  r  r  r  r  r  r   id_Ar  s	            r{   test_categoriesr    s    $ $ $ $ $ $ $ $ $ $ $ $ 	sAsAaC  AADAq66]""""q66CCCCCt9977777q66_$$$$$$r}   c                  |    t          dd          \  } }t          | |z            }t          |          dk    sJ d S )NzA BFr  zTr(A*B))r+   rp   r   )r  r  r   s      r{   test_Trr    sD    5e,,,DAq
1Q3Aq66Yr}   c                  `    t          t          dt          z  dz                       dk    sJ d S )Ng      r   z-3.0*(1.0*z - 1.0))r   r@   r   r   r}   r{   test_issue_6387r    s2    vd1fqj!!""&:::::::r}   c            	         t          ddd          t          ddd          }} t          d| |z   z            dk    sJ t          t          | z            dk    sJ t          t           | z            dk    sJ t          dt          z   | z            dk    sJ t          dt          z    | z            d	k    sJ t          t          t          | |          t          | |                              d
k    sJ d S )Nr  r   Yz	2*X + 2*YzI*Xz-I*Xr   z	(1 + I)*Xz
(-1 - I)*Xz(X + Y) + (X + Y))r<   r   r   r   )r  r  s     r{   test_MatMul_MatAddr    s    Q""La$;$;qAq!a%y>>[((((qs88ur!t99Aqy>>[((((Qxz??l****vfQllF1aLL11226IIIIIIIr}   c            	         t          dd          } t          d| |           }t          ddd          }t          ddd          }t          t          |dd                    d	k    sJ t          |t          t          d
z   t
          t
          d
z   f                   dk    sJ t          |t          t          d
z   dt
          t
          d
z   df                   dk    sJ t          |d t          t
          d f                   dk    sJ t          |d t          t
          d f                   dk    sJ t          |t          d d t
          f                   dk    sJ t          |t          t
          t          t          f                   dk    sJ t          |t          t
          t          t          t          t          f                   dk    sJ t          |t          d t
          t          d t          f                   dk    sJ t          |d t          t
          d t          t          f                   dk    sJ t          |d d t          d d t
          f                   dk    sJ t          t          |dd                    d	k    sJ t          t          |d | d fd | d f                    d	k    sJ t          t          |d| d fd| d f                    d	k    sJ t          t          |d| dfd| df                    dk    sJ t          |d
dddddf                   dk    sJ t          |d
dddddf                   dk    sJ t          |d
dd                   dk    sJ t          |d dd
d df                   d!k    sJ t          |d dd
ddf                   d"k    sJ t          |dd ddf                   d#k    sJ t          |dd
dd
f                   d$k    sJ t          |dd
ddd
df                   d%k    sJ t          ||z   dd dd f                   d&k    sJ d S )'Nr   Tr   r  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   r   zX[1:2:3, 4:5:6]r   zX[1:3:5, 4:6:8]zX[1:10:2, :]rZ  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   r>   r   r   r   r   r   )r   r  r  r  s       r{   test_MatrixSlicer     sg   sD!!!AS!QAS"b!!AS"b!!A{102DEEFF)SSSSq1q5!AE'!"##'<<<<<q1q5Aa!eAI%&''+DDDDDq!QRRy>>[((((q!QRRy>>[((((qRaRy>>[((((q1ac{},,,,q1Q!A#44444qAqt!t}0000q!At!t}0000q1ccc{},,,,{1o??@@IMMMM{1tQoa??@@IMMMM{1q!TlQ4L99::iGGGG{1q!Qi!Q3344EEEEq1Q!A#44444q1Q!A#44444q2ay>>^++++q!QqU|....q!Qr!V}....qDQqDz??n,,,,q1ac{{****q1Q!A?2222Aqrr122v#4444444r}   c                  >   t          t                    t          t                    cxk    rt          t                    cxk    rdk    sn J t          t                    t          t                    cxk    rt          t                    cxk    rdk    sn J d S )NTrueFalse)r   r9   reprrm   r8   r   r}   r{   test_true_falser    s    t99T

::::d4jj::::F::::::u::e>>>>U>>>>w>>>>>>>>r}   c                  `    t          t          t          t                              dk    sJ d S )NzEquivalent(x, y))r   r7   r   r   r   r}   r{   test_Equivalentr    s,    z!Q  $6666666r}   c                  d    t          t          t          t          d                    dk    sJ d S )NFr   zx ^ y)r   r:   r   r   r   r}   r{   test_Xorr	    s0    s1a%((())W444444r}   c                  t    t          t          t          j        t          j                            dk    sJ d S )NzComplement(Reals, Naturals))r   rC   r'   RealsNaturalsr   r}   r{   test_Complementr    s0    z!'1:..//3PPPPPPPr}   c            	          t          t          t          dd          t          dd          d                    dk    sJ d S )Nr   r   r   Fr   z3SymmetricDifference(Interval(2, 3), Interval(3, 4)))r   rF   rE   r   r}   r{   test_SymmetricDifferencer    sT    "8Aq>>8Aq>>5QQQRR@A A A A A Ar}   c                  ~    t          d          \  } }dt          | |z             z  }t          |          dk    sJ d S )Nza br   z	2*(a + b))r+   r   r   )r   r  expr1s      r{   test_UnevaluatedExprr    sD    5>>DAqoac"""Eu::$$$$$$r}   c                  F   t          ddd          } t          ddd          }t          ddd          }t          | d                   dk    sJ t          d| d         z            dk    sJ |d                             || |z
            }t          |          d	k    sJ d S )
Nr  r   r   r  r  )r   r   zA[0, 0]z	3*A[0, 0]z(A - B)[0, 0])r<   r   subs)r  r  r  rr  s       r{   test_MatrixElement_printingr  $  s    S!QAS!QAS!QAqw<<9$$$$q1T7{{****	$QAAq66_$$$$$$r}   c                  "   t          ddd          } t          ddd          }t          | | |z  z
  |z
            dk    sJ t          | |z  | |z   z
            dk    sJ t          | dz            dk    sJ t          | dz            dk    sJ d S )	Nr  r   r  zA - A*B - Bz-A + A*B - Br   zA**(-1)zA**3)r<   r   )r  r  s     r{   test_MatrixSymbol_printingr  1  s    S!QAS!QAq1Q3w{},,,,qsac{~----q2w<<9$$$$q!t99r}   c                  v   t          dd          } t          d| |           }t          |          dk    sJ |j        |z                      t
                    }t          |          dk    sJ t          t          dt          z            }| |z                      |          }t          |          dk    sJ d S )Nr   Tr   r  zLambda(_d, sin(_d)).(X.T*X)r   zLambda(x, 1/x).(n*X))r)   r<   r   T	applyfuncr3   r   r   )r   r  exprlamdas       r{   test_MatrixExpressionsr  ;  s    sD!!!AS!QAq66S==== CES!!Dt99555551acNNEaC??5!!Dt99.......r}   c                      t          t          t          t          fd                    dk    sJ t          t          t          t          z   t          t          fd                    dk    sJ d S )Nr   zSubs(x, x, 1)r   zSubs(x + y, (x, y), (1, 2)))r   r   r   r   r   r}   r{   test_Subs_printingr   K  s]    tAtT""##6666tAEAq66**++/LLLLLLLr}   c                      t          t          t                    t          t           t          f          } |                                 | dfg| gfk    sJ d S )N))r   g        r  r   )r6   r,   r   r   as_termsr~  s    r{   test_issue_15716r#  P  sN    1B3|,,A::<<a!789A3???????r}   c                      ddl m} m}m} t	           | d                    dk    sJ t	           |dd                    dk    sJ t	           |dd                    dk    sJ d S )Nr   r=   
ZeroMatrix	OneMatrixr   r   r   r   r   )sympy.matricesr=   r&  r'  r   r%  s      r{   test_str_special_matricesr)  U  s    >>>>>>>>>>xx{{s""""zz!Q  C''''yyA3&&&&&&r}   c                  d    t          t          dt          ddf                    t          z   sJ d S )Nr   r   )r,   r   r   r   r   r}   r{   test_issue_14567r+  \  s1    SaAY''((1,,,,,,r}   c                      t          t          ddg                    dk    sJ t          t          ddh                    dk    sJ d S )Nr   r   zPartition({1, 2}))r   r   r   r}   r{   test_issue_21823r-  `  sT    y!Q  !!%88888y!Q  !!%8888888r}   c            
          t          t          t          t          dd          t          ddd          d                    dk    sJ d S )Nr   Fr   r   r   z
1/(x**2*3))r   r   r#   r   r   r}   r{   test_issue_22689r/  e  sP    s3qe,,,c!B.F.F.FQVWWWXX\hhhhhhhr}   c                  `   d }  | d          dk    sJ  | d          dk    sJ  | d          dk    sJ  | d          dk    sJ  | d          d	k    sJ  | d
          dk    sJ  | d          dk    sJ  | d          dk    sJ  | d          dk    sJ  | d          dk    sJ d S )Nc                 >    t          t          | d                    S )NFr   )r   r'   )r   s    r{   r   z(test_issue_21119_21460.<locals>.<lambda>j  s    3qU+++,, r}   z4/2z4/-2z4/(-2)z-4/2z-4/-2z-4/(-2)z-2*3/-1z	-2*3/(-1)z	-2*3/-1/2z-2*3/(-1*2)z4/2/1z4/(2*1)z-2/-1/2z	-2/(-1*2)z2*3*4**(-2*3)z2*3/4**(2*3)z2*3*1*4**(-2*3)z2*3*1/4**(2*3)r   )sss    r{   test_issue_21119_21460r3  i  s   	,	,B2e992f::!!!!2f::2g;;)####2i==K''''2k??m++++2g;;)####2i==K''''2o.00002  $4444444r}   c                      ddl m}  t           | d                    dk    sJ t           | d                    dk    sJ d S )Nr   Strr   zStr('x'))sympy.core.symbolr6  r   rn   r5  s    r{   test_Strr8  w  sZ    %%%%%%ss3xx==CCCHH++++++r}   c                  T   ddl m} m}m}m} t          dd          \  }} | dd          }t          |          dk    sJ  |d|          }t          |          dk    sJ  |d	|||g          }t          |          d	k    sJ  ||d          }	t          |	          d
k    sJ d S )Nr   )ManifoldPatchCoordSystemBaseScalarFieldzx yTr   r   r   Prectr   )sympy.diffgeomr:  r;  r<  r=  r+   r   )
r:  r;  r<  r=  r   r   mr  r?  r  s
             r{   test_diffgeomrB  }  s    LLLLLLLLLLLL
%d
#
#
#CAaaAq66S====c1Aq66S====;vq1a&))Dt99a  Aq66S======r}   c                  .   t          t          d          d          dk    sJ t          t          d          d          dk    sJ t          t          ddg          d          dk    sJ t          t          ddg          d          d	k    sJ d S )
Nr   Tr  z1.00000000000000Fz1.0g       @z$[1.00000000000000, 2.00000000000000]z
[1.0, 2.0])rm   rh   r   r}   r{   test_NDimArrayrD    s    	#$///3EEEEE	#%000E9999	3*%%666:`````	3*%%777<GGGGGGr}   c                  D    t          t          j                  dk    sJ d S )NzQ.even)rm   r   evenr   r}   r{   test_PredicaterG    s!    <<8######r}   c                  ^    t          t          j        t                              dk    sJ d S )Nz	Q.even(x))rm   r   rF  r   r   r}   r{   test_AppliedPredicaterI    s'    q		??k))))))r}   c            	      L   t          t          dd                    dk    sJ t          t          ddddt          z
  z  df                    dk    sJ t	          ddd          } t	          d	dd          }t          t          | |z  t          dg                    d
k    sJ d S )Nr  )r   r   r   r   r   r   zA[2, 1/(1 - x), 0]r   r   Nz(M*N)[x, 0])rm   ri   rj   r   r<   )r   rK  s     r{   #test_printing_str_array_expressionsrL    s    C++,,3333S1a1gq/22337KKKKKS!QAS!QAQqS1a&))**m;;;;;;r}   c                     t          d          } t          d          }t          | dk              t          d          z  }t          |           t          d          z  }t	          |           t          d          z  }t          | |          t          d          z  }t          |          dk    sJ t          |          dk    sJ t          |          dk    sJ t          |          dk    sJ |j        d	k    sJ |j        d	k    sJ |j        d	k    sJ |j        d	k    sJ |                                d	k    sJ |                                d	k    sJ |                                d	k    sJ d S )
Nr   r   r   r   zProbability(x > 0)*IzExpectation(x)*IzVariance(x)*IzCovariance(x, y)*IF)	rK   rI   r=   rH   rJ   rG   r   r  _eval_is_commutative)r   r   z1z2z3z4s         r{   test_printing_statsrS    s   SASA	QU		HQKK	'B	Q	#B	!Xa[[	 B	Aq		HQKK	'Br77,,,,,r77(((((r77o%%%%r77+++++%%%%%%%%%%%%%%%%""$$----""$$----""$$------r}   N(  sympyr   sympy.algebras.quaternionr   sympy.assumptions.askr   !sympy.calculus.accumulationboundsr   sympy.combinatorics.partitionsr   sympy.concrete.summationsr   r	   sympy.core.addr
   sympy.core.containersr   r   sympy.core.exprr   r   sympy.core.functionr   r   r   r   r   sympy.core.mulr   
sympy.corer   r   r   r   sympy.core.numbersr   r   r   r   r   r   r   r    r!   r  r"   sympy.core.powerr#   sympy.core.relationalr$   r%   r&   sympy.core.singletonr'   r7  r(   r)   r*   r+   (sympy.functions.combinatorial.factorialsr,   r-   r.   $sympy.functions.elementary.complexesr/   &sympy.functions.elementary.exponentialr0   (sympy.functions.elementary.miscellaneousr1   (sympy.functions.elementary.trigonometricr2   r3   'sympy.functions.special.delta_functionsr4   &sympy.functions.special.zeta_functionsr5   sympy.integrals.integralsr6   sympy.logic.boolalgr7   r8   r9   r:   sympy.matrices.denser;   "sympy.matrices.expressions.matexprr<   sympy.matrices.expressionsr=    sympy.matrices.expressions.slicer>   r(  r?   sympy.polys.polytoolsr@   sympy.series.limitsrA   sympy.series.orderrB   sympy.sets.setsrC   rD   rE   rF   r  rG   rH   rI   rJ   sympy.stats.rvrK   sympy.externalrL   sympy.physics.control.ltirM   rN   rO   rP   rQ   rR   rS   rT   sympy.physics.unitsrU   rV   sympy.polysrW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   sympy.geometryrc   rd   re   rf   rg   sympy.tensorrh   0sympy.tensor.array.expressions.array_expressionsri   rj   sympy.testing.pytestrk   rl   sympy.printingrm   rn   ro   sympy.physics.quantum.tracerp   r   r   r   r   r   rq   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@  rB  rD  rF  rW  rc  rf  rj  rl  ro  rs  rw  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r	  r  r  r  r  r  r  r   r#  r)  r+  r-  r/  r3  r8  rB  rD  rG  rI  rL  rS  r   r}   r{   <module>r     sV         0 0 0 0 0 0 # # # # # # 9 9 9 9 9 9 4 4 4 4 4 4 6 6 6 6 6 6 6 6       / / / / / / / / 1 1 1 1 1 1 1 1 R R R R R R R R R R R R R R       M M M M M M M M M M M M Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q - - - - - -             / / / / / / / / / / " " " " " " < < < < < < < < < < < < Z Z Z Z Z Z Z Z Z Z 4 4 4 4 4 4 6 6 6 6 6 6 9 9 9 9 9 9 ? ? ? ? ? ? ? ? = = = = = = 7 7 7 7 7 7 . . . . . . > > > > > > > > > > > > ' ' ' ' ' ' ; ; ; ; ; ; / / / / / / 8 8 8 8 8 8 ' ' ' ' ' ' ( ( ( ( ( ( % % % % % %             R R R R R R R R R R R R H H H H H H H H H H H H ' ' ' ' ' ' ( ( ( ( ( (M M M M M M M M M M M M M M M M M M M M - - - - - - - -                            D D D D D D D D D D D D D D " " " " " " V V V V V V V V ? ? ? ? ? ? ? ? 5 5 5 5 5 5 5 5 5 5 * * * * * *$$1aA	E#JJ	 	 	. . .x x x,% % %  E E E: : :@ @ @" " "
+ + +% % %9 9 9   3 3 3- - -5 5 5
; ; ;    
$ $ $M M M
0 0 09 9 9E E EL L LN N N3 3 3-I -I -I`    	C 	C 	C?4 ?4 ?4B  'a 'a 'aTi i ir r r: : :.D D D<	+ 	+ 	+; ; ;? ? ?"( ( (6' 6' 6'rH H H$= = =+ + +
J J JM M M	q 	q 	qV V V< < <. . .  S S S	d 	d 	d	l 	l 	l@ @ @	f 	f 	f	l 	l 	l` ` `c c c"M M M1 1 1! ! !* * *J J J(% % %  2 2 2* * *
/ / /       $* * *0 0 0< < <
b 
b 
b	A 	A 	AL L L1 1 11 1 1% % %&  ; ; ;J J J5 5 5>? ? ?7 7 75 5 5Q Q QA A A
% % %
% 
% 
%  / / / M M M
@ @ @
' ' '- - -9 9 9
i i i5 5 5, , ,
 
 
H H H$ $ $* * *< < <. . . . .r}   