U
    L?h2                     @  s  U 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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/m0Z0m1Z1 d dlm2Z2 d dl3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? d dl@mAZA d dlBmCZC ed\ZDZEde2iZFdeGd< eHdeF d~d d!ZId"d# ZJd$d% ZKd&d' ZLd(d) ZMd*d+ ZNd,d- ZOd.d/ ZPd0d1 ZQd2d3 ZRd4d5 ZSd6d7 ZTd8d9 ZUd:d; ZVd<d= ZWd>d? ZXd@dA ZYdBdC ZZdDdE Z[dFdG Z\dHdI Z]dJdK Z^dLdM Z_dNdO Z`dPdQ ZadRdS ZbdTdU ZcdVdW ZddXdY ZedZd[ Zfd\d] Zgd^d_ Zhd`da Zidbdc Zjddde Zkdfdg Zldhdi Zmdjdk Zndldm Zodndo Zpdpdq Zqdrds Zrdtdu Zsdvdw Ztdxdy Zudzd{ Zvd|d} ZwdS )    )annotations)Any)GROUND_TYPES)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                 K  sJ   |dkrt }nt  }t|| t| f||ks4tt||| ksFt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$   AssertionErroreval)exprstringimport_stmtkwargsZENV2 r8   P/var/www/html/venv/lib/python3.8/site-packages/sympy/printing/tests/test_repr.pysT$   s    
r:   c                  C  s(   G dd dt } t| tdks$t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   )Z_printargs)selfprinterr8   r8   r9   
_sympyrepr7   s    z&test_printmethod.<locals>.R._sympyreprN)__name__
__module____qualname__r>   r8   r8   r8   r9   R6   s   rB   zfoo(Symbol('x')))r   r$   xr2   )rB   r8   r8   r9   test_printmethod5   s    rD   c                   C  sf   t tt d ttd d dddks*tttd d dddksFtttd	d
ddddksbt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:   rC   yr$   r2   r   r8   r8   r8   r9   test_Add<   s    rO   c                  C  sJ   ddl m}  ddlm} | |fD ]$}|td }tt||ks tq d S )Nr   )Add)Mulzx:256)Zsympy.core.addrP   Zsympy.core.mulrQ   r   r3   r$   r2   )rP   rQ   opr4   r8   r8   r9   #test_more_than_255_args_issue_10259C   s
    rS   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   )r:   r   rC   r   r8   r8   r8   r9   test_FunctionK   s    rU   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)))r:   r   rC   r8   r8   r8   r9   test_HeavisideT   s    rV   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)))r:   r"   r#   r8   r8   r8   r9   test_GeometryY   s    rX   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CatalanZzoo
EulerGammaEGoldenRatioTribonacciConstantzRational(1, 2)IZoonanz-oozInteger(-1)z
Integer(1)piz
Integer(0)	ComplexesEmptySequenceEmptySetNaturals	Naturals0	RationalsRealsUniversalSet)r:   r   rY   ZComplexInfinityrZ   ZExp1r\   r]   ZHalfZImaginaryUnitInfinityNaNNegativeInfinityZNegativeOneZOnePiZZerora   rb   rc   rd   re   rf   rg   rh   r8   r8   r8   r9   test_Singletons`   s.    rm   c                   C  s   t tdd d S )N   z
Integer(4))r:   r   r8   r8   r8   r9   test_Integer{   s    ro   c                   C  s   t ttdgd d S )Nrn   z[Symbol('x'), Integer(4)])r:   rC   r   r8   r8   r8   r9   	test_list   s    rp   c                  C  sz   t dftdffD ]d\} }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 )NZMutableDenseMatrixr   rF   zM%s([[Symbol('x'), Integer(1)], [Symbol('y'), Add(Symbol('x'), Symbol('y'))]])z%s([]))r   r   r:   rC   rN   )clsnamer8   r8   r9   test_Matrix   s    rs   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, [])rn   zMutableDenseMatrix(4, 0, [])zMutableDenseMatrix([]))r:   r   r8   r8   r8   r9   test_empty_Matrix   s    ru   c                   C  s$   t tddd t tddd d S )NrF   rt   zRational(1, 3)zRational(-1, 3))r:   r   r8   r8   r8   r9   test_Rational   s    rw   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.23rt   )Z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   r8   r8   r8   r9   
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))r:   rC   rN   r   r8   r8   r8   r9   test_Symbol   s    

r   c                  C  sD   t dddd} d}d}t| ||fks*ttt| t| ks@td S )NrC   r   rF   )r   integerz)Symbol('x', integer=True, negative=False)z)Symbol('x', negative=False, integer=True))r   r$   r2   r3   r/   )rC   s1s2r8   r8   r9   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)ZcommutativezSymbol('x', commutative=False)r   TzSymbol('x', commutative=True)rF   )r:   r   r8   r8   r8   r9   ,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))r:   r   r8   r8   r8   r9   	test_Wild   s    r   c                  C  s    t d} t| dt| j  d S )NdzDummy('d', dummy_index=%s))r   r:   strdummy_index)r   r8   r8   r9   
test_Dummy   s    r   c                  C  sT   t ddd} | tt| ks tdt| j }dt| j }t| ||fksPtd S )Nr   T)Znonzeroz(Dummy('d', dummy_index=%s, nonzero=True)z(Dummy('d', nonzero=True, dummy_index=%s))r   r3   r$   r2   r   r   )r   r   r   r8   r8   r9   test_Dummy_assumption   s
    r   c                  C  s2   t ddd} |  }t|dt|j ks.td S )NnTr   zDummy('n', dummy_index=%s))r   Zas_dummyr$   r   r   r2   )r   r   r8   r8   r9   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')))r:   rC   rN   r8   r8   r8   r9   
test_tuple   s    r   c                   C  s   t tdd d S )NwzWildFunction('w'))r:   r	   r8   r8   r8   r9   test_WildFunction   s    r   c                   C  s   t tdd  d S )Nc                   S  s   t tddS )Ngarbage)method)r$   rC   r8   r8   r8   r9   <lambda>       ztest_settins.<locals>.<lambda>)r   	TypeErrorr8   r8   r8   r9   test_settins   s    r   c                   C  sV   t dtd  t d tdtd  t dddks6tttdddd	dd
ksRtd S )Nrt   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   r8   r8   r8   r9   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)])rt   zKAlgebraicNumber(Pow(Integer(-2), Rational(1, 3)), [Integer(1), Integer(0)]))r
   r   r:   r   )ar8   r8   r9   test_AlgebraicNumber   s    
r   c                   C  s\   t tdttd dkstt tdttd dks8tt tdtd td dksXt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)   r2   r(   r*   r8   r8   r8   r9   test_PolyRing   s    r   c                   C  s\   t tdttd dkstt tdttd dks8tt tdtd td dksXtd S )	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)   r2   r(   r*   r8   r8   r8   r9   test_FracField   s    r   c                  C  s4   t dt\} }}td|d  | d dks0td S )Nr.   rt   rE   rF   zVPolyElement(PolyRing((Symbol('x'), Symbol('y')), ZZ, lex), [((2, 1), 3), ((0, 0), 1)]))r%   r'   r$   r2   )rB   rC   rN   r8   r8   r9   test_PolyElement  s    r   c                  C  s@   t dt\} }}td|d  | d ||d   dks<td S )Nr.   rt   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$   r2   )FrC   rN   r8   r8   r9   test_FracElement  s    r   c                   C  s6   t ttdkstt tjtttddks2td S )Nz1FractionField(FracField((Symbol('x'),), QQ, lex))rG   z?FractionField(FracField((Symbol('x'), Symbol('y')), QQ, grlex)))r$   r(   
frac_fieldrC   r2   rN   r*   r8   r8   r8   r9   test_FractionField  s    r   c                   C  sP   t ttdkstt tt tdks0tt tttdksLt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   r2   rN   r(   r   r8   r8   r8   r9   test_PolynomialRingBase  s    r   c                  C  sn   t ddgt} ttddg}tdkrJt| dks8tt|dksjtn t| dksZtt|dksjtd S )NrF   rE   flintzDMP_Python([1, 2], ZZ)zDUP_Flint([1, 2], ZZ))r,   r'   r   rC   r   r$   r2   )p1Zp2r8   r8   r9   test_DMP  s    r   c                   C  s&   t tttd d tdks"td S )NrE   rF   z/FiniteExtension(Poly(x**2 + 1, x, domain='ZZ')))r$   r-   r+   rC   r2   r8   r8   r8   r9   test_FiniteExtension'  s    r   c                  C  s>   t ttd d t} tdkr$d}nd}t| j|ks:td S )NrE   rF   r   zPExtElem(DMP_Python([1, 0], ZZ), FiniteExtension(Poly(x**2 + 1, x, domain='ZZ')))zOExtElem(DUP_Flint([1, 0], ZZ), FiniteExtension(Poly(x**2 + 1, x, domain='ZZ'))))r-   r+   rC   r   r$   	generatorr2   )AZansr8   r8   r9   test_ExtensionElement,  s
    r   c                   C  s$   t tdkstt tdks td S )Nr   r   )r$   r   r2   r   r8   r8   r8   r9   test_BooleanAtom4  s    r   c                   C  s   t tjd d S )NIntegers)r:   r   r   r8   r8   r8   r9   test_Integers9  s    r   c                   C  s   t tjd d S )Nrd   )r:   r   rd   r8   r8   r8   r9   test_Naturals=  s    r   c                   C  s   t tjd d S )Nre   )r:   r   re   r8   r8   r8   r9   test_Naturals0A  s    r   c                   C  s   t tjd d S )Nrg   )r:   r   rg   r8   r8   r8   r9   
test_RealsE  s    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   r:   )r   r   r   r8   r8   r9   test_matrix_expressionsI  s    
r   c                   C  s   t tdddkstd S )NrF   rE   zCycle(1, 2))r$   r   r2   r8   r8   r8   r9   
test_CycleR  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 0 tj}dt_t tddddd|  |t_W 5 Q R X d S )Nz+from sympy.combinatorics import PermutationrF   rE   rt   rn   zPermutation([0, 2, 1, 4, 3])F)Zperm_cycliczPermutation(1, 2)(3, 4)T)r:   r    r   Zprint_cyclic)r6   Zold_print_cyclicr8   r8   r9   test_PermutationZ  s    r   c                  C  s|   ddl m} m}m} i }t|dks(t| |i}t|dks@t| |||i}t|dks\t| ||ii}t|dksxt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$   r2   )rC   rN   r   r   r8   r8   r9   	test_dicte  s    r   c                  C  sB   ddl m} m} t }t|dks&t| |h}t|dks>td S )Nr   )rC   rN   zset())z{Symbol('x'), Symbol('y')}z{Symbol('y'), Symbol('x')})r   rC   rN   setr$   r2   )rC   rN   sr8   r8   r9   test_sets  s
    r   c                   C  s   t tjd d S )NzQ.even)r:   r   r   r8   r8   r8   r9   test_Predicatez  s    r   c                   C  s   t ttdd d S )Nr   z%AppliedPredicate(Q.even, Symbol('z')))r:   r   r   r   r8   r8   r8   r9   test_AppliedPredicate}  s    r   )N)x
__future__r   typingr   Zsympy.external.gmpyr   Zsympy.testing.pytestr   r   Zsympy.assumptions.askr   Zsympy.core.functionr   r	   Zsympy.core.numbersr
   r   r   r   Zsympy.core.singletonr   Zsympy.core.symbolr   r   r   r   Zsympy.core.sympifyr   Z$sympy.functions.elementary.complexesr   Z(sympy.functions.elementary.miscellaneousr   r   Z(sympy.functions.elementary.trigonometricr   Z'sympy.functions.special.delta_functionsr   Zsympy.logic.boolalgr   r   Zsympy.matrices.denser   r   Z"sympy.matrices.expressions.matexprr   Zsympy.matrices.immutabler   Zsympy.combinatoricsr   r    r!   Zsympy.geometryr"   r#   Zsympy.printingr$   Zsympy.polysr%   r&   r'   r(   r)   r*   r+   Zsympy.polys.polyclassesr,   Zsympy.polys.agca.extensionsr-   rC   rN   r/   __annotations__r1   r:   rD   rO   rS   rU   rV   rX   rm   ro   rp   rs   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   r8   r8   r8   r9   <module>   s    $

	
			