
    \h5                        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  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  S SK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'J(r(J)r)  S SK*J+r+  S SK,J-r-  S S	K.J/r/  S S
K0J1r1J2r2  S SK3J4r4J5r5  S SK,J6r6  \" S5      u  r7r8r9S r:S r;S r<S r=S r>S r?S r@S rAS rBS rCS rDS rES rFS rGS rHS rIS rJS rKS  rLS! rMS" rNS# rOS$ rPS% rQS& rRS' rSS( rTS) rUS* rVS+ rWS, rXS- rYS. rZg/)0    )SpiooSymbolsymbolsRationalIntegerGoldenRatio
EulerGammaCatalanLambdaDummy)	PiecewisesincosAbsexpceilingsqrtgammasignMaxMin	factorialbeta)EqGeGtLeLtNe)Range)ITE)For
aug_assign
Assignment)raises)RCodePrinter)implemented_function)IndexedBaseIdx)MatrixMatrixSymbol)rcodezx,y,zc                  X     " S S[         5      n [        U " [        5      5      S:X  d   eg )Nc                       \ rS rSrS rSrg)test_printmethod.<locals>.fabs   c                 D    SUR                  U R                  S   5      -  $ )Nzabs(%s)r   )_printargs)selfprinters     W/var/www/auris/envauris/lib/python3.13/site-packages/sympy/printing/tests/test_rcode.py_rcode%test_printmethod.<locals>.fabs._rcode   s    w~~diil;;;     N)__name__
__module____qualname____firstlineno__r9   __static_attributes__r<   r;   r8   fabsr1      s    	<r;   rB   abs(x))r   r.   x)rB   s    r8   test_printmethodrE      s&    <s < a>X%%%r;   c                      [        [        [        5      5      S:X  d   e[        [        S-  5      S:X  d   e[        [        [        5      5      S:X  d   eg )Nzsqrt(x)      ?)r.   r   rD   r<   r;   r8   test_rcode_sqrtrH      sD    a>Y&&&C=I%%%a>Y&&&r;   c                  .   [        [        S-  5      S:X  d   e[        [        [        S-  -  5      S:X  d   e[        S[	        [        S[        -  5      5      n [        SU " [        5      S-  [        [        [        -  -
  -  -  [        S-  [        -   -  5      S:X  d   e[        [        S	-  5      S
:X  d   e[        [        [        SS5      -  5      S:X  d   eS S4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 )N   zx^3zx^(y^3)g      g      @z(3.5*2*x)^(-x + y^x)/(x^2 + y)g      z1.0/xzx^(2.0/3.0)c                     UR                   $ N
is_integerbaser   s     r8   <lambda> test_rcode_Pow.<locals>.<lambda>*   s    cnnr;   dpowic                 $    UR                   (       + $ rO   rP   rR   s     r8   rT   rU   +   s    #..&8r;   powPowuser_functionszdpowi(x, 3)g	@zpow(x, 3.2))r.   rD   yr)   r   r   )rK   _cond_cfuncs     r8   test_rcode_Powr^   "   s   A;%QTy(((S&AaC.1AAaDHAqD))1a4!845() ) )D>W$$$HQN"#}4444g>8%@BKAuk&:;}LLLC(<=NNNr;   c                  \    [        [        [        [        [        -  5      SSS.S9S:X  d   eg )Nmy_maxmy_pow)r   rY   rZ   zmy_max(x, my_pow(x, 2)))r.   r   rD   r<   r;   r8   test_rcode_Maxrb   0   s'    Qqs((+KLPiiiir;   c                      [        [        S5      5      S:X  d   e[        [        5      S:X  d   e[        [        5      S:X  d   e[        [        * 5      S:X  d   eg )NrM   zexp(1)r   Infz-Inf)r.   r   r   r   r<   r;   r8   test_rcode_constants_mathhre   5   sP    Q=H$$$99":r;   c                      [        S[        -  5      S:X  d   e[        S[        -  5      S:X  d   e[        S[        -  5      S:X  d   eg )NrL   z-GoldenRatio = 1.61803398874989;
2*GoldenRatioz&Catalan = 0.915965594177219;
2*Catalanz,EulerGamma = 0.577215664901533;
2*EulerGamma)r.   r
   r   r   r<   r;   r8   test_rcode_constants_otherrg   <   sV    ;#SSSS	'	?@ @ @:"QQQQr;   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 )NrJ      z3.0/7.0   	   2iz-3.0/7.0zx + 3.0/7.0z(3.0/7.0)*x)r.   r   rD   r<   r;   r8   test_rcode_Rationalrn   C   s    !Q I---"a!S(((!R!Z///"b!"i///Xa^#$555!Q!"m333r;   c                  l    [        [        S5      5      S:X  d   e[        [        S5      5      S:X  d   eg )NC   67z-1)r.   r	   r<   r;   r8   test_rcode_Integerrs   L   s0    %%%%%%r;   c            	      :   [        [        [        5      [        [        5      -  5      S:X  d   e[        [	        [        5      [        [        5      -   5      S:X  d   e[        [        [        [        [        5      [        [        [        5      5      5      S:X  d   eg )Nzsin(x)^cos(x)zfactorial(x) + gamma(y)zbeta(min(x, y), max(x, y)))
r.   r   rD   r   r   r   r\   r   r   r   r<   r;   r8   test_rcode_functionsru   Q   sj    Q3q6!"o5551a()-FFFFc!QiQ+,0LLLLr;   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
                  " 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nSnXE:X  d   eg )NrD   rK   rL   z2*xzCatalan = %s;
2*x/CatalanAinTintegerrM   	assign_toz7for (i in 1:n){
   A[i] = (A[i] + 1)*(A[i] + 2)*A[i];
})r   r)   r   r.   r   ry   r*   r+   )rD   rK   rw   rx   resrefs         r8   test_rcode_inline_functionr   W   s    AS&AaC.1A1;%S&AaCK"89A	!-		;< < <CACd+,AS&q1uIq1u,=">?Aag&C	 
 ::r;   c                      [        [        [        5      5      S:X  d   e[        [        [        5      5      S:X  d   e[        [	        [        5      5      S:X  d   eg )Nz
ceiling(x)rC   zgamma(x))r.   r   rD   r   r   r<   r;   r8   test_rcode_exceptionsr   j   sE    ,,,Q=H$$$q?j(((r;   c                      [        SSS9n [        SSS9nSS S4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 )NrD   Frz   ry   Tmyceilc                 $    U R                   (       + $ rO   rP   rD   s    r8   rT   +test_rcode_user_functions.<locals>.<lambda>u   s    q||+r;   rB   c                     U R                   $ rO   rP   r   s    r8   rT   r   u   s    r;   abs)r   r   rZ   z	myceil(x)zfabs(x)zabs(n))r   r.   r   r   )rD   ry   custom_functionss      r8   test_rcode_user_functionsr   p   s    U#AT"A+V47Mu6UV ,<=LLLQ(89YFFFQ(89XEEEr;   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   truefalserD   r\   zr<   r;   r8   test_rcode_booleanr   |   s    ;&   =F"""<7""">W$$$Q<7"""Q<7"""!9Q{***Q{***!a%1,,,!a%1...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   rD   r\   r!   r   r    r   r   r<   r;   r8   test_rcode_Relationalr      s    Aq?h&&&Aq?h&&&Aq?h&&&Aq?g%%%Aq?g%%%Aq?h&&&r;   c                     [        [        [        S:  4[        S-  S45      n [        U 5      nSnX:X  d   e[        S5      n[        X5      nSnX:X  d   eS[        [        [        S:  4[        S-  [        S:  4[        S-  S45      -  n [        U 5      S:X  d   e[        U S	S
9nUS:X  d   eS[        [        [        S:  4[        S-  [        S:  45      -  n [        U 5      S:X  d   eg )NrM   rL   Tzifelse(x < 1,x,x^2)tauztau = ifelse(x < 1,x,x^2);rJ   z'2*ifelse(x < 1,x,ifelse(x < 2,x^2,x^3))cr|   z,c = 2*ifelse(x < 1,x,ifelse(x < 2,x^2,x^3));z&2*ifelse(x < 1,x,ifelse(x < 2,x^2,NA)))r   rD   r.   r   )exprr~   r   r   s       r8   test_rcode_Piecewiser      s    aQZ!Q$.DdCC::uCdC$C::Y1q5zAqD!A#;Ad<<D;CCCC

$C@@@@
 Y1q5zAqD!A#;//D;B
BB
Br;   c                  P    SSK Jn   U " [        5      n[        U5      nSnX#:X  d   eg )Nr   )sincz(ifelse(x != 0,sin(x)/x,1)))(sympy.functions.elementary.trigonometricr   rD   r.   )r   r   r~   r   s       r8   test_rcode_sincr      s&    =7D
+C
'C::r;   c            	         [        S[        [        [        S:  4[        S-   [        S:  4[        S-  S45      -  5      n U S:X  d   e[        [        -  [        -  [        S-  -   [        S-  -   [        S[        S:  4S5      -   [        [        5      -   S-
  n[        U5      n SnX:X  d   eS	n[        US
S9n X:X  d   eg )NrL   rM   Tz)2*ifelse(x < 1,x,ifelse(x < 2,x + 1,x^2))r   rG   )rM   Tz4x^2 + x*y*z + y^2 + ifelse(x < 0.5,0,1) + cos(z) - 1z9c = x^2 + x*y*z + y^2 + ifelse(x < 0.5,0,1) + cos(z) - 1;r   r|   )r.   r   rD   r\   r   r   )pr   r   s      r8   test_rcode_Piecewise_deepr      s    a	1a!e*q1ua!enq!tTlCCDA;;;;Q3q51a4<!Q$Aq3w<!CCc!fLqPDdA>C8O8CCdc"A8O8r;   c                  d    [        [        S:  [        [        5      n [	        U 5      nSnX:X  d   eg )NrM   zifelse(x < 1,y,z))r#   rD   r\   r   r.   )r   r   r   s      r8   test_rcode_ITEr      s+    q1uaDdAC8O8r;   c                  &    [        [        S 5        g )Nc                  0    [        [        [        5      SS9$ )Ngarbage)method)r.   r   rD   r<   r;   r8   rT   %test_rcode_settings.<locals>.<lambda>   s    eCF9=r;   )r'   	TypeErrorr<   r;   r8   test_rcode_settingsr      s    
9=>r;   c                     [        SSS9u  pn[        SU 5      [        SU5      [        SU5      pTn[        5       n[        5       Ul        [        S5      U   nUR                  U5      S:X  d   e[        S	5      X44   nUR                  U5      S
:X  d   e[        S5      X4U4   n	UR                  U	5      S:X  d   eUR                  [        5       :X  d   eg )Nzn m oTrz   rx   jkrD   zx[j]rw   zA[i, j]Bz
B[i, j, k])r   r+   r(   set_not_rr*   _print_Indexed)
ry   morx   r   r   r   rD   rw   r   s
             r8   test_rcode_Indexedr      s    gt,GA!#qk3sA;C!AAuAHCAA&(((CAA)+++Cq!AA,...88sur;   c                  $   Sn [        SU 4S9n[        SU 4S9n[        SU S-
  4S9n[        SU S-
  5      n[        X4   XS-      X   -
  X$S-      X$   -
  -  5      n[        UR                  UR
                  SS	9nUS
US-   < SUS-   < S3:X  d   eg )N   r\   )shaperD   DyrM   rx   F)r}   contractzDy[i] = (y[z] - y[i])/(x[z
] - x[i]);)r*   r+   r   r.   rhslhs)len_yr\   rD   r   rx   ecode0s          r8   2test_rcode_Indexed_without_looking_for_contractionr      s    ECx(ACx(A	T%'	,BCqAQ3q1vad{+,A!%%15559EAq1uMMMMr;   c                      [        SSS9u  p[        S5      n[        S5      n[        S5      n[        SU5      n[        SU 5      nS	n[        X%U4   X6   -  XE   S
9nX:X  d   eg )Nn mTrz   rw   rD   r\   rx   r   zjfor (i in 1:m){
   y[i] = 0;
}
for (i in 1:m){
   for (j in 1:n){
      y[i] = A[i, j]*x[j] + y[i];
   }
}r|   r   r*   r+   r.   )	ry   r   rw   rD   r\   rx   r   sr   s	            r8   test_rcode_loops_matrix_vectorr      ss    5$'DACACACACACA	  	a1gadlad+A6M6r;   c                      [        SS[        S9u  p[        S5      n[        S5      n[        X5      n SU R                  R
                  UR
                  S.-  n[        X    X0   S9nXT:X  d   eg )	Nzi mT)r{   clsrD   r\   zMfor (i_%(icount)i in 1:m_%(mcount)i){
   y[i_%(icount)i] = x[i_%(icount)i];
})icountmcountr|   )r   r   r*   r+   labeldummy_indexr.   )rx   r   rD   r\   expectedcodes         r8   test_dummy_loopsr      st     5$E2DACACAA	A 77&&!--@	AH
 &D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S
n[        X&U4   X7   -  X6   -   XV   -   XF   S9n	X:X  d   eg )Nr   Trz   rw   rD   r\   r   rx   r   ztfor (i in 1:m){
   y[i] = x[i] + z[i];
}
for (i in 1:m){
   for (j in 1:n){
      y[i] = A[i, j]*x[j] + y[i];
   }
}r|   r   )
ry   r   rw   rD   r\   r   rx   r   r   r   s
             r8   test_rcode_loops_addr   
  s    5$'DACACACACACACA	  	a1gadlQT!AD(AD9A6M6r;   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
Sn[        XXX4   XGXU
4   -  Xg   S9nX:X  d   eg )Nn m o pTrz   abr\   rx   r   r   lzfor (i in 1:m){
   y[i] = 0;
}
for (i in 1:m){
   for (j in 1:n){
      for (k in 1:o){
         for (l in 1:p){
            y[i] = a[i, j, k, l]*b[j, k, l] + y[i];
         }
      }
   }
}r|   r   )ry   r   r   r   r   r   r\   rx   r   r   r   r   r   s                r8   &test_rcode_loops_multiple_contractionsr   !  s    D1JA!CACACACACACACA	  	a1jaA:&!$7A6M6r;   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Sn[        XHXU4   XXXU4   -   XiX4   -  Xx   S9nXl:X  d   eg )Nr   Trz   r   r   r   r\   rx   r   r   r   zfor (i in 1:m){
   y[i] = 0;
}
for (i in 1:m){
   for (j in 1:n){
      for (k in 1:o){
         for (l in 1:p){
            y[i] = (a[i, j, k, l] + b[i, j, k, l])*c[j, k, l] + y[i];
         }
      }
   }
}r|   r   )ry   r   r   r   r   r   r   r\   rx   r   r   r   r   s                r8   test_rcode_loops_addfactorr   =  s    D1JA!CACACACACACACACA	  	qA!}qA!},a1j8ADIA6M6r;   c                  d   [        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nSnSnSn[        XY   XHU	4   -  XZ   XHU
4   -  -   XY   XZ   -  XhX4   -  -   Xx   S9n0 nX-   U-   US S -   US'   X-   U-   US S -   US'   X-   U-   US S -   US'   X-   U-   US S -   US'   X-   U-   US S -   US'   X-   U-   US S -   US'   XoS   :X  d/  XoS   :X  d&  XoS   :X  d  XoS   :X  d  XoS   :X  d  XoS   :X  d   eg g g g g g )Nr   Trz   r   r   r   r\   rx   r   r   zfor (i in 1:m){
   y[i] = 0;
}
zufor (i in 1:m){
   for (j in 1:n){
      for (k in 1:o){
         y[i] = b[j]*b[k]*c[i, j, k] + y[i];
      }
   }
}
zLfor (i in 1:m){
   for (k in 1:o){
      y[i] = a[i, k]*b[k] + y[i];
   }
}
zLfor (i in 1:m){
   for (j in 1:n){
      y[i] = a[i, j]*b[j] + y[i];
   }
}
r|   rr   r   rM   rL   rJ      r   r   )ry   r   r   r   r   r   r   r\   rx   r   r   s0s1s2s3r   s                   r8   test_rcode_loops_multiple_termsr   Z  s   D1JA!CACACACACACACA	 	 	 	  		Q!tWqtAdG|#ad14iQ'
&::ad	LA 	CWr\BsG#CFWr\BsG#CFWr\BsG#CFWr\BsG#CFWr\BsG#CFWr\BsG#CFQKQKQKQKQKQK 
      r;   c                  v    [         [        -   [        [        5      -   [        -   n [	        U [        /S9S:X  d   eg )N)dereferencezx + y + (*z) + sin((*z)))rD   r\   r   r   r.   )r   s    r8   test_dereference_printingr     s0    q53q6>ADA3'+EEEEr;   c            	      b   [        [        [        -  [        S[        -   [        S:  4[        S45      [	        [
        5      /5      n [        SSS5      n[        X5      nUS:X  d   e[        SUS   -  [        S:  4US   S45      [	        US	   5      -   US
   -   n[        U5      nUS:X  d   e[        SSS5      n[        SSS5      n[        [	        US	   5      S[        US   5      /US	   US   -   US   S/SUS   -  US	   -  [        US
   5      S-   S//5      n[        Xe5      S:X  d   eg )NrL   r   Trw   rJ   rM   z8A[0] = x*y;
A[1] = ifelse(y > 0,x + 2,y);
A[2] = sin(z);)rL   r   )rM   r   r   r   z,ifelse(x > 0,2*A[2],A[2]) + sin(A[1]) + A[0]qr   M)rJ   r   )r   r   r   zM[0] = sin(q[1]);
M[1] = 0;
M[2] = cos(q[2]);
M[3] = q[1] + q[2];
M[4] = q[3];
M[5] = 5;
M[6] = 2*q[4]/q[1];
M[7] = sqrt(q[0]) + 4;
M[8] = 0;)
r,   rD   r\   r   r   r   r-   r.   r   r   )matrw   r   r   r   r   r   s          r8   test_Matrix_printingr     sX   
!A#y!a%14y93q6B
CCS!QAcA	  
 a$iQ'!D'49C$LH1T7RDdA@AAAS!QAS!QAQsVaQsV-	
3!C&!D'1%	
1T71S6	4#<!+Q/1 	2A ;		 	 	r;   c                  L   [        [        5      [        -  n [        U 5      S:X  d   e[        U S5      nUS:X  d   e[        [        S[        -  [        S-  -   5      [        -  [        S-  -   5      nUS:X  d   e[        [	        [        5      5      n [        U 5      nUS:X  d   eg )Nz	y*sign(x)r   zz = y*sign(x);rL   zx^2 + x*sign(x^2 + 2*x)zsign(cos(x)))r   rD   r\   r.   r   )r   r   s     r8   test_rcode_sgnr     s    7Q;D;+%%%dCA!!!!d1q51a4< 1$q!t+,A****A<DdAr;   c                      [        [        [        [        [        -   5      5      S:X  d   e[        [        [        S[        [        -   5      5      S:X  d   eg )Nz
x = y + z;+zx += y + z;)r.   r&   rD   r\   r   r%   r<   r;   r8   test_rcode_Assignmentr     s@    Aq1u%&,666AsAE*+}<<<r;   c            	          [        [        [        SSS5      [        [        S[        5      /5      n [        U 5      nUS:X  d   eg )Nr   
   rL   *z.for(x in seq(from=0, to=9, by=2){
   y *= x;
})r$   rD   r"   r%   r\   r.   )fsols     r8   test_rcode_Forr     sD    AuQAAsA!6 78A
(C    r;   c                      [        SSS5      n [        SSS5      n[        SSS5      n[        U S   5      S:X  d   e[        SU S   -  5      S:X  d   eUS   R                  X U-
  5      n[        U5      S	:X  d   eg )
Nrw   rM   rJ   r   Cr   zA[0]z3*A[0]z
(A - B)[0])r-   r.   subs)rw   r   r   Fs       r8   test_MatrixElement_printingr     s    S!QAS!QAS!QA4>V#$#QtW)*)	$QAA8|#$#r;   N)[
sympy.corer   r   r   r   r   r   r	   r
   r   r   r   r   sympy.functionsr   r   r   r   r   r   r   r   r   r   r   r   r   sympy.core.relationalr   r   r   r   r    r!   
sympy.setsr"   sympy.logicr#   sympy.codegenr$   r%   r&   sympy.testing.pytestr'   sympy.printing.rcoder(   sympy.utilities.lambdifyr)   sympy.tensorr*   r+   sympy.matricesr,   r-   r.   rD   r\   r   rE   rH   r^   rb   re   rg   rn   rs   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r<   r;   r8   <module>r     s  I I I IE E E E : :   5 5 ' - 9 ) / &
'
1a&'Oj
 R4&
M&)	F/'C,
?N,$.8:6rF
>=

%r;   