
    Цi,                        S SK JrJrJrJrJrJrJrJrJ	r	J
r
JrJrJrJrJrJrJrJr  S SKJrJrJrJrJrJrJrJrJr  S SKJr  S SKJ r   S SK!J"r"  S SK#J$r$J%r%  S SK&J'r'J(r(J)r)  S SK*J+r+  \" S	5      u  r,r-r.S
 r/S r0S r1S r2S r3S r4S r5S r6S r7S r8S r9S r:S r;S r<S r=S r>S r?S r@S rAS rBS rCS rDS  rES! rFS" rGg#)$    )SpioosymbolsRationalIntegerGoldenRatio
EulerGammaCatalanLambdaDummyEqNeLeLtGtGeMod)		PiecewisesincosAbsexpceilingsqrtsignfloor)ITE)raises)implemented_function)IndexedBaseIdx)MatrixSymbolSparseMatrixMatrix	rust_codezx,y,zc                  l    [        [        S5      5      S:X  d   e[        [        S5      5      S:X  d   eg )N*   42iz-56)r'   r        ]/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/sympy/printing/tests/test_rust.pytest_Integerr.      s0    WR[!T)))WS\"e+++r,   c                     [        [        [        [        5      5      S:X  d   e[        [	        [        [        5      5      S:X  d   e[        [        [        [        5      5      S:X  d   e[        [        [        [        5      5      S:X  d   e[        [        [        [        5      5      S:X  d   e[        [        [        [        5      5      S:X  d   eg )Nzx == yzx != yzx <= yzx < yzx > yzx >= y)	r'   r   xyr   r   r   r   r   r+   r,   r-   test_Relationalr2      s    R1X(***R1X(***R1X(***R1X')))R1X')))R1X(***r,   c                  d   [        [        SS5      5      S:X  d   e[        [        SS5      5      S:X  d   e[        [        SS5      5      S:X  d   e[        [        S	S5      5      S:X  d   e[        [        [        SS5      -   5      S
:X  d   e[        [        SS5      [        -  5      S:X  d   eg )N      z	3_f64/7.0   	   2iz
-3_f64/7.0zx + 3_f64/7.0z(3_f64/7.0)*x)r'   r   r0   r+   r,   r-   test_Rationalr:      s    Xa^$333Xb!_%,,,Xa_%555Xb"%&+555Q!Q'(O;;;Xa^A%&/999r,   c                     [        [        [        -   5      S:X  d   e[        [        [        -
  5      S:X  d   e[        [        [        -  5      S:X  d   e[        [        [        -  5      S:X  d   e[        [        * 5      S:X  d   eg )Nzx + yzx - yzx*yzx/yz-x)r'   r0   r1   r+   r,   r-   test_basic_opsr<   (   sr    QUw&&&QUw&&&QUu$$$QUu$$$aR=D   r,   c                       " S S[         5      n [        U " [        5      5      S:X  d   e[        SSS5      n[        US   5      S:X  d   eg )	Nc                       \ rS rSrS rSrg)test_printmethod.<locals>.fabs1   c                 D    SUR                  U R                  S   5      -  $ )Nz	%s.fabs()r   )_printargs)selfprinters     r-   
_rust_code)test_printmethod.<locals>.fabs._rust_code2   s    		!!===r,   r+   N)__name__
__module____qualname____firstlineno__rF   __static_attributes__r+   r,   r-   fabsr?   1   s    	>r,   rM   zx.fabs()a   r4   )r   r   za[0])r   r'   r0   r#   )rM   rN   s     r-   test_printmethodrP   0   sL    >s > T!W+++S!QAQsV&&&r,   c                  R   [        [        [        5      [        [        5      -  5      S:X  d   e[        [	        [        5      5      S:X  d   e[        [        [        5      5      S:X  d   e[        [        [        5      5      S:X  d   e[        [        [        S5      5      S:X  d   eg )Nzx.sin().powf(x.cos())zx.abs()x.ceil()z	x.floor()r4   zx - 3*((1_f64/3.0)*x).floor())r'   r   r0   r   absr   r   r   r+   r,   r-   test_FunctionsrT   9   s    SVs1v%&*AAAASV	)))WQZ J...U1X+--- SAY#BBBBr,   c                     [        S[        -  5      S:X  d   e[        [        S-  5      [        [        S-  5      s=:X  a  S:X  d   e   e[        [        [        5      5      S:X  d   e[        [        [        R                  -  5      [        [        S-  5      s=:X  a  S:X  d   e   e[        S[        [        5      -  5      S:X  d   e[        [        [        R                  * -  5      [        [        S-  5      s=:X  a  S:X  d   e   e[        S[
        -  5      S	:X  d   e[        [
        S-  5      [        [
        S-  5      s=:X  a  S	:X  d   e   e[        [
        S-  5      S
:X  d   e[        [        [        SS5      -  5      S:X  d   e[        S[        -  5      S:X  d   e[        [        [        5      5      S:X  d   e[        [        S-  5      S:X  d   e[        [        [        S-  -  5      S:X  d   e[        [        [        SS5      -  5      S:X  d   e[        S[        [        S[        -  5      5      n [        SU " [        5      S-  [        [        [        -  -
  -  -  [        S-  [        -   -  5      S:X  d   eS SS4S SS4/n[        [        S-  SU0S9S:X  d   e[        [        S-  SU0S9S:X  d   eg )NrO   z	x.recip()g      zx.sqrt()g      ?zx.sqrt().recip()g      z
PI.recip()zPI.sqrt().recip()r4   zx.cbrt()   zx.exp2()zx.exp()z	x.powi(3)zx.powf(y.powi(3))zx.powf(2_f64/3.0)gg      @z.(3.5*2*x).powf(-x + y.powf(x))/(x.powi(2) + y)c                     UR                   $ N
is_integerbaser   s     r-   <lambda>test_Pow.<locals>.<lambda>Z   s    cnnr,   dpowic                 $    UR                   (       + $ rZ   r[   r]   s     r-   r_   r`   [   s    #..&8r,   powPowuser_functionsz
x.dpowi(3)g	@z
x.pow(3.2))r'   r0   r   r   Halfr   r   r   r1   r    r   )rX   _cond_cfuncs     r-   test_Powri   C   s{   QqS>[(((QUyD1@[@@@@@T!W+++QY9QV#4B
BBBBBQtAwY#5555QZ Iag$6L:LLLLLLQrT?l***RV	"d( 3C|CCCCCRX"5555QA&':555QT?j(((SV	)))QT?k)))QAY#6666QA&'+>>>>S&AaC.1AQ!SA1H--q!tax8989 9 94gqA8%CEKQT5+*>?<OOOQVUK,@A\QQQr,   c                     [        [        5      S:X  d   e[        [        5      S:X  d   e[        [        R                  5      S:X  d   e[        [        * 5      S:X  d   e[        [        R
                  5      S:X  d   e[        [        R                  5      S:X  d   e[        [        S5      5      S:X  d   e[        [        R                  5      S:X  d   eg )NPIINFINITYNEG_INFINITYNANrO   E)	r'   r   r   r   InfinityNegativeInfinityNaNr   Exp1r+   r,   r-   test_constantsrt   `   s    R=D   R=J&&&QZZ J...bS>^+++Q''(N:::QUUu$$$SV###QVV###r,   c                     [        S[        -  5      S[        R                  " S5      -  :X  d   e[        S[        -  5      S[        R                  " S5      -  :X  d   e[        S[        -  5      S[        R                  " S5      -  :X  d   eg )NrW   z*const GoldenRatio: f64 = %s;
2*GoldenRatio   z"const Catalan: f64 = %s;
2*Catalanz(const EulerGamma: f64 = %s;
2*EulerGamma)r'   r	   evalfr   r
   r+   r,   r-   test_constants_otherrx   k   s    Q{]#'TWbWhWhikWl'llllgI?'--PRBSST T TQz\"&QT^TdTdegTh&hhhhr,   c                  x   [        S5      S:X  d   e[        [        R                  5      S:X  d   e[        S5      S:X  d   e[        [        R                  5      S:X  d   e[        [        [
        -  5      S:X  d   e[        [        [
        -  5      S:X  d   e[        [        ) 5      S:X  d   e[        [        [
        -  [        -  5      S:X  d   e[        [        [
        -  [        -  5      S	:X  d   e[        [        [
        -  [        -  5      S
:X  d   e[        [        [
        -  [        -  5      S:X  d   eg )NTtrueFfalsezx && yzx || yz!xzx && y && zzx || y || zzz || x && yzz && (x || y))r'   r   rz   r{   r0   r1   zr+   r,   r-   test_booleanr}   r   s   T?f$$$QVV&&&Uw&&&QWW(((QUx'''QUx'''aR=D   QUQY=000QUQY=000a!eq[!]222a!eq[!_444r,   c                  <  ^  [        [        [        S:  4[        S-   S45      m [        T 5      S:X  d   e[        T SS9S:X  d   e[        T SSS9S	:X  d   e[        [        [        S:  4[        S-   [        S
:  4[        S-   S45      m [        T SS9S:X  d   e[        T SSS9S:X  d   e[        T SS9S:X  d   eS[        [        [        S:  4[        S-   [        S
:  4[        S-   S45      -  m [        T SS9S:X  d   eS[        [        [        S:  4[        S-   [        S
:  4[        S-   S45      -  S-
  m [        T SS9S:X  d   e[        [        [        S:  4[        S-  [        S:  4[        [        5      [        S:  45      m [	        [
        U 4S j5        g )NrO   rW   Tz'if (x < 1) {
    x
} else {
    x + 2
}r	assign_toz,r = if (x < 1) {
    x
} else {
    x + 2
};)r   inlinez$r = if (x < 1) { x } else { x + 2 };   )r   z9if (x < 1) { x } else if (x < 5) { x + 1 } else { x + 2 }z>r = if (x < 1) { x } else if (x < 5) { x + 1 } else { x + 2 };zJr = if (x < 1) {
    x
} else if (x < 5) {
    x + 1
} else {
    x + 2
};z;2*if (x < 1) { x } else if (x < 5) { x + 1 } else { x + 2 }r)   z@2*if (x < 1) { x } else if (x < 5) { x + 1 } else { x + 2 } - 42r   c                     > [        T 5      $ rZ   r&   exprs   r-   r_    test_Piecewise.<locals>.<lambda>   s	    yr,   )r   r0   r'   r   r   
ValueErrorr   s   @r-   test_Piecewiser      s   aQZ!a%/DT?   TS)	   TS6.0 0 0aQZ!a%Q!a%?DT$'CE E ETS6HJ J JTS)	   Y1q5zAE1q5>AE4=AADT$'EG G GY1q5zAE1q5>AE4=AABFDT$'JL L L aQZ!Q$AQQ@D
:./r,   c                  v    [         [        -   [        [        5      -   [        -   n [	        U [        /S9S:X  d   eg )Ndereferencezx + y + (*z) + (*z).sin())r0   r1   r   r|   r'   r   s    r-   test_dereference_printingr      s0    q53q6>ADTs+/JJJJr,   c                  8   [        [        5      [        -  n [        U 5      S:X  d   e[        U SS9S:X  d   e[        [        [        -   5      S-   n [        U 5      S:X  d   e[        U SS9S:X  d   e[        [	        [        5      5      n [        U 5      S:X  d   eg )	Nzy*x.signum()r   r   zr = y*x.signum();r)   z(x + y).signum() + 42zr = (x + y).signum() + 42;zx.cos().signum())r   r0   r1   r'   r   r   s    r-   	test_signr      s    7Q;DT?n,,,TS)-@@@@A;DT?5555TS)-IIIIA<DT?0000r,   c                      [        S5      u  p[        U5      n[        U5      S:X  d   e[        X!/S9S:X  d   e[        USS9S:X  d   e[        [        5         [        USS	9  S S S 5        g ! , (       d  f       g = f)
Nzx ifz	if_.sin()r   z(*if_).sin()_unreserved)reserved_word_suffixzif_unreserved.sin()T)error_on_reserved)r   r   r'   r   r   )r0   r1   r   s      r-   test_reserved_wordsr      sq    6?DAq6DT?k)))Ts+~===T>BWWWW	
	$$/ 
		s   A--
A;c                  ^    [        [        S:  [        [        5      n [	        U 5      S:X  d   eg )NrO   z#if (x < 1) {
    y
} else {
    z
})r   r0   r1   r|   r'   r   s    r-   test_ITEr      s/    q1uaDT?  r,   c                  $   [        SSS9u  pn[        SU 5      [        SU5      [        SU5      pTn[        S5      U   n[        U5      S:X  d   e[        S	5      X44   n[        U5      S
:X  d   e[        S5      X4U4   n[        U5      S:X  d   eg )Nzn m oTintegerijkr0   zx[j]Az
A[m*i + j]BzB[m*o*i + o*j + k])r   r"   r!   r'   )	nmor   r   r   r0   r   r   s	            r-   test_Indexedr      s    gt,GA!#qk3sA;C!ACAQ<6!!!CAQ<<'''Cq!AQ<////r,   c                      [        SS[        S9u  p[        S5      n[        S5      n[        X5      n [	        X    X0   S9S:X  d   eg )Nzi mT)r   clsr0   r1   r   z"for i in 0..m {
    y[i] = x[i];
})r   r   r!   r"   r'   )r   r   r0   r1   s       r-   test_dummy_loopsr      sQ    5$E2DACACAA	AQTQT*	  r,   c                  $   [        SSS9u  p[        S5      n[        S5      n[        S5      n[        S5      n[        SU 5      n[        S	U5      n[        X&U4   X7   -  XF   S
9S:X  d   e[        X&U4   X7   -  X6   -   XV   -   XF   S
9S:X  d   eg )Nzm nTr   r   r0   r1   r|   r   r   r   zrfor i in 0..m {
    y[i] = 0;
}
for i in 0..m {
    for j in 0..n {
        y[i] = A[n*i + j]*x[j] + y[i];
    }
}z|for i in 0..m {
    y[i] = x[i] + z[i];
}
for i in 0..m {
    for j in 0..n {
        y[i] = A[n*i + j]*x[j] + y[i];
    }
}r   r!   r"   r'   )r   r   r   r0   r1   r|   r   r   s           r-   
test_loopsr      s    5$'DACACACACACACAQ!tWQT\QT2	   Q!tWQT\AD(14/14@	  r,   c                  ^   [        SSS9u  pp#[        S5      n[        S5      n[        S5      n[        SU5      n[        SU 5      n[        S	U5      n	[        S
U5      n
[        XXX4   XGXU
4   -  Xg   S9SXp-  U-  U-  X-  U-  -   X-  -   U
-   < SX-  U-  X-  -   U
-   < S3S-   :X  d   eg )Nzn m o pTr   rN   br1   r   r   r   lr   zfor i in 0..m {
    y[i] = 0;
}
for i in 0..m {
    for j in 0..n {
        for k in 0..o {
            for l in 0..p {
                y[i] = a[z]*b[
] + y[i];
            }
        }
    }
}r   )r   r   r   prN   r   r1   r   r   r   r   s              r-    test_loops_multiple_contractionsr   	  s    D1JA!CACACACACACACAQ!wZQ1*-> ;<#a%'ACE/AC:ORS:SUVUXYZUZ]^]`U`cdUd	f		  r,   c            	         [        SSS9u  pp#[        S5      n[        S5      n[        S5      n[        S5      n[        SU 5      n[        S	U5      n	[        S
U5      n
[        SU5      n[        XHXU4   XXXU4   -   XiX4   -  Xx   S9nUSX-  U-  U-  X-  U-  -   X-  -   U-   < SX-  U-  U-  X-  U-  -   X-  -   U-   < SX-  U-  X-  -   U-   < S3S-   :X  d   eg )Nzm n o pTr   rN   r   cr1   r   r   r   r   r   zfor i in 0..m {
    y[i] = 0;
}
for i in 0..m {
    for j in 0..n {
        for k in 0..o {
            for l in 0..p {
                y[i] = (a[z] + b[z])*c[r   r   r   )r   r   r   r   rN   r   r   r1   r   r   r   r   codes                r-   test_loops_addfactorr   "  s@   D1JA!CACACACACACACACAa1
ma1
m3Q!wZ?14PD EFCE!GacRSeOVWVYDY\]D]_`_bcd_def_fijilmnin_nqrqt_twx_xz{z}~z  CD  CF  {F  IJ  {J	K		  r,   c                  &    [        [        S 5        g )Nc                  0    [        [        [        5      SS9$ )Ngarbage)method)r'   r   r0   r+   r,   r-   r_   test_settings.<locals>.<lambda>>  s    iAyAr,   )r   	TypeErrorr+   r,   r-   test_settingsr   =  s    
9ABr,   c            	         [        S5      n [        S[        U SU -  5      5      n[        U" U 5      5      S:X  d   e[        S[        U SU -  [        -  5      5      n[        U" U 5      5      S[        R
                  " S5      -  :X  d   e[        S5      n[        S[        S	S
S95      n[        S[        X SU -   -  SU -   -  5      5      n[        U" X#   5      X#   S9S:X  d   eg )Nr0   rX   rW   z2*xz$const Catalan: f64 = %s;
2*x/Catalanrv   r   r   r   Tr   rO   r   z8for i in 0..n {
    A[i] = (A[i] + 1)*(A[i] + 2)*A[i];
})r   r    r   r'   r   rw   r!   r"   )r0   rX   r   r   s       r-   test_inline_functionr   A  s    AS&AaC.1AQqT?e###S&AaCK"89AQqT?/'--2CCE E E 	CACd+,AS&q1uIq1u,=">?AQqtW-	  r,   c                      [        SSS9n [        SSS9nSS SS	4S
 SS	4/S.n[        [        U 5      US9S:X  d   e[        [        U 5      US9S:X  d   e[        [        U5      US9S:X  d   eg )Nr0   Fr   r   Tceilc                 $    U R                   (       + $ rZ   r[   r0   s    r-   r_   %test_user_functions.<locals>.<lambda>X  s    q||+r,   rM      c                     U R                   $ rZ   r[   r   s    r-   r_   r   X  s    ALLr,   rS   )r   r   re   rR   zfabs(x)zabs(n))r   r'   r   r   )r0   r   custom_functionss      r-   test_user_functionsr   S  s    U#AT"A+VQ7:PRWYZ9[\ WQZ0@AZOOOSV,<=JJJSV,<=IIIr,   c                      [        [        / SQ5      5      S:X  d   e[        [        5         [        [        / SQ/5      5        S S S 5        g ! , (       d  f       g = f)NrO   rW   r4   z	[1, 2, 3])r'   r%   r   r   r+   r,   r-   test_matrixr   _  s=    VI&';666	
	&)%& 
		s   A
Ac                      [        [        5         [        [        / SQ/5      5        S S S 5        g ! , (       d  f       g = f)Nr   )r   NotImplementedErrorr'   r$   r+   r,   r-   test_sparse_matrixr   e  s&    	#	$,	{+, 
%	$	$s   1
?N)H
sympy.corer   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   sympy.functionsr   r   r   r   r   r   r   r   r   sympy.logicr   sympy.testing.pytestr   sympy.utilities.lambdifyr    sympy.tensorr!   r"   sympy.matricesr#   r$   r%   sympy.printing.rustr'   r0   r1   r|   r.   r2   r:   r<   rP   rT   ri   rt   rx   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r+   r,   r-   <module>r      s   5 5 5 5 5* * *  ' 9 ) = = )
'
1a,
+:!'CR:$i5%0PK

1
00	<26C$	J'-r,   