o
    *ήc1                     @   s   d dl mZ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ZDeEdeD dzddZFdd ZGd d! ZHd"d# ZId$d% ZJd&d' ZKd(d) ZLd*d+ ZMd,d- ZNd.d/ ZOd0d1 ZPd2d3 ZQd4d5 ZRd6d7 ZSd8d9 ZTd:d; ZUd<d= ZVd>d? ZWd@dA ZXdBdC ZYdDdE ZZdFdG Z[dHdI Z\dJdK Z]dLdM Z^dNdO Z_dPdQ Z`dRdS ZadTdU ZbdVdW ZcdXdY ZddZd[ Zed\d] Zfd^d_ Zgd`da Zhdbdc Ziddde Zjdfdg Zkdhdi Zldjdk Zmdldm Zndndo Zodpdq Zpdrds Zqdtdu Zrdvdw Zsdxdy ZtdS ){    )AnyDict)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from sympy import *Nc                 K   sN   |du r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)ENVcopyexecr#   eval)exprstringimport_stmtkwargsENV2 r7   E/tmp/pip-target-vg8gfxp4/lib/python/sympy/printing/tests/test_repr.pysT"   s   
r9   c                  C   s(   G dd dt } t| tdksJ d S )Nc                   @   s   e Zd Zdd ZdS )ztest_printmethod.<locals>.Rc                 S   s   d| | jd  S )Nzfoo(%s)r   )_printargs)selfprinterr7   r7   r8   
_sympyrepr5   s   z&test_printmethod.<locals>.R._sympyreprN)__name__
__module____qualname__r>   r7   r7   r7   r8   R4   s    rB   zfoo(Symbol('x')))r   r#   x)rB   r7   r7   r8   test_printmethod3   s   rD   c                   C   sf   t tt d 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dks1J 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)))r9   rC   yr#   r   r7   r7   r7   r8   test_Add:   s    rO   c                  C   sJ   ddl m}  ddlm} | |fD ]}|td }tt||ks"J qd S )Nr   )Add)Mulzx:256)sympy.core.addrP   sympy.core.mulrQ   r   r1   r#   )rP   rQ   opr2   r7   r7   r8   #test_more_than_255_args_issue_10259A   s   rU   c                   C   s<   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   )r9   r   rC   r   r7   r7   r7   r8   test_FunctionI   s   rW   c                   C   s"   t ttd t ttdd d S )NzHeaviside(Symbol('x'))rF   z"Heaviside(Symbol('x'), Integer(1)))r9   r   rC   r7   r7   r7   r8   test_HeavisideR   s   rX   c                   C   s,   t tddd t ttddddd d S )Nr   zPoint2D(Integer(0), Integer(0))   rF   z@Ellipse(Point2D(Integer(0), Integer(0)), Integer(5), Integer(1)))r9   r!   r"   r7   r7   r7   r8   test_GeometryW   s   rZ   c                   C   s  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)r9   r   r[   ComplexInfinityr]   Exp1r_   r`   HalfImaginaryUnitInfinityNaNNegativeInfinityNegativeOneOnePiZerore   rf   rg   rh   ri   rj   rk   rl   r7   r7   r7   r8   test_Singletons^   s.   rx   c                   C      t tdd d S )N   z
Integer(4))r9   r   r7   r7   r7   r8   test_Integery      r{   c                   C   s   t ttdgd d S )Nrz   z[Symbol('x'), Integer(4)])r9   rC   r   r7   r7   r7   r8   	test_list}      r}   c                  C   sz   t dftdffD ]2\} }t| td dgttt ggd|  t|  d|  t| td dgttt ggd|  qd S )NMutableDenseMatrixr   rF   zM%s([[Symbol('x'), Integer(1)], [Symbol('y'), Add(Symbol('x'), Symbol('y'))]])z%s([]))r   r   r9   rC   rN   )clsnamer7   r7   r8   test_Matrix   s   (r   c                   C   s4   t tddd t tddd t tddd d S )Nr      zMutableDenseMatrix(0, 3, [])rz   zMutableDenseMatrix(4, 0, [])zMutableDenseMatrix([]))r9   r   r7   r7   r7   r8   test_empty_Matrix   s   r   c                   C   s$   t tddd t tddd d S )NrF   r   zRational(1, 3)zRational(-1, 3))r9   r   r7   r7   r7   r8   test_Rational      r   c                   C   s   t tdddd t tdddd t tdd	dd
 t tdddd t tdddd t tdddd t tdddd
 t td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   )r9   r
   r7   r7   r7   r8   
test_Float   s*   
r   c                   C   s*   t td t td t tdddd d S )NSymbol('x')zSymbol('y')rC   T)negativezSymbol('x', negative=True))r9   rC   rN   r   r7   r7   r7   r8   test_Symbol   s   

r   c                  C   sD   t dddd} d}d}t| ||fv sJ tt| t| ks J d S )NrC   r   rF   )r   integerz)Symbol('x', integer=True, negative=False)z)Symbol('x', negative=False, integer=True))r   r#   r1   r.   )rC   s1s2r7   r7   r8   test_Symbol_two_assumptions   s
   r   c                   C   sZ   t tdd t tdddd t tdddd t tdddd t tdd	dd d S )
NrC   r   F)commutativezSymbol('x', commutative=False)r   TzSymbol('x', commutative=True)rF   )r9   r   r7   r7   r7   r8   ,test_Symbol_no_special_commutative_treatment   s
   r   c                   C   s   t tdddd d S )NrC   T)evenzWild('x', even=True))r9   r   r7   r7   r7   r8   	test_Wild   r~   r   c                  C   s    t d} t| dt| j  d S )NdzDummy('d', dummy_index=%s))r   r9   strdummy_index)r   r7   r7   r8   
test_Dummy   s   r   c                  C   sT   t ddd} | tt| ksJ dt| j }dt| j }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   r1   r#   r   r   )r   r   r   r7   r7   r8   test_Dummy_assumption   s
   r   c                  C   s2   t ddd} |  }t|dt|j ksJ d S )NnTr   zDummy('n', dummy_index=%s))r   as_dummyr#   r   r   )r   r   r7   r7   r8   test_Dummy_from_Symbol   s
   r   c                   C   s   t tfd t ttfd d S )Nz(Symbol('x'),)z(Symbol('x'), Symbol('y')))r9   rC   rN   r7   r7   r7   r8   
test_tuple   s   r   c                   C   ry   )NwzWildFunction('w'))r9   r   r7   r7   r7   r8   test_WildFunction   r|   r   c                   C   s   t tdd  d S )Nc                   S   s   t tddS )Ngarbage)method)r#   rC   r7   r7   r7   r8   <lambda>   s    ztest_settins.<locals>.<lambda>)r   	TypeErrorr7   r7   r7   r8   test_settins   r|   r   c                   C   sV   t dtd  t d tdtd  t dddksJ ttdddd	dd
ks)J d S )Nr   z:Mul(Integer(3), Pow(Symbol('x'), Integer(3)), Symbol('y'))rI   rG   z:Mul(Integer(3), Symbol('y'), Pow(Symbol('x'), Integer(3)))z(x+4)*2*x*7FrJ   rL   zFMul(Add(Symbol('x'), Integer(4)), Integer(2), Symbol('x'), Integer(7))rM   r7   r7   r7   r8   test_Mul   s     r   c                  C   s2   t td} t| d t tdd} t| d d S )NrE   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   r9   r   )ar7   r7   r8   test_AlgebraicNumber   s   
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 )	NrC   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)   r7   r7   r7   r8   test_PolyRing      $r   c                   C   r   )	NrC   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)   r7   r7   r7   r8   test_FracField   r   r   c                  C   s4   t dt\} }}td|d  | d dksJ d S )Nr-   r   rE   rF   zVPolyElement(PolyRing((Symbol('x'), Symbol('y')), ZZ, lex), [((2, 1), 3), ((0, 0), 1)]))r$   r&   r#   )rB   rC   rN   r7   r7   r8   test_PolyElement   s   $r   c                  C   s@   t dt\} }}td|d  | d ||d   dksJ d S )Nr-   r   rE   rF   ztFracElement(FracField((Symbol('x'), Symbol('y')), ZZ, lex), [((2, 1), 3), ((0, 0), 1)], [((1, 0), 1), ((0, 2), -1)]))r%   r&   r#   )FrC   rN   r7   r7   r8   test_FracElement  s   0r   c                   C   s6   t ttdksJ t tjtttddksJ d S )Nz1FractionField(FracField((Symbol('x'),), QQ, lex))rG   z?FractionField(FracField((Symbol('x'), Symbol('y')), QQ, grlex)))r#   r'   
frac_fieldrC   rN   r)   r7   r7   r7   r8   test_FractionField
  s   r   c                   C   sP   t ttdksJ t tt tdksJ t t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_ringrC   rN   r'   r   r7   r7   r7   r8   test_PolynomialRingBase  s   r   c                   C   s<   t tddgtdksJ t ttddgdksJ d S )NrF   rE   zDMP([1, 2], ZZ)z;DMP([1, 2], ZZ, ring=GlobalPolynomialRing(ZZ, Symbol('x'))))r#   r+   r&   r   rC   r7   r7   r7   r8   test_DMP  s   r   c                   C   s&   t tttd d tdksJ d S )NrE   rF   z/FiniteExtension(Poly(x**2 + 1, x, domain='ZZ')))r#   r,   r*   rC   r7   r7   r7   r8   test_FiniteExtension   s   r   c                  C   s,   t ttd d t} t| jdksJ d S )NrE   rF   zuExtElem(DMP([1, 0], ZZ, ring=GlobalPolynomialRing(ZZ, Symbol('x'))), FiniteExtension(Poly(x**2 + 1, x, domain='ZZ'))))r,   r*   rC   r#   	generator)Ar7   r7   r8   test_ExtensionElement%  s   r   c                   C   s$   t tdksJ t tdksJ d S )Nr   r   )r#   r   r   r7   r7   r7   r8   test_BooleanAtom+  r   r   c                   C      t tjd d S )NIntegers)r9   r   r   r7   r7   r7   r8   test_Integers0     r   c                   C   r   )Nrh   )r9   r   rh   r7   r7   r7   r8   test_Naturals4  r   r   c                   C   r   )Nri   )r9   r   ri   r7   r7   r7   r8   test_Naturals08  r   r   c                   C   r   )Nrk   )r9   r   rk   r7   r7   r7   r8   
test_Reals<  r   r   c                  C   sN   t ddd} td| | }td| | }t|d t|| d t|| 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   r9   )r   r   r   r7   r7   r8   test_matrix_expressions@  s   
r   c                   C   s   t tdddksJ d S )NrF   rE   zCycle(1, 2))r#   r   r7   r7   r7   r8   
test_CycleI  s   r   c                  C   s   d} t tddddd| dd t tddddd	| d
d t  tj}dt_t tddddd|  |t_W d    d S 1 sBw   Y  d S )Nz+from sympy.combinatorics import PermutationrF   rE   r   rz   zPermutation([0, 2, 1, 4, 3])F)perm_cycliczPermutation(1, 2)(3, 4)T)r9   r   r   print_cyclic)r4   old_print_cyclicr7   r7   r8   test_PermutationQ  s   "r   c                  C   s|   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   )rC   rN   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.abcrC   rN   r   r#   )rC   rN   r   r   r7   r7   r8   	test_dict\  s   r   c                  C   sB   ddl m} m} t }t|dksJ | |h}t|dv sJ d S )Nr   )rC   rN   zset())z{Symbol('x'), Symbol('y')}z{Symbol('y'), Symbol('x')})r   rC   rN   setr#   )rC   rN   sr7   r7   r8   test_setj  s
   r   c                   C   r   )NzQ.even)r9   r   r   r7   r7   r7   r8   test_Predicateq  r   r   c                   C   s   t ttdd d S )Nr   z%AppliedPredicate(Q.even, Symbol('z')))r9   r   r   r   r7   r7   r7   r8   test_AppliedPredicatet  s   r   )N)utypingr   r   tDict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,   rC   rN   r.   r0   r9   rD   rO   rU   rW   rX   rZ   rx   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r7   r7   r7   r8   <module>   s    $

	
			