
    g6                        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 Z;d Z<d Z=d Z>d Z?d Z@d ZAd ZBd ZCd ZDd ZEd ZFd ZGd ZHd ZIe5d             ZJd ZKd ZLd ZMd ZNd ZOd  ZPd! ZQd" ZRd# ZSd$ ZTd% ZUd& ZVd' ZWd( ZXd) ZYd* ZZd+ Z[d,S )-    )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                      t          t          d                    dk    sJ t          t          d                    dk    sJ d S )NC   67z-1)r4   r	        [/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/printing/tests/test_julia.pytest_Integerr<      sF    gbkk""d****gbkk""d******r:   c                     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          z             d
k    sJ t          t          dd          t          z            dk    sJ d S )N      z3 // 7   	   2iz-3 // 7z
x + 3 // 7z(3 // 7) * x)r4   r   xr9   r:   r;   test_RationalrE      s    hq!nn%%1111hr1oo&&#----hq"oo&&)3333hr2&&''83333a(1a..())\9999hq!nnQ&''>999999r:   c                  "   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    sJ t          t          t          t                              dk    sJ d S )Nzx == yzx != yzx <= yzx < yzx > yzx >= y)	r4   r   rD   yr   r   r   r   r   r9   r:   r;   test_RelationalrH   !   s    bAhh8++++bAhh8++++bAhh8++++bAhh7****bAhh7****bAhh8++++++r:   c                     t          t          t                    t          t                    z            dk    sJ t          t	          t                              dk    sJ t          t          t                              dk    sJ d S )Nzsin(x) .^ cos(x)zabs(x)zceil(x))r4   r   rD   r   absr   r9   r:   r;   test_FunctionrK   *   sq    c!ffA&''+=====c!ff))))gajj!!Y......r:   c                     t          t          dz            dk    sJ t          t          t          dz  z            dk    sJ t          t          t          dd          z            dk    sJ t	          dt          t          dt          z                      } t          d | t                    dz  t          t          t          z  z
  z  z  t          dz  t          z   z            d	k    sJ t          t          d
t          t          t          t          t          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)evaluater8   z-2 * x ./ (y .* y))r4   rD   rG   r   r   r   r   r   )rN   s    r;   test_PowrR   0   sA   adx''''a!Q$i  O3333a!Q'((O;;;;S&AaC..11Aa1cQAX..1q9::89 9 9 9 c"aS1e%<%<%<b5!Q!Q!Q9>@ @ @ A ADXY Y Y Y Y Yr:   c                     t          t          t          z            dk    sJ t          t          t          z             dk    sJ t          t          t          z
            dk    sJ t          t                     dk    sJ d S )Nx .* yzx + yzx - yz-x)r4   rD   rG   r9   r:   r;   test_basic_opsrU   <   sv    ac??h&&&&a!e''''a!e''''qb>>T!!!!!!r:   c                  X   t          dt          z            dk    sJ t          t          dz            t          t          dz            cxk    rdk    sn J t          dt          t                    z            dk    sJ t          t          t          j         z            t          t          dz            cxk    rdk    sn J t          t          t                              dk    sJ t          t          t          j        z            t          t          dz            cxk    rdk    sn J t          dt
          z            d	k    sJ t          t
          dz            t          t
          dz            cxk    rd	k    sn J t          t
          dz            d
k    sJ d S )NrO   z1 ./ xr8   g      z1 ./ sqrt(x)g      zsqrt(x)g      ?z1 / piz1 / sqrt(pi))r4   rD   r   r   Halfr   r9   r:   r;   test_1_over_x_and_sqrtrX   C   s    ac??h&&&&ae
1d7 3 3????x??????aQi  N2222a!&j!!Z4%8%8JJJJNJJJJJJd1gg)++++ai  Jq#v$6$6CCCC)CCCCCCadx''''b"fBH!5!5AAAAAAAAAAb$h>111111r:   c                  d   t          dt          z            dk    sJ t          t          t          z            dk    sJ t          dt          z            dk    sJ t          t          t          z            dk    sJ t          t          dz            dk    sJ t          t          t          z            dk    sJ t          t          t          z            dk    sJ t          dt          z  t          z            d	k    sJ t          dt          z  t          z  t          z            d
k    sJ t          t          t          z            dk    sJ t          dt          z  t          z            dk    sJ t          t          t          z  t          z            dk    sJ t          t          t          z  t          z            dk    sJ t          dt          z  t          z            dk    sJ t          dt          z  t          z  t          z  t          z            dk    sJ t          dt          z  t          z            dk    sJ t          t          d          dz            dk    sJ t          t          d          dz  t          z            dk    sJ t          t          t          z  t          z            dk    sJ t          t          t          z   t          z            dk    sJ t          t          t          z   t          t          z   z            dk    sJ t          t          t          z   t          z            dk    sJ t          t          dz  t          z            dk    sJ t          t          d          dz  t          z  t          z  t          z            dk    sJ d S )Nr>   z3 * xzpi * xz3 ./ xzpi ./ xzx / 3zx / pirT   z
3 * x .* yz3 * pi * x .* yzx ./ yz
3 * x ./ yzx .* y ./ zzx .* z ./ yrO   z1 ./ (x .* y)rM   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)r4   rD   r   rG   zr   r   r9   r:   r;   test_mix_number_mult_symbolsr\   Q   s"   ac??g%%%%bdx''''ac??h&&&&bdy((((ac??g%%%%adx''''ac??h&&&&ac!e,,,,ad1fQh#44444ac??h&&&&ac!e,,,,ac!e----ac!e----ac!e////ad1fQhqj!!%=====ad1f....add1f))))add1fQh>1111ac!e////qsAg.0000qsQqSk""&:::::qsJ&''+AAAAAac"f////add1fQhqjm$$(@@@@@@@r:   c                     t          t          dz            dk    sJ t          t          dz            dk    sJ t          t          t          dz  z            dk    sJ t          t          t          z            dk    sJ t          t          t          t          z  z            dk    sJ t          t          t          z  t          z            dk    sJ d S )	Nr>   zpi ^ 3rM   zx .^ 2zx .^ (pi ^ 3)zx .^ yzx .^ (y .^ z)z(x .^ y) .^ z)r4   r   rD   rG   r[   r9   r:   r;   test_mix_number_pow_symbolsr^   l   s    b!e((((adx''''a"a%j!!_4444adx''''a!Q$i  O3333q!tai  O333333r:   c                     t          d          } t          |           dk    sJ t          d| z            dk    sJ t          t          d          dz  | z            dk    sJ t          dd| z  z             d	k    sJ d S )
NIimrZ   5imr>   rM   z(3 // 2) * im   z3 + 4im)r   r4   )r`   s    r;   	test_imagrd   u   s    	#Aa==D    ac??e####qttAvqj!!_4444a!e	))))))r:   c                     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    sJ t          t          d                    dk    sJ d S )Nr   Infz-InfNaNerO   )r4   r   r   r   NegativeInfinityrg   Exp1r   r9   r:   r;   test_constantsrk   }   s    b>>T!!!!b>>U""""rc??f$$$$a())V3333ae%%%%af$$$$c!ff$$$$$$r:   c                      t          dt          z            dk    sJ t          dt          z            dk    sJ t          dt          z            dk    sJ d S )NrM   z
2 * goldenz2 * catalanz2 * eulergamma)r4   r   r   r   r9   r:   r;   test_constants_otherrm      s`    am$$4444ai  M1111a
l##'7777777r:   c                     t          t          t          z            dk    sJ t          t          t          z            dk    sJ t          t                     dk    sJ t          t          t          z  t          z            dk    sJ t          t          t          z  t          z            dk    sJ t          t          t          z  t          z            dk    sJ t          t          t          z  t          z            dk    sJ d S )Nzx && yzx || yz!xzx && y && zzx || y || zzz || x && yzz && (x || y))r4   rD   rG   r[   r9   r:   r;   test_booleanro      s    a!e((((a!e((((qb>>T!!!!a!eai  M1111a!eai  M1111q1uk""m3333q1uk""o555555r:   c            	         t          t          dddg                    dk    sJ t          dt          t          dz            t	          t                    gddt
          gdt          d          t          t                    gg          } d}t          |           |k    sJ t          | d d df                   dk    sJ t          | dd d f                   dk    sJ t          t          ddg                     d	k    sJ t          t          dd
g                     dk    sJ t          t          t          t          t          z
  t           gg                    dk    sJ d S )NrO   
   z[10]rM   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)r>   zzeros(0, 3)z[x x - y -y])	r4   r!   r   rD   rJ   r   r   r   rG   Aexpecteds     r;   test_Matricesru      s`   fQB4(())V3333C!HHc!ff%Ar
CFFGAJJ') 	* 	*A(H a==H$$$$a!f,,,,a!!!f!88888fQ2&&''=8888fQ2&&''=8888fq!a%!n-..//>AAAAAAr:   c                      t          dt          dt          z            dt          z  t          z  dz  gg          } t	          |           dk    sJ t	          | j                  dk    sJ d S )NrO   rM   r>   rZ   z"[1 sin(2 ./ x) (3 // 5) * pi ./ x]z$[1, sin(2 ./ x), (3 // 5) * pi ./ x])r!   r   rD   r   r4   Trs   s    r;   test_vector_entries_hadamardry      sg    C!HHad1fQh'())Aa==@@@@@ac??DDDDDDDr:   c                      t          dt          dt          z            dt          z  t          z  dz  gddt          t          z  gg          } d}t          |           |k    sJ d S )NrO   rM   r>   rZ   z.[1 sin(2/x) 3*pi/(5*x);
1        2        x*y])r!   r   rD   r   rG   r4   rr   s     r;   "test_Matrices_entries_not_hadamardr{      sa    
 	C!HHad1fQh'!Q!566A)Ha==H$$$$$$r:   c                  B   t          dd          } t          d| |           }t          d| |           }t          ||z            dk    sJ t          ||z            dk    sJ t          d|z  |z            d	k    sJ t          |dz  |z            d
k    sJ t          ||dt          |           z  z   z            dk    sJ t          |t          dz  z            dk    sJ t          |dz            dk    sJ t          |t
          j        z            dk    sJ d S )NnT)integerrs   BzA * BzB * ArM   z	2 * A * Bz	2 * B * Ar>   zA * (3 * eye(n) + B)zA ^ (x .^ 2)zA ^ 3zA ^ (1 // 2))r   r"   r4   r#   rD   r   rW   )r}   rs   r   s      r;   test_MatrixSymbolr      s?   sD!!!AS!QAS!QAac??g%%%%ac??g%%%%ac!e++++ac!e++++aQx{{]*+,,0FFFFFa!Q$i  N2222adw&&&&ai  N222222r:   c                  P    t          dt          d          z            dk    sJ d S )N   r>   z
6 * eye(3))r4   r#   r9   r:   r;   test_special_matricesr      s+    am$$444444r:   c            	         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          z  dt          dz  ff          dk    sJ t          dt	          d          t          ddg           g f          dk    sJ d S )NrO   rM   r>   rc   rZ   r   r?      rA   rq      z5Any[1, 2, 3, Any[4, 5, Any[6, 7]], 8, Any[9, 10], 11])rO   rM   )r>   rc   z(1, 2, (3, 4))zAny[1])rO   z(1,)rO   rM   r>   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[]))r4   r
   rD   rG   r    r!   r9   r:   r;   test_containersr      s   q!QA1vAr7B?@@?@ @ @ @n%%)99999qc??h&&&&dv%%%%eYYY'((K7777q!A#1a4y)**.HHHHHq#a&&&Ar"2"2B788<nnnnnnnr:   c                      t          t          t          z   t          z  dd          } dt          j        d          z  }| |k    sJ d S )NmeF	assign_toinlinez)const Catalan = %s
me = (x + y) / Catalan   )r4   rD   rG   r   evalf)sourcert   s     r;   test_julia_noninliner      sP    1geDDDF	!bH Xr:   c                     t          t          t          dk     ft          dz  df          t                    dk    sJ t          d          dk    sJ t          dd	          d
k    sJ t          t          dz  t          dk     ft          dz  t          dk     ft          dz  t          dk     ft          dz  df          d} t                    | k    sJ t          d          d| z   k    sJ t          dd	          dk    sJ t          t          t          dk     ft          dz  t          dk    ft          t                    t          dk    f          t	          t
          fd           d S )NrO   rM   Tz((x < 1) ? (x) : (x .^ 2))rr   zr = ((x < 1) ? (x) : (x .^ 2))Fr   z,if (x < 1)
    r = x
else
    r = x .^ 2
endr>   rc   rZ   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                  "    t                     S )Nr3   )exprs   r;   <lambda>z&test_julia_piecewise.<locals>.<lambda>   s    z$// r:   )r   rD   r4   r   r   
ValueError)rt   r   s    @r;   test_julia_piecewiser      s   aQZ!Q$..Dd;;;;;dc***(* * * *dc%888	    adAE]QT1q5MAqD!a%=1a4,OOD1H dx''''dc***fx.?????dc%888		 	 	 	 aQZ!Q$AQQ@@D
:////00000r:   c                  >   t          t          t          dk     ft          dz  df          } t          d| z            dk    sJ t          | t          z            dk    sJ t          | t          t          z  z            dk    sJ t          | dz            dk    sJ d S )	NrO   rM   Tz2 * ((x < 1) ? (x) : (x .^ 2))z((x < 1) ? (x) : (x .^ 2)) ./ xz&((x < 1) ? (x) : (x .^ 2)) ./ (x .* y)r>   z((x < 1) ? (x) : (x .^ 2)) / 3)r   rD   r4   rG   )pws    r;    test_julia_piecewise_times_constr     s    	Aq1u:1d|	,	,Bad?????bd@@@@@b!A#h#KKKKKbd???????r:   c                      t          g dg          } t          | d          dk    sJ t          ddgddgg          } t          | d	          d
k    sJ d S )Nr   ar   za = [1 2 3]rO   rM   r>   rc   rs   zA = [1 2;
3 4])r!   r4   rx   s    r;   test_julia_matrix_assign_tor     sr    			{Aa3'''=8888AA  Aa3'''+<<<<<<<r:   c                     t          g dg          t          ddd          } t          ddd          t          |           dk    sJ t          t          fd	           t          t          fd
           d S )Nr   r   rO   r>   CrM   r   zB = [1 2 3]c                  0    t           t                    S Nr   )r4   rD   rx   s   r;   r   z2test_julia_matrix_assign_to_more.<locals>.<lambda>  s    z!q999 r:   c                  &    t                     S r   r3   rs   r   s   r;   r   z2test_julia_matrix_assign_to_more.<locals>.<lambda>      z!q999 r:   r!   r"   r4   r   r   r   rs   r   s    @@r;    test_julia_matrix_assign_to_morer     s    			{AS!QAS!QAa1%%%6666
:9999:::
:99999:::::r:   c                      t          dgg          t          ddd          } t          ddd          t          |           dk    sJ t          t          fd           d S )	Nr>   r   rO   r   rM   r   zB = [3]c                  &    t                     S r   r3   r   s   r;   r   z'test_julia_matrix_1x1.<locals>.<lambda>#  r   r:   r   r   s    @@r;   test_julia_matrix_1x1r     sx    uAS!QAS!QAa1%%%2222 :99999:::::r:   c                     t          t          dt          t          z  gg          } t          | d         dz  | d         z   | d         z             dk    sJ t	          ddd          } t          |           dk    sJ t          | d         dz  t          | d                   z   | d         z             d	k    sJ t          t          |                     d
k    sJ d S )NrM   r   r   )r   rO   )r   rM   zx .^ 2 + x .* y + 2AArO   r>   z%sin(AA[1,2]) + AA[1,1] .^ 2 + AA[1,3]zAA[1,1] + AA[1,2] + AA[1,3])r!   rD   rG   r4   r"   r   sumrx   s    r;   test_julia_matrix_elementsr   &  s    Aqs}Aagqj1T7*QtW4559NNNNNT1a  Aa==D    agqj3qv;;.378823 3 3 3c!ff!>>>>>>>r:   c                      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)r4   r   r   r   r9   r:   r;   test_julia_booleanr   0  sp    dv%%%%af''''e''''ag'))))))r:   c                  (   t          t                    5  t          t          j                   d d d            n# 1 swxY w Y   t          d          } t           | t                                        t                    d          dk    sJ d S )NfF)strictz:# Not supported in Julia:
# Derivative
Derivative(f(x), x))r   NotImplementedErrorr4   r   ComplexInfinityr   rD   diff)r   s    r;   test_julia_not_supportedr   7  s    	#	$	$ & &1$%%%& & & & & & & & & & & & & & & 	Aaaddiill5111	     s   ;??c                      t          d          } t          d          }t          | t          dk     f|t          dk    fd          }t          |d          dk    sJ d S )	Nendless	elsewherer   rO   )rO   TF)r   zCif (x < 0)
    endless
elseif (x <= 1)
    elsewhere
else
    1
end)r   r   rD   r4   )t1t2r   s      r;   %test_trick_indent_with_end_else_wordsr   C  sl    	
9B	
;B	BA;Q!Vi	8	8Bb'''	     r:   c                     t          ddd          } t          ddd          }t          ddd          }t          ddd          }t          | |          }t          |          dk    sJ t          ||z            dk    sJ t          ||z  |z            d	k    sJ t          || z            d
k    sJ t          |t          z  t          z            dk    sJ d S )Nrs   r>   r   vrO   hzA .* Bz(A .* B) * vzh * (A .* B) * vz(A .* B) * Az(x .* y) * (A .* B))r"   r$   r4   rD   rG   )rs   r   r   r   r   s        r;   test_haramardr   R  s    S!QAS!QAS!QAS!QA1Aa==H$$$$ac??n,,,,ac!e 22222ac??n,,,,ac!e 5555555r:   c                      t          ddi           } d| d<   d| d<   d| d<   d	| d
<   t          t          z  | d<   t          |           dk    sJ d S )NrZ   r   rq   )rM   rM      )rO   rM      )rO   r>      )r   r>   )r>   r   zHsparse([4, 2, 3, 1, 2], [1, 3, 3, 4, 4], [x .* y, 20, 10, 30, 22], 5, 6))r%   rD   rG   r4   )Ms    r;   test_sparser   `  sn    Q2AAdGAdGAdGAdGcAdGa==R     r:   c                     t          d          } t          t          t          t          fD ].}t           || t                              |j        dz   k    sJ /t          t          t          t          fD ]-}t           |t                              |j        dz   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    sJ d S )Nr}   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+   r4   rD   __name__r.   r0   r/   r1   r,   r-   r&   r'   )r}   r   s     r;   test_specfunr   l  s#   sAw1 < <!!Aq''""aj8&;;;;;;k6;7 6 6!!A$$1:#555555gamm$$(88888gamm$$(88888bAhh#dddddbAhh#dddddddr:   c                  F   t          ddd          } t          ddd          }t          ddd          }t          | d                   dk    sJ t          d| d         z            dk    sJ |d                             || |z
            }t          |          d	k    sJ d S )
Nrs   rO   r>   r   r   r   zA[1,1]z
3 * A[1,1]z(A - B)[1,1])r"   r4   subs)rs   r   r   Fs       r;   test_MatrixElement_printingr   x  s    S!QAS!QAS!QAag(****a!D'k""l2222	$QAAa==N******r:   N)\
sympy.corer   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   sympy.functionsr   r   r   r   r   r   sympy.testing.pytestr   sympy.utilities.lambdifyr   sympy.matricesr    r!   r"   r#   r$   r%   sympy.functions.special.besselr&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   sympy.printing.juliar4   rD   rG   r[   r<   rE   rH   rK   rR   rU   rX   r\   r^   rd   rk   rm   ro   ru   ry   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r9   r:   r;   <module>r      s  ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? I I I I I I I I I I I I I I I I C C C C C C C C C C C C C C C C ' ' ' ' ' ' 9 9 9 9 9 9; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;N N N N N N N N N N N N N N N N N N N N N N N N N N N N ' & & & & & + + + + + +
''

1a+ + +
: : :, , ,/ / /	Y 	Y 	Y" " "2 2 2A A A64 4 4* * *% % %8 8 86 6 6B B B&E E E % % %3 3 35 5 5	o 	o 	o  1 1 1@@ @ @= = =; ; ;; ; ;? ? ?* * *	 	 	  6 6 6	 	 		e 	e 	e
, 
, 
, 
, 
,r:   