U
    ZÊ¹jÀ  ã                   @   sT  d dl mZmZ d dlmZmZmZmZ d dlm	Z	m
Z
mZmZmZmZ d dlmZ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 d d
lmZ d dl m!Z! d dl"m#Z# d dl$m%Z%m&Z& edƒ\Z'Z(edƒZ)edƒZ*dd„ Z+dd„ Z,dd„ Z-dd„ Z.dd„ Z/e&dd„ ƒZ0dd„ Z1dd „ Z2d!d"„ Z3d#d$„ Z4d%d&„ Z5d'd(„ Z6d)S )*é    )Ú
DerivativeÚFunction)ÚIÚRationalÚooÚpi)ÚEqÚGeÚGtÚLeÚLtÚNe)ÚSymbolÚsymbols)ÚAbsÚ	conjugate)ÚexpÚlog)Úsqrt)Úsin)ÚIntegral)ÚMatrix)Úlimit)Úpython)ÚraisesÚXFAILzx,yÚthetaÚphic                   C   s²  t tdƒ d ƒdkst‚t tdƒ d ƒdks4t‚t tƒdksDt‚t td ƒdksXt‚t dt ƒd	kslt‚t ttd
  ƒdks„t‚t ttddƒ ƒdksžt‚t td t d ƒdksºt‚t dt ƒdksÎt‚t ddt  ƒdksæt‚t dtddƒt t  ƒdk�s
t‚t tt ƒdk�s t‚t t t ƒdk�s8t‚t td t ƒdk�sRt‚t dt t ƒdk�slt‚t dt td  ƒdk�sŠt‚t dtddƒtd   ƒdk�s®t‚d S )Né   é   ze = Rational(-1, 2)é   é   ze = Rational(-13, 22)úe = oozx = Symbol('x')
e = x**2zx = Symbol('x')
e = 1/xéþÿÿÿz*y = Symbol('y')
x = Symbol('x')
e = y/x**2éûÿÿÿz&x = Symbol('x')
e = x**Rational(-5, 2))z x = Symbol('x')
e = 1 + x + x**2z x = Symbol('x')
e = x + x**2 + 1z x = Symbol('x')
e = x**2 + x + 1)zx = Symbol('x')
e = 1 - xzx = Symbol('x')
e = -x + 1)zx = Symbol('x')
e = 1 - 2*xzx = Symbol('x')
e = -2*x + 1é   )z/y = Symbol('y')
x = Symbol('x')
e = 1 - 3/2*y/xz0y = Symbol('y')
x = Symbol('x')
e = -3/2*y/x + 1z1y = Symbol('y')
x = Symbol('x')
e = 1 - 3*y/(2*x)z'x = Symbol('x')
y = Symbol('y')
e = x/yz(x = Symbol('x')
y = Symbol('y')
e = -x/y)z/y = Symbol('y')
x = Symbol('x')
e = 1/y*(2 + x)z/y = Symbol('y')
x = Symbol('x')
e = 1/y*(x + 2)z/x = Symbol('x')
y = Symbol('y')
e = 1/y*(2 + x)z-x = Symbol('x')
y = Symbol('y')
e = (2 + x)/yz-x = Symbol('x')
y = Symbol('y')
e = (x + 2)/y)z-y = Symbol('y')
x = Symbol('x')
e = y*(1 + x)z-y = Symbol('y')
x = Symbol('x')
e = y*(x + 1)é
   z!x = Symbol('x')
e = -5*x/(x + 10))z7x = Symbol('x')
e = Rational(-3, 2)*x + Rational(-1, 2)ú,x = Symbol('x')
e = -3*x/2 + Rational(-1, 2)r'   )r   r   ÚAssertionErrorr   ÚxÚy© r+   r+   ú_/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/printing/tests/test_python.pyÚtest_python_basic   s*    ÿÿ$r-   c                   C   sd   t dtdƒ ƒdkst‚t dtdƒ dtdƒ  ƒdks<t‚t dtdƒ tdƒd	ƒ ƒd
ks`t‚d S )Né   Úlambdaz(lambda_ = Symbol('lambda')
e = 5*lambda_é   Zlambda_zRlambda__ = Symbol('lambda')
lambda_ = Symbol('lambda_')
e = 7*lambda_ + 5*lambda__ÚforZfor_é   zCfor__ = Symbol('for')
for_ = Function('for_')
e = 5*for__ + for_(8))r   r   r(   r   r+   r+   r+   r,   Ú(test_python_keyword_symbol_name_escapingI   s    
ÿÿÿÿr3   c                   C   s    t dtdƒdƒ ƒdkst‚d S )Nr.   r1   r2   z$for_ = Function('for')
e = 5*for_(8))r   r   r(   r+   r+   r+   r,   Ú*test_python_keyword_function_name_escapingS   s
    ÿÿr4   c                   C   s”   t tttƒƒdkst‚t tttƒƒdks,t‚t tttƒƒdksBt‚t tttƒƒdksXt‚t tttƒƒdksnt‚t t	ttd  td ƒƒdks�t‚d S )	Nz,x = Symbol('x')
y = Symbol('y')
e = Eq(x, y)z*x = Symbol('x')
y = Symbol('y')
e = x >= yz*x = Symbol('x')
y = Symbol('y')
e = x <= yz)x = Symbol('x')
y = Symbol('y')
e = x > yz)x = Symbol('x')
y = Symbol('y')
e = x < yr   r   )z7x = Symbol('x')
y = Symbol('y')
e = Ne(x/(1 + y), y**2)z7x = Symbol('x')
y = Symbol('y')
e = Ne(x/(y + 1), y**2))
r   r   r)   r*   r(   r	   r   r
   r   r   r+   r+   r+   r,   Útest_python_relationalX   s    r5   c                  C   s�  t dt ttƒ ƒdkst‚t tdƒƒdks0t‚t dtddƒ ƒdksJt‚t tdt ƒƒdksbt‚t dt tddƒ ƒdks€t‚t dtdd	ƒ ƒd
ksšt‚t ttƒƒdks®t‚t tttd d  ƒƒdksÎt‚tdƒ} t | tƒƒdksêt‚t | tt	ƒƒdk�st‚t | tt	d  t	ƒƒdk�s"t‚t tttd ƒd ƒƒdk�sDt‚t td tddƒ d tddƒ ƒdk�srt‚t t
tƒd ƒdk�sŒt‚d S )Nr   z x = Symbol('x')
e = 2*x + exp(x)ze = sqrt(2)r   r%   ze = 2**Rational(1, 3)ze = sqrt(2 + pi)ze = (2 + pi)**Rational(1, 3)é   ze = 2**Rational(1, 4)zx = Symbol('x')
e = Abs(x))z%x = Symbol('x')
e = Abs(x/(1 + x**2))z%x = Symbol('x')
e = Abs(x/(x**2 + 1))Úfz*x = Symbol('x')
f = Function('f')
e = f(x)z=x = Symbol('x')
y = Symbol('y')
f = Function('f')
e = f(x, y))zEx = Symbol('x')
y = Symbol('y')
f = Function('f')
e = f(x/(1 + y), y)zEx = Symbol('x')
y = Symbol('y')
f = Function('f')
e = f(x/(y + 1), y))z)x = Symbol('x')
e = sqrt(1 + sqrt(1 + x))z)x = Symbol('x')
e = sqrt(sqrt(x + 1) + 1))zAx = Symbol('x')
e = (1 + (1 + x)**Rational(1, 3))**Rational(1, 3)zAx = Symbol('x')
e = ((x + 1)**Rational(1, 3) + 1)**Rational(1, 3)zx = Symbol('x')
e = sin(x)**2)r   r)   r   r(   r   r   r   r   r   r*   r   )r7   r+   r+   r,   Útest_python_functionsc   s&    ÿÿ ".r8   c                  C   sN   t tdƒ\} }tt| |t  ƒƒdks*t‚ttt| |t  ƒƒƒdksJt‚d S )NÚabz_     _
a - I*bz _     _
 a - I*b
e       )Úmapr   r   r   r   r(   r   )ÚaÚbr+   r+   r,   Ú test_python_functions_conjugates†   s    r=   c                  C   s¨   t ttƒtdd�} t| ƒdks"t‚t ttƒtdd�t }t|ƒdksHt‚t ttƒtd  ttdd�}t|ƒdkstt‚t dt t ttdd�td  }t|ƒdks¤t‚d S )NF)Úevaluatez)x = Symbol('x')
e = Derivative(log(x), x)z-x = Symbol('x')
e = x + Derivative(log(x), x)r   zCx = Symbol('x')
y = Symbol('y')
e = Derivative(x**2 + log(x), x, y))zBx = Symbol('x')
y = Symbol('y')
e = x**2 + Derivative(2*x*y, y, x)zBx = Symbol('x')
y = Symbol('y')
e = Derivative(2*x*y, y, x) + x**2)r   r   r)   r   r(   r*   )Úf_1Úf_2Úf_3Úf_4r+   r+   r,   Útest_python_derivatives�   s    ÿ rC   c                  C   sØ   t ttƒtƒ} t| ƒdkst‚t td tƒ}t|ƒdks<t‚t tdt  tƒ}t|ƒdks^t‚t td tddfƒ}t|ƒdks‚t‚t td ttddƒdfƒ}t|ƒdks¬t‚t td td  ttƒ}t|ƒd	ksÔt‚d S )
Nz'x = Symbol('x')
e = Integral(log(x), x)r   z%x = Symbol('x')
e = Integral(x**2, x)z*x = Symbol('x')
e = Integral(x**(2**x), x)r   z-x = Symbol('x')
e = Integral(x**2, (x, 1, 2))r&   z;x = Symbol('x')
e = Integral(x**2, (x, Rational(1, 2), 10))z=x = Symbol('x')
y = Symbol('y')
e = Integral(x**2*y**2, x, y))r   r   r)   r   r(   r   r*   )r?   r@   rA   rB   Zf_5Zf_6r+   r+   r,   Útest_python_integrals    s     ÿÿrD   c                  C   s8   t ttd d dgttt ggƒƒ} d}| |ks4t‚d S )Nr   r   zSx = Symbol('x')
y = Symbol('y')
e = MutableDenseMatrix([[x**2 + 1, 1], [y, x + y]]))r   r   r)   r*   r(   )ÚpÚsr+   r+   r,   Útest_python_matrix¹   s    $rG   c                   C   s8   t ttttƒƒdkst‚t ttd tdƒƒdks4t‚d S )Nr"   r   r   ze = 0)r   r   r)   r   r(   r+   r+   r+   r,   Útest_python_limits¾   s    rH   c                  C   s,   t dƒ} t dƒ}| | }t|ƒdks(t‚d S )Nza_{b}r<   z/a_b = Symbol('a_{b}')
b = Symbol('b')
e = a_b*b)r   r   r(   )Za_br<   Úexprr+   r+   r,   Útest_issue_20762Â   s    rJ   c                   C   s   t tdd„ ƒ d S )Nc                   S   s   t tdd�S )NÚgarbage)Úmethod)r   r)   r+   r+   r+   r,   Ú<lambda>Ë   ó    ztest_settings.<locals>.<lambda>)r   Ú	TypeErrorr+   r+   r+   r,   Útest_settingsÊ   s    rP   N)7Zsympy.core.functionr   r   Zsympy.core.numbersr   r   r   r   Zsympy.core.relationalr   r	   r
   r   r   r   Zsympy.core.symbolr   r   Z$sympy.functions.elementary.complexesr   r   Z&sympy.functions.elementary.exponentialr   r   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   Zsympy.integrals.integralsr   Zsympy.matrices.denser   Zsympy.series.limitsr   Zsympy.printing.pythonr   Zsympy.testing.pytestr   r   r)   r*   ÚthÚphr-   r3   r4   r5   r8   r=   rC   rD   rG   rH   rJ   rP   r+   r+   r+   r,   Ú<module>   s8    3
#
