U
    9%e(I                     @   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tt tddks(td S )NC   Z67z-1)mcoder   AssertionError r   r   _/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/printing/tests/test_octave.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std S )N      z3/7   	   2iz-3/7zx + 3/7z3*x/7)r   r   r   xr   r   r   r   test_Rational'   s    r   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st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   r   test_Relational0   s    r   c                   C   s  t tttt dkstt ttdks0tt ttdksDtt ttdksXtt ttdksltt t	tdkstt t
ttdkstt tttdkstt tttd	kstt ttd
kstt ttdkstt tttdkstt tttdkst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;   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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ksdtt ttdksxtt t	t
tdkstt tt
tdkstt ttt
d	kstt ttd
kstt ttdkstt ttdkstt ttdkstt ttdks"tt ttdks8tt ttt
dksPtt ttt
dkshtt ttdks~tt ttddkstt ttdkstt ttt
dkstt ttt
dkstt ttt
dkst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   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 tt ttttdks8tt ttttdksPt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-   r   zr   r   r   r   test_minmaxc   s     r   c               
   C   s   t td dkstt ttd  dks,tt ttdd dksFttdttdt } t d| td ttt    td t  d	kstt td
tttttddddddddkst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   r   rT   r   r   r   )r   r   r   r   test_Powi   s    *r   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   r   r   r   r   r   r   r   test_basic_opsu   s    r   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sn tt ttdkstt ttj t td   krdksn tt dt d	kstt td t td   krd	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   r   r   r4   r   Halfr   r   r   r   r   test_1_over_x_and_sqrt|   s    *.,,r   c                   C   sh  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stt dt t d	kstt dt t t d
kstt tt dkstt dt t dkst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stt tdd t dkstt tt t dkstt tt t dkstt tt tt  dks tt tt t dtd ks$tt td t dks>tt tdd t t t dksdt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   r   evalfr   r   r   r   test_mix_number_mult_symbols   s0    "$r   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st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   r   test_mix_number_pow_symbols   s    r   c                  C   s|   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ttd|  d
ksxtd S )NIZ1ir   Z5ir   r   z3*1i/2   z3 + 4iz
sqrt(3)*1i)r   r   r   r4   )r   r   r   r   	test_imag   s    r   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 )Nr   infz-infNaNzexp(1)r   )	r   r   r   r   r   NegativeInfinityr   ZExp1r"   r   r   r   r   test_constants   s    r   c                   C   sT   t dt dkstt dt dtd ks2tt dt dtd ksPtd S )Nr   z2*(1+sqrt(5))/2z2*%sr   )r   r   r   r   r   r   r   r   r   r   test_constants_other   s    r   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stt ttB t@ dkst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   r   test_boolean   s    r   c                  C   sZ   ddl m}  t| ttdks"tt| ttd dks<tt| dt tdksVt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   r   test_KroneckerDelta   s    r   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stt tddg d	kstt tdd
g dkstt tttt	 t	 ggdkst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   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s4tt| jdksFt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   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sDt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   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stt|td  dkstt|d dkstt|tj dkst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   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:td S )Nr   Tr   r   r   r   zA \ x)r
   rW   r   r   r   )r   r   r   r   r   r   test_MatrixSolve	  s    r   c                   C   s   t dtd dkstd S )N   r   z6*eye(3))r   rX   r   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,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stt dtdtddg g fdkst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   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   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s0td S )NmeF	assign_toinlinez#Catalan = %s;
me = (x + y)/Catalan;r   )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*tt dddks>tt ddd	d
ksTt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stt ddd|  d kstt ddd	dkst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      z'test_octave_piecewise.<locals>.<lambda>)r.   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.tt| t dksBtt| tt  dksZtt| d dksnt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   r   )pwr   r   r   !test_octave_piecewise_times_constH  s
    r   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   r   ar   za = [1 2 3];r   r   zA = [1 2; 3 4];)rV   r   r   r   r   r   r   test_octave_matrix_assign_toP  s    r   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   r   r   Cr   zB = [1 2 3];c                      s   t  tdS Nr   )r   r   r   r   r   r   r   ]  r   z3test_octave_matrix_assign_to_more.<locals>.<lambda>c                      s   t  dS r   r   r   r   r   r   r   r   ^  r   rV   rW   r   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s8ttt fdd	 d S )
Nr   r   r   r   r   r   zB = 3;c                      s   t  dS 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<ttddd} t| dksXtt| d d t| d  | d  d	ksttt| d
kstd S )Nr   r   r   )r   r   )r   r   zx.^2 + x.*y + 2Z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   r   rW   r:   sumr   r   r   r   test_octave_matrix_elementsk  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_octave_booleanu  s    r   c                  C   s8   t tjdksttd} t | ttdks4td S )Nz0% Not supported in Octave:
% ComplexInfinity
zoofz;% Not supported in Octave:
% Derivative
Derivative(f(x), x))r   r   ZComplexInfinityr   r   r   diffr   r   r   r   test_octave_not_supported|  s    r   c                  C   s(   ddl m}  t| tttdks$td S )Nr   assoc_laguerrezC% Not supported in Octave:
% assoc_laguerre
assoc_laguerre(x, y, z))Z#sympy.functions.special.polynomialsr   r   r   r   r   r   r   r   r   r   *test_octave_not_supported_not_on_whitelist  s    r   c                   C   sF   t tdtdkstt tdtdks,tt tttdksBtd S )Nr   z	expint(x)r   z0% Not supported in Octave:
% expint
expint(2, x)z0% Not supported in Octave:
% expint
expint(y, x))r   r#   r   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@td S )	NZendlessZ	elsewherer   r   )r   TF)r   z=if (x < 0)
  endless
elseif (x <= 1)
  elsewhere
else
  1
end)r   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sRtt|| d	ksftt|| | d
ks~tt||  dkstt|t t dksttt| |dksttt| d| dksttt| |j d| dkst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   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sHt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   r   )Mr   r   r   test_sparse  s    r   c                   C   sL   t ttdkstt ttd dks,tt tttd  dksHtd S )Nz
sinc(x/pi)r   zsinc((x + 3)/pi)zsinc(x + 3))r   r3   r   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s4tq4d 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   r   test_trigfun  s              r   c                  C   s  t d} ttttfD ] }t|| t|jd kstqt	t
ttttttfD ]}t|t|jd ksJtqJtt| tdksttt| tdksttttdksttttdksttttdksttttd	ksttt| td
ksttt| tdkstttt| t dks0ttt| tdksHttt| tdks`ttttdksvtttt| dksttttdksttttdksttttdkst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))z?((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   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s8ttd| d  dksPt|d || | }t|d	ksttd S )
Nr   r   r   r   r   r   zA(1, 1)z	3*A(1, 1)z(A - B)(1, 1))rW   r   r   subs)r   r   r   Fr   r   r   test_MatrixElement_printing  s    r   c                   C   s.   t ttdkstt tttdks*td S )Nzzeta(x)z,% Not supported in Octave:
% zeta
zeta(x, y))r|   r5   r   r   r   r   r   r   r   test_zeta_printing_issue_14820  s    r   c                   C   s.   t ttdkstt tttdks*td S )Nzlogint(x) - logint(2)z-erf(x) + erf(y))r|   ry   r   r   rz   r   r   r   r   r   test_automatic_rewrite	  s    r  N)Z
sympy.corer   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   Z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   Zsympy.testing.pytestrR   rS   Zsympy.utilities.lambdifyrT   Zsympy.matricesrU   rV   rW   rX   rY   rZ   r[   Zsympy.functions.special.besselr\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   Z'sympy.functions.special.gamma_functionsrh   ri   rj   rk   rl   Z'sympy.functions.special.error_functionsrm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   Z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>   sn   `h$8D				



	 


	