o
    oh*                     @   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   67-1)mcoder    rJ   rJ   y/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/sympy/printing/tests/test_mathematica.pytest_Integer   s   rL   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s!J t td	ddks,J t ttdd d
ks9J t tddt dksFJ d S )N      z3/7   	   2iz-3/7zx + 3/7z(3/7)*x)rI   r   xrJ   rJ   rJ   rK   test_Rational   s   rT   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s!J t tttdks,J t tttdks7J t tttdksBJ d S )Nzx == yzx != yzx <= yzx < yzx > yzx >= y)	rI   r   rS   yr   r   r   r   r   rJ   rJ   rJ   rK   test_Relational#   s   rV   c                   C   sj  t ttttdksJ t tttt dksJ t tttt dks(J t t	ttdks3J t t
tdks=J t ttttttt dksNJ t ttdksXJ t ttdksbJ t ttd	kslJ t tttd
kswJ 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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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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tdks*J t t"tdks5J t t#tdks@J t t$tdksKJ t t%ttdksWJ t t&ttd kscJ t t'td!ksnJ t t(td"ksyJ t t(ttd#ksJ t t)td$ksJ t t*td%ksJ t t*td&d'ksJ 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]rG   zProductLog[-1, x]zProductLog[y, x])+rI   rD   rS   rU   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   rJ   rJ   rJ   rK   test_Function,   sN   "rX   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s"J t tttttdks/J t t	tttdks;J t t
ttdksFJ t tttdksQJ t tttdks\J t ttttd	kshJ 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])rI   r8   rS   rU   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
J t ttd  dksJ t dttd ttt    td t  dks0J t td d	ks:J t ttdd d
ksGJ 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))rI   rS   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J ttt |  dks"J ttt |  | dks0J ttt |  | | dks@J tt|  | ||  |  t dksTJ d S )	NzA B C DF)commutativezx*y*zzx*y*Azx*y*A**Bzx*y*A**B**Czx*y*A**B**(C + D)**A)r   rI   rS   rU   rW   )ABCDrJ   rJ   rK   test_Mulk   s    ,rc   c                   C   s$  t tjdks	J t tjdksJ t tjdksJ t tjdks$J t tjdks-J t tdks5J t tjdks>J t tj	dksGJ t tj
d	ksPJ t tjd
ksYJ t tdksaJ t tjdksjJ t tjdkssJ t dtj dks~J t tjdksJ t tjdksJ d S )N01rH   z1/2IInfinityz	-InfinityComplexInfinity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)rI   r   ZeroOneNegativeOneHalfImaginaryUnitr   NegativeInfinityrh   NaNExp1r   rl   TribonacciConstantrm   rn   rJ   rJ   rJ   rK   test_constantst   s(   rx   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s'J t ddks/J t tg d dks;J d S )Nr[   r\   rM            rN      rP   
      z){1, 2, 3, {4, 5, {6, 7}}, 8, {9, 10}, 11})r[   r\   )rM   ry   z{1, 2, {3, 4}}z{1})r[   )r[   r\   rM   z	{1, 2, 3})rI   r	   rJ   rJ   rJ   rK   test_containers   s   "r   c                  C   s,  ddl m} m}m}m} | g dg dg dg dg}||}||}||}t|t|  kr7dks:J  J t|t|  krIdksLJ  J t| ddg d	ksXJ t|ddg d
ksdJ t| ddg d	kspJ t|ddg dks|J t| ddg dksJ t|ddg dksJ d S )Nr   )MutableDenseMatrixMutableSparseMatrixImmutableDenseMatrixImmutableSparseMatrix)r[   rG   r   r   )r   r[   rG   r   )r   r   r[   rG   )r   r   r   r[   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}])sympy.matricesr   r   r   r   rI   )r   r   r   r   r_   r`   ra   rb   rJ   rJ   rK   test_matrices   s.   r   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s,J ||}t|d	ks8J ||}t|d
ksDJ ||}t|d
ksPJ d S )Nr   )MutableDenseNDimArrayImmutableDenseNDimArrayMutableSparseNDimArrayImmutableSparseNDimArray)r[   r\   rM   ry   )rz   r{   rN   r|   )rP   r}   r~      )            )   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}])sympy.tensor.arrayr   r   r   r   rI   )r   r   r   r   examplerJ   rJ   rK   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s,J d S )NzHold[Integrate[Sin[Sin[x]], x]]r\   zTHold[Integrate[Exp[-x^2 - y^2], {x, -Infinity, Infinity}, {y, -Infinity, Infinity}]])rI   r   r   rS   r   rU   r   rJ   rJ   rJ   rK   test_Integral   s   

r   c                   C   s   t ttttdksJ t tttdksJ t ttttd  tddks*J t ttttd  tttdks=J t ttttd  ttdtdksQJ d S )	NzHold[D[Sin[x], x]]zHold[D[x, x]]ry   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]])rI   r
   r   rS   rU   rJ   rJ   rJ   rK   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s-J d S )Nr   r}   zHold[Sum[Sin[x], {x, 0, 10}]]r\   zNHold[Sum[Exp[-x^2 - y^2], {x, -Infinity, Infinity}, {y, -Infinity, Infinity}]])rI   r   r   rS   r   rU   r   rJ   rJ   rJ   rK   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   _get_commentr   rJ   rJ   rK   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s"J ddd dfgi}t| t|dd	ks7J d S )
Nsome_function)clsSomeFunction)user_functionszSomeFunction[z]c                 S   s   dS )NTrJ   )rS   rJ   rJ   rK   <lambda>  s    z test_userfuncs.<locals>.<lambda>SomeOtherFunctionzSomeOtherFunction[z])r   r   rI   rW   )r   my_user_functionsrJ   rJ   rK   test_userfuncs  s,   r   N)]
sympy.corer   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   sympy.integralsr   sympy.concreter   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   rI   rS   rU   rW   rY   rD   rL   rT   rV   rX   rZ   r]   rc   rx   r   r   r   r   r   r   r   r   rJ   rJ   rJ   rK   <module>   s.   D 
		*			!5		