a
    kh*                     @   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J t tddks(J d S )NC   Z67-1)mcoder    rI   rI   S/var/www/auris/lib/python3.9/site-packages/sympy/printing/tests/test_mathematica.pytest_Integer   s    rK   c                   C   s   t tdddksJ t tdddks,J t tdddksBJ t td	ddksXJ t ttdd d
ksrJ t tddt dksJ d S )N      z3/7   	   2iz-3/7zx + 3/7z(3/7)*x)rH   r   xrI   rI   rI   rJ   test_Rational   s    rS   c                   C   s   t tttdksJ t tttdks,J t tttdksBJ t tttdksXJ t tttdksnJ t tttdksJ d S )Nzx == yzx != yzx <= yzx < yzx > yzx >= y)	rH   r   rR   yr   r   r   r   r   rI   rI   rI   rJ   test_Relational#   s    rU   c                   C   s  t ttttdksJ t tttt dks4J t tttt dksPJ t t	ttdksfJ t t
tdkszJ t ttttttt dksJ t ttdksJ t ttdksJ t ttd	ksJ t tttd
ksJ t tttdksJ t ttdksJ t ttdks2J t ttdksHJ t ttdks^J t tttdksvJ t tttdksJ t ttdksJ t ttdksJ t tttdksJ t ttdksJ t ttdksJ t ttdksJ t ttdks*J t ttdks@J t t tdksVJ t t!ttdksnJ t t"tdksJ t t#tdksJ t t$tdksJ t t%ttdksJ t t&ttd ksJ t t'td!ksJ t t(td"ksJ t t(ttd#ks$J t t)td$ks:J t t*td%ksPJ t t*td&d'kshJ t t*ttd(ksJ 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   rR   rT   zr   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   rI   rI   rI   rJ   test_Function,   sN    "rW   c                   C   s   t tttdksJ t tttdks,J t ttttdksDJ t tttttdks^J t t	tttdksvJ t t
ttdksJ t tttdksJ t tttdksJ t ttttd	ksJ 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   rR   rT   r9   r:   rV   r;   wr<   r=   r>   r?   r@   rI   rI   rI   rJ   test_special_polynomialsV   s    rY   c                   C   s   t td dksJ t ttd  dks,J t dttd ttt    td t  dks`J t td d	kstJ t ttdd d
ksJ d S )NrL   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   rR   rT   rD   r   rI   rI   rI   rJ   test_Powb   s    *r\   c                  C   s   t ddd\} }}}ttt t dks,J ttt |  dksDJ ttt |  | dks`J ttt |  | | dksJ tt|  | ||  |  t dksJ 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   rR   rT   rV   )ABCDrI   rI   rJ   test_Mulk   s     ra   c                   C   s(  t tjdksJ t tjdks$J t tjdks6J t tjdksHJ t tjdksZJ t tdksjJ t tjdks|J t tj	dksJ t tj
d	ksJ t tjd
ksJ t tdksJ t tjdksJ t tjdksJ t dtj dksJ t tjdksJ t tjdks$J 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ZeroZOneZNegativeOneZHalfZImaginaryUnitr   NegativeInfinityrf   NaNZExp1r   ri   ZTribonacciConstantrj   rk   rI   rI   rI   rJ   test_constantst   s(    rn   c                   C   sz   t dddddddggdd	d
gdgdks,J t ddks<J t dgdksNJ t ddks^J t tg d dksvJ d S )NrZ   r[   rL            rM      rO   
      z){1, 2, 3, {4, 5, {6, 7}}, 8, {9, 10}, 11})rZ   r[   )rL   ro   z{1, 2, {3, 4}}z{1})rZ   )rZ   r[   rL   z	{1, 2, 3})rH   r	   rI   rI   rI   rJ   test_containers   s    "ru   c                  C   s,  ddl m} m}m}m} | g dg dg dg dg}||}||}||}t|t|  krldksrn J t|t|  krdksn J t| ddg d	ksJ t|ddg d
ksJ t| ddg d	ksJ t|ddg dksJ t| ddg dksJ t|ddg dks(J d S )Nr   )MutableDenseMatrixMutableSparseMatrixImmutableDenseMatrixImmutableSparseMatrix)rZ   rF   r   r   )r   rZ   rF   r   )r   r   rZ   rF   )r   r   r   rZ   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}]rL   zSparseArray[{}, {0, 3}]z{{}, {}, {}}zSparseArray[{}, {3, 0}])Zsympy.matricesrv   rw   rx   ry   rH   )rv   rw   rx   ry   r]   r^   r_   r`   rI   rI   rJ   test_matrices   s.    rz   c                  C   s   ddl m} m}m}m} | g dg dg dgg dg dg dgg}t|d	ksXJ ||}t|d	kspJ ||}t|d
ksJ ||}t|d
ksJ d S )Nr   )MutableDenseNDimArrayImmutableDenseNDimArrayMutableSparseNDimArrayImmutableSparseNDimArray)rZ   r[   rL   ro   )rp   rq   rM   rr   )rO   rs   rt      )            )   rN         )            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   )r{   r|   r}   r~   ZexamplerI   rI   rJ   test_NDArray   s6    	r   c                   C   s\   t tttttdksJ t tttd  td  tt tftt tfdksXJ 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   rR   r   rT   r   rI   rI   rI   rJ   test_Integral   s    

r   c                   C   s   t ttttdksJ t tttdks0J t ttttd  tddksTJ t ttttd  tttdkszJ t ttttd  ttdtdksJ d S )	NzHold[D[Sin[x], x]]zHold[D[x, x]]ro   r[   zHold[D[y^4*Sin[x], {x, 2}]]zHold[D[y^4*Sin[x], x, y, x]]rL   z!Hold[D[y^4*Sin[x], x, {y, 3}, x]])rH   r
   r   rR   rT   rI   rI   rI   rJ   test_Derivative   s
    $&r   c                   C   s^   t ttttddfdks J t tttd  td  tt tftt tfdksZJ d S )Nr   rs   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   rR   r   rT   r   rI   rI   rI   rJ   test_Sum   s     

r   c                  C   s$   ddl m}  |  ddks J d S )Nr   MCodePrinterzHello Worldz(* Hello World *))sympy.printing.mathematicar   Z_get_commentr   rI   rI   rJ   test_comment  s    
r   c                  C   sr   t dtd} ddi}t| t|ddks,J t| t|ddksDJ ddd dfgi}t| t|dd	ksnJ d S )
Nsome_function)clsZSomeFunction)Zuser_functionszSomeFunction[z]c                 S   s   dS )NTrI   )rR   rI   rI   rJ   <lambda>      z test_userfuncs.<locals>.<lambda>ZSomeOtherFunctionzSomeOtherFunction[z])r   r   rH   rV   )r   Zmy_user_functionsrI   rI   rJ   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   rR   rT   rV   rX   rD   rK   rS   rU   rW   rY   r\   ra   rn   ru   rz   r   r   r   r   r   r   rI   rI   rI   rJ   <module>   s,   D
		*			!5		