
    \hi,                        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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.  S SK%J/r/  \" S	5      u  r0r1r2S
 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! rJS" rKg#)$    )pioosymbolsRationalIntegerGoldenRatio
EulerGammaCatalanLambdaDummySEqNeLeLtGtGeMod)	PiecewisesincosAbsexpceilingsqrtsinhcoshtanhasinacosacoshMaxMin)raises)JavascriptCodePrinter)implemented_function)IndexedBaseIdx)MatrixMatrixSymboljscodezx,y,zc                  @    [        [        [        5      5      S:X  d   eg )NMath.abs(x))r,   r   x     X/var/www/auris/envauris/lib/python3.13/site-packages/sympy/printing/tests/test_jscode.pytest_printmethodr3      s    #a&>]***r1   c                      [        [        [        5      5      S:X  d   e[        [        S-  5      S:X  d   e[        [        [        R                  S-  -  5      S:X  d   eg )NzMath.sqrt(x)g      ?   zMath.cbrt(x))r,   r   r/   r   Oner0   r1   r2   test_jscode_sqrtr7      sM    $q'?n,,,!S&>^+++!aeeAg,>111r1   c                  r   [        S[        [        S[        -  5      5      n [        [        S-  5      S:X  d   e[        [        [        S-  -  5      S:X  d   e[        SU " [        5      S-  [        [        [        -  -
  -  -  [        S-  [        -   -  5      S:X  d   e[        [        S	-  5      S
:X  d   eg )Ng   r5   zMath.pow(x, 3)zMath.pow(x, Math.pow(y, 3))   g      @z;Math.pow(3.5*2*x, -x + Math.pow(y, x))/(Math.pow(x, 2) + y)g      z1/x)r&   r   r/   r,   y)r9   s    r2   test_jscode_Powr=      s    S&AaC.1A!Q$<++++!ad) ====!QqT#XQT**AqD1H56EF F F!T'?e###r1   c                      [        [        S5      5      S:X  d   e[        [        5      S:X  d   e[        [        5      S:X  d   e[        [        * 5      S:X  d   eg )Nr;   zMath.EzMath.PIzNumber.POSITIVE_INFINITYzNumber.NEGATIVE_INFINITY)r,   r   r   r   r0   r1   r2   test_jscode_constants_mathhr?   $   sR    #a&>X%%%":"""":33332#;4444r1   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#var GoldenRatio = %s;
2*GoldenRatio   zvar Catalan = %s;
2*Catalanz!var EulerGamma = %s;
2*EulerGamma)r,   r   evalfr
   r	   r0   r1   r2   test_jscode_constants_otherrC   +   s    	+@;CTCTUWCXXY Y Y!G) >rAR RRRR	*=
@P@PQS@TTU U Ur1   c                      [        [        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 )
Nr5      z3/7   	   2z-3/7)r,   r   r0   r1   r2   test_jscode_RationalrK   3   sg    (1a.!U***(2q/"c)))(1b/"f,,,(2r"#u,,,r1   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   r/   r<   r   r   r   r   r   r0   r1   r2   test_RelationalrM   :   s    "Q(x'''"Q(x'''"Q(x'''"Q(w&&&"Q(w&&&"Q(x'''r1   c                     [        [        [        [        5      5      S:X  d   e[        [        [        [        [        -   5      5      S:X  d   e[	        SSS9u  p[        [        X5      5      S:X  d   e[        [        XS-   5      5      S:X  d   e[        [        S	S
SS95      S:X  d   e[        [        X5      * 5      S:X  d   e[        [        [        X5      -  5      S:X  d   eg )Nz((x % y) + y) % yz#((x % (x + y)) + (x + y)) % (x + y)zp1 p2T)positivezp1 % p2r5   zp1 % (p2 + 3)rJ   rI   F)evaluatez(-3) % (-7)z
-(p1 % p2)zx*(p1 % p2))r,   r   r/   r<   r   )p1p2s     r2   test_ModrS   C   s    #a) 3333#aQ- $IIIIWt,FB#b+)+++#bq&/"o555#b"u-.-???3r;,<///!CK- M111r1   c                  l    [        [        S5      5      S:X  d   e[        [        S5      5      S:X  d   eg )NC   67z-1)r,   r   r0   r1   r2   test_jscode_IntegerrX   N   s0    '"+$&&&'"+$&&&r1   c                     [        [        [        5      [        [        5      -  5      S:X  d   e[        [	        [        5      [        [        5      -  5      S:X  d   e[        [        [        [        5      [        [        [        5      -   5      S:X  d   e[        [        [        5      [        [        5      -  5      S:X  d   e[        [        [        5      [        [        5      -
  5      S:X  d   eg )Nz"Math.pow(Math.sin(x), Math.cos(x))zMath.sinh(x)*Math.cosh(x)zMath.max(x, y) + Math.min(x, y)zMath.tanh(x)*Math.acosh(y)z-Math.acos(y) + Math.asin(x))r,   r   r/   r   r   r   r"   r<   r#   r   r!   r   r    r0   r1   r2   test_jscode_functionsrZ   S   s    #a&CF"#'KKKK$q'DG#$(CCCC#a)c!Qi'(,MMMM$q'%("#'CCCC$q'$q'/"&DDDDr1   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 )Nr/   r9   r:   z2*xzvar Catalan = %s;
2*x/CatalanrA   AinTintegerr;   	assign_toz@for (var i=0; i<n; i++){
   A[i] = (A[i] + 1)*(A[i] + 2)*A[i];
})r   r&   r   r,   r
   rB   r'   r(   )r/   r9   r\   r]   s       r2   test_jscode_inline_functionrc   [   s    AS&AaC.1A!A$<5   S&AaCK"89A!A$<;gmmB>OOOOOCACd+,AS&q1uIq1u,=">?A!AD'QT*	  r1   c                  |    [        [        [        5      5      S:X  d   e[        [        [        5      5      S:X  d   eg )NzMath.ceil(x)r.   )r,   r   r/   r   r0   r1   r2   test_jscode_exceptionsre   k   s/    '!*///#a&>]***r1   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[        [        [        -  [        -  5      S:X  d   e[        [        [        -  [        -  5      S:X  d   eg )Nzx && yzx || yz!xzx && y && zzx || y || zzz || x && yzz && (x || y))r,   r/   r<   zr0   r1   r2   test_jscode_booleanrh   p   s    !a%=H$$$!a%=H$$$1":!a%!)---!a%!)---1q5A+-///1q5A+/111r1   c                  :  ^ [        [        [        S:  4[        S-  S45      m[        T5      n SnX:X  d   e[        TSS9S:X  d   e[        [        [        S:  4[        S-  [        S:  4[        [        5      [        S:  45      m[	        [
        U4S	 j5        g )
Nr;   r:   Tz,((x < 1) ? (
   x
)
: (
   Math.pow(x, 2)
))cra   z8if (x < 1) {
   c = x;
}
else {
   c = Math.pow(x, 2);
}r   c                     > [        T 5      $ )Nr+   )exprs   r2   <lambda>'test_jscode_Piecewise.<locals>.<lambda>   s	    vd|r1   )r   r/   r,   r   r$   
ValueError)psrl   s     @r2   test_jscode_Piecewiserr   z   s    aQZ!Q$.DtA  6M6$#&	 	 	 aQZ!Q$AQQ@D
:+,r1   c                  r    [        S[        [        [        S:  4[        S-  S45      -  5      n SnX:X  d   eg )Nr:   r;   Tz.2*((x < 1) ? (
   x
)
: (
   Math.pow(x, 2)
)))r,   r   r/   )rp   rq   s     r2   test_jscode_Piecewise_deeprt      s=    qAq1u:1d|445A  6M6r1   c                  &    [        [        S 5        g )Nc                  0    [        [        [        5      SS9$ )Ngarbage)method)r,   r   r/   r0   r1   r2   rm   &test_jscode_settings.<locals>.<lambda>   s    fSVI>r1   )r$   	TypeErrorr0   r1   r2   test_jscode_settingsr{      s    
9>?r1   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-  U-   -  :X  d   e[        S5      X4U4   n	UR                  U	5      SX2-  U-  XB-  -   U-   -  :X  d   eUR                  [        5       :X  d   eg )Nzn m oTr_   r]   jkr/   zx[j]r\   zA[%s]BzB[%s])r   r(   r%   set_not_cr'   _print_Indexed)
r^   mor]   r}   r~   rp   r/   r\   r   s
             r2   test_jscode_Indexedr      s    gt,GA!#qk3sA;C!AAuAHCAA&(((CAA'QSU"3333Cq!AA'QSU13Yq["999988sur1   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 mTr_   r\   r/   r<   r]   r}   zfor (var i=0; i<m; i++){
   y[i] = 0;
}
for (var i=0; i<m; i++){
   for (var j=0; j<n; j++){
      y[i] = A[n*i + j]*x[j] + y[i];
   }
}ra   r   r'   r(   r,   )	r^   r   r\   r/   r<   r]   r}   rq   rj   s	            r2   test_jscode_loops_matrix_vectorr      ss    5$'DACACACACACA	  	qAwqt|qt,A6M6r1   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`   clsr/   r<   zlfor (var i_%(icount)i=0; i_%(icount)i<m_%(mcount)i; i_%(icount)i++){
   y[i_%(icount)i] = x[i_%(icount)i];
})icountmcountra   )r   r   r'   r(   labeldummy_indexr,   )r]   r   r/   r<   expectedcodes         r2   test_dummy_loopsr      sr    5$E2DACACAA	A	 77&&!--@	AH
 !$!$'Dr1   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   Tr_   r\   r/   r<   rg   r]   r}   zfor (var i=0; i<m; i++){
   y[i] = x[i] + z[i];
}
for (var i=0; i<m; i++){
   for (var j=0; j<n; j++){
      y[i] = A[n*i + j]*x[j] + y[i];
   }
}ra   r   )
r^   r   r\   r/   r<   rg   r]   r}   rq   rj   s
             r2   test_jscode_loops_addr      s    5$'DACACACACACACA	  	qAwqt|ad"QT)QT:A6M6r1   c                  d   [        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Xp-  U-  U-  X-  U-  -   X-  -   U
-   < SX-  U-  X-  -   U
-   < S3S-   n[        XXX4   XGXU
4   -  Xg   S9nX:X  d   eg )Nn m o pTr_   abr<   r]   r}   r~   lzfor (var i=0; i<m; i++){
   y[i] = 0;
}
for (var i=0; i<m; i++){
   for (var j=0; j<n; j++){
      for (var k=0; k<o; k++){
         for (var l=0; l<p; l++){
            y[i] = a[z]*b[
] + y[i];
         }
      }
   }
}ra   r   )r^   r   r   rp   r   r   r<   r]   r}   r~   r   rq   rj   s                r2   'test_jscode_loops_multiple_contractionsr      s    D1JA!CACACACACACACA 78c!eAgAo6Ka6OQRQTUVQVYZY\Q\_`Q`	b		  	qAz!qQJ-'148A6M6r1   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X-  U-  U-  X-  U-  -   X-  -   U-   < SX-  U-  U-  X-  U-  -   X-  -   U-   < SX-  U-  X-  -   U-   < S3S-   n[        XHXU4   XXXU4   -   XiX4   -  Xx   S9nXl:X  d   eg )Nr   Tr_   r   r   rj   r<   r]   r}   r~   r   zfor (var i=0; i<m; i++){
   y[i] = 0;
}
for (var i=0; i<m; i++){
   for (var j=0; j<n; j++){
      for (var k=0; k<o; k++){
         for (var l=0; l<p; l++){
            y[i] = (a[z] + b[z])*c[r   r   ra   r   )r^   r   r   rp   r   r   rj   r<   r]   r}   r~   r   rq   s                r2   test_jscode_loops_addfactorr     s9   D1JA!CACACACACACACACA ABAa!#a%RSRU@UXY@Y[\[^_`[`ab[befehijej[jmnmp[pst[tvwvyz{v{~  B  wB  EF  wF	G		  	Q1*Q1*-qAz9QTJA6M6r1   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nSX-  U-  X-  -   U
-   -  S-   nSX-  U
-   -  S-   nSX-  U	-   -  S-   n[        XY   XHU	4   -  XZ   XHU
4   -  -   XY   XZ   -  XhX4   -  -   Xx   S9nXkU-   U-   US S -   :X  d\  XkU-   U-   US S -   :X  dJ  XkU-   U-   US S -   :X  d8  XkU-   U-   US S -   :X  d&  XkU-   U-   US S -   :X  d  XkU-   U-   US S -   :X  d   eg g g g g g )Nr   Tr_   r   r   rj   r<   r]   r}   r~   z(for (var i=0; i<m; i++){
   y[i] = 0;
}
z|for (var i=0; i<m; i++){
   for (var j=0; j<n; j++){
      for (var k=0; k<o; k++){
         y[i] = b[j]*b[k]*c[%s] + y[i];
z      }
   }
}
zUfor (var i=0; i<m; i++){
   for (var k=0; k<o; k++){
      y[i] = a[%s]*b[k] + y[i];
z   }
}
zUfor (var i=0; i<m; i++){
   for (var j=0; j<n; j++){
      y[i] = a[%s]*b[j] + y[i];
ra   rW   r   )r^   r   r   rp   r   r   rj   r<   r]   r}   r~   s0s1s2s3s                  r2    test_jscode_loops_multiple_termsr   *  s   D1JA!CACACACACACACA	 	4 89s1uqs{Q	H			 	,/0sQw	8		 	,/0sQw	8		  		Q!tWqtAdG|#ad14iQ'
&::ad	LAb23B''b23B''b23B''b23B''b23B''b23B'') (
 ( ( ( ( ( (r1   c            	      Z   [        [        [        -  [        S[        -   [        S:  4[        S45      [	        [
        5      /5      n [        SSS5      n[        X5      S:X  d   e[        SUS   -  [        S:  4US   S45      [	        US	   5      -   US
   -   n[        U5      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[        XT5      S:X  d   eg )Nr:   r   Tr\   r5   r;   zUA[0] = x*y;
if (y > 0) {
   A[1] = x + 2;
}
else {
   A[1] = y;
}
A[2] = Math.sin(z);)r:   r   )r;   r   r   r   z?((x > 0) ? (
   2*A[2]
)
: (
   A[2]
)) + Math.sin(A[1]) + A[0]q   M)r5   r   )   r   r   zM[0] = Math.sin(q[1]);
M[1] = 0;
M[2] = Math.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] = Math.sqrt(q[0]) + 4;
M[8] = 0;)
r)   r/   r<   r   r   rg   r*   r,   r   r   )matr\   rl   r   r   r   s         r2   test_Matrix_printingr   Z  sX   
!A#y!a%14y93q6B
CCS!QA#>	   a$iQ'!D'49C$LH1T7RD$<	%& & & 	S!QAS!QAQsVaQsV-	
3!C&!D'1%	
1T71S6	4#<!+Q/1 	2A !<		 	 	r1   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 )
Nr\   r;   r5   r   Cr   zA[0]z3*A[0]z
(A - B)[0])r*   r,   subs)r\   r   r   Fs       r2   test_MatrixElement_printingr     s    S!QAS!QAS!QA!D'?f$%$!ag+(*+*	$QAA!9$%$r1   N)L
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   r   r   r    r!   r"   r#   sympy.testing.pytestr$   sympy.printing.jscoder%   sympy.utilities.lambdifyr&   sympy.tensorr'   r(   sympy.matricesr)   r*   r,   r/   r<   rg   r3   r7   r=   r?   rC   rK   rM   rS   rX   rZ   rc   re   rh   rr   rt   r{   r   r   r   r   r   r   r   r   r   r0   r1   r2   <module>r      s   ) ) ) ) )L L L L L ' 7 9 ) / (
'
1a+2$5U-(2'
E +
2-2@ ,.8:-)`%P
&r1   