
    sg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[y,)-    )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                  h    t        t        d            dk(  sJ t        t        d            dk(  sJ y )NC   67z-1)r4   r	        R/var/www/html/venv/lib/python3.12/site-packages/sympy/printing/tests/test_julia.pytest_Integerr<      s0    gbk"d***gbk"d***r:   c                  X   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 y )N      z3 // 7   	   2iz-3 // 7z
x + 3 // 7z(3 // 7) * x)r4   r   xr9   r:   r;   test_RationalrE      s    hq!n%111hr1o&#---hq"o&)333hr2&'8333a(1a.()\999hq!nQ&'>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 y )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Ah8+++bAh8+++bAh8+++bAh7***bAh7***bAh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 y )Nzsin(x) .^ cos(x)zabs(x)zceil(x))r4   r   rD   r   absr   r9   r:   r;   test_FunctionrK   *   sQ    c!fA&'+====c!f)))gaj!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 y )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   s    adx'''a!Q$i O333a!Q'(O;;;S&AaC.1Aa1cQAX..1q9:89 9 9 c"aS1e%<b5!Q9>@ ADX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 y )Nx .* yzx + yzx - yz-x)r4   rD   rG   r9   r:   r;   test_basic_opsrU   <   sZ    ac?h&&&a!e'''a!e'''qb>T!!!r:   c                     t        dt        z        dk(  sJ t        t        dz        t        t        dz        cxk(  rdk(  sJ  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J  J t        t        t                    dk(  sJ t        t        t        j                  z        t        t        dz        cxk(  rdk(  sJ  J t        dt
        z        d	k(  sJ t        t
        dz        t        t
        dz        cxk(  rd	k(  sJ  J t        t
        dz        d
k(  sJ y )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   s0    ac?h&&&ae
1d7 3?x?????aQi N222a!&&j!Z4%8JNJJJJJd1g)+++ai Jq#v$6C)CCCCCadx'''b"fBH!5AAAAAAb$h>111r:   c                     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 y )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ac?h&&&ac!e,,,ac!e---ac!e---ac!e///ad1fQhqj!%====ad1f...ad1f)))ad1fQh>111ac!e///qsAg.000qsQqSk"&::::qsJ&'+AAAAac"f///ad1fQhqjm$(@@@@r:   c                  Z   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 y )	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adx'''a!Q$i O333q!tai O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 y )
NIimrZ   5imr>   rM   z(3 // 2) * im   z3 + 4im)r   r4   )r`   s    r;   	test_imagrd   u   sm    	#Aa=D   ac?e###qtAvqj!_444a!e	)))r:   c                  d   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 y )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aee%%%aff$$$c!f$$$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 y )NrM   z
2 * goldenz2 * catalanz2 * eulergamma)r4   r   r   r   r9   r:   r;   test_constants_otherrm      sH    am$444ai M111a
l#'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 y )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a!eai M111q1uk"m333q1uk"o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 y )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C!Hc!f%Ar
CFGAJ') 	*A(H a=H$$$a!f,,,a!f!8888fQ2&'=888fQ2&'=888fq!a%!n-./>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 y )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      sT    C!Had1fQh'()Aa=@@@@acc?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 y )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{      sQ    
 	C!Had1fQh'!Q!56A)Ha=H$$$r:   c                     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 y )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a!Q$i N222adw&&&ai N222r:   c                  <    t        dt        d      z        dk(  sJ y )N   r>   z
6 * eye(3))r4   r#   r9   r:   r;   test_special_matricesr      s    am$444r:   c            	      p   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 y )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qc?h&&&dv%%%eY'(K777q!A#1a4y)*.HHHHq#a&&Ar"2B78<nnnnr:   c                      t        t        t        z   t        z  dd      } dt        j                  d      z  }| |k(  sJ y )NmeF	assign_toinlinez)const Catalan = %s
me = (x + y) / Catalan   )r4   rD   rG   r   evalf)sourcert   s     r;   test_julia_noninliner      s@    1ge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kD  ft        t              t        dkD  f      t	        t
        fd       y )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	   adAE]QT1q5MAqD!a%=1a4,OD1H dx'''dc*fx.????dc%8		 	 	 aQZ!Q$AQQ@D
:/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 y )	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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 y )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     sP    	{Aa3'=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
       y )Nr   r   rO   r>   CrM   r   zB = [1 2 3]c                  &    t         t              S Nr   )r4   rD   rx   s   r;   r   z2test_julia_matrix_assign_to_more.<locals>.<lambda>  s    z!q9 r:   c                      t               S r   r3   rs   r   s   r;   r   z2test_julia_matrix_assign_to_more.<locals>.<lambda>      z!q9 r:   r!   r"   r4   r   r   r   rs   r   s    @@r;    test_julia_matrix_assign_to_morer     sV    	{AS!QAS!QAa1%666
: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       y )	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     sN    uAS!QAS!QAa1%222 :9:r:   c                  F   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 y )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59NNNNT1a Aa=D   agqj3qv;.37823 3 3c!f!>>>>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 y )NTtrueFfalse)r4   r   r   r   r9   r:   r;   test_julia_booleanr   0  sV    dv%%%aff'''e'''agg')))r:   c                      t        t              5  t        t        j                         d d d        t        d      } t         | t              j                  t              d      dk(  sJ y # 1 sw Y   DxY w)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  sc    	#	$ &1$$%& 	Aadiil51	  	& &s   A--A6c                      t        d      } t        d      }t        | t        dk  f|t        dk  fd      }t        |d      dk(  sJ y )	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  sP    	
9B	
;B	BA;Q!Vi	8Bb'	  r:   c                  X   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 y )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ac?n,,,ac!e 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 y )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   `  sZ    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(  r*J  t        t        t        t        fD ])  }t         |t                    |j                  dz   k(  r)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 y )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'"ajj8&;;;;<k6;7 6!A$1::#55556gam$(8888gam$(8888bAh#ddddbAh#ddddr:   c                      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   j                  || |z
        }t        |      d	k(  sJ y )
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3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 C C ' 9; ;N N N N ' +
'
1a+
:,/	Y"2A64*%86B&E % %35	o1@@=;;?*	6		e
,r:   