a
    {d36                     @   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mZmZmZmZmZ d dl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' d dl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 d dlm5Z5 d d	l6m7Z7 ed
\Z8Z9Z:dd Z;dd Z<dd Z=dd Z>dd Z?dd Z@dd ZAdd ZBdd ZCdd ZDdd  ZEd!d" ZFd#d$ ZGd%d& ZHd'd( ZIe5d)d* ZJd+d, ZKd-d. ZLd/d0 ZMd1d2 ZNd3d4 ZOd5d6 ZPd7d8 ZQd9d: ZRd;d< ZSd=d> ZTd?d@ ZUdAdB ZVdCdD ZWdEdF ZXdGdH ZYdIdJ ZZdKdL Z[dMS )N    )SpioosymbolsFunctionRationalIntegerTupleSymbolEqNeLeLtGtGe)
EulerGammaGoldenRatioCatalanLambdaMulPow)	Piecewisesqrtceilingexpsincos)raises)implemented_function)eyeMatrixMatrixSymbolIdentityHadamardProductSparseMatrix)jnynbesseljbesselybesselibesselkhankel1hankel2airyaiairybiairyaiprimeairybiprime)XFAIL
julia_codezx,y,zc                   C   s,   t tddksJ t tddks(J d S )NC   Z67z-1)r3   r    r6   r6   h/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/sympy/printing/tests/test_julia.pytest_Integer   s    r8   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)r3   r   xr6   r6   r6   r7   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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)	r3   r   r?   yr   r   r   r   r   r6   r6   r6   r7   test_Relational!   s    rB   c                   C   sH   t tttt dksJ t ttdks0J t ttdksDJ d S )Nzsin(x) .^ cos(x)zabs(x)zceil(x))r3   r   r?   r   absr   r6   r6   r6   r7   test_Function*   s    rD   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sFJ tdttdt } t d| td ttt    td t  d	ksJ t td
tttttddddddddksJ d S )Nr9   zx .^ 3zx .^ (y .^ 3)   zx .^ (2 // 3)g   g      @z.(3.5 * 2 * x) .^ (-x + y .^ x) ./ (x .^ 2 + y)F)evaluater5   z-2 * x ./ (y .* y))r3   r?   rA   r   r   r   r   r   )rF   r6   r6   r7   test_Pow0   s    *rJ   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sNJ d S )Nx .* yzx + yzx - yz-x)r3   r?   rA   r6   r6   r6   r7   test_basic_ops<   s    rL   c                   C   s  t dt dksJ t td t td   kr8dks>n J t dtt dksVJ t ttj  t td   kr~dksn J t ttdksJ t ttj t td   krdksn J t dt d	ksJ t td t td   krd	ksn J t td d
ksJ d S )NrG   z1 ./ xr5   g      z1 ./ sqrt(x)g      zsqrt(x)g      ?z1 / piz1 / sqrt(pi))r3   r?   r   r   Halfr   r6   r6   r6   r7   test_1_over_x_and_sqrtC   s    *.,,rN   c                   C   s^  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sPJ t td dksdJ t tt dksxJ t tt dksJ t dt t d	ksJ t dt t t d
ksJ t tt dksJ t dt t dksJ t tt t dksJ t tt t dks J t dt t dks:J t dt t t t dks\J t dt t dksvJ 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s J t tt t dksJ t td t dks4J t tdd t t t dksZJ d S )Nr9   z3 * xzpi * xz3 ./ xzpi ./ xzx / 3zx / pirK   z
3 * x .* yz3 * pi * x .* yzx ./ yz
3 * x ./ yzx .* y ./ zzx .* z ./ yrG   z1 ./ (x .* y)rE   z2 * pi * x ./ (y .* z)z3 * pi ./ x   z3 // 5z(3 // 5) * xzx ./ (y .* z)z(x + y) ./ zz(x + y) ./ (x + z)z(x + y) / eulergammazx / (3 * pi)z(3 // 5) * x .* y / pi)r3   r?   r   rA   zr   r   r6   r6   r6   r7   test_mix_number_mult_symbolsQ   s0    "rQ   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sTJ t ttt  dkslJ t tt t dksJ d S )	Nr9   zpi ^ 3rE   zx .^ 2zx .^ (pi ^ 3)zx .^ yzx .^ (y .^ z)z(x .^ y) .^ z)r3   r   r?   rA   rP   r6   r6   r6   r7   test_mix_number_pow_symbolsl   s    rR   c                  C   sd   t d} t| dksJ td|  dks,J tt dd |  dksHJ tdd|   d	ks`J d S )
NIZimrO   Z5imr9   rE   z(3 // 2) * im   z3 + 4im)r   r3   )rS   r6   r6   r7   	test_imagu   s
    rU   c                   C   s   t tdksJ t tdks J t t dks2J t tjdksDJ t tjdksVJ t tjdkshJ t tddks|J d S )Nr   ZInfz-InfNaNerG   )r3   r   r   r   NegativeInfinityrV   ZExp1r   r6   r6   r6   r7   test_constants}   s    rY   c                   C   s@   t dt dksJ t dt dks(J t dt dks<J d S )NrE   z
2 * goldenz2 * catalanz2 * eulergamma)r3   r   r   r   r6   r6   r6   r7   test_constants_other   s    rZ   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sRJ t ttB tB dksjJ t tt@ tB dksJ t ttB t@ dksJ d S )Nzx && yzx || yz!xzx && y && zzx || y || zzz || x && yzz && (x || y))r3   r?   rA   rP   r6   r6   r6   r7   test_boolean   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sbJ t | d d df dks~J t | dd d f dksJ t tddg d	ksJ t tdd
g dksJ t tttt t ggdksJ d S )NrG   
   z[10]rE   r   zB[1 sin(x / 2)  abs(x);
0          1      pi;
0          e ceil(x)]z	[1, 0, 0]z[1 sin(x / 2) abs(x)]zzeros(0, 0)r9   zzeros(0, 3)z[x x - y -y])	r3   r    r   r?   rC   r   r   r   rA   Aexpectedr6   r6   r7   test_Matrices   s    r`   c                  C   sJ   t dtdt dt t d gg} t| dks4J t| jdksFJ d S )NrG   rE   r9   rO   z"[1 sin(2 ./ x) (3 // 5) * pi ./ x]z$[1, sin(2 ./ x), (3 // 5) * pi ./ x])r    r   r?   r   r3   Tr^   r6   r6   r7   test_vector_entries_hadamard   s    $rc   c                  C   sH   t dtdt dt t d gddtt gg} d}t| |ksDJ d S )NrG   rE   r9   rO   z.[1 sin(2/x) 3*pi/(5*x);
1        2        x*y])r    r   r?   r   rA   r3   r]   r6   r6   r7   "test_Matrices_entries_not_hadamard   s    0rd   c                  C   s   t ddd} td| | }td| | }t|| dks8J t|| dksLJ td| | d	ksdJ t|d | d
ks|J t||dt|    dksJ t|td  dksJ t|d dksJ t|tj dksJ d S )NnT)integerr^   BzA * BzB * ArE   z	2 * A * Bz	2 * B * Ar9   zA * (3 * eye(n) + B)zA ^ (x .^ 2)zA ^ 3zA ^ (1 // 2))r
   r!   r3   r"   r?   r   rM   )re   r^   rg   r6   r6   r7   test_MatrixSymbol   s     rh   c                   C   s   t dtd dksJ d S )N   r9   z
6 * eye(3))r3   r"   r6   r6   r6   r7   test_special_matrices   s    rj   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sNJ t ddks^J t tg d dksvJ t dtt dtd ffdksJ t dtdtddg g fdksJ d S )NrG   rE   r9   rT   rO   ri   r:      r<   r\      z5Any[1, 2, 3, Any[4, 5, Any[6, 7]], 8, Any[9, 10], 11])rG   rE   )r9   rT   z(1, 2, (3, 4))zAny[1])rG   z(1,)rG   rE   r9   z	(1, 2, 3)z(1, x .* y, (3, x .^ 2))r   z.(1, [1 0 0;
0 1 0;
0 0 1], zeros(0, 0), Any[]))r3   r	   r?   rA   r   r    r6   r6   r6   r7   test_containers   s    ""rn   c                  C   s4   t tt t ddd} dtd }| |ks0J d S )NmeF	assign_toinlinez)const Catalan = %s
me = (x + y) / Catalan   )r3   r?   rA   r   Zevalf)sourcer_   r6   r6   r7   test_julia_noninline   s
    ru   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sTJ 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sJ t ddd|  ksJ t ddd	dksJ 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 )NrG   rE   Tz((x < 1) ? (x) : (x .^ 2))rrq   zr = ((x < 1) ? (x) : (x .^ 2))Frp   z,if (x < 1)
    r = x
else
    r = x .^ 2
endr9   rT   rO   zI((x < 1) ? (x .^ 2) :
(x < 2) ? (x .^ 3) :
(x < 3) ? (x .^ 4) : (x .^ 5))zr = zmif (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 )Nr2   r6   exprr6   r7   <lambda>       z&test_julia_piecewise.<locals>.<lambda>)r   r?   r3   r   r   
ValueError)r_   r6   rx   r7   test_julia_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sBJ t| tt  dksZJ t| d dksnJ d S )	NrG   rE   Tz2 * ((x < 1) ? (x) : (x .^ 2))z((x < 1) ? (x) : (x .^ 2)) ./ xz&((x < 1) ? (x) : (x .^ 2)) ./ (x .* y)r9   z((x < 1) ? (x) : (x .^ 2)) / 3)r   r?   r3   rA   )pwr6   r6   r7    test_julia_piecewise_times_const  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sJJ d S )Nrm   arw   za = [1 2 3]rG   rE   r9   rT   r^   zA = [1 2;
3 4])r    r3   rb   r6   r6   r7   test_julia_matrix_assign_to  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 )Nrm   rg   rG   r9   CrE   rw   zB = [1 2 3]c                      s   t  tdS Nrw   )r3   r?   r6   rb   r6   r7   rz     r{   z2test_julia_matrix_assign_to_more.<locals>.<lambda>c                      s   t  dS r   r2   r6   r^   r   r6   r7   rz     r{   r    r!   r3   r   r|   rg   r6   r   r7    test_julia_matrix_assign_to_more  s    r   c                     sP   t dgg tddd} tdddt | ddks8J tt fdd	 d S )
Nr9   rg   rG   r   rE   rw   zB = [3]c                      s   t  dS r   r2   r6   r   r6   r7   rz   #  r{   z'test_julia_matrix_1x1.<locals>.<lambda>r   r   r6   r   r7   test_julia_matrix_1x1  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sXJ t| d d t| d  | d  d	ksJ tt| d
ksJ d S )NrE   r   r   )r   rG   )r   rE   zx .^ 2 + x .* y + 2ZAArG   r9   z%sin(AA[1,2]) + AA[1,1] .^ 2 + AA[1,3]zAA[1,1] + AA[1,2] + AA[1,3])r    r?   rA   r3   r!   r   sumrb   r6   r6   r7   test_julia_matrix_elements&  s    ("r   c                   C   sH   t ddksJ t tjdks"J t ddks2J t tjdksDJ d S )NTtrueFfalse)r3   r   r   r   r6   r6   r6   r7   test_julia_boolean0  s    r   c                  C   s8   t tjdksJ td} t | ttdks4J d S )Nz/# Not supported in Julia:
# ComplexInfinity
zoofz:# Not supported in Julia:
# Derivative
Derivative(f(x), x))r3   r   ZComplexInfinityr   r?   diff)r   r6   r6   r7   test_julia_not_supported7  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 )	NZendlessZ	elsewherer   rG   )rG   TF)rr   zCif (x < 0)
    endless
elseif (x <= 1)
    elsewhere
else
    1
end)r   r   r?   r3   )t1t2r~   r6   r6   r7   %test_trick_indent_with_end_else_wordsE  s    
r   c                  C   s   t ddd} t ddd}t ddd}t ddd}t| |}t|dksJJ t|| dks^J t|| | d	ksvJ t||  d
ksJ t|t t dksJ d S )Nr^   r9   rg   vrG   hzA .* Bz(A .* B) * vzh * (A .* B) * vz(A .* B) * Az(x .* y) * (A .* B))r!   r#   r3   r?   rA   )r^   rg   r   r   r   r6   r6   r7   test_haramardT  s    
r   c                  C   sL   t ddi } d| d< d| d< d| d< d	| d
< tt | d< t| dksHJ d S )NrO   ri   r\   )rE   rE      )rG   rE      )rG   r9      )r   r9   )r9   r   zHsparse([4, 2, 3, 1, 2], [1, 3, 3, 4, 4], [x .* y, 20, 10, 30, 22], 5, 6))r$   r?   rA   r3   )Mr6   r6   r7   test_sparseb  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fD ]}t|t|jd ksBJ qBtt| tdksxJ tt| tdksJ tt| tdksJ tt| tdksJ d S )Nre   z(n, x)z(x)zhankelh1(n, x)zhankelh2(n, x)z?sqrt(2) * sqrt(pi) * sqrt(1 ./ x) .* besselj(n + 1 // 2, x) / 2z?sqrt(2) * sqrt(pi) * sqrt(1 ./ x) .* bessely(n + 1 // 2, x) / 2)r
   r'   r(   r)   r*   r3   r?   __name__r-   r/   r.   r0   r+   r,   r%   r&   )re   r   r6   r6   r7   test_specfunn  s    r   c                  C   sx   t ddd} t ddd}t ddd}t| d dks8J td| d  dksPJ |d || | }t|d	kstJ d S )
Nr^   rG   r9   rg   r   r   zA[1,1]z
3 * A[1,1]z(A - B)[1,1])r!   r3   subs)r^   rg   r   Fr6   r6   r7   test_MatrixElement_printingz  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   Zsympy.functionsr   r   r   r   r   r   Zsympy.testing.pytestr   Zsympy.utilities.lambdifyr   Zsympy.matricesr   r    r!   r"   r#   r$   Zsympy.functions.special.besselr%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   Zsympy.printing.juliar3   r?   rA   rP   r8   r@   rB   rD   rJ   rL   rN   rQ   rR   rU   rY   rZ   r[   r`   rc   rd   rh   rj   rn   ru   r}   r   r   r   r   r   r   r   r   r   r   r   r   r6   r6   r6   r7   <module>   sV   D   8			



	 


