U
    ZÊ¹j´2  ã                   @  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   ú]/var/www/html/bwave/python/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))z¢MatMul(MatrixSymbol(Str('A'), Symbol('n', integer=True), Symbol('n', integer=True)), MatrixSymbol(Str('B'), Symbol('n', integer=True), Symbol('n', integer=True)))z¢MatAdd(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–    $

	
			