
    Rie1                       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 ZudS )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                                           }t          ||           t          | fi ||k    sJ t	          ||          | k    sJ dS )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        >lib/python3.11/site-packages/sympy/printing/tests/test_repr.pysTr:   #   sp     xxzz[$    F****%%%%%%    c                 r     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     r9   
_sympyreprz&test_printmethod.<locals>.R._sympyrepr6   s    w~~di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   sT    < < < < <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 d S )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   ;   s    q1u-...A'''+ZZZZZA'''+ZZZZZu555VDDD  IE  E  E  E  E  E  Er;   c                     ddl m}  ddlm} | |fD ]6} |t	          d           }t          t          |                    |k    sJ 7d S )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   sy    """"""""""""Cj ) )r77##$E$KK  D((((() )r;   c                    t           t          d          t                    d           t          t          d          d           t          t          t                    d           t          t          d           d S )NfzFunction('f')(Symbol('x'))zFunction('f')zsin(Symbol('x'))r   )r:   r   rJ   r   rH   r;   r9   test_Functionra   J   sa    }x}}Q5666x}}o&&&s1vv!"""sENNNNNr;   c                     t          t          t                    d           t          t          t          d          d           d S )NzHeaviside(Symbol('x'))rN   z"Heaviside(Symbol('x'), Integer(1)))r:   r   rJ   rH   r;   r9   test_Heavisiderc   S   s8    y||-...yA<=====r;   c                     t          t          dd          d           t          t          t          dd          dd          d           d S )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   sU    uQ{{5666wuQ{{Aq!!IK K K K 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          j        d           d S )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   _   s   qy)q%   q|\"""qvsOOOq}m$$$q1222qv   qqz4queq5!!!q}m$$$qulqtTNNNqv|q{K   q(((qz:qz:q{K   q{K   qwq~~&&&&&r;   c                 @    t          t          d          d           d S )N   z
Integer(4))r:   r   rH   r;   r9   test_Integerr   z   s    wqzz<     r;   c                 N    t          t          t          d          gd           d S )Nr   z[Symbol('x'), Integer(4)])r:   rJ   r   rH   r;   r9   	test_listr   ~   s#    71::34444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             d S )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 B	T
33B
QAJ'((Z]aa	c 	c 	c 	3355(T/"""
33B
QAJ'((*y  }A  +A  	B  	B  	B  	BB Br;   c                     t          t          dd          d           t          t          dd          d           t          t          dd          d           d S )Nr      zMutableDenseMatrix(0, 3, [])r   zMutableDenseMatrix(4, 0, [])zMutableDenseMatrix([]))r:   r   rH   r;   r9   test_empty_Matrixr      sS    tAqzz1222tAqzz1222tAqzz+,,,,,r;   c                 ~    t          t          dd          d           t          t          dd          d           d S )NrN   r   zRational(1, 3)zRational(-1, 3))r:   r   rH   r;   r9   test_Rationalr      s:    x1~~'(((xA)*****r;   c                 2   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           d S )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      sD   uV=>>>u\q!!!#IJJJu#,,,79 9 9u"+++35 5 5 uVr"""$DEEEu\R(((-/ / /u#r22279 9 9u"b11135 5 5 u"B''35 5 5 5 5r;   c                     t          t          d           t          t          d           t          t          dd          d           d S )NSymbol('x')zSymbol('y')rJ   T)negativezSymbol('x', negative=True))r:   rJ   rV   r   rH   r;   r9   test_Symbolr      sF    q-q-vcD!!!#?@@@@@r;   c                     t          ddd          } d}d}t          |           ||fv sJ t          t          |           t                    | k    sJ d S )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      sb    sQ***A	4B	4B88Bxa#!######r;   c                 8   t          t          d          d           t          t          dd          d           t          t          dd          d           t          t          dd          d           t          t          dd	          d           d S )
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      s    vc{{M"""vcu%%%'GHHHvcq!!!#CDDDvct$$$&EFFFvcq!!!#BCCCCCr;   c                 D    t          t          dd          d           d S )NrJ   T)evenzWild('x', even=True))r:   r   rH   r;   r9   	test_Wildr      s&    tCd344444r;   c                 n    t          d          } t          | dt          | j                  z             d S )NdzDummy('d', dummy_index=%s))r   r:   strdummy_index)r   s    r9   
test_Dummyr      s3    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 d S )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      sz    c4   AU1XX	3c!-6H6H	HB	3c!-6H6H	HB88Bxr;   c                     t          dd          } |                                 }t          |          dt          |j                  z  k    sJ d S )NnTr   zDummy('n', dummy_index=%s))r   as_dummyr$   r   r   )r   r   s     r9   test_Dummy_from_Symbolr      s`    sD!!!A	

A 
 
)C,>,>>? ? ? ? ? ?r;   c                 j    t          t          fd           t          t          t          fd           d S )Nz(Symbol('x'),)z(Symbol('x'), Symbol('y')))r:   rJ   rV   rH   r;   r9   
test_tupler      s0    t1v+,,,,,r;   c                 @    t          t          d          d           d S )NwzWildFunction('w'))r:   r	   rH   r;   r9   test_WildFunctionr      s!    |C-.....r;   c                 2    t          t          d            d S )Nc                 .    t          t          d          S )Ngarbage)method)r$   rJ   rH   r;   r9   <lambda>ztest_settins.<locals>.<lambda>   s    eAi888 r;   )r   	TypeErrorrH   r;   r9   test_settinsr      s    
9889999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 d S )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      s    qAvaxMNNN1a4'''+ggggg777vFFF  KS  S  S  S  S  S  Sr;   c                     t          t          d                    } t          | d           t          t          dd                    } t          | d           d S )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      sR    Q  Aq
VWWWR$$Aq
WXXXXXr;   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 )	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      s    c2s##A&''+NNNNNeR''*++/`````gr#w,,Q/004sssssssr;   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 )	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      s    sB$$Q'((,PPPPPub%((+,,0bbbbbw3--a0115uuuuuuur;   c                 z    t          dt                    \  } }}t          d|dz  z  |z  dz             dk    sJ d S )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     sE    5"ooGAq!1a4A"zzzzzzzr;   c                     t          dt                    \  } }}t          d|dz  z  |z  dz   ||dz  z
  z            dk    sJ d S )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     si    E2GAq!!AqD&(Q,QT*++  0f  f  f  f  f  f  fr;   c                     t          t          j        t                              dk    sJ t          t          j        t          t          t
                              dk    sJ d S )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     sq    q!!"";< < < <q!511122IJ J J J J Jr;   c                 `   t          t          j        t                              dk    sJ t          t          t                                       t                              dk    sJ t          t          j        t                                        t                              dk    sJ d S )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 0A$$Q''((23 3 3 3q!!//2233^_ _ _ _ _ _r;   c                     t          t          ddgt                              dk    sJ t           t          j        t                    ddg                    dk    sJ d S )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6$!!$$aV,,--EF F F F F Fr;   c                     t          t          t          t          dz  dz   t                                        dk    sJ d S )NrM   rN   z/FiniteExtension(Poly(x**2 + 1, x, domain='ZZ')))r$   r-   r+   rJ   rH   r;   r9   test_FiniteExtensionr   !  sH    adQh!2!233449: : : : : :r;   c                     t          t          t          dz  dz   t                              } t          | j                  dk    sJ d S )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   &  sU    QTAXq))**A@ @ @ @ @ @r;   c                 n    t          t                    dk    sJ t          t                    dk    sJ d S )Nr   r   )r$   r   r   rH   r;   r9   test_BooleanAtomr   ,  s6    ;;&    <<7""""""r;   c                 :    t          t          j        d           d S )NIntegers)r:   r   r   rH   r;   r9   test_Integersr   1      qz:r;   c                 :    t          t          j        d           d S )Nru   )r:   r   ru   rH   r;   r9   test_Naturalsr   5  r   r;   c                 :    t          t          j        d           d S )Nrv   )r:   r   rv   rH   r;   r9   test_Naturals0r   9  s    q{K     r;   c                 :    t          t          j        d           d S )Nrx   )r:   r   rx   rH   r;   r9   
test_Realsr   =  s    qwr;   c                     t          dd          } t          d| |           }t          d| |           }t          |d           t          ||z  d           t          ||z   d           d S )	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YYqs  q  r  r  rq1u  s  t  t  t  t  tr;   c                 L    t          t          dd                    dk    sJ d S )NrN   rM   zCycle(1, 2))r$   r   rH   r;   r9   
test_Cycler   J  s+    
 q!......r;   c                    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            d S # 1 swxY w Y   d S )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YYY		!	! 4 4&3#( 
;q!Q""$BKPPP#3 	4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s   'ACC	C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 d S )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88t	
AA8833333	
Aq!A88      
QFA88BBBBBBBr;   c                     ddl m} m} t                      }t	          |          dk    sJ | |h}t	          |          dv sJ d S )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  sa    A88w	
AA88SSSSSSSr;   c                 :    t          t          j        d           d S )NzQ.even)r:   r   r   rH   r;   r9   test_Predicater  r  s    qvxr;   c                 d    t          t          j        t          d                    d           d S )Nr   z%AppliedPredicate(Q.even, Symbol('z')))r:   r   r   r   rH   r;   r9   test_AppliedPredicater	  u  s)    qvfSkkCDDDD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"     sp   " " " " " " "       ? ? ? ? ? ? ? ? # # # # # # 8 8 8 8 8 8 8 8 J J J J J J J J J J J J " " " " " " < < < < < < < < < < < < & & & & & & 4 4 4 4 4 4 A A A A A A A A 8 8 8 8 8 8 = = = = = = - - - - - - - - / / / / / / / / ; ; ; ; ; ; 9 9 9 9 9 9 2 2 2 2 2 2 2 2 ! ! ! ! ! ! ) ) ) ) ) ) ) )             = = = = = = = = = = = = = = = = = = ' ' ' ' ' ' 7 7 7 7 7 7wu~~1 cl " " " " C      & & & &"- - -E E E) ) )  > > >
K K K' ' '6! ! !5 5 5B B B- - -+ + +
5 5 5(A A A$ $ $D D D5 5 5= = =
     ? ? ?- - -
/ / /: : :S S SY Y Yt t tv v v{ { {
f f f
J J J_ _ _F F F: : :
@ @ @# # #
    ! ! !  t t t/ / /	4 	4 	4C C CT T T  E E E E Er;   