U
    ZÊ¹j3  ã                   @   s  d dl mZmZmZmZmZmZmZmZm	Z	m
Z
mZ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mZmZ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%m&Z&m'Z'm(Z(m)Z) d dl*m+Z+ d dl,m-Z- ed	ƒ\Z.Z/Z0d
d„ Z1dd„ Z2dd„ Z3dd„ Z4dd„ Z5dd„ Z6dd„ Z7dd„ Z8dd„ Z9dd„ Z:dd„ Z;d d!„ Z<d"d#„ Z=d$d%„ Z>d&d'„ Z?d(d)„ Z@d*d+„ ZAd,d-„ ZBd.d/„ ZCd0d1„ ZDd2d3„ ZEd4d5„ ZFd6d7„ ZGd8d9„ ZHd:d;„ ZId<d=„ ZJd>d?„ ZKd@dA„ ZLdBdC„ ZMdDdE„ ZNdFdG„ ZOdHdI„ ZPdJdK„ ZQdLdM„ ZRdNdO„ ZSdPS )Qé    )ÚSÚpiÚooÚsymbolsÚFunctionÚRationalÚIntegerÚTupleÚSymbolÚEqÚNeÚLeÚLtÚGtÚGe)Ú
EulerGammaÚGoldenRatioÚCatalanÚLambdaÚMulÚPow)Ú	PiecewiseÚsqrtÚceilingÚexpÚsinÚcosÚsincÚlucas)Úraises)Úimplemented_function)ÚeyeÚMatrixÚMatrixSymbolÚIdentityÚHadamardProductÚSparseMatrix)Úbesseli©Ú
maple_codezx,y,zc                   C   s,   t tdƒƒdkst‚t tdƒƒdks(t‚d S )NéC   Z67éÿÿÿÿz-1)r)   r   ÚAssertionError© r-   r-   ú^/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/printing/tests/test_maple.pyÚtest_Integer   s    r/   c                   C   s�   t tddƒƒdkst‚t tddƒƒdks,t‚t tddƒƒdksBt‚t td	dƒƒdksXt‚t ttddƒ ƒd
ksrt‚t tddƒt ƒdksŒt‚d S )Né   é   z3/7é   é	   Ú2iùÿÿÿz-3/7éýÿÿÿzx + 3/7z(3/7)*x)r)   r   r,   Úxr-   r-   r-   r.   Útest_Rational   s    r7   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ks„t‚d S )Nzx = yzx <> yzx <= yzx < yzx > yzx >= y)
r)   r   r6   Úyr,   r   r   r   r   r   r-   r-   r-   r.   Útest_Relational   s    r9   c                   C   sH   t ttƒttƒ ƒdkst‚t ttƒƒdks0t‚t ttƒƒdksDt‚d S )Nzsin(x)^cos(x)zabs(x)zceil(x))r)   r   r6   r   r,   Úabsr   r-   r-   r-   r.   Útest_Function'   s    r;   c               
   C   sÚ   t td ƒdkst‚t ttd  ƒdks,t‚t td t ƒdksDt‚t ttddƒ ƒdks^t‚tdttdt ƒƒ} t d| tƒd	 ttt    td t  ƒd
ks¦t‚t tdtttttdd�ddd�dd�ƒdksÖt‚d S )Nr0   zx^3zx^(y^3)z(x^3)^yé   zx^(2/3)Úgé   g      @z(3.5*2*x)^(-x + y^x)/(x^2 + y)éþÿÿÿF)Úevaluater+   z
-2*x/(y*y))	r)   r6   r,   r8   r   r    r   r   r   )r=   r-   r-   r.   Útest_Pow-   s    *ÿÿÿrA   c                   C   sR   t tt ƒdkst‚t tt ƒdks(t‚t tt ƒdks<t‚t t ƒdksNt‚d S )Núx*yzx + yzx - yz-x)r)   r6   r8   r,   r-   r-   r-   r.   Útest_basic_ops<   s    rC   c                   C   s  t dt ƒdkst‚t td ƒt td ƒ  kr8dks>n t‚t dttƒ ƒdksVt‚t ttj  ƒt td ƒ  kr~dks„n t‚t ttƒƒdks˜t‚t ttj ƒt td ƒ  kr¾dksÄn t‚t dt ƒd	ksØt‚t td ƒt td ƒ  krþd	k�sn t‚t td ƒd
k�st‚d S )Nr>   z1/xr+   g      ð¿z	1/sqrt(x)g      à¿zsqrt(x)g      à?z1/Piz
1/sqrt(Pi))r)   r6   r,   r   r   ÚHalfr   r-   r-   r-   r.   Útest_1_over_x_and_sqrtC   s    *.,,rE   c                   C   s^  t dt ƒdkst‚t tt ƒdks(t‚t dt ƒdks<t‚t tt ƒdksPt‚t td ƒdksdt‚t tt ƒdksxt‚t tt ƒdksŒt‚t dt t ƒd	ks¤t‚t dt t t ƒd
ksÀt‚t tt ƒdksÔt‚t dt t ƒdksìt‚t tt t ƒdk�st‚t tt t ƒdk�s t‚t dt t ƒdk�s:t‚t dt t t t ƒdk�s\t‚t dt t ƒdk�svt‚t tdƒd ƒdk�s�t‚t tdƒd t ƒdk�s®t‚t tt t ƒdk�sÈt‚t tt t ƒdk�sât‚t tt tt  ƒdk�s t‚t tt t ƒdk�st‚t td t ƒdk�s4t‚t tdƒd t t t ƒdk�sZt‚d S )Nr0   z3*xzPi*xz3/xzPi/xz(1/3)*xzx/PirB   z3*x*yz3*Pi*x*yzx/yz3*x/yzx*y/zzx*z/yr>   z1/(x*y)r<   z2*Pi*x/(y*z)z3*Pi/xé   z3/5z(3/5)*xzx/(y*z)z	(x + y)/zz(x + y)/(x + z)z(x + y)/gammaz
(1/3)*x/Piz(3/5)*x*y/Pi)r)   r6   r,   r   r8   Úzr   r   r-   r-   r-   r.   Útest_mix_number_mult_symbolsQ   s0    "rH   c                   C   sˆ   t td ƒdkst‚t td ƒdks(t‚t ttd  ƒdks@t‚t tt ƒdksTt‚t ttt  ƒdkslt‚t tt t ƒdks„t‚d S )	Nr0   zPi^3r<   zx^2zx^(Pi^3)zx^yzx^(y^z)z(x^y)^z)r)   r   r,   r6   r8   rG   r-   r-   r-   r.   Útest_mix_number_pow_symbolsl   s    rI   c                  C   sd   t dƒ} t| ƒdkst‚td|  ƒdks,t‚tt dƒd |  ƒdksHt‚tdd|   ƒdks`t‚d S )	NÚIrF   z5*Ir0   r<   z(3/2)*Ié   z3 + 4*I)r   r)   r,   )rJ   r-   r-   r.   Ú	test_imagw   s
    rL   c                   C   s€   t tƒdkst‚t tƒdks t‚t t ƒdks2t‚t tjƒdksDt‚t tjƒdksVt‚t tjƒdksht‚t tdƒƒdks|t‚d S )NÚPiÚinfinityz	-infinityZ	undefinedzexp(1)r>   )	r)   r   r,   r   r   ÚNegativeInfinityÚNaNZExp1r   r-   r-   r-   r.   Útest_constants€   s    rQ   c                   C   s@   t dt ƒdkst‚t dt ƒdks(t‚t dt ƒdks<t‚d S )Nr<   z2*(1/2 + (1/2)*sqrt(5))z	2*Catalanz2*gamma)r)   r   r,   r   r   r-   r-   r-   r.   Útest_constants_otherŠ   s    rR   c                   C   sž   t tt@ ƒdkst‚t ttB ƒdks(t‚t t ƒdks:t‚t tt@ t@ ƒdksRt‚t ttB tB ƒdksjt‚t tt@ tB ƒdks‚t‚t ttB t@ ƒdksšt‚d S )Nzx and yzx or yznot xzx and y and zzx or y or zzz or x and yzz and (x or y))r)   r6   r8   r,   rG   r-   r-   r-   r.   Útest_boolean�   s    rS   c                  C   sð   t tdddgƒƒdkst‚tdttd ƒttƒgddtgdtdƒttƒggƒ} d}t | ƒ|ksbt‚t | d d …df ƒdks~t‚t | dd d …f ƒdksšt‚t tttt	 t	 ggƒƒd	ks¼t‚t tddg ƒƒd
ksÔt‚t tddg ƒƒd
ksìt‚d S )Nr>   é
   z%Matrix([[10]], storage = rectangular)r<   r   z\Matrix([[1, sin((1/2)*x), abs(x)], [0, 1, Pi], [0, exp(1), ceil(x)]], storage = rectangular)z.Matrix([[1], [0], [0]], storage = rectangular)z:Matrix([[1, sin((1/2)*x), abs(x)]], storage = rectangular)z/Matrix([[x, x - y, -y]], storage = rectangular)z!Matrix([], storage = rectangular)r0   )
r)   r"   r,   r   r6   r:   r   r   r   r8   ©ÚAÚexpectedr-   r-   r.   Útest_Matricesš   s2    ÿþÿÿÿÿÿÿrX   c                   C   s   t ttdƒƒƒdkst‚d S )Nr<   z*Matrix([[1, 0], [0, 1]], storage = sparse))r)   r&   r$   r,   r-   r-   r-   r.   Útest_SparseMatrices·   s    rY   c                  C   sJ   t dtdt ƒdt t d ggƒ} t| ƒdks4t‚t| jƒdksFt‚d S )Nr>   r<   r0   rF   z:Matrix([[1, sin(2/x), (3/5)*Pi/x]], storage = rectangular)z>Matrix([[1], [sin(2/x)], [(3/5)*Pi/x]], storage = rectangular))r"   r   r6   r   r)   r,   ÚT©rV   r-   r-   r.   Útest_vector_entries_hadamard»   s    $ÿÿr\   c                  C   sH   t dtdt ƒdt t d gddtt ggƒ} d}t| ƒ|ksDt‚d S )Nr>   r<   r0   rF   zGMatrix([[1, sin(2/x), (3/5)*Pi/x], [1, 2, x*y]], storage = rectangular))r"   r   r6   r   r8   r)   r,   rU   r-   r-   r.   Ú"test_Matrices_entries_not_hadamardÄ   s    0ÿr]   c                  C   sâ   t ddd�} td| | ƒ}td| | ƒ}t|| ƒdks8t‚t|| ƒdksLt‚td| | ƒd	ksdt‚t|d | ƒd
ks|t‚t||dt| ƒ   ƒdksœt‚t|td  ƒdks´t‚t|d ƒdksÈt‚t|tj ƒdksÞt‚d S )NÚnT)ÚintegerrV   ÚBzA.BzB.Ar<   z2*A.Bz2*B.Ar0   z%A.(3*Matrix(n, shape = identity) + B)zMatrixPower(A, x^2)zMatrixPower(A, 3)zMatrixPower(A, 1/2))r
   r#   r)   r,   r$   r6   r   rD   )r^   rV   r`   r-   r-   r.   Útest_MatrixSymbolÌ   s    ÿÿra   c                   C   s0   t dtdƒ ƒdkst‚t ttƒƒdks,t‚d S )Né   r0   z=6*Matrix([[1, 0, 0], [0, 1, 0], [0, 0, 1]], storage = sparse)zMatrix(x, shape = identity))r)   r$   r,   r6   r-   r-   r-   r.   Útest_special_matricesÝ   s    rc   c                   C   sÂ   t dddddddggdd	d
gdgƒdks,t‚t dƒdks<t‚t dgƒdksNt‚t dƒdks^t‚t tdddgŽ ƒdksxt‚t dtt dtd ffƒdksšt‚t dtdƒtddg ƒg fƒdks¾t‚d S )Nr>   r<   r0   rK   rF   rb   r1   é   r3   rT   é   z)[1, 2, 3, [4, 5, [6, 7]], 8, [9, 10], 11])r>   r<   )r0   rK   z[1, 2, [3, 4]]z[1])r>   z	[1, 2, 3]z[1, x*y, [3, x^2]]r   zl[1, Matrix([[1, 0, 0], [0, 1, 0], [0, 0, 1]], storage = rectangular), Matrix([], storage = rectangular), []])r)   r,   r	   r6   r8   r!   r"   r-   r-   r-   r.   Útest_containersâ   s    "ÿ"ÿrf   c                  C   s*   t tt t ddd�} d}| |ks&t‚d S )NÚmeF)Ú	assign_toÚinlinezme := (x + y)/Catalan)r)   r6   r8   r   r,   )ÚsourcerW   r-   r-   r.   Útest_maple_noninlineñ   s    rk   c                  C   sP   t dddggƒ} t| dd�dks$t‚t ddgddggƒ} t| dd�d	ksLt‚d S )
Nr>   r<   r0   Úa©rh   z/a := Matrix([[1, 2, 3]], storage = rectangular)rK   rV   z4A := Matrix([[1, 2], [3, 4]], storage = rectangular)©r"   r)   r,   r[   r-   r-   r.   Útest_maple_matrix_assign_toø   s    ro   c                     sf   t dddggƒ‰ tdddƒ} tdddƒ‰tˆ | d�dks<t‚tt‡ fdd	„ƒ tt‡ ‡fd
d	„ƒ d S )Nr>   r<   r0   r`   ÚCrm   z/B := Matrix([[1, 2, 3]], storage = rectangular)c                      s   t ˆ td�S ©Nrm   )r)   r6   r-   r[   r-   r.   Ú<lambda>  ó    z2test_maple_matrix_assign_to_more.<locals>.<lambda>c                      s   t ˆ ˆd�S rq   r(   r-   ©rV   rp   r-   r.   rr     rs   )r"   r#   r)   r,   r   Ú
ValueError)r`   r-   rt   r.   Ú test_maple_matrix_assign_to_moreÿ   s    rv   c                  C   s$   t dggƒ} t| dd�dks t‚d S )Nr0   r`   rm   z)B := Matrix([[3]], storage = rectangular)rn   r[   r-   r-   r.   Útest_maple_matrix_1x1	  s    rw   c                  C   sœ   t tdtt ggƒ} t| d d | d  | d  ƒdks<t‚tdddƒ}t|ƒdksXt‚t|d d t|d ƒ |d  ƒd	ks„t‚tt|ƒƒd
ks˜t‚d S )Nr<   ©r   r   )r   r>   )r   r<   zx^2 + x*y + 2ÚAAr>   r0   z%sin(AA[1, 2]) + AA[1, 1]^2 + AA[1, 3]zAA[1, 1] + AA[1, 2] + AA[1, 3])r"   r6   r8   r)   r,   r#   r   Úsum)rV   ry   r-   r-   r.   Útest_maple_matrix_elements  s    ("ÿr{   c                   C   sH   t dƒdkst‚t tjƒdks"t‚t dƒdks2t‚t tjƒdksDt‚d S )NTÚtrueFÚfalse)r)   r,   r   r|   r}   r-   r-   r-   r.   Útest_maple_boolean  s    r~   c                  C   sL   t ddi ƒ} d| d< d| d< d| d< d	| d
< tt | d< t| ƒdksHt‚d S )NrF   rb   rT   )r<   r<   é   )r>   r<   é   )r>   r0   é   )r   r0   )r0   r   z„Matrix([[0, 0, 0, 30, 0, 0], [0, 0, 20, 22, 0, 0], [0, 0, 10, 0, 0, 0], [x*y, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]], storage = sparse))r&   r6   r8   r)   r,   )ÚMr-   r-   r.   Útest_sparse!  s    ÿrƒ   c                	   C   s"   t tƒ� ttjƒ W 5 Q R X d S ©N)r   ÚNotImplementedErrorr)   r   ZComplexInfinityr-   r-   r-   r.   Útest_maple_not_supported1  s    
r†   c                  C   sd   t dddƒ} t dddƒ}t| d ƒdks,t‚td| d  ƒdksDt‚| | }t|d ƒdks`t‚d S )	NrV   r>   r0   r`   rx   zA[1, 1]z	3*A[1, 1]zA[1, 1] - B[1, 1])r#   r)   r,   )rV   r`   ÚFr-   r-   r.   Útest_MatrixElement_printing6  s    rˆ   c                  C   s¦   t dddƒ} t dddƒ}t dddƒ}t dddƒ}t| |ƒ}t|ƒdksJt‚t|| ƒdks^t‚t|| | ƒd	ksvt‚t||  ƒd
ksŠt‚t|t t ƒdks¢t‚d S )NrV   r0   r`   Úvr>   ÚhzA*Bz(A*B).vz	h.(A*B).vz(A*B).Az	x*y*(A*B))r#   r%   r)   r,   r6   r8   )rV   r`   r‰   rŠ   rp   r-   r-   r.   Útest_hadamardC  s    
r‹   c                     sæ   t ttdk ftd dfƒ‰ tˆ ƒdks*t‚tˆ dd�dks>t‚t td tdk ftd tdk ftd	 tdk ftd
 dfƒ‰ d} tˆ ƒ| ksŒt‚tˆ dd�d|  ks¤t‚t ttdk ftd tdkfttƒtdkfƒ‰ tt‡ fdd„ƒ d S )Nr>   r<   Tzpiecewise(x < 1, x, x^2)Úrrm   zr := piecewise(x < 1, x, x^2)r0   rK   rF   z2piecewise(x < 1, x^2, x < 2, x^3, x < 3, x^4, x^5)zr := r   c                      s   t ˆ ƒS r„   r(   r-   ©Úexprr-   r.   rr   d  rs   z&test_maple_piecewise.<locals>.<lambda>)r   r6   r)   r,   r   r   ru   )rW   r-   r�   r.   Útest_maple_piecewiseV  s    
ÿ:,r�   c                  C   sr   t ttdk ftd dfƒ} td|  ƒdks.t‚t| t ƒdksBt‚t| tt  ƒdksZt‚t| d ƒdksnt‚d S )	Nr>   r<   Tz2*piecewise(x < 1, x, x^2)zpiecewise(x < 1, x, x^2)/xzpiecewise(x < 1, x, x^2)/(x*y)r0   z(1/3)*piecewise(x < 1, x, x^2))r   r6   r)   r,   r8   )Úpwr-   r-   r.   Ú test_maple_piecewise_times_constg  s
    r‘   c                  C   sB   t dƒ} t| tƒ t¡ƒdks"t‚t| tƒ td¡ƒdks>t‚d S )NÚfzdiff(f(x), x)r<   zdiff(f(x), x$2))r   r)   r6   Údiffr,   )r’   r-   r-   r.   Útest_maple_derivativesp  s    r”   c                   C   s,   t ttƒƒdkst‚t ttƒƒdks(t‚d S )Nz,(2^(-x)*((1 - sqrt(5))^x + (1 + sqrt(5))^x))z (piecewise(x <> 0, sin(x)/x, 1)))r)   r   r6   r,   r   r-   r-   r-   r.   Útest_automatic_rewritesv  s    r•   c                   C   s*   t dƒdkst‚t tttƒƒdks&t‚d S )Nzasin(x)z	arcsin(x)zBesselI(x, y))r)   r,   r'   r6   r8   r-   r-   r-   r.   Útest_specfun{  s    r–   N)TZ
sympy.corer   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   Zsympy.functionsr   r   r   r   r   r   r   r   Zsympy.testing.pytestr   Zsympy.utilities.lambdifyr    Zsympy.matricesr!   r"   r#   r$   r%   r&   Zsympy.functions.special.besselr'   Zsympy.printing.mapler)   r6   r8   rG   r/   r7   r9   r;   rA   rC   rE   rH   rI   rL   rQ   rR   rS   rX   rY   r\   r]   ra   rc   rf   rk   ro   rv   rw   r{   r~   rƒ   r†   rˆ   r‹   r�   r‘   r”   r•   r–   r-   r-   r-   r.   Ú<module>   sV   D ( 			

	
	