
    \h.                        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	S
SS9u  r,r-r.\" SSS9u  r/r0r1S 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$ rGS% rHS& rIS' rJg())    )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,zFT)integerrealzk,m,nr(   c                  l    [        [        S5      5      S:X  d   e[        [        S5      5      S:X  d   eg )N*   42iz-56)r'   r        V/var/www/auris/envauris/lib/python3.13/site-packages/sympy/printing/tests/test_rust.pytest_Integerr1      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/   r0   test_Relationalr5      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   r3   r.   r/   r0   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[        S[        -  5      S:X  d   e[        [        S-   5      S:X  d   e[        [        [        -   5      S	:X  d   eg )
Nzx + yzx - yzx*yzx*y.recip()z-x   z2.0*xzy + 2.0zn as f64 + x)r'   r3   r4   nr.   r/   r0   test_basic_opsrA   )   s    QUw&&&QUw&&&QUu$$$QU},,,aR=D   QUw&&&QUy(((QU~---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>.fabs4   c                 D    SUR                  U R                  S   5      -  $ )Nz	%s.fabs()r   )_printargs)selfprinters     r0   
_rust_code)test_printmethod.<locals>.fabs._rust_code5   s    		!!===r/   r.   N)__name__
__module____qualname____firstlineno__rK   __static_attributes__r.   r/   r0   fabsrD   4   s    	>r/   rR   zx.fabs()a   r7   )r   r   za[0])r   r'   r3   r#   )rR   rS   s     r0   test_printmethodrU   3   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()r7   zx - 3.0*((1_f64/3.0)*x).floor())r'   r   r3   r   absr   r   r   r.   r/   r0   test_FunctionsrY   <   s    SVs1v%&*AAAASV	)))WQZ J...U1X+--- SAY#DDDDr/   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 )NrT   z	x.recip()g      zx.sqrt()g      ?zx.sqrt().recip()g      z
PI.recip()zPI.sqrt().recip()r7   zx.cbrt()r?   zx.exp2()zx.exp()z	x.powi(3)zx.powf(y.powi(3))zx.powf(2_f64/3.0)gg      @z0(3.5*2.0*x).powf(-x + y.powf(x))/(x.powi(2) + y)c                     UR                   $ N
is_integerbaser   s     r0   <lambda>test_Pow.<locals>.<lambda>]   s    cnnr/   dpowic                 $    UR                   (       + $ r^   r_   ra   s     r0   rc   rd   ^   s    #..&8r/   powPowuser_functionsz
x.dpowi(3)g	@z
x.pow(3.2))r'   r3   r   r   Halfr   r   r   r4   r    r   )r\   _cond_cfuncs     r0   test_Powrm   F   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:; ; ;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NANrT   E)	r'   r   r   r   InfinityNegativeInfinityNaNr   Exp1r.   r/   r0   test_constantsrx   c   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 )Nr?   z,const GoldenRatio: f64 = %s;
2.0*GoldenRatio   z$const Catalan: f64 = %s;
2.0*Catalanz*const EulerGamma: f64 = %s;
2.0*EulerGamma)r'   r	   evalfr   r
   r.   r/   r0   test_constants_otherr|   n   s    Q{]#'VYdYjYjkmYn'nnnngIAGMMRTDUUV V VQz\"&SV`VfVfgiVj&jjjjr/   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k && mzk || mz!kzk && m && nzk || m || nzn || k && mzn && (k || m))r'   r   r~   r   kmr@   r.   r/   r0   test_booleanr   u   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 )NrT   r?   Tz+if (x < 1.0) {
    x
} else {
    x + 2.0
}r	assign_toz0r = if (x < 1.0) {
    x
} else {
    x + 2.0
};)r   inlinez(r = if (x < 1.0) { x } else { x + 2.0 };   )r   zAif (x < 1.0) { x } else if (x < 5.0) { x + 1.0 } else { x + 2.0 }zFr = if (x < 1.0) { x } else if (x < 5.0) { x + 1.0 } else { x + 2.0 };zRr = if (x < 1.0) {
    x
} else if (x < 5.0) {
    x + 1.0
} else {
    x + 2.0
};zE2.0*if (x < 1.0) { x } else if (x < 5.0) { x + 1.0 } else { x + 2.0 }r,   zL2.0*if (x < 1.0) { x } else if (x < 5.0) { x + 1.0 } else { x + 2.0 } - 42.0r   c                     > [        T 5      $ r^   r&   exprs   r0   rc    test_Piecewise.<locals>.<lambda>   s	    yr/   )r   r3   r'   r   r   
ValueErrorr   s   @r0   test_Piecewiser      s   aQZ!a%/DT?   TS)	   TS624 4 4aQZ!a%Q!a%?DT$'KM M MTS6PR R RTS)	   Y1q5zAE1q5>AE4=AADT$'OQ Q QY1q5zAE1q5>AE4=AABFDT$'VX X X 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())r3   r4   r   zr'   r   s    r0   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 )	Nz6y*(if (x == 0.0) { 0.0 } else { (x).signum() }) as f64r   r   z;r = y*(if (x == 0.0) { 0.0 } else { (x).signum() }) as f64;r,   z:(if (x + y == 0.0) { 0.0 } else { (x + y).signum() }) + 42z?r = (if (x + y == 0.0) { 0.0 } else { (x + y).signum() }) + 42;z9(if (x.cos() == 0.0) { 0.0 } else { (x.cos()).signum() }))r   r3   r4   r'   r   r   s    r0   	test_signr      s    7Q;DT?VVVVTS)-jjjjA;DT?ZZZZTS)-nnnnA<DT?YYYYr/   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   )r3   r4   r   s      r0   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 )NrT   z#if (k < 1) {
    m
} else {
    n
})r   r   r   r@   r'   )ekprs    r0   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 oTr*   ijr   r3   zx[j]Az
A[m*i + j]BzB[m*o*i + o*j + k])r   r"   r!   r'   )	r@   r   or   r   r   r3   r   r   s	            r0   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(   clsr3   r4   r   z"for i in 0..m {
    y[i] = x[i];
})r   r   r!   r"   r'   )r   r   r3   r4   s       r0   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   r3   r4   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   r3   r4   r   r   r   s           r0   
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*   rS   br4   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   prS   r   r4   r   r   r   r   s              r0    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*   rS   r   cr4   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   rS   r   r   r4   r   r   r   r   codes                r0   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   r3   r.   r/   r0   rc   test_settings.<locals>.<lambda>A  s    iAyAr/   )r   	TypeErrorr.   r/   r0   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 )Nr3   r\   r?   z2*xz&const Catalan: f64 = %s;
2.0*x/Catalanrz   r   r   r@   Tr*   rT   r   z8for i in 0..n {
    A[i] = (A[i] + 1)*(A[i] + 2)*A[i];
})r   r    r   r'   r   r{   r!   r"   )r3   r\   r   r   s       r0   test_inline_functionr   D  s    AS&AaC.1AQqT?e###S&AaCK"89AQqT?1GMM"4EEG G G 	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 )Nr3   Fr*   r@   Tceilc                 $    U R                   (       + $ r^   r_   r3   s    r0   rc   %test_user_functions.<locals>.<lambda>[  s    q||+r/   rR      c                     U R                   $ r^   r_   r   s    r0   rc   r   [  s    ALLr/   rX   )r   r   ri   rW   zfabs(x)zabs(n))r   r'   r   r   )r3   r@   custom_functionss      r0   test_user_functionsr   V  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rT   r?   r7   z	[1, 2, 3])r'   r%   r   r   r.   r/   r0   test_matrixr   b  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/   r0   test_sparse_matrixr   h  s&    	#	$,	{+, 
%	$	$s   1
?N)K
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.codeprinterr'   r3   r4   r   r   r   r@   r1   r5   r=   rA   rU   rY   rm   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r.   r/   r0   <module>r      s   5 5 5 5 5* * *  ' 9 ) = = 0
'5t
41a
'4
(1a,
+:.'ER:$k5%0PK

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