o
    ohyH                     @   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mZmZmZmZmZmZ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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: d dlm;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZR d dlSmTZTmUZU d dlVmWZW d dlXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_ d dl`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZl d d	lmmnZnmoZompZpmqZqmrZr d d
lsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZmZmZmZ d dlmZmZ ed\ZZZdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 ZeUd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zd=d> Zd?d@ ZdAdB ZdCdD ZdEdF ZdGdH ZdIdJ ZdKdL ZdMdN ZdOdP ZdQdR ZdSdT ZdUdV ZdWdX ZdYdZ Zd[d\ Zd]d^ Zd_d` Zdadb ZdcS )d    )SpioosymbolsFunctionRationalIntegerTupleSymbol
EulerGammaGoldenRatioCatalanLambdaMulPowModEqNeLeLtGtGe)MatrixSolve)!argatan2	bernoullibetaceiling
chebyshevu
chebyshevt	conjugate
DiracDeltaexpexpint	factorialfloorharmonic	HeavisideimlaguerreLambertWlogMaxMin	PiecewisepolylogreRisingFactorialsignsincsqrtzetabinomiallegendredirichlet_eta
riemann_xi)sincostancotseccscasinacosacotatanasecacscsinhcoshtanhcothcschsechasinhacoshatanhacothasechacsch)raisesXFAIL)implemented_function)eyeMatrixMatrixSymbolIdentityHadamardProductSparseMatrixHadamardPower)jnynbesseljbesselybesselibesselkhankel1hankel2airyaiairybiairyaiprimeairybiprime)gamma
lowergamma
uppergammaloggamma	polygamma)ChiCierferfcerfierfcinverfinvfresnelcfresnelsliShiSiLierf2Ei)octave_coder|   zx,y,zc                   C   s,   t tddks
J t tddksJ d S )NC   67z-1)mcoder    r   r   t/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/sympy/printing/tests/test_octave.pytest_Integer"   s   r   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*x/7)r   r   xr   r   r   r   test_Rational'   s   r   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)	r   r   r   yr   r   r   r   r   r   r   r   r   test_Relational0   s   r   c                   C   s  t t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s,J t ttdks6J t ttdks@J t t	t
tdksKJ t ttt
dksVJ t ttt
d	ksaJ t ttd
kskJ t ttdksuJ t ttt
dksJ t ttt
dksJ d S )Nzsin(x).^cos(x)zsign(x)zexp(x)zlog(x)zfactorial(x)zfloor(x)zatan2(y, x)z
beta(x, y)zpolylog(x, y)zharmonic(x)zbernoulli(x)zbernoulli(x, y)zlegendre(x, y))r   r:   r   r;   r2   r"   r+   r$   r%   r   r   r   r/   r&   r   r7   r   r   r   r   test_Function9   s   r   c                   C   s  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s(J t ttdks2J t ttdks<J t tt	tdksGJ t t
t	tdksRJ t ttt	d	ks]J t ttd
ksgJ t ttdksqJ t ttdks{J 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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t	dksJ d S )Nzabs(x)zceil(x)zangle(x)zimag(x)zreal(x)zconj(x)zchebyshevT(y, x)zchebyshevU(y, x)zlaguerreL(x, y)z
coshint(x)z
sinhint(x)z	cosint(x)z	sinint(x)z	logint(x)z
gammaln(x)z	psi(x, y)zpochhammer(x, y)zdirac(x)r   zdirac(3, x)zheaviside(x, 1/2)zheaviside(x, y)zbincoeff(x, y)z	mod(x, y))r   absr   r   r   r(   r0   r    r   r   r   r)   rm   rw   rn   rx   rv   rk   rl   r1   r!   r'   r6   r   r   r   r   r   test_Function_change_nameI   s.   r   c                   C   sT   t t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 d S )Nzmax(x, y) + min(x, y)zmax(x, max(y, z))zmin(x, min(y, z)))r   r,   r   r   r-   zr   r   r   r   test_minmaxc   s    r   c               
   C   s   t td dks
J t ttd  dksJ t ttdd dks#J tdttdt } t d| td ttt    td t  d	ksGJ t td
tttttddddddddks_J d S )Nr   zx.^3z	x.^(y.^3)   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   r   r   r   rT   r   r   r   )r   r   r   r   test_Powi   s   *r   c                   C   sR   t tt dks
J t tt dksJ t tt dksJ t t dks'J d S )Nx.*yzx + yzx - yz-x)r   r   r   r   r   r   r   test_basic_opsu   s   r   c                   C   s"  t dt dks
J t td t td   krdks J  J t dtt dks,J t ttj  t td   krAdksDJ  J t ttdksNJ t ttj t td   krbdkseJ  J t dt d	ksoJ t td t td   krd	ksJ  J t td d
ksJ d S )Nr   z1./xr   g      z
1./sqrt(x)g      zsqrt(x)g      ?z1/piz
1/sqrt(pi))r   r   r4   r   Halfr   r   r   r   r   test_1_over_x_and_sqrt|   s   ,0.,r   c                   C   sT  t dt dks
J t tt dksJ t dt dksJ t tt dks(J t td dks2J t tt dks<J t tt dksFJ t dt t d	ksRJ t dt t t d
ks`J t tt dksjJ t dt t dksvJ t tt t dksJ t tt t dksJ t dt t dksJ t dt t t t dksJ t dt t dksJ t tdd dksJ t tdd 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 t tt t dtd ksJ t td t dksJ t tdd t t t dks(J d S )Nr   z3*xzpi*xz3./xzpi./xzx/3zx/pir   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*x/5z	x./(y.*z)z
(x + y)./zz(x + y)./(x + z)z
(x + y)/%s   zx/(3*pi)z3*x.*y/(5*pi))r   r   r   r   r   r   r   evalfr   r   r   r   test_mix_number_mult_symbols   s0    $*r   c                   C   s   t td dks
J t td dksJ t ttd  dks J t tt dks*J t ttt  dks6J t tt t dksBJ d S )	Nr   zpi^3r   zx.^2z	x.^(pi^3)zx.^yz	x.^(y.^z)z	(x.^y).^z)r   r   r   r   r   r   r   r   r   test_mix_number_pow_symbols   s   r   c                  C   s|   t d} t| dksJ td|  dksJ tt dd |  dks$J tdd|   d	ks0J ttd|  d
ks<J d S )NI1ir   5ir   r   z3*1i/2   z3 + 4iz
sqrt(3)*1i)r   r   r4   )r   r   r   r   	test_imag   s   r   c                   C   s   t tdksJ t tdksJ t t dksJ t tjdks"J t tjdks+J t tjdks4J t tddks>J d S )Nr   infz-infNaNzexp(1)r   )r   r   r   r   NegativeInfinityr   Exp1r"   r   r   r   r   test_constants   s   r   c                   C   sT   t dt dks
J t dt dtd ksJ t dt dtd ks(J d S )Nr   z2*(1+sqrt(5))/2z2*%sr   )r   r   r   r   r   r   r   r   r   test_constants_other   s   "r   c                   C   s   t tt@ dks
J t ttB dksJ t t dksJ t tt@ t@ dks)J t ttB tB dks5J t tt@ tB dksAJ t ttB t@ dksMJ d S )Nzx & yzx | yz~xz	x & y & zz	x | y | zz	z | x & yzz & (x | y))r   r   r   r   r   r   r   r   test_boolean   s   r   c                  C   sZ   ddl m}  t| ttdksJ t| ttd dksJ t| dt tdks+J d S )Nr   KroneckerDeltazdouble(x == y)r   zdouble(x == (y + 1))r   zdouble((2.^x) == y))sympy.functionsr   r   r   r   r   r   r   r   test_KroneckerDelta   s   r   c                  C   s   t tdddgdksJ tdttd ttgddtgdtdttgg} d}t | |ks1J t | d d df dks?J t | dd d f dksMJ t tddg d	ksYJ t tdd
g dkseJ t tttt t ggdksvJ d S )Nr   
   10r   r   z-[1 sin(x/2) abs(x); 0 1 pi; 0 exp(1) ceil(x)]z	[1; 0; 0]z[1 sin(x/2) abs(x)]z[]r   zzeros(0, 3)z[x x - y -y])	r   rV   r:   r   r   r   r"   r   r   Aexpectedr   r   r   test_Matrices   s   &r   c                  C   sJ   t dtdt dt t d gg} t| dksJ t| jdks#J d S )Nr   r   r   r   z[1 sin(2./x) 3*pi./(5*x)]z[1; sin(2./x); 3*pi./(5*x)])rV   r:   r   r   r   Tr   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s"J d S )Nr   r   r   r   z.[1 sin(2/x) 3*pi/(5*x);
1        2        x*y])rV   r:   r   r   r   r   r   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sJ t|| dks&J td| | d	ks2J t|d | d
ks>J t||dt|    dksNJ t|td  dksZJ t|d dksdJ t|tj dksoJ d S )NnTintegerr   BzA*BzB*Ar   z2*A*Bz2*B*Ar   zA*(3*eye(n) + B)zA^(x.^2)zA^3zA^(1/2))r
   rW   r   rX   r   r   r   )r   r   r   r   r   r   test_MatrixSymbol   s    r   c                  C   s>   t ddd} td| | }td| d}tt||dksJ d S )Nr   Tr   r   r   r   zA \ x)r
   rW   r   r   )r   r   r   r   r   r   test_MatrixSolve	  s   r   c                   C   s   t dtd dksJ d S )N   r   z6*eye(3))r   rX   r   r   r   r   test_special_matrices  s   r   c                   C   s   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 t dtt dtd ffdksLJ t dtdtddg g fdks^J d S )Nr   r   r   r   r   r   r      r   r      z){1, 2, 3, {4, 5, {6, 7}}, 8, {9, 10}, 11})r   r   )r   r   z{1, 2, {3, 4}}z{1})r   r   r   r   z	{1, 2, 3}z{1, x.*y, {3, x.^2}}r   z"{1, [1 0 0; 0 1 0; 0 0 1], [], {}})r   r	   r   r   rU   rV   r   r   r   r   test_containers  s   ""(r   c                  C   s4   t tt t ddd} dtd }| |ksJ d S )NmeF	assign_toinlinez#Catalan = %s;
me = (x + y)/Catalan;r   )r   r   r   r   r   )sourcer   r   r   r   test_octave_noninline  s
   r   c                     s  t ttdk ftd df t dksJ t dddksJ t ddd	d
ks*J 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sQJ t ddd|  d ks_J t ddd	dksjJ 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#((x < 1).*(x) + (~(x < 1)).*(x.^2))rr   z(r = ((x < 1).*(x) + (~(x < 1)).*(x.^2));Fr   z(if (x < 1)
  r = x;
else
  r = x.^2;
endr   r   r   zp((x < 1).*(x.^2) + (~(x < 1)).*( ...
(x < 2).*(x.^3) + (~(x < 2)).*( ...
(x < 3).*(x.^4) + (~(x < 3)).*(x.^5))))zr = ;zaif (x < 1)
  r = x.^2;
elseif (x < 2)
  r = x.^3;
elseif (x < 3)
  r = x.^4;
else
  r = x.^5;
endr   c                      s   t  S )Nr   r   exprr   r   <lambda>E  s    z'test_octave_piecewise.<locals>.<lambda>)r.   r   r   r:   rR   
ValueError)r   r   r   r   test_octave_piecewise(  s"   
:,r   c                  C   sr   t ttdk ftd df} td|  dksJ t| t dks!J t| tt  dks-J t| d dks7J d S )	Nr   r   Tz%2*((x < 1).*(x) + (~(x < 1)).*(x.^2))z&((x < 1).*(x) + (~(x < 1)).*(x.^2))./xz+((x < 1).*(x) + (~(x < 1)).*(x.^2))./(x.*y)r   z%((x < 1).*(x) + (~(x < 1)).*(x.^2))/3)r.   r   r   r   )pwr   r   r   !test_octave_piecewise_times_constH  s
   r   c                  C   sN   t g dg} t| dddksJ t ddgddgg} t| d	dd
ks%J d S )Nr   ar   za = [1 2 3];r   r   r   r   r   zA = [1 2; 3 4];)rV   r   r   r   r   r   test_octave_matrix_assign_toP  s   r   c                     sd   t g dg tddd} tdddt | ddksJ tt fd	d
 tt fdd
 d S )Nr   r   r   r   Cr   r   zB = [1 2 3];c                      s   t  tdS Nr   )r   r   r   r   r   r   r   ]      z3test_octave_matrix_assign_to_more.<locals>.<lambda>c                         t  dS r   r   r   r   r   r   r   r   ^  r   rV   rW   r   rR   r   r   r   r   r   !test_octave_matrix_assign_to_moreW  s   r   c                     sP   t dgg tddd} tdddt | ddksJ tt fdd	 d S )
Nr   r   r   r   r   r   zB = 3;c                      r   r   r   r   r   r   r   r   h  r   z(test_octave_matrix_1x1.<locals>.<lambda>r   r   r   r   r   test_octave_matrix_1x1a  s
   r   c                  C   s   t tdtt gg} t| d d | d  | d  dksJ tddd} t| dks,J t| d d t| d  | d  d	ksBJ tt| d
ksLJ d S )Nr   r   r   )r   r   )r   r   zx.^2 + x.*y + 2AAr   r   z&sin(AA(1, 2)) + AA(1, 1).^2 + AA(1, 3)zAA(1, 1) + AA(1, 2) + AA(1, 3))rV   r   r   r   rW   r:   sumr   r   r   r   test_octave_matrix_elementsk  s   ("r   c                   C   sH   t ddksJ t tjdksJ t ddksJ t tjdks"J d S )NTtrueFfalse)r   r   r   r   r   r   r   r   test_octave_booleanu  s   r   c                  C   s\   t t ttj W d    n1 sw   Y  td} t| ttdddks,J d S )NfFstrictz;% Not supported in Octave:
% Derivative
Derivative(f(x), x))rR   NotImplementedErrorr   r   ComplexInfinityr   r   diffr   r   r   r   test_octave_not_supported|  s   
r   c                  C   sJ   ddl m}  tt t| ttt W d    d S 1 sw   Y  d S )Nr   assoc_laguerre)#sympy.functions.special.polynomialsr   rR   r   r   r   r   r   r   r   r   r   *test_octave_not_supported_not_on_whitelist  s   
"r   c                   C   sj   t tdtdksJ tt t tdt W d    n1 s!w   Y  t tttdddks3J d S )Nr   z	expint(x)r   Fr   z0% Not supported in Octave:
% expint
expint(y, x))r   r#   r   rR   r   r   r   r   r   r   test_octave_expint  s   
r   c                  C   sD   t d} t d}t| tdk f|tdkfd}t|dddks J d S )	Nendless	elsewherer   r   )r   TF)r   z=if (x < 0)
  endless
elseif (x <= 1)
  elsewhere
else
  1
end)r   r.   r   r   )t1t2r   r   r   r   %test_trick_indent_with_end_else_words  s   
r   c                  C   s   t ddd} t ddd}t ddd}t ddd}t| |}td}t|dks)J t|| d	ks3J t|| | d
ks?J t||  dksIJ t|t t dksUJ tt| |dks`J tt| d| dksmJ tt| |j d| dks}J d S )Nr   r   r   vr   hr   zA.*Bz(A.*B)*vz
h*(A.*B)*vz(A.*B)*Az(x.*y)*(A.*B)zA.**nzA.**(n + 1)z(A*B.T).**(n + 1))rW   rY   r
   r   r   r   r[   r   )r   r   r   r   r   r   r   r   r   test_hadamard  s   
$r   c                  C   sL   t ddi } d| d< d| d< d| d< d	| d
< tt | d< t| dks$J d S )Nr   r   r   )r   r      )r   r      )r   r      )r   r   )r   r   z:sparse([4 2 3 1 2], [1 3 3 4 4], [x.*y 20 10 30 22], 5, 6))rZ   r   r   r   )Mr   r   r   test_sparse  s   r  c                   C   sL   t ttdks
J t ttd dksJ t tttd  dks$J d S )Nz
sinc(x/pi)r   zsinc((x + 3)/pi)zsinc(x + 3))r   r3   r   r   r   r   r   r   	test_sinc  s    r  c                  C   sX   t ttttttttt	t
tttttttttttttfD ]} t| t| jd ks)J qd S )N(x))r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   r|   r   __name__r   r   r   r   test_trigfun  s   r  c                  C   s  t d} ttttfD ]}t|| t|jd ksJ q
tt	t
tttttfD ]}t|t|jd ks4J q%tt| tdks@J tt| tdksKJ tttdksUJ tttdks_J tttdksiJ tttd	kssJ tt| td
ks~J 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sJ tttdksJ tttdksJ tttdksJ d S )Nr   z(n, x)r  zbesselh(n, 1, x)zbesselh(n, 2, x)z
airy(0, x)z
airy(1, x)z
airy(2, x)z
airy(3, x)z#(gammainc(x, n, 'upper').*gamma(n))z(gammainc(x, n).*gamma(n))zz.^(gammainc(x, n).*gamma(n))z2sqrt(2)*sqrt(pi)*sqrt(1./x).*besselj(n + 1/2, x)/2z2sqrt(2)*sqrt(pi)*sqrt(1./x).*bessely(n + 1/2, x)/2zlambertw(x)zlambertw(n, x)z(logint(exp(x)))zA(((x == 1).*(log(2)) + (~(x == 1)).*((1 - 2.^(1 - x)).*zeta(x))))z/(pi.^(-x/2).*x.*(x - 1).*gamma(x/2).*zeta(x)/2))r
   r^   r_   r`   ra   r|   r   r  rp   rq   ro   rs   rr   rt   ru   rh   rb   rc   rd   rf   re   rg   rj   ri   r   r\   r]   r*   r{   r8   r9   )r   r   r   r   r   test_specfun  s*   r	  c                  C   sx   t ddd} t ddd}t ddd}t| d dksJ td| d  dks(J |d || | }t|d	ks:J d S )
Nr   r   r   r   r   r   zA(1, 1)z	3*A(1, 1)z(A - B)(1, 1))rW   r   subs)r   r   r   Fr   r   r   test_MatrixElement_printing  s   r  c                   C   sP   t ttdks
J tt t ttt W d    d S 1 s!w   Y  d S )Nzzeta(x))r|   r5   r   rR   r   r   r   r   r   r   test_zeta_printing_issue_14820  s   
"r  c                   C   s.   t ttdks
J t tttdksJ d S )Nz(logint(x) - logint(2))z(-erf(x) + erf(y)))r|   ry   r   rz   r   r   r   r   r   test_automatic_rewrite  s   r  N)
sympy.corer   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   sympy.codegen.matrix_nodesr   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   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   sympy.testing.pytestrR   rS   sympy.utilities.lambdifyrT   sympy.matricesrU   rV   rW   rX   rY   rZ   r[   sympy.functions.special.besselr\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   'sympy.functions.special.gamma_functionsrh   ri   rj   rk   rl   'sympy.functions.special.error_functionsrm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   sympy.printing.octaver|   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   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r	  r  r  r  r   r   r   r   <module>   sp   ` h$8D				



	 


