
    g,                        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mZmZmZ d dlmZmZmZ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" d dl#m$Z$m%Z% d dl&m'Z'm(Z(m)Z) d dl*m+Z+  ed	          \  Z,Z-Z.d
 Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d Z9d Z:d Z;d Z<d Z=d Z>d Z?d Z@d ZAd ZBd ZCd ZDd  ZEd! ZFd" ZGd#S )$    )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                      t          t          d                    dk    sJ t          t          d                    dk    sJ d S )N*   42iz-56)r'   r        Z/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/printing/tests/test_rust.pytest_Integerr.      sF    WR[[!!T))))WS\\""e++++++r,   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)	r'   r   xyr   r   r   r   r   r+   r,   r-   test_Relationalr2      s    R1XX(****R1XX(****R1XX(****R1XX'))))R1XX'))))R1XX(******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_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3Xb!__%%,,,,Xa__%%5555Xb"%%&&+5555Q!Q'((O;;;;Xa^^A%&&/999999r,   c                  L   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          t          z            dk    sJ t          t                     dk    sJ d S )Nzx + yzx - yzx*yzx/yz-x)r'   r0   r1   r+   r,   r-   test_basic_opsr<   (   s    QUw&&&&QUw&&&&QUu$$$$QUu$$$$aR==D      r,   c                       G d dt                     } t           | t                              dk    sJ t          ddd          }t          |d                   dk    sJ d S )	Nc                       e Zd Zd ZdS )test_printmethod.<locals>.fabsc                 H    d|                     | j        d                   z  S )Nz	%s.fabs()r   )_printargs)selfprinters     r-   
_rust_codez)test_printmethod.<locals>.fabs._rust_code2   s    	!!=!===r,   N)__name__
__module____qualname__rE   r+   r,   r-   fabsr?   1   s#        	> 	> 	> 	> 	>r,   rI   zx.fabs()a   r4   )r   r   za[0])r   r'   r0   r#   )rI   rJ   s     r-   test_printmethodrL   0   s    > > > > >s > > > TT!WW++++S!QAQsV&&&&&&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 t          t          t                              dk    sJ t          t          t          d                    dk    sJ d S )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_FunctionsrP   9   s    SVVs1vv%&&*AAAAASVV	))))WQZZ  J....U1XX+---- SAYY#BBBBBBBr,   c                     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          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          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          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 t          t          t          dd          z            dk    sJ t          dt          z            dk    sJ t          t          t                              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          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 d ddfd ddfg}t          t          dz  d|i          dk    sJ t          t          dz  d|i          dk    sJ d S )NrK   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                     |j         S N
is_integerbaser   s     r-   <lambda>ztest_Pow.<locals>.<lambda>Z   s    cn r,   dpowic                     |j          S rV   rW   rY   s     r-   r[   ztest_Pow.<locals>.<lambda>[   s    #.&8 r,   powPowuser_functionsz
x.dpowi(3)g	@z
x.pow(3.2))r'   r0   r   r   Halfr   r   r   r1   r    r   )rT   _cond_cfuncs     r-   test_Powrd   C   s6   QqS>>[((((QUyD11@@@@[@@@@@@T!WW++++QY9QV#4#4BBBB
BBBBBBQtAwwY#55555QZ  Iag$6$6LLLL:LLLLLLLQrT??l****RV	"d( 3 3CCCC|CCCCCCRX"55555QA&'':5555QT??j((((SVV	))))QT??k))))QAY#66666QA&''+>>>>>S&AaC..11AQ!SA1H--q!tax89989 9 9 944gqA88%CEKQT5+*>???<OOOOQVUK,@AAA\QQQQQQr,   c                     t          t                    dk    sJ t          t                    dk    sJ t          t          j                  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          d                    dk    sJ t          t          j                  dk    sJ d S )NPIINFINITYNEG_INFINITYNANrK   E)	r'   r   r   r   InfinityNegativeInfinityNaNr   Exp1r+   r,   r-   test_constantsro   `   s    R==D    R==J&&&&QZ  J....bS>>^++++Q'((N::::QUu$$$$SVV####QV######r,   c                  2   t          dt          z            dt          j        d          z  k    sJ t          dt          z            dt          j        d          z  k    sJ t          dt          z            dt	          j        d          z  k    sJ d S )NrS   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_otherrs   k   s    Q{]##'TWbWhikWlWl'lllllgI ?'-PRBSBSST T T TQz\""&QT^TdegThTh&hhhhhhhr,   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 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 )NTtrueFfalsezx && yzx || yz!xzx && y && zzx || y || zzz || x && yzz && (x || y))r'   r   ru   rv   r0   r1   zr+   r,   r-   test_booleanrx   r   sE   T??f$$$$QV&&&&Uw&&&&QW((((QUx''''QUx''''aR==D    QUQY=0000QUQY=0000a!eq[!!]2222a!eq[!!_444444r,   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          t          dk     ft          dz   t          d
k     ft          dz   df           t           d          dk    sJ t           dd          dk    sJ t           d          dk    sJ dt          t          t          dk     ft          dz   t          d
k     ft          dz   df          z   t           d          dk    sJ dt          t          t          dk     ft          dz   t          d
k     ft          dz   df          z  dz
   t           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 )NrK   rS   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                     S rV   r&   exprs   r-   r[   z 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66.0 0 0 0aQZ!a%Q!a%??DT$'''CE E E ETS666HJ J J JTS)))	    Y1q5zAE1q5>AE4=AAADT$'''EG G G GY1q5zAE1q5>AE4=AAABFDT$'''JL L L L aQZ!Q$AQQ@@D
:..../////r,   c                      t           t          z   t          t                    z   t          z   } t	          | t          g          dk    sJ d S )Ndereferencezx + y + (*z) + (*z).sin())r0   r1   r   rw   r'   r   s    r-   test_dereference_printingr      sA    q53q66>ADTs+++/JJJJJJJr,   c                     t          t                    t          z  } t          |           dk    sJ t          | d          dk    sJ t          t          t          z             dz   } t          |           dk    sJ t          | d          dk    sJ t          t	          t                              } t          |           dk    sJ d S )	Nzy*x.signum()rz   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    77Q;DT??n,,,,TS)))-@@@@@A;;DT??55555TS)))-IIIIIA<<DT??0000000r,   c                  L   t          d          \  } }t          |          }t          |          dk    sJ t          ||g          dk    sJ t          |d          dk    sJ t          t                    5  t          |d	           d d d            d S # 1 swxY w Y   d S )
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      s    6??DAqq66DT??k))))Ts+++~====T>>>BWWWWW	
		 0 0$$////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   :BB Bc                  x    t          t          dk     t          t                    } t	          |           dk    sJ d S )NrK   z#if (x < 1) {
    y
} else {
    z
})r   r0   r1   rw   r'   r   s    r-   test_ITEr      sC    q1uaDT??     r,   c                     t          dd          \  } }}t          d|           t          d|          t          d|          }}}t          d          |         }t          |          dk    sJ t          d	          ||f         }t          |          d
k    sJ t          d          |||f         }t          |          dk    sJ d S )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,,,GAq!#qkk3sA;;C!qACAQ<<6!!!!CAAQ<<<''''CAq!AQ<<///////r,   c                      t          ddt                    \  } }t          d          }t          d          }t          | |          } t	          ||          ||                    dk    sJ d S )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      s|    5$E222DAqCACAAq		AQqTQqT***	     r,   c                     t          dd          \  } }t          d          }t          d          }t          d          }t          d          }t          d|           }t          d	|          }t          |||f         ||         z  ||         
          dk    sJ t          |||f         ||         z  ||         z   ||         z   ||         
          dk    sJ d S )Nzm nTr   r   r0   r1   rw   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   rw   r   r   s           r-   
test_loopsr      s    5$'''DAqCACACACACACAQq!tWQqT\QqT222	    Qq!tWQqT\AaD(1Q4/1Q4@@@	     r,   c                     t          dd          \  } }}}t          d          }t          d          }t          d          }t          d|          }t          d|           }t          d	|          }	t          d
|          }
t          |||	|
f         ||||	|
f         z  ||                   d|| z  |z  |z  ||z  |z  z   |	|z  z   |
z   d||z  |z  |	|z  z   |
z   ddz   k    sJ d S )Nzn m o pTr   rJ   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   prJ   r   r1   r   r   r   r   s              r-    test_loops_multiple_contractionsr   	  s0   D111JAq!QCACACACACACACAQq!QwZ!Q1*-1>>>> ;<A#a%'AaCE/AaC:ORS:S:S:SUVWXUXYZUZ]^_`]`U`cdUdUdUd	f		     r,   c            	      R   t          dd          \  } }}}t          d          }t          d          }t          d          }t          d          }t          d|           }t          d	|          }	t          d
|          }
t          d|          }t          |||	|
|f         |||	|
|f         z   ||	|
|f         z  ||                   }|d||z  |z  |z  |	|z  |z  z   |
|z  z   |z   d||z  |z  |z  |	|z  |z  z   |
|z  z   |z   d|	|z  |z  |
|z  z   |z   ddz   k    sJ d S )Nzm n o pTr   rJ   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   rJ   r   r   r1   r   r   r   r   codes                r-   test_loops_addfactorr   "  s   D111JAq!QCACACACACACACACAa1a
ma1a
m3Qq!QwZ?1Q4PPPD4 EFaCE!GaPQcRSeOVWXYVYDY\]D]D]D]_`ab_bcd_def_fijklilmnin_nqrstqt_twx_x_x_xz{|}z}~z  CD  EF  CF  {F  IJ  {J  {J  {J	K		     r,   c                  2    t          t          d            d S )Nc                  H    t          t          t                    d          S )Ngarbage)method)r'   r   r0   r+   r,   r-   r[   ztest_settings.<locals>.<lambda>>  s    iAyAAA r,   )r   	TypeErrorr+   r,   r-   test_settingsr   =  s    
9AABBBBBr,   c            	      b   t          d          } t          dt          | d| z                      }t           ||                     dk    sJ t          dt          | d| z  t          z                      }t           ||                     dt	          j        d          z  k    sJ t          d          }t          dt          d	d
                    }t          dt          | | d| z   z  d| z   z                      }t           |||                   ||                   dk    sJ d S )Nr0   rT   rS   z2*xz$const Catalan: f64 = %s;
2*x/Catalanrq   r   r   r   Tr   rK   r{   z8for i in 0..n {
    A[i] = (A[i] + 1)*(A[i] + 2)*A[i];
})r   r    r   r'   r   rr   r!   r"   )r0   rT   r   r   s       r-   test_inline_functionr   A  s;   AS&AaC..11AQQqTT??e####S&AaCK"8"899AQQqTT??/'-2C2CCE E E E 	CACd+++,,AS&Aq1uIq1u,=">">??AQQqtWW!---	     r,   c                  @   t          dd          } t          dd          }dd dd	fd
 dd	fgd}t          t          |           |          dk    sJ t          t          |           |          dk    sJ t          t          |          |          dk    sJ d S )Nr0   Fr   r   Tceilc                     | j          S rV   rW   r0   s    r-   r[   z%test_user_functions.<locals>.<lambda>X  s    q|+ r,   rI      c                     | j         S rV   rW   r   s    r-   r[   z%test_user_functions.<locals>.<lambda>X  s    AL r,   rO   )r   r   r`   rN   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:P:PRWYZ9[\  WQZZ0@AAAZOOOOSVV,<===JJJJSVV,<===IIIIIIr,   c                      t          t          g d                    dk    sJ t          t                    5  t          t          g dg                     d d d            d S # 1 swxY w Y   d S )NrK   rS   r4   z	[1, 2, 3])r'   r%   r   r   r+   r,   r-   test_matrixr   _  s    VIII&&'';6666	
		 ' '&)))%%&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's    A&&A*-A*c                      t          t                    5  t          t          g dg                     d d d            d S # 1 swxY w Y   d S )Nr   )r   NotImplementedErrorr'   r$   r+   r,   r-   test_sparse_matrixr   e  s    	#	$	$ - -,			{++,,,- - - - - - - - - - - - - - - - - -s    AA	A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   rw   r.   r2   r:   r<   rL   rP   rd   ro   rs   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r+   r,   r-   <module>r      sb  5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5* * * * * * * * * * * * * * * * * * * * * *       ' ' ' ' ' ' 9 9 9 9 9 9 ) ) ) ) ) ) ) ) = = = = = = = = = = ) ) ) ) ) )
''

1a, , ,
+ + +: : :! ! !' ' 'C C CR R R:$ $ $i i i5 5 5%0 %0 %0PK K K

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