U
    ZÊ¹jÊ*  ã                   @   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 d dlmZ 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#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD d dlEmFZG edƒ\ZHZIZJZKedƒZLdd	„ ZMd
d„ ZNdd„ ZOdd„ ZPdd„ ZQdd„ ZRdd„ ZSdd„ ZTdd„ ZUdd„ ZVdd„ ZWdd„ ZXd d!„ ZYd"d#„ ZZd$d%„ Z[d&d'„ Z\d(S ))é    )ÚSÚpiÚooÚsymbolsÚFunctionÚRationalÚIntegerÚTupleÚ
DerivativeÚEqÚNeÚLeÚLtÚGtÚGe)ÚIntegral)ÚSum)0ÚexpÚsinÚcosÚfresnelcÚfresnelsÚ	conjugateÚMaxÚMinÚgammaÚ	polygammaÚloggammaÚerfÚerfiÚerfcÚerf2ÚexpintÚerfinvÚerfcinvÚEiÚSiÚCiÚliÚShiÚChiÚ
uppergammaÚbetaÚsubfactorialÚerf2invÚ	factorialÚ
factorial2ÚcatalanÚRisingFactorialÚFallingFactorialÚharmonicÚatan2ÚsecÚacscÚhermiteÚlaguerreÚassoc_laguerreÚjacobiÚ
gegenbauerÚ
chebyshevtÚ
chebyshevuÚlegendreÚassoc_legendreÚLiÚLambertW)Úmathematica_codezx,y,z,wÚfc                   C   s,   t tdƒƒdkst‚t tdƒƒdks(t‚d S )NéC   Z67éÿÿÿÿú-1)Úmcoder   ÚAssertionError© rJ   rJ   úd/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/printing/tests/test_mathematica.pyÚtest_Integer   s    rL   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)rH   r   rI   ÚxrJ   rJ   rJ   rK   Útest_Rational   s    rT   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)
rH   r   rS   ÚyrI   r   r   r   r   r   rJ   rJ   rJ   rK   Útest_Relational#   s    rV   c                   C   s„  t ttttƒƒdkst‚t ttƒttƒ ƒdks4t‚t ttƒt	tƒ ƒdksPt‚t t
ttƒƒdksft‚t ttƒƒdkszt‚t ttttƒtttƒ ƒdksœt‚t ttƒƒdks°t‚t ttƒƒdksÄt‚t ttƒƒd	ksØt‚t tttƒƒd
ksît‚t tttƒƒdk�st‚t ttƒƒdk�st‚t ttƒƒdk�s2t‚t ttƒƒdk�sHt‚t ttƒƒdk�s^t‚t tttƒƒdk�svt‚t tttƒƒdk�sŽt‚t ttƒƒdk�s¤t‚t ttƒƒdk�sºt‚t tttƒƒdk�sÒt‚t ttƒƒdk�sèt‚t ttƒƒdk�sþt‚t ttƒƒdk�st‚t ttƒƒdk�s*t‚t t tƒƒdk�s@t‚t t!tƒƒdk�sVt‚t t"ttƒƒdk�snt‚t t#tƒƒdk�s„t‚t t$tƒƒdk�sšt‚t t%tƒƒdk�s°t‚t t&ttƒƒdk�sÈt‚t t'ttƒƒd k�sàt‚t t(tƒƒd!k�söt‚t t)tƒƒd"k�st‚t t)ttƒƒd#k�s$t‚t t*tƒƒd$k�s:t‚t t+tƒƒd%k�sPt‚t t+td&ƒƒd'k�sht‚t t+ttƒƒd(k�s€t‚d S ))Nz
f[x, y, z]zSin[x]^Cos[x]zArcCsc[x]*Sec[x]zArcTan[x, y]zConjugate[x]zMax[x, y, z]*Min[y, z]zFresnelC[x]zFresnelS[x]zGamma[x]zGamma[x, y]zPolyGamma[x, y]zLogGamma[x]zErf[x]zErfc[x]zErfi[x]z	Erf[x, y]zExpIntegralE[x, y]zInverseErfc[x]zInverseErf[x]zInverseErf[x, y]zExpIntegralEi[x]zCosIntegral[x]zLogIntegral[x]zSinIntegral[x]zSinhIntegral[x]zCoshIntegral[x]z
Beta[x, y]zFactorial[x]zFactorial2[x]zSubfactorial[x]zFactorialPower[x, y]zPochhammer[x, y]zCatalanNumber[x]zHarmonicNumber[x]zHarmonicNumber[x, y]zLogIntegral[x] - LogIntegral[2]zProductLog[x]rF   zProductLog[-1, x]zProductLog[y, x]),rH   rD   rS   rU   ÚzrI   r   r   r6   r7   r5   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/   r0   r-   r3   r2   r1   r4   rA   rB   rJ   rJ   rJ   rK   Útest_Function,   sN    "rX   c                   C   sÔ   t tttƒƒdkst‚t tttƒƒdks,t‚t ttttƒƒdksDt‚t ttttt	ƒƒdks^t‚t t
tttƒƒdksvt‚t tt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‚d S )
NzHermiteH[x, y]zLaguerreL[x, y]zLaguerreL[x, y, z]zJacobiP[x, y, z, w]zGegenbauerC[x, y, z]zChebyshevT[x, y]zChebyshevU[x, y]zLegendreP[x, y]zLegendreP[x, y, z])rH   r8   rS   rU   rI   r9   r:   rW   r;   Úwr<   r=   r>   r?   r@   rJ   rJ   rJ   rK   Útest_special_polynomialsV   s    rZ   c                   C   s’   t td ƒdkst‚t ttd  ƒdks,t‚t dttƒd ttt    td t  ƒdks`t‚t td ƒd	kstt‚t ttddƒ ƒd
ksŽt‚d S )NrM   zx^3zx^(y^3)é   g      @é   z(3.5*f[x])^(-x + y^x)/(x^2 + y)g      ð¿zx^(-1.0)zx^(2/3))rH   rS   rI   rU   rD   r   rJ   rJ   rJ   rK   Útest_Powb   s    *ÿr]   c                  C   s¬   t ddd�\} }}}ttt t ƒdks,t‚ttt |  ƒdksDt‚ttt |  | ƒdks`t‚ttt |  | | ƒdks€t‚tt|  | ||  |  t ƒdks¨t‚d S )	NzA B C DF)Zcommutativezx*y*zzx*y*Azx*y*A**Bzx*y*A**B**Czx*y*A**B**(C + D)**A)r   rH   rS   rU   rW   rI   )ÚAÚBÚCÚDrJ   rJ   rK   Útest_Mulk   s     rb   c                   C   s(  t tjƒdkst‚t tjƒdks$t‚t tjƒdks6t‚t tjƒdksHt‚t tjƒdksZt‚t tƒdksjt‚t tj	ƒdks|t‚t tj
ƒdksŽt‚t tjƒd	ks t‚t tjƒd
ks²t‚t tƒdksÂt‚t tjƒdksÔt‚t tjƒdksæt‚t dtj ƒdksüt‚t tjƒdk�st‚t tjƒdk�s$t‚d S )NÚ0Ú1rG   z1/2ÚIÚInfinityz	-InfinityÚComplexInfinityZIndeterminateÚEÚPiÚGoldenRatiozE(1/3 + (1/3)*(19 - 3*33^(1/2))^(1/3) + (1/3)*(3*33^(1/2) + 19)^(1/3))r\   zG2*(1/3 + (1/3)*(19 - 3*33^(1/2))^(1/3) + (1/3)*(3*33^(1/2) + 19)^(1/3))Ú
EulerGammaÚCatalan)rH   r   ZZerorI   ZOneZNegativeOneZHalfZImaginaryUnitr   ÚNegativeInfinityrg   ÚNaNZExp1r   rj   ZTribonacciConstantrk   rl   rJ   rJ   rJ   rK   Útest_constantst   s(    ÿÿro   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‚d S )Nr[   r\   rM   é   é   é   rN   é   rP   é
   é   z){1, 2, 3, {4, 5, {6, 7}}, 8, {9, 10}, 11})r[   r\   )rM   rp   z{1, 2, {3, 4}}z{1})r[   z	{1, 2, 3})rH   rI   r	   rJ   rJ   rJ   rK   Útest_containers�   s    "ÿrv   c                  C   s>  ddl m} m}m}m} | ddddgddddgddddgddddggƒ}||ƒ}||ƒ}||ƒ}t|ƒt|ƒ  kr|dks‚n t‚t|ƒt|ƒ  krždks¤n t‚t| ddg ƒƒdks¼t‚t|ddg ƒƒdksÔt‚t| dd	g ƒƒdksìt‚t|dd	g ƒƒd
k�st‚t| d	dg ƒƒdk�s t‚t|d	dg ƒƒdk�s:t‚d S )Nr   )ÚMutableDenseMatrixÚMutableSparseMatrixÚImmutableDenseMatrixÚImmutableSparseMatrixr[   rF   z;{{1, -1, 0, 0}, {0, 1, -1, 0}, {0, 0, 1, -1}, {0, 0, 0, 1}}zsSparseArray[{{1, 1} -> 1, {1, 2} -> -1, {2, 2} -> 1, {2, 3} -> -1, {3, 3} -> 1, {3, 4} -> -1, {4, 4} -> 1}, {4, 4}]z{}zSparseArray[{}, {0, 0}]rM   zSparseArray[{}, {0, 3}]z{{}, {}, {}}zSparseArray[{}, {3, 0}])Zsympy.matricesrw   rx   ry   rz   rH   rI   )rw   rx   ry   rz   r^   r_   r`   ra   rJ   rJ   rK   Útest_matrices–   s.    



ýÿÿÿr{   c                  C   s¼   ddl m} m}m}m} | ddddgddd	d
gddddggddddgddddgddddgggƒ}t|ƒdkspt‚||ƒ}t|ƒdksˆt‚||ƒ}t|ƒdks t‚||ƒ}t|ƒdks¸t‚d S )Nr   )ÚMutableDenseNDimArrayÚImmutableDenseNDimArrayÚMutableSparseNDimArrayÚImmutableSparseNDimArrayr[   r\   rM   rp   rq   rr   rN   rs   rP   rt   ru   é   é   é   é   é   é   rO   é   é   é   é   é   é   zg{{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}, {{13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22, 23, 24}}}a§  SparseArray[{{1, 1, 1} -> 1, {1, 1, 2} -> 2, {1, 1, 3} -> 3, {1, 1, 4} -> 4, {1, 2, 1} -> 5, {1, 2, 2} -> 6, {1, 2, 3} -> 7, {1, 2, 4} -> 8, {1, 3, 1} -> 9, {1, 3, 2} -> 10, {1, 3, 3} -> 11, {1, 3, 4} -> 12, {2, 1, 1} -> 13, {2, 1, 2} -> 14, {2, 1, 3} -> 15, {2, 1, 4} -> 16, {2, 2, 1} -> 17, {2, 2, 2} -> 18, {2, 2, 3} -> 19, {2, 2, 4} -> 20, {2, 3, 1} -> 21, {2, 3, 2} -> 22, {2, 3, 3} -> 23, {2, 3, 4} -> 24}, {2, 3, 4}])Zsympy.tensor.arrayr|   r}   r~   r   rH   rI   )r|   r}   r~   r   ÚexamplerJ   rJ   rK   Útest_NDArray·   s6    


þ


þýÿ	ÿÿÿÿr�   c                   C   s\   t ttttƒƒtƒƒdkst‚t tttd  td  ƒtt tftt tfƒƒdksXt‚d S )NzHold[Integrate[Sin[Sin[x]], x]]r\   zTHold[Integrate[Exp[-x^2 - y^2], {x, -Infinity, Infinity}, {y, -Infinity, Infinity}]])rH   r   r   rS   rI   r   rU   r   rJ   rJ   rJ   rK   Útest_Integralì   s    

þýrŽ   c                   C   s¦   t tttƒtƒƒdkst‚t tttƒƒdks0t‚t tttƒtd  tdƒƒdksTt‚t tttƒtd  tttƒƒdkszt‚t tttƒtd  ttdtƒƒdks¢t‚d S )	NzHold[D[Sin[x], x]]zHold[D[x, x]]rp   r\   zHold[D[y^4*Sin[x], {x, 2}]]zHold[D[y^4*Sin[x], x, y, x]]rM   z!Hold[D[y^4*Sin[x], x, {y, 3}, x]])rH   r
   r   rS   rI   rU   rJ   rJ   rJ   rK   Útest_Derivativeõ   s
    $&r�   c                   C   s^   t tttƒtddfƒƒdks t‚t tttd  td  ƒtt tftt tfƒƒdksZt‚d S )Nr   rt   zHold[Sum[Sin[x], {x, 0, 10}]]r\   zNHold[Sum[Exp[-x^2 - y^2], {x, -Infinity, Infinity}, {y, -Infinity, Infinity}]])rH   r   r   rS   rI   r   rU   r   rJ   rJ   rJ   rK   Útest_Sumý   s     

þýr�   c                  C   s$   ddl m}  | ƒ  d¡dks t‚d S )Nr   ©ÚMCodePrinterzHello Worldz(* Hello World *))Úsympy.printing.mathematicar’   Z_get_commentrI   r‘   rJ   rJ   rK   Útest_comment  s    
ÿr”   c                  C   sr   t dtd�} ddi}t| tƒ|d�dks,t‚t| tƒ|d�dksDt‚ddd„ dfgi}t| tƒ|d�d	ksnt‚d S )
NÚsome_function)ÚclsZSomeFunction)Zuser_functionszSomeFunction[z]c                 S   s   dS )NTrJ   )rS   rJ   rJ   rK   Ú<lambda>  ó    z test_userfuncs.<locals>.<lambda>ZSomeOtherFunctionzSomeOtherFunction[z])r   r   rH   rW   rI   )r•   Zmy_user_functionsrJ   rJ   rK   Útest_userfuncs  s,    þýþýÿþýr™   N)]Z
sympy.corer   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   Zsympy.integralsr   Zsympy.concreter   Zsympy.functionsr   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/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   r“   rC   rH   rS   rU   rW   rY   rD   rL   rT   rV   rX   rZ   r]   rb   ro   rv   r{   r�   rŽ   r�   r�   r”   r™   rJ   rJ   rJ   rK   Ú<module>   s,   DÈ
		*			!5		