o
    *ήc                     @   s  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#lambZbmcZcmdZdmeZe d d$lfmgZg d d%lhmiZimjZjmkZkmlZlmmZmmnZnmoZompZp d d&lqmrZrmsZs d d'ltmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZmZ d d(lmZmZmZmZmZ d d)lmZ d d*lmZmZ d d+lmZmZ d d,lmZmZmZ d d-lmZ e:d.\ZZZZZe7d/Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdZd[ Zd\d] Zd^d_ Zd`da Zdbdc Zddde Zdfdg Zdhdi Zdjdk Zdldm Zdndo Zdpdq Zdrds Zdtdu Zdvdw Zdxdy Zdzd{ Zd|d} Zd~d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZddÄ Zddń ZddǄ ZddɄ Zdd˄ Zdd̈́ Zddτ Zddф Zddӄ ZddՄ Zddׄ Zddل Zddۄ Zdd݄ Zdd߄ Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Z dd Zdd Zd d Zdd Zdd Zdd ZdS (	      )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)MatrixSlice)SparseMatrix)factor)Limit)O)
Complement	FiniteSetIntervalSymmetricDifference)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                  C   sL   G dd dt } t| tdksJ G dd dt } t| tdks$J d S )Nc                   @      e Zd Zdd ZdS )test_printmethod.<locals>.Rc                 S   s   d| | jd  S )Nzfoo(%s)r   )_printargsselfprinter rr   D/tmp/pip-target-vg8gfxp4/lib/python/sympy/printing/tests/test_str.py	_sympystr9      %test_printmethod.<locals>.R._sympystrN__name__
__module____qualname__rt   rr   rr   rr   rs   R8       r{   zfoo(x)c                   @   rk   )rl   c                 S      dS )Nfoorr   ro   rr   rr   rs   rt   >   s   rv   Nrw   rr   rr   rr   rs   r{   =   r|   r~   )r.   rf   x)r{   rr   rr   rs   test_printmethod7   s   r   c                   C   sL   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   rr   rr   rr   rs   test_AbsC   s   r   c                   C   s  t tt dks
J t td dksJ t ttd  dks J t tddddd	ks-J t tdddddd
ks;J t dt dksEJ t dt t tt  td  td  dks]J t dt td d  td d  dkssJ t dt dtd   d dt  dksJ t tt dksJ t dt dksJ t td dksJ t tt t t dksJ t tttd  t t  dksJ t tdt t t  dksJ t tttdddksJ 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))r   r   yr	   zwr2   seriesrr   rr   rr   rs   test_AddI   s    0,,$ "r   c                   C      t tdksJ d S )Nr   )r   r   rr   rr   rr   rs   test_Catalan\   ru   r   c                   C   r   )Nr    )r   r    rr   rr   rr   rs   test_ComplexInfinity`   ru   r   c                   C   s\   t tttdksJ t ttd tdddksJ t ttd t ttd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   rr   rr   rr   rs   test_Derivatived   s   r   c                   C   st   t ddt itddt i  krdksJ  J t td tt ddv s)J ttd tt ddks8J 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   rf   r   rr   rr   rr   rs   	test_dictk   s   4"r   c                   C   s   t tddt itddt i  krdksJ  J t ttd tt ddv s-J tttd tt ddks>J d S r   )r   r
   r   rf   r   rr   rr   rr   rs   	test_Dictq   s   8"&r   c                   C   s(   t tdksJ t tt dksJ d S )N_dz_d + x)r   rj   r   rr   rr   rr   rs   
test_Dummyx      r   c                   C   r   )Nr   )r   r   rr   rr   rr   rs   test_EulerGamma}   ru   r   c                   C   sR   t tdksJ td t ttdksJ W d    d S 1 s"w   Y  d S )Nr   TzE**x)r   r   r!   r/   r   rr   rr   rr   rs   test_Exp   s   
"r   c                  C   s  t d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|  dks:J ttt| dksFJ ttt| dksRJ ttt| dks^J ttt| dksjJ ttddkstJ tt| dks~J ttd|  dksJ 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   rr   rr   rs   test_factorial   s   r   c                  C   sL   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   rr   rr   rs   test_Function   s   r   c                   C   s   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sVJ t ttddtddtdddddksmJ t ttd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)))rf   r\   r]   r_   r`   r^   rr   rr   rr   rs   test_Geometry   s    ($r   c                   C   r   )Nr   )r   r   rr   rr   rr   rs   test_GoldenRatio   ru   r   c                   C   sJ   t ttt tttj  krdksJ  J t ttddks#J d S )NzHeaviside(x)r   zHeaviside(x, 1))r   r3   r   r&   Halfrr   rr   rr   rs   test_Heaviside   s   0r   c                   C   r   )Nr   )r   r   rr   rr   rr   rs   test_TribonacciConstant   ru   r   c                   C   r   )Nr   )r   r   rr   rr   rr   rs   test_ImaginaryUnit   ru   r   c                   C   s(   t tdksJ t tt dksJ d S )Nr   oo*I)r   r   r   rr   rr   rr   rs   test_Infinity   r   r   c                   C   sh   t tddks
J t tddksJ t tddksJ t tddks(J t td	d
ks2J d S )Nr   -1r   r   r   z-3r   0   25)r   r   rr   rr   rr   rs   test_Integer   s
   r   c                   C   s>   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   r5   r2   r   r   rr   rr   rr   rs   test_Integral      $r   c               	   C   s|   t jddt jf} tt| D ]-}t|d t| D ]!}dD ]}dD ]}t| | | | ||}t t||ks8J q!qqqd S )Nr   r   )TF)r&   NegativeInfinityInfinityrangelenrC   r   )r   ijlrivalrr   rr   rs   test_Interval   s   r   c                  C   s<   t d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   rr   rr   rs   test_AccumBounds   s   r   c                   C   s   t tttd 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 dks2J t tttfftt dksBJ d S )	Nr   zLambda(_d, _d**2)rr   r   zLambda((), 1)zLambda((), x)zLambda((x, y), x + y)zLambda(((x, y),), x + y))r   r   rj   r   r   rr   rr   rr   rs   test_Lambda   s
   $r   c                   C   sd   t tttt ttdksJ t tdt tddksJ t tttt ttdddks0J d S )NzLimit(sin(x)/x, x, y)r   r   zLimit(1/x, x, 0)-)dirzLimit(sin(x)/x, x, y, dir='-'))r   r?   r2   r   r   rr   rr   rr   rs   
test_Limit   s    r   c                   C   s   t tgttg  krdksJ  J t td tt d gttd tt d g  kr3dks6J  J t td tt ggttd tt gg  krSdksVJ  J d S )Nz[x]r   r   z[x**2, x*y + 1]z[x**2, [x + y]]r   rr   rr   rr   rs   	test_list   s   (DDr   c                  C   s   t td dgttt gg} t| dksJ t| dksJ t dgg} t| t|   kr3dks6J  J t ddgg} t| t|   krLdksOJ  J t  } t| t|   kradksdJ  J t ddd	d
 } t| t|   kr{dks~J  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                 S   r}   )Nr   rr   )r   r   rr   rr   rs   <lambda>  s    z!test_Matrix_str.<locals>.<lambda>zMatrix(0, 1, []))r:   r   r   r   rf   Mrr   rr   rs   test_Matrix_str   s   $$$(r   c                  C   sl  t tt dks
J t tt dksJ t tt t dks J t td td  dks.J t dt d dks:J t d	t d d
ksFJ t dt dksPJ t dt dksZJ t tdddddksgJ t tdddddkstJ t tdddddksJ t tddddddksJ t tdddddksJ t tdtjdddksJ t tddtjdddksJ t tddddtdddksJ t tdddddksJ t tdddddksJ t tdddddttdddksJ t tddddt dttdddks
J t ttddtd d!ddd"ksJ t td	tttttdddddddd#ks7J t tttdt dddddd$ksLJ G d%d& d&t	} G d'd( d(t	}|  }| }t td| d)ksoJ t |td d)ks|J t |t
d* d+ksJ t |td d,ksJ t |td | d-ksJ t |td | d-ksJ d S ).Nz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)c                   @      e Zd ZdZdS )ztest_Mul.<locals>.CustomClass1TNrx   ry   rz   is_commutativerr   rr   rr   rs   CustomClass1"      r   c                   @   r   )ztest_Mul.<locals>.CustomClass2TNr   rr   rr   rr   rs   CustomClass2%  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"   r   r   )r   r   cc1cc2rr   rr   rs   test_Mul  sJ    $*(
*"r   c                   C   r   )Nr   )r   r   rr   rr   rr   rs   test_NaN1  ru   r   c                   C   s   t t dks	J d S )Nz-oo)r   r   rr   rr   rr   rs   test_NegativeInfinity5     r   c                   C   s   t ttdks
J t ttd dksJ t ttt dks"J t tttdks-J t tttdfdks:J t ttttfdksGJ t ttttdksSJ t ttttdks_J t ttttfttfdksoJ 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   r@   r   r   r   rr   rr   rr   rs   
test_Order8  s   $r   c                  C   s  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 q2| g df| g dddf| g dddf| g dddf| g ddf| g ddf| g ddddffD ]\}}t|dd|ksJ qr| g df| g dddf| g dddf| g dddf| g ddf| g dd f| g dddd!f| g d"ddd#ffD ]\}}t||ksJ qt  | j}d| _t| g ddksJ || _W d    d S 1 sw   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   rf   re   print_cyclic)r   r   psold_print_cyclicrr   rr   rs   test_Permutation_CycleD  s   









"r   c                   C   r   )Nr   )r   r   rr   rr   rr   rs   test_Pi  ru   r   c                   C   s  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 d tdks0J t tdt d tdks?J t td	td
ksJJ t tt tdksVJ t tdt d tdkseJ t tdt d tdkstJ t ttd tdksJ t tdt td  tdksJ t tddt  dt dksJ t ttd t dksJ t ttt d tt dddksJ t ttd d td dddksJ t ttd d t tdksJ t ttd d t tdksJ t ttd tt  tdksJ t ttd tt  tdksJ t tt t t tt  d tttdks6J t tt td  td  t dt td   dt t  d tttd ks_J t ttd d tdd!d"ksqJ t tdtd  dt  d# td$d!d%ksJ 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   rP   r   r   r   r   r   rr   rr   rr   rs   	test_Poly  sN   ""$$&
F
$4r   c                   C   \   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,ztz4Polynomial ring in x, y, z over ZZ[t] with lex order)r   rT   rV   rZ   rW   r[   rr   rr   rr   rs   test_PolyRing     $r  c                   C   r   )	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   rU   rV   rZ   rW   r[   rr   rr   rr   rs   test_FracField  r  r  c            	      C   s,  t dt\} }}t d| \}}}}t dt\}}t|| dks"J t|d dks,J t|d dks6J t|d d	ks@J t|d
 dksJJ t|tdd dksWJ t|d d| |  d |d  | | d dkssJ t|d d| |  d |d  | |d |  dksJ t|d d| |  d |d  | |d |  d dksJ t|d  d| |  d |d  | |d |  d dksJ t|d | d  | d| |  d dksJ t|d | d  | d| |  d dksJ tdt | d 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))rT   rV   rX   r   rW   r   )	RuvuvRxyzr   r   r   Rx_zzixzrr   rr   rs   test_PolyElement  s    8<@B24"r  c                  C   s4  t dt\} }}t d| \}}}}}t dt\}}	tdd}
t|| dks(J t|d dks2J t|d dks<J t|d	 d
ksFJ t|| dksPJ t|| | dks\J t|||  dkshJ t|| ||  dksvJ t|d | dksJ t|d | dksJ t| d | dksJ t|d ||  dksJ t| |d  dksJ t|| |d  dksJ t|d | | d |d | d  dksJ t|d | | d |d | || |  d  dksJ td|
 |	 dksJ td|
 |	 |
 |	 dksJ d S )Nr  zx,y,z,tr   r   r   r   r  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)rU   rV   rY   r   )Fuvr	  r
  Fxyztr   r   r   r   r  r  r   rr   rr   rs   test_FracElement  s,   
0<&r  c                   C   s   t tdddksJ t tdddksJ t tdddks!J t tdddks,J t tddd	ks7J t tdd
dksBJ t tdddksMJ t tdddksXJ t tdd
dkscJ d S )Nr   r   r   r   r   r   z-Ir   z2*Ir   z-2*Iz1 + Iz-1 - Iz-1 - 2*I)r   rX   rr   rr   rr   rs   test_GaussianInteger  s   r  c                   C   st   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s8J d S )
Nr   r   r   r   r   z2/3z2*I/3r   z1/2 - 2*I/3)r   rY   rW   rr   rr   rr   rs   test_GaussianRational   s   &r  c                   C   s&  t td dks
J t td dksJ t td dksJ t tt d dks*J t tt d dks6J t tt d d	ksBJ t tt d
t  dksPJ t ttd
d dks]J t d
ttd
d  dkslJ t tttdksxJ t td dksJ t ttdddddksJ d S )Nr   z1/xr   r  r   r  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   r0   r"   r&   rr   rr   rr   rs   test_Pow  s   "r  c                   C   s   t ttdks
J t ttd dksJ t dtt dks"J t dttd  dks0J t ttt dks<J t td d	ksFJ t dtd  d
ksRJ 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   r0   r   r   rr   rr   rr   rs   	test_sqrt  s   r  c                  C   s0  t dd} t dd}t dd}t dd}t d}t d}t d}t| | dks*J t| | dks4J t|d	ks<J t| | d
ksFJ t| | dksPJ t| | dksZJ t| | dksdJ t|| dksnJ t|| dksxJ t|| dksJ t|| dksJ t|| dksJ t| | dksJ t|| dksJ t|| dksJ t|| dksJ tt ddksJ tt ddksJ tt ddksJ ttddksJ ttddksJ ttddddksJ 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&ks0J ttt ddd	ks>J ttt dd'd(ksLJ td)d* t dd* d+ks\J td)d* d t dd* d+ksnJ td)d* d t dd* d+ksJ td)d* d t dd* d,ksJ ttt d-d'd d.ksJ tdtt d-d'd  d/ksJ ttdtdt ksJ tdt dd0 d1ksJ tt ddd2d3d4ksJ td5}t|t dd d2d3d6ksJ tt|t ddd2d3d7ksJ tt||t d8dd2d3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))	r   r   r&   r0   r   rf   r(   r#   r?   )n1n2n3n4n5n7n8r   rr   rr   rs   test_Rational"  sd   



 $$$ $ "r%  c                   C   s:  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ks/J t td	d
ks:J t tddksEJ t tddksPJ t td td d ddksdJ ttddddddksrJ ttddddddksJ ttddddddksJ ttdddddksJ 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   rf   rr   rr   rr   rs   
test_Float[  s    
(r0  c                   C   s   t tttddksJ t ttt tddksJ t tttddks&J t ttdttdB d	ks6J t ttdttd@ d
ksFJ 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%   rr   rr   rr   rs   test_Relationalm  s
    $r2  c                   C   s4   t tttdksJ t tttdksJ d S )Nz
Q.eq(x, y)z
Q.ne(x, y))r   r   eqr   r   nerr   rr   rr   rs   test_AppliedBinaryRelationu     r5  c                   C   s*   t ttd dt  d ddksJ d S )Nr   r   r   r   zCRootOf(x**5 + 2*x - 1, 0))r   rQ   r   rr   rr   rr   rs   test_CRootOfz  s   *r7  c                  C   s\   t d dt   d } tt| tttdddksJ tt| tttd d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   rR   r   r   )r   rr   rr   rs   test_RootSum~  s   r9  c                  C   s|   t tg ttdksJ td dt  t d td dt  t d g} t t| dddks0J t t| ddd	ks<J d S )
Nz1GroebnerBasis([], x, y, domain='ZZ', order='lex')r   r   r   r[   )orderzYGroebnerBasis([x**2 - x - 3*y + 1, y**2 - 2*x + y - 1], x, y, domain='ZZ', order='grlex')rZ   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   rS   r   r   )Frr   rr   rs   test_GroebnerBasis  s   0r<  c                   C   s   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s0J t tg dd	ks<J t dttd
 td td hdksOJ t tdttd
 td td gdksdJ 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}))rf   set	frozensetr   rr   rr   rr   rs   test_set  s    r?  c                  C   s@   t td dgttt gg} t| dksJ t| dksJ d S )Nr   r   r   )r=   r   r   r   rf   r   rr   rr   rs   test_SparseMatrix  s   r@  c                   C   sT   t ttdt tttfdksJ t tttd  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   r1   r   r   r   r   rr   rr   rr   rs   test_Sum  s   $"rB  c                  C   s8   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   err   rr   rs   test_Symbol  s   rE  c                   C   s   t tfttf  krdksJ  J t tt dt fttt dt f  kr/dks2J  J t tt dt td ffttt dt td ff  krUdksXJ  J d S )Nz(x,)r   z(x + y, x + 1)r   z(x + y, (x + 1, x**2))r   rr   rr   rr   rs   
test_tuple  s   (<rF  c                  C      t ttd  t td td  t} t tt tt t}t ttd  tt t  t tt t}tt| |dks;J tt| ||dksGJ tt| | dksSJ 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)))rF   r   r   r   r   r   r   rG   tf1tf2tf3rr   rr   rs   test_Series_str     $(rL  c                  C   z   t ttd  t td td  t} t tt tt 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))))))rF   r   r   r   r   rJ   r   rK   rI  rJ  tfm_1tfm_2rr   rr   rs   test_MIMOSeries_str     $rR  c                  C   sx   t td td t} t| dksJ t td dt t}t|dks$J t ttd dt  d t}t|dks:J d S )Nr   z!TransferFunction(x - 1, x + 1, x)r   z!TransferFunction(x + 1, 2 - y, x)r   z&TransferFunction(y, y**2 + 2*y + 3, y))rF   r   r   r   rH  rr   rr   rs   test_TransferFunction_str  s   rT  c                  C   rG  )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)))rF   r   r   r   r   r   r   rH   rH  rr   rr   rs   test_Parallel_str  rM  rU  c                  C   rN  )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))))))rF   r   r   r   r   rJ   r   rL   rO  rr   rr   rs   test_MIMOParallel_str  rS  rV  c                  C   s   t ttd  t td td  t} t tt tt t}t ttd  tt t  t tt t}tt| | |dks=J tt| t ddtddksMJ 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))rF   r   r   r   r   r   r   rI   rH  rr   rr   rs   test_Feedback_str  s   $(rW  c                  C   s   t td td  tt t} t tt tt t}t|| g| |gg}t| |g|| gg}tt||dks7J tt||ddksCJ 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))rF   r   r   r   rJ   r   rM   rO  rr   rr   rs   test_MIMOFeedback_str  s   rX  c                  C   s   t ttd  t td td  t} t tt tt t}t ttd  tt t  t tt t}tt| g|ggdks>J tt| |g||ggdksNJ 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)))))rF   r   r   r   r   r   r   rJ   rH  rr   rr   rs   test_TransferFunctionMatrix_str  s   $(rY  c                  C   sf   t tttt} t| dksJ t ttttt } t| dks J t ttttt } t| dks1J d S )Nzx + y*i + z*j + t*kzx + y*i + z*j + t*x*kzx + y*i + z*j + (t + x)*k)r   r   r   r   r   r   )qrr   rr   rs   test_Quaternion_str_printer  s   r[  c                   C   sL   t tdddks
J t tdddksJ ttdksJ ttdks$J d S )NT)abbrevr   JrN   rO   )rf   rN   rO   r   rr   rr   rr   rs   test_Quantity_str#  s   r^  c                  C   s   t d} t| d dksJ ttd|  d dksJ td|  d dks(J td|  d d	ks4J t| d d d
ks@J tdd|   dksLJ 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   r/   )r   rr   rr   rs   test_wild_str*  s   r_  c                  C   s   ddl m} m}m} td}|d u rd S | d}|d}|d}t|dks(J t|dks0J t|dks8J t|| d|  dksFJ tt|t| t| d	ksXJ 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`  ra  rb  rE   r   r2   r1   r0   )r`  ra  rb  rc  wdwpwsrr   rr   rs   test_wild_matchpy5  s   (rj  c                   C   s   t tddks
J d S )Nr   zzeta(3))r   r4   rr   rr   rr   rs   	test_zetaI     rk  c                  C   s(   t t } t| }t| }||ksJ d S N)r   r   r   )rD  r   brr   rr   rs   test_issue_3101M  s   ro  c                  C   s@   dt t tt t d  } 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)))r0   r   r   r   rC  rr   rr   rs   test_issue_3103T  s   rp  c                  C   s"   t ttd } t| dksJ d S )Nr   zIntegral(x, x) + 1)r5   r   r   rC  rr   rr   rs   test_issue_4021[  s   rq  c                  C   sP   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   rn  cz[a, b, c, x]z['a', 'b', 'c', x])rf   rg   r   rC  rr   rr   rs   test_sstrrepr`  s
   rt  c                   C   s   t tt dks
J d S )Nr   )rf   r   r   rr   rr   rr   rs   test_infinityi  rl  ru  c                   C   s   t tddddksJ t tddddksJ t tddddks$J t tdt dddv s2J t tdt dddv s@J t tdt dddv sNJ d S )	Nz0.3Tr+  z0.300000000000000r8  F)z0.300000000000000*xzx*0.300000000000000)z0.3*xzx*0.3)rf   r&   r   rr   rr   rr   rs   test_full_precm  s    rw  c                  C   s   t ddd\} }}t| | |d  dksJ t|d |  | dks%J t| |d  | dks3J tt| dks=J td	t|  d
ksIJ 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*   rf   r0   )ABCrr   rr   rs   test_noncommutative  s   r}  c                  C   sD   t  } | ddksJ | tt dksJ | ddks J d S )Nr~   zx*y    32)rh   emptyPrinterr   r   )str_printerrr   rr   rs   test_empty_printer  s   r  c                   C   s   t tdd  d S )Nc                   S   s   t tdddS )Nr   garbage)method)rf   r&   rr   rr   rr   rs   r         ztest_settings.<locals>.<lambda>)rd   	TypeErrorrr   rr   rr   rs   test_settings  s   r  c            	      C   s   ddl m} m}m}m}m} | ddd}t||dkdks J |dd}t||dkd	ks1J |d
d}|dd}t|t||jdksIJ d S )Nr   )NormalDieExponentialpspacewherex1r   zDomain: (0 < x1) & (x1 < oo)d1r   r   zDomain: Eq(d1, 5) | Eq(d1, 6)r   rn  z1Domain: (0 <= a) & (0 <= b) & (a < oo) & (b < oo))	sympy.statsr  r  r  r  r  r   r   domain)	r  r  r  r  r  XDrz  r{  rr   rr   rs   test_RandomDomain  s   


 r  c                   C   s   t ttdd dksJ t ttdd dksJ t ttt td 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   rB   r   r   r   rr   rr   rr   rs   test_FiniteSet  s     r  c                   C   s"   t ttttthdksJ d S )NzPartition({z}, {x, y}))r   r   rB   r   r   r   rr   rr   rr   rs   test_Partition  s   "r  c                   C      t tjdks	J d S )NUniversalSet)r   r&   r  rr   rr   rr   rs   test_UniversalSet  r   r  c                  C   sh   t tt} t ttf }t| ttt  tttt  ks!J t|tt ttt ks2J d S rm  )rW   
frac_fieldr   r   rf   convert)r;  r{   rr   rr   rs   test_PrettyPoly  s   *&r  c            	      C   s   ddl m} m}m}m} | d}| d}|||d}||}|d}t|dks*J t|dks2J t|d	ks:J t|d
ksBJ d S )Nr   )ObjectNamedMorphismIdentityMorphismCategoryrz  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  rz  r{  r   id_Ar  rr   rr   rs   test_categories  s   r  c                  C   s0   t ddd\} }t| | }t|dksJ d S )NzA BFrx  zTr(A*B))r*   ri   r   )rz  r{  r   rr   rr   rs   test_Tr  s   r  c                   C   s    t tdt d dksJ d S )Ng      r   z-3.0*(1.0*z - 1.0))r   r>   r   rr   rr   rr   rs   test_issue_6387      r  c                  C   s   t dddt ddd} }td| |  dksJ tt|  dks#J tt |  dks.J tdt |  dks:J tdt  |  d	ksGJ ttt| |t| |d
ksXJ 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  rr   rr   rs   test_MatMul_MatAdd  s   &r  c                  C   sv  t ddd} td| | }tddd}tddd}tt|ddd	ks$J t|ttd
 ttd
 f dks8J t|ttd
 dttd
 df dksNJ t|d ttd f dks^J t|d ttd f dksnJ t|td d tf dks~J t|ttttf dksJ t|ttttttf dksJ t|td ttd tf dksJ t|d ttd ttf dksJ t|d d td d tf dksJ tt|ddd	ksJ tt|d | d fd | d fd	ksJ tt|d| d fd| d fd	ksJ tt|d| dfd| dfdksJ t|d
dddddf dks-J t|d
dddddf dks@J t|d
dd dksNJ t|d dd
d df d!ks`J t|d dd
ddf d"ksrJ t|dd ddf d#ksJ t|dd
dd
f d$ksJ t|dd
ddd
df d%ksJ t|| dd dd f d&ksJ d S )'Nr   Tr   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, :]r'  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  rr   rr   rs   test_MatrixSlice  s8   (,    $$$$$&&&&$$ "&*r  c                   C   sh   t ttt  krtt  krdksJ  J t ttt  kr/tt  kr/dks2J  J d S )NTrueFalse)r   r8   reprrf   r7   rr   rr   rr   rs   test_true_false  s   26r  c                   C   s   t tttdksJ d S )NzEquivalent(x, y))r   r6   r   r   rr   rr   rr   rs   test_Equivalent     r  c                   C   s   t tttdddksJ d S )NFr   zx ^ y)r   r9   r   r   rr   rr   rr   rs   test_Xor	     r  c                   C   s   t ttjtjdksJ d S )NzComplement(Reals, Naturals))r   rA   r&   RealsNaturalsrr   rr   rr   rs   test_Complement  r  r  c                   C   s*   t ttddtdddddksJ d S )Nr   r   r   Fr   z3SymmetricDifference(Interval(2, 3), Interval(3, 4)))r   rD   rC   rr   rr   rr   rs   test_SymmetricDifference  s   r  c                  C   s0   t d\} }dt| |  }t|dksJ d S )Nza br   z	2*(a + b))r*   r   r   )r   rn  expr1rr   rr   rs   test_UnevaluatedExpr  s   r  c                  C   sx   t ddd} t ddd}t ddd}t| d dksJ td| d  dks(J |d || | }t|d	ks:J d S )
Nrz  r   r   r{  r|  )r   r   zA[0, 0]z	3*A[0, 0]z(A - B)[0, 0])r;   r   subs)rz  r{  r|  r;  rr   rr   rs   test_MatrixElement_printing  s   r  c                  C   s|   t ddd} t ddd}t| | |  | dksJ t| | | |  dks(J t| d dks2J t| d dks<J d S )	Nrz  r   r{  zA - A*B - Bz-A + A*B - Br   zA**(-1)zA**3)r;   r   )rz  r{  rr   rr   rs   test_MatrixSymbol_printing'  s   r  c                  C   sx   t ddd} td| | }t|dksJ |j| t}t|dks$J ttdt }| | |}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	applyfuncr2   r   r   )r   r  exprlamdarr   rr   rs   test_MatrixExpressions1  s   r  c                   C   s>   t tttfddksJ t ttt 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   rr   rr   rr   rs   test_Subs_printingA  r   r  c                  C   s6   t tttt tf} |  | dfg| gfksJ d S )N))r   g        r  rr   )r5   r+   r   r   as_termsrC  rr   rr   rs   test_issue_15716F  s    r  c                  C   sX   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   Identity
ZeroMatrix	OneMatrixr   r   r   r   r   )sympy.matricesr  r  r  r   r  rr   rr   rs   test_str_special_matricesK  s   r  c                   C   s    t tdtddft sJ d S )Nr   r   )r+   r   r   r   rr   rr   rr   rs   test_issue_14567R  r  r  c                   C   s4   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   rr   rr   rr   rs   test_issue_21823V  r6  r  c                   C   s2   t tttdddtdddddddksJ d S )Nr   Fr   r   r   z
1/(x**2*3))r   r   r"   r   rr   rr   rr   rs   test_issue_22689[  s   2r  c                  C   s   d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s4J | ddks<J | ddksDJ | ddksLJ | ddksTJ d S )Nc                 S   s   t t| ddS )NFr   )r   r&   )r   rr   rr   rs   r   `  r  z(test_issue_21119_21460.<locals>.<lambda>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)rr   )ssrr   rr   rs   test_issue_21119_21460_  s   r  c                  C   s8   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.symbolr  r   rg   r  rr   rr   rs   test_Strm  s   r  c            
      C   s   ddl m} m}m}m} tddd\}}| dd}t|dks!J |d|}t|dks.J |d	|||g}t|d	ks>J ||d}	t|	d
ksKJ d S )Nr   )ManifoldPatchCoordSystemBaseScalarFieldzx yTr   r   r   Prectr   )sympy.diffgeomr  r  r  r  r*   r   )
r  r  r  r  r   r   mr   r  rn  rr   rr   rs   test_diffgeoms  s   


r  c                   C   sl   t tddddksJ t tddddksJ t tddgdddks&J t tddgddd	ks4J d S )
Nr   Trv  z1.00000000000000Fz1.0g       @z$[1.00000000000000, 2.00000000000000]z
[1.0, 2.0])rf   ra   rr   rr   rr   rs   test_NDimArray  s    r  c                   C   r  )NzQ.even)rf   r   evenrr   rr   rr   rs   test_Predicate  r   r  c                   C   s   t ttdksJ d S )Nz	Q.even(x))rf   r   r  r   rr   rr   rr   rs   test_AppliedPredicate  r  r  c                  C   st   t tdddksJ t tddddt  dfdksJ tddd} td	dd}t t| | tdgd
ks8J d S )Nrz  )r   r   r   r   r   r   zA[2, 1/(1 - x), 0]r   r   Nz(M*N)[x, 0])rf   rb   rc   r   r;   )r   r  rr   rr   rs   #test_printing_str_array_expressions  s
   $"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    sympy.core.parametersr!   sympy.core.powerr"   sympy.core.relationalr#   r$   r%   sympy.core.singletonr&   r  r'   r(   r)   r*   (sympy.functions.combinatorial.factorialsr+   r,   r-   $sympy.functions.elementary.complexesr.   &sympy.functions.elementary.exponentialr/   (sympy.functions.elementary.miscellaneousr0   (sympy.functions.elementary.trigonometricr1   r2   'sympy.functions.special.delta_functionsr3   &sympy.functions.special.zeta_functionsr4   sympy.integrals.integralsr5   sympy.logic.boolalgr6   r7   r8   r9   sympy.matrices.denser:   "sympy.matrices.expressions.matexprr;    sympy.matrices.expressions.slicer<   r  r=   sympy.polys.polytoolsr>   sympy.series.limitsr?   sympy.series.orderr@   sympy.sets.setsrA   rB   rC   rD   sympy.externalrE   sympy.physics.control.ltirF   rG   rH   rI   rJ   rK   rL   rM   sympy.physics.unitsrN   rO   sympy.polysrP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   sympy.geometryr\   r]   r^   r_   r`   sympy.tensorra   0sympy.tensor.array.expressions.array_expressionsrb   rc   sympy.testing.pytestrd   re   sympy.printingrf   rg   rh   sympy.physics.quantum.traceri   r   r   r   r   r   rj   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r%  r0  r2  r5  r7  r9  r<  r?  r@  rB  rE  rF  rL  rR  rT  rU  rV  rW  rX  rY  r[  r^  r_  rj  rk  ro  rp  rq  rt  ru  rw  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rr   rr   rr   rs   <module>   s6   ,(8	
	,A*
9		
		




