
    MZd1                       U 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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 d d
lmZ d dlmZmZ d dlm Z  d dl!m"Z" d dl#m$Z$m%Z% d dl&m'Z'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z.m/Z/ d dlm0Z0 d dl1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= d dl>m?Z? d dl@mAZA  ed      \  ZBZCde0iZDdeEd<    eFdeD       dNdZGd  ZHd! ZId" ZJd# ZKd$ ZLd% ZMd& ZNd' ZOd( ZPd) ZQd* ZRd+ ZSd, ZTd- ZUd. ZVd/ ZWd0 ZXd1 ZYd2 ZZd3 Z[d4 Z\d5 Z]d6 Z^d7 Z_d8 Z`d9 Zad: Zbd; Zcd< Zdd= Zed> Zfd? Zgd@ ZhdA ZidB ZjdC ZkdD ZldE ZmdF ZndG ZodH ZpdI ZqdJ ZrdK ZsdL ZtdM Zuy)O    )annotations)Any)raiseswarns_deprecated_sympy)Q)FunctionWildFunction)AlgebraicNumberFloatIntegerRational)S)DummySymbolWildsymbols)sympify)Abs)rootsqrt)sin)	Heaviside)falsetrue)Matrixones)MatrixSymbol)ImmutableDenseMatrix)CyclePermutation)Str)PointEllipse)srepr)ringfieldZZQQlexgrlexPoly)DMP)FiniteExtensionx,yr!   zdict[str, Any]ENVzfrom sympy import *Nc                    |t         }n t         j                         }t        ||       t        | fi ||k(  sJ t	        ||      | k(  sJ y)z
    sT := sreprTest

    Tests that srepr delivers the expected string and that
    the condition eval(srepr(expr))==expr holds.
    N)r/   copyexecr$   eval)exprstringimport_stmtkwargsENV2s        @/usr/lib/python3/dist-packages/sympy/printing/tests/test_repr.pysTr:   #   sQ     xxz[$  F***%%%    c                 V     G d dt               } t         | t                    dk(  sJ y )Nc                      e Zd Zd Zy)test_printmethod.<locals>.Rc                D    d|j                  | j                  d         z  S )Nzfoo(%s)r   )_printargs)selfprinters     r9   
_sympyreprz&test_printmethod.<locals>.R._sympyrepr6   s    w~~diil;;;r;   N)__name__
__module____qualname__rD    r;   r9   Rr>   5   s    	<r;   rI   zfoo(Symbol('x')))r   r$   x)rI   s    r9   test_printmethodrK   4   s'    <C < 1;,,,,r;   c                     t        t        t        z   d       t        t        dz  dz   d      dk(  sJ t        t        dz  dz   d      dk(  sJ t        t	        d	d
      d      dk(  sJ y )NzAdd(Symbol('x'), Symbol('y'))      r)   orderz-Add(Pow(Symbol('x'), Integer(2)), Integer(1))oldz-Add(Integer(1), Pow(Symbol('x'), Integer(2)))z	x + 3 - 2Fevaluatenonez:Add(Symbol('x'), Integer(3), Mul(Integer(-1), Integer(2)))r:   rJ   yr$   r   rH   r;   r9   test_AddrW   ;   sw    q1u-.A'+ZZZZA'+ZZZZu5VD  IE  E  E  Er;   c                 |    ddl m}  ddlm} | |fD ])  } |t	        d       }t        t        |            |k(  r)J  y )Nr   )Add)Mulzx:256)sympy.core.addrY   sympy.core.mulrZ   r   r3   r$   )rY   rZ   opr4   s       r9   #test_more_than_255_args_issue_10259r^   B   sA    ""Cj )77#$E$K D((()r;   c                     t         t        d      t              d       t        t        d      d       t        t        t              d       t        t        d       y )NfzFunction('f')(Symbol('x'))zFunction('f')zsin(Symbol('x'))r   )r:   r   rJ   r   rH   r;   r9   test_Functionra   J   s>    }x}Q56x}o&s1v!"sENr;   c                 j    t        t        t              d       t        t        t        d      d       y )NzHeaviside(Symbol('x'))rN   z"Heaviside(Symbol('x'), Integer(1)))r:   r   rJ   rH   r;   r9   test_Heavisiderc   S   s"    y|-.yA<=r;   c                 r    t        t        dd      d       t        t        t        dd      dd      d       y )Nr   zPoint2D(Integer(0), Integer(0))   rN   z@Ellipse(Point2D(Integer(0), Integer(0)), Integer(5), Integer(1)))r:   r"   r#   rH   r;   r9   test_Geometryrf   X   s0    uQ{56wuQ{Aq!IKr;   c                    t        t        j                  d       t        t        j                  d       t        t        j                  d       t        t        j
                  d       t        t        j                  d       t        t        j                  d       t        t        j                  d       t        t        j                  d       t        t        j                  d	       t        t        j                  d
       t        t        j                  d       t        t        j                  d       t        t        j                  d       t        t        j                  d       t        t        j                   d       t        t        j"                  d       t        t        j$                  d       t        t        j&                  d       t        t        j(                  d       t        t        j*                  d       t        t        j,                  d       t        t        j.                  d       t        t        j0                  d       y )NCatalanzoo
EulerGammaEGoldenRatioTribonacciConstantzRational(1, 2)Ioonanz-oozInteger(-1)z
Integer(1)piz
Integer(0)	ComplexesEmptySequenceEmptySetNaturals	Naturals0	RationalsRealsUniversalSet)r:   r   rh   ComplexInfinityrj   Exp1rl   rm   HalfImaginaryUnitInfinityNaNNegativeInfinityNegativeOneOnePiZerorr   rs   rt   ru   rv   rw   rx   ry   rH   r;   r9   test_Singletonsr   _   sJ   qyy)q% q||\"qvvsOq}}m$q12qvv qqzz4quueq5!q}}m$quulqttTNqvv|q{{K q(qzz:qzz:q{{K q{{K qwwq~~~&r;   c                 .    t        t        d      d       y )N   z
Integer(4))r:   r   rH   r;   r9   test_Integerr   z   s    wqz< r;   c                 :    t        t        t        d      gd       y )Nr   z[Symbol('x'), Integer(4)])r:   rJ   r   rH   r;   r9   	test_listr   ~   s    71:34r;   c            	         t         dft        dffD ]{  \  } }t         | t        dz  dgt        t        t        z   gg      d|z         t         |        d|z         t         | t        dz  dgt        t        t        z   gg      d|z         } y )NMutableDenseMatrixr   rN   zM%s([[Symbol('x'), Integer(1)], [Symbol('y'), Add(Symbol('x'), Symbol('y'))]])z%s([]))r   r   r:   rJ   rV   )clsnames     r9   test_Matrixr      s    347KMc6de B	T
3B
QAJ'(Z]aa	c 	35(T/"
3B
QAJ'(*y  }A  +A  	BBr;   c                     t        t        dd      d       t        t        dd      d       t        t        dd      d       y )Nr      zMutableDenseMatrix(0, 3, [])r   zMutableDenseMatrix(4, 0, [])zMutableDenseMatrix([]))r:   r   rH   r;   r9   test_empty_Matrixr      s5    tAqz12tAqz12tAqz+,r;   c                 \    t        t        dd      d       t        t        dd      d       y )NrN   r   zRational(1, 3)zRational(-1, 3))r:   r   rH   r;   r9   test_Rationalr      s$    x1~'(xA)*r;   c                    t        t        dd      d       t        t        dd      d       t        t        dd	      d
       t        t        dd      d       t        t        dd      d       t        t        dd      d       t        t        dd      d
       t        t        dd      d       t        t        dd      d       y )Nz1.23r   )dpszFloat('1.22998', precision=13)z
1.23456789	   z$Float('1.23456788994', precision=33)z1.234567890123456789   z.Float('1.234567890123456789013', precision=66)z0.60038617995049726   z*Float('0.60038617995049726', precision=53)   )	precision!   B   5   )r:   r   rH   r;   r9   
test_Floatr      s    uV=>u\q!#IJu#,79u"+35 uVr"$DEu\R(-/u#r279u"b135 u"B'35r;   c                 r    t        t        d       t        t        d       t        t        dd      d       y )NSymbol('x')zSymbol('y')rJ   T)negativezSymbol('x', negative=True))r:   rJ   rV   r   rH   r;   r9   test_Symbolr      s(    q-q-vcD!#?@r;   c                     t        ddd      } d}d}t        |       ||fv sJ t        t        |       t              | k(  sJ y )NrJ   r   rN   )r   integerz)Symbol('x', integer=True, negative=False)z)Symbol('x', negative=False, integer=True))r   r$   r3   r/   )rJ   s1s2s      r9   test_Symbol_two_assumptionsr      sI    sQ*A	4B	4B8Bxa#!###r;   c                     t        t        d      d       t        t        dd      d       t        t        dd      d       t        t        dd      d       t        t        dd	      d       y )
NrJ   r   F)commutativezSymbol('x', commutative=False)r   TzSymbol('x', commutative=True)rN   )r:   r   rH   r;   r9   ,test_Symbol_no_special_commutative_treatmentr      sX    vc{M"vcu%'GHvcq!#CDvct$&EFvcq!#BCr;   c                 2    t        t        dd      d       y )NrJ   T)evenzWild('x', even=True))r:   r   rH   r;   r9   	test_Wildr      s    tCd34r;   c                 ^    t        d      } t        | dt        | j                        z         y )NdzDummy('d', dummy_index=%s))r   r:   strdummy_index)r   s    r9   
test_Dummyr      s$    c
Aq
&Q]]);
;<r;   c                     t        dd      } | t        t        |             k(  sJ dt        | j                        z  }dt        | j                        z  }t        |       ||fv sJ y )Nr   T)nonzeroz(Dummy('d', dummy_index=%s, nonzero=True)z(Dummy('d', nonzero=True, dummy_index=%s))r   r3   r$   r   r   )r   r   r   s      r9   test_Dummy_assumptionr      s`    c4 AU1X	3c!--6H	HB	3c!--6H	HB8Bxr;   c                     t        dd      } | j                         }t        |      dt        |j                        z  k(  sJ y )NnTr   zDummy('n', dummy_index=%s))r   as_dummyr$   r   r   )r   r   s     r9   test_Dummy_from_Symbolr      sC    sD!A	

A 
)C,>>? ? ?r;   c                 R    t        t        fd       t        t        t        fd       y )Nz(Symbol('x'),)z(Symbol('x'), Symbol('y')))r:   rJ   rV   rH   r;   r9   
test_tupler      s    t1v+,r;   c                 .    t        t        d      d       y )NwzWildFunction('w'))r:   r	   rH   r;   r9   test_WildFunctionr      s    |C-.r;   c                 &    t        t        d        y )Nc                 $    t        t        d      S )Ngarbage)method)r$   rJ   rH   r;   r9   <lambda>ztest_settins.<locals>.<lambda>   s    eAi8 r;   )r   	TypeErrorrH   r;   r9   test_settinsr      s    
989r;   c                     t        dt        dz  z  t        z  d       t        dt        dz  z  t        z  d      dk(  sJ t        t	        dd      d	      d
k(  sJ y )Nr   z:Mul(Integer(3), Pow(Symbol('x'), Integer(3)), Symbol('y'))rQ   rO   z:Mul(Integer(3), Symbol('y'), Pow(Symbol('x'), Integer(3)))z(x+4)*2*x*7FrR   rT   zFMul(Add(Symbol('x'), Integer(4)), Integer(2), Symbol('x'), Integer(7))rU   rH   r;   r9   test_Mulr      se    qAvaxMN1a4'+gggg7vF  KS  S  S  Sr;   c                     t        t        d            } t        | d       t        t        dd            } t        | d       y )NrM   zJAlgebraicNumber(Pow(Integer(2), Rational(1, 2)), [Integer(1), Integer(0)])r   zKAlgebraicNumber(Pow(Integer(-2), Rational(1, 3)), [Integer(1), Integer(0)]))r
   r   r:   r   )as    r9   test_AlgebraicNumberr      s6    Q Aq
VWR$Aq
WXr;   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 y )	NrJ   r   z!PolyRing((Symbol('x'),), ZZ, lex)r.   z/PolyRing((Symbol('x'), Symbol('y')), QQ, grlex)x,y,ztz=PolyRing((Symbol('x'), Symbol('y'), Symbol('z')), ZZ[t], lex))r$   r%   r'   r)   r(   r*   rH   r;   r9   test_PolyRingr      sl    c2s#A&'+NNNNeR'*+/````gr#w,Q/04ssssr;   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 y )	NrJ   r   z"FracField((Symbol('x'),), ZZ, lex)r.   z0FracField((Symbol('x'), Symbol('y')), QQ, grlex)r   r   z>FracField((Symbol('x'), Symbol('y'), Symbol('z')), ZZ[t], lex))r$   r&   r'   r)   r(   r*   rH   r;   r9   test_FracFieldr      sl    sB$Q'(,PPPPub%(+,0bbbbw3-a015uuuur;   c                 d    t        dt              \  } }}t        d|dz  z  |z  dz         dk(  sJ y )Nr.   r   rM   rN   zVPolyElement(PolyRing((Symbol('x'), Symbol('y')), ZZ, lex), [((2, 1), 3), ((0, 0), 1)]))r%   r'   r$   )rI   rJ   rV   s      r9   test_PolyElementr     s7    5"oGAq!1a4A"zzzzr;   c                 v    t        dt              \  } }}t        d|dz  z  |z  dz   ||dz  z
  z        dk(  sJ y )Nr.   r   rM   rN   ztFracElement(FracField((Symbol('x'), Symbol('y')), ZZ, lex), [((2, 1), 3), ((0, 0), 1)], [((1, 0), 1), ((0, 2), -1)]))r&   r'   r$   )FrJ   rV   s      r9   test_FracElementr     sQ    E2GAq!!AqD&(Q,QT*+  0f  f  f  fr;   c                     t        t        j                  t                    dk(  sJ t        t        j                  t        t        t
                    dk(  sJ y )Nz1FractionField(FracField((Symbol('x'),), QQ, lex))rO   z?FractionField(FracField((Symbol('x'), Symbol('y')), QQ, grlex)))r$   r(   
frac_fieldrJ   rV   r*   rH   r;   r9   test_FractionFieldr     sO    q!";< < <q!512IJ J Jr;   c                 "   t        t        j                  t                    dk(  sJ t        t        t           j                  t                    dk(  sJ t        t        j                  t              j                  t                    dk(  sJ y )Nz%GlobalPolynomialRing(ZZ, Symbol('x'))z(GlobalPolynomialRing(ZZ[x], Symbol('y'))zTGlobalPolynomialRing(FractionField(FracField((Symbol('x'),), QQ, lex)), Symbol('y')))r$   r'   old_poly_ringrJ   rV   r(   r   rH   r;   r9   test_PolynomialRingBaser     s    !!!$%/0 0 0A$$Q'(23 3 3q!//23^_ _ _r;   c                     t        t        ddgt                    dk(  sJ t         t        j                  t              ddg            dk(  sJ y )NrN   rM   zDMP([1, 2], ZZ)z;DMP([1, 2], ZZ, ring=GlobalPolynomialRing(ZZ, Symbol('x'))))r$   r,   r'   r   rJ   rH   r;   r9   test_DMPr     sT    aVR!%6666$!!!$aV,-EF F Fr;   c                 f    t        t        t        t        dz  dz   t                          dk(  sJ y )NrM   rN   z/FiniteExtension(Poly(x**2 + 1, x, domain='ZZ')))r$   r-   r+   rJ   rH   r;   r9   test_FiniteExtensionr   !  s0    adQh!2349: : :r;   c                 ~    t        t        t        dz  dz   t                    } t        | j                        dk(  sJ y )NrM   rN   zuExtElem(DMP([1, 0], ZZ, ring=GlobalPolynomialRing(ZZ, Symbol('x'))), FiniteExtension(Poly(x**2 + 1, x, domain='ZZ'))))r-   r+   rJ   r$   	generator)As    r9   test_ExtensionElementr   &  s<    QTAXq)*A@ @ @r;   c                 T    t        t              dk(  sJ t        t              dk(  sJ y )Nr   r   )r$   r   r   rH   r;   r9   test_BooleanAtomr   ,  s&    ;&   <7"""r;   c                 8    t        t        j                  d       y )NIntegers)r:   r   r   rH   r;   r9   test_Integersr   1      qzz:r;   c                 8    t        t        j                  d       y )Nru   )r:   r   ru   rH   r;   r9   test_Naturalsr   5  r   r;   c                 8    t        t        j                  d       y )Nrv   )r:   r   rv   rH   r;   r9   test_Naturals0r   9  s    q{{K r;   c                 8    t        t        j                  d       y )Nrx   )r:   r   rx   rH   r;   r9   
test_Realsr   =  s    qwwr;   c                     t        dd      } t        d| |       }t        d| |       }t        |d       t        ||z  d       t        ||z   d       y )	Nr   Tr   r   BzLMatrixSymbol(Str('A'), Symbol('n', integer=True), Symbol('n', integer=True))zMatMul(MatrixSymbol(Str('A'), Symbol('n', integer=True), Symbol('n', integer=True)), MatrixSymbol(Str('B'), Symbol('n', integer=True), Symbol('n', integer=True)))zMatAdd(MatrixSymbol(Str('A'), Symbol('n', integer=True), Symbol('n', integer=True)), MatrixSymbol(Str('B'), Symbol('n', integer=True), Symbol('n', integer=True))))r   r   r:   )r   r   r   s      r9   test_matrix_expressionsr   A  s_    T"AS!QAS!QAq
XYqs  q  rq1u  s  tr;   c                 8    t        t        dd            dk(  sJ y )NrN   rM   zCycle(1, 2))r$   r   rH   r;   r9   
test_Cycler   J  s    
 q!...r;   c                 N   d} t         t        dd      dd      d| d       t         t        dd      dd      d	| d
       t               5  t        j                  }dt        _        t         t        dd      dd      d|        |t        _        d d d        y # 1 sw Y   y xY w)Nz+from sympy.combinatorics import PermutationrN   rM   r   r   zPermutation([0, 2, 1, 4, 3])F)perm_cycliczPermutation(1, 2)(3, 4)T)r:   r    r   print_cyclic)r6   old_print_cyclics     r9   test_Permutationr   R  s    ?K{1aA >Y^_{1aA 9;TXY		! 4&33#( 
;q!Q"$BKP#3 	4 4 4s   ABB$c                     ddl m} m}m} i }t	        |      dk(  sJ | |i}t	        |      dk(  sJ | |||i}t	        |      dv sJ | ||ii}t	        |      dk(  sJ y )Nr   )rJ   rV   zz{}z{Symbol('x'): Symbol('y')})z4{Symbol('x'): Symbol('y'), Symbol('y'): Symbol('z')}z4{Symbol('y'): Symbol('z'), Symbol('x'): Symbol('y')}z){Symbol('x'): {Symbol('y'): Symbol('z')}})	sympy.abcrJ   rV   r   r$   )rJ   rV   r   r   s       r9   	test_dictr  ]  s    !!
A8t	
AA83333	
Aq!A8     
QFA8BBBBr;   c                 n    ddl m} m} t               }t	        |      dk(  sJ | |h}t	        |      dv sJ y )Nr   )rJ   rV   zset())z{Symbol('x'), Symbol('y')}z{Symbol('y'), Symbol('x')})r   rJ   rV   setr$   )rJ   rV   ss      r9   test_setr  k  s:    A8w	
AA8SSSSr;   c                 8    t        t        j                  d       y )NzQ.even)r:   r   r   rH   r;   r9   test_Predicater  r  s    qvvxr;   c                 T    t        t        j                  t        d            d       y )Nr   z%AppliedPredicate(Q.even, Symbol('z')))r:   r   r   r   rH   r;   r9   test_AppliedPredicater	  u  s    qvvfSkCDr;   )N)v
__future__r   typingr   sympy.testing.pytestr   r   sympy.assumptions.askr   sympy.core.functionr   r	   sympy.core.numbersr
   r   r   r   sympy.core.singletonr   sympy.core.symbolr   r   r   r   sympy.core.sympifyr   $sympy.functions.elementary.complexesr   (sympy.functions.elementary.miscellaneousr   r   (sympy.functions.elementary.trigonometricr   'sympy.functions.special.delta_functionsr   sympy.logic.boolalgr   r   sympy.matrices.denser   r   "sympy.matrices.expressions.matexprr   sympy.matrices.immutabler   sympy.combinatoricsr   r    r!   sympy.geometryr"   r#   sympy.printingr$   sympy.polysr%   r&   r'   r(   r)   r*   r+   sympy.polys.polyclassesr,   sympy.polys.agca.extensionsr-   rJ   rV   r/   __annotations__r2   r:   rK   rW   r^   ra   rc   rf   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	  rH   r;   r9   <module>r"     s   "  ? # 8 J J " < < & 4 A 8 = - / ; 9 2 ! )   = = = ' 7u~1 cl^ " C  &"-E)>
K'6!5B-+
5(A$D5=
 ?-
/:SYtv{
f
J_F:
@#
!t/	4CTEr;   