
    \hlH                     p   S SK Jr  S SK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Jr  S SKJrJrJr  S SKJr  S SKr\" S	5      u  rrrS
 rS rS rS rS r\S 5       r S r!S r"S r#S r$S r%S r&S r'\S 5       r(S r)S r*S r+S r,S r-S r.S r/S r0S  r1S! r2S" r3S# r4S$ r5S% r6S& r7S' r8S( r9S) r:g)*    )StringIO)SsymbolsEqpiCatalan
EulerGammaFunction)Equality)	Piecewise)MatrixMatrixSymbol)JuliaCodeGencodegenmake_routine)XFAILNzx,y,zc                      [        5       n [        5       nU R                  / USSSS9  UR                  5       nUS:X  d   eg )NfileFheaderempty )r   r   dump_jlgetvalue)code_genoutputsources      `/var/www/auris/envauris/lib/python3.13/site-packages/sympy/utilities/tests/test_codegen_julia.pytest_empty_jl_coder      sA    ~HZFRUC__FR<<    c                  ~    S[         [        -   [        -  4n [        U SSSS9u  nUS   S:X  d   eUS   nSnX#:X  d   eg )	NtestJuliaFr   r   test.jl   zCfunction test(x, y, z)
    out1 = z .* (x + y)
    return out1
end
xyzr   	name_exprresultr   expecteds       r   test_jl_simple_coder.      sY    !a%#IieDGF!9	!!!AYF	  r    c                      S[         [        -   [        -  4n [        U SSSS9u  nUS   S:X  d   eUS   nS	[        R
                  -   S
-   nX#:X  d   eg )Nr"   r#   TFr   r   r$   r%   #   Code generated with SymPy z
#
#   See http://www.sympy.org/ for more information.
#
#   This file is part of 'project'
function test(x, y, z)
    out1 = z .* (x + y)
    return out1
end
)r'   r(   r)   r   sympy__version__r*   s       r   test_jl_simple_code_with_headerr3   %   sm    !a%#IiUCGF!9	!!!AYF(5+<+<< @ 	  r    c                  z    [        [        [        [        -   5      n SU 4n[	        USSSS9u  nUS   nSnX4:X  d   eg )Nr"   r#   Fr   r%   z3function test(x, y)
    z = x + y
    return z
end
)r   r)   r'   r(   r   exprr+   r,   r   r-   s        r   test_jl_simple_code_nameoutr7   8   sN    AADIieDGFAYF	  r    c                  Z    S[         [        -  4n [        U SSSS9u  nUS   nSnX#:X  d   eg )Nr"   r#   Fr   r%   z<function test()
    out1 = pi ^ catalan
    return out1
end
)r   r   r   r*   s       r   test_jl_numbersymbolr9   F   sC    W%IieDGFAYF	  r    c                  h    S[         [        -  [        /4n [        U SSSSS9u  nUS   nSnX#:X  d   eg )Nr"   r#   Fr   r   inliner%   zfunction test()
    Catalan = 0.915965594177219
    EulerGamma = 0.5772156649015329
    out1 = pi ^ Catalan
    out2 = EulerGamma
    return out1, out2
end
)r   r   r	   r   r*   s       r   test_jl_numbersymbol_no_inliner=   S   sO     "g+z23Ii!%1GFAYF	  r    c                      [         [        -   n [        SU [        [         [        /SS9n[	        5       n[        5       nUR                  U/USSSS9  UR                  5       nSnXE:X  d   eg )Nr"   julia)argument_sequencelanguageFr   z<function test(z, x, y)
    out1 = x + y
    return out1
end
)r'   r(   r   r)   r   r   r   r   )r6   routiner   r   r   r-   s         r   test_jl_code_argument_orderrC   f   sn    q5D64Aq!9wWG~HZFgYuEJ__F	  r    c                      [         [        -   [        -  n [         [        -
  [        -  nSX/4n[        USSSS9u  nUS   nSnXE:X  d   eg )Nr"   r#   Fr   r%   zafunction test(x, y, z)
    out1 = z .* (x + y)
    out2 = z .* (x - y)
    return out1, out2
end
r&   )expr1expr2r+   r,   r   r-   s         r   test_multiple_results_mrG   v   s[    UAIEUAIE%(IieDGFAYF	  r    c                     [        S5      u  pn[        U[        [        -   [        -  5      n[        U [        [        -
  [        -  5      n[        US[        -  5      nSX4U/4n[        USSSS9u  nUS   nSn	X:X  d   eg )	NA,B,C   r"   r#   Fr   r%   zffunction test(x, y, z)
    C = z .* (x + y)
    A = z .* (x - y)
    B = 2 * x
    return C, A, B
end
r   r   r'   r(   r)   r   
ABCrE   rF   expr3r+   r,   r   r-   s
             r   test_results_named_unorderedrQ      s    gGA!QQ	"EQQ	"EQ!E%./IieDGFAYF	  r    c            	      @   [        S5      u  pn[        U[        [        -   [        -  5      n[        U [        [        -
  [        -  5      n[        US[        -  5      nSX4U/4n[        USSS[        [        [        4S9nUS   S   S:X  d   eUS   S	   nS
n	X:X  d   eg )NrI   rJ   r"   r#   Fr   r   r@   r   r$   r%   zffunction test(x, z, y)
    C = z .* (x + y)
    A = z .* (x - y)
    B = 2 * x
    return C, A, B
end
rK   rL   s
             r   test_results_named_orderedrT      s    gGA!QQ	"EQQ	"EQ!E%./IYU()1ay2F!9Q<9$$$AYq\F	  r    c                  h   SSK Jn JnJn  SU" [        5      U " [
        5      -   U" [        5      -   S-  R                  5       U " U " U " U " U " U " U " U " [        [
        -   [        -   5      5      5      5      5      5      5      5      /4n[        USSSS9nUS   S   S:X  d   eUS   S	   nS
nXV:X  d   eg )Nr   )cossintantestlong   r#   Fr   ztestlong.jlr%   an  function testlong(x, y, z)
    out1 = sin(x) .^ 3 + 3 * sin(x) .^ 2 .* cos(y) + 3 * sin(x) .^ 2 .* tan(z) + 3 * sin(x) .* cos(y) .^ 2 + 6 * sin(x) .* cos(y) .* tan(z) + 3 * sin(x) .* tan(z) .^ 2 + cos(y) .^ 3 + 3 * cos(y) .^ 2 .* tan(z) + 3 * cos(y) .* tan(z) .^ 2 + tan(z) .^ 3
    out2 = cos(cos(cos(cos(cos(cos(cos(cos(x + y + z))))))))
    return out1, out2
end
)	(sympy.functions.elementary.trigonometricrV   rW   rX   r'   r(   r)   expandr   )rV   rW   rX   r+   r,   r   r-   s          r   test_complicated_jl_codegenr]      s    HHAQ#a&(1,446CCCAEAI$7 89:;<=I YUCF!9Q<=(((AYq\F	  r    c                     SSK Jn Jn  [        S5      nSU " S[        -  5      [        [        U" [        5      5      U " [        5      [        X!" S[        -  5      5      /4n[        USSSS9u  nUS   S	:X  d   eUS
   nSnXV:X  d   eg )Nr   )rV   rW   afoorJ   r#   Fr   foo.jlr%   zzfunction foo(x)
    out1 = cos(2 * x)
    y = sin(x)
    out3 = cos(x)
    a = sin(2 * x)
    return out1, y, out3, a
end
)r[   rV   rW   r   r'   r   r(   r   )rV   rW   r_   r+   r,   r   r-   s          r   "test_jl_output_arg_mixed_unorderedrb      s    CAQqS8As1v#6ACPQRSPSH@UVWIieDGF!9   AYF	  r    c                      [        S[        S:  4[        S-  [        S:*  4[        * S-   [        S:  4SSS9n SU 4n[        US	SSS
9u  nUS   nSnX4:X  d   eg )Nr   rJ   r%   r%   TFevaluatepwtestr#   r   z{function pwtest(x)
    out1 = ((x < -1) ? (0) :
    (x <= 1) ? (x .^ 2) :
    (x > 1) ? (2 - x) : (1))
    return out1
end
r   r'   r   pwr+   r,   r   r-   s        r   test_jl_piecewise_rl      ss    	Aq2v;AqAv!Aq1uySX	YB2IieDGFAYF	  r    c                      [        S[        S:  4[        S-  [        S:*  4[        * S-   [        S:  4S5      n SU 4n[        USSSSS	9u  nUS   nS
nX4:X  d   eg )Nr   rd   rJ   r%   re   rh   r#   Fr;   zfunction pwtest(x)
    if (x < -1)
        out1 = 0
    elseif (x <= 1)
        out1 = x .^ 2
    elseif (x > 1)
        out1 = -x + 2
    else
        out1 = 1
    end
    return out1
end
ri   rj   s        r   test_jl_piecewise_no_inlinern      sw     
Aq2v;AqAv!Aq1uy	IB2Iie"$GFAYF	  r    c                      SS[         -  S[        -  /4S[        S-  S[        -  /4/n [        U SSSS9nUS	   S	   S
:X  d   eUS	   S   nSnX#:X  d   eg )Nr`   rJ   rZ   bar   r#   Fr   r   ra   r%   zfunction foo(x, y)
    out1 = 2 * x
    out2 = 3 * y
    return out1, out2
end
function bar(y)
    out1 = y .^ 2
    out2 = 4 * y
    return out1, out2
end
r'   r(   r   r*   s       r   test_jl_multifcns_per_filers     sy    1Q3!*%1ac{';=IYUCF!9Q<8###AYq\F		  r    c                      SS[         -  S[        -  /4S[        S-  S[        -  /4/n [        U SSSS	9nUS
   S
   S:X  d   eUS
   S   nS[        R                  -   S-   nX#:X  d   eg )Nr`   rJ   rZ   rp   rq   r#   TFr   r   ra   r%   r0   z
#
#   See http://www.sympy.org/ for more information.
#
#   This file is part of 'project'
function foo(x, y)
    out1 = 2 * x
    out2 = 3 * y
    return out1, out2
end
function bar(y)
    out1 = y .^ 2
    out2 = 4 * y
    return out1, out2
end
)r'   r(   r   r1   r2   r*   s       r   #test_jl_multifcns_per_file_w_headerru     s    1Q3!*%1ac{';=IYEBF!9Q<8###AYq\F(5+<+<< @ 	 " r    c                      SS[         -  S[        -  /4S[        S-  S[        -  /4/n [        U SSSSS	9u  nUS
   S:X  d   eg )Nr`   rJ   rZ   rp   rq   r#   bazF)prefixr   r   r   zbaz.jlrr   )r+   r,   s     r   test_jl_filename_match_prefixry   /  sW    1Q3!*%1ac{';=Iiu "GF!9   r    c                      [        [        S[        -  [        [        -  //5      n S[        [        SSS5      U 5      4n[        USSSS9nUS	   S	   S
:X  d   eUS	   S   nSnX4:X  d   eg )NrJ   r"   myout1r%   rZ   r#   Fr   r   r$   Kfunction test(x, y, z)
    myout1 = [x 2 * y pi * z]
    return myout1
end
)r   r'   r(   r   r)   r   r   r   )e2r+   r,   r   r-   s        r   test_jl_matrix_namedr~   6  s    	!QqS"Q$ 	!B,xA">CDIYUCF!9Q<9$$$AYq\F	  r    c                      [        SSS5      n [        [        S[        -  [        [
        -  //5      nS[        XSS94n[        USSSS	9u  nUS   nS
nXE:X  d   eg )Nr{   r%   rZ   rJ   r"   Frf   r#   r   r|   )r   r   r'   r(   r   r)   r   r   )r{   r}   r+   r,   r   r-   s         r   test_jl_matrix_named_matsymr   E  so    (Aq)F	!QqS"Q$ 	!B&u=>IieDGFAYF	  r    c                      [        [        [        [        -   S//5      n SU 4n[        USSSS9u  nUS   nSnX4:X  d   eg )NrZ   r"   r#   Fr   r%   z?function test(x, y)
    out1 = [x x + y 3]
    return out1
end
)r   r'   r(   r   r5   s        r   test_jl_matrix_output_autonamer   T  sT    AqsA;- DIieDGFAYF	  r    c                     [         [        -   n [        S[         -  S[        -  S[        -  //5      n[        [         /[        /[        //5      n[        [         [        /[        S//5      nSXX#44n[	        USSSS9u  nUS   nSnXg:X  d   eg )	NrJ      r"   r#   Fr   r%   zfunction test(x, y, z)
    out1 = x + y
    out2 = [2 * x 2 * y 2 * z]
    out3 = [x, y, z]
    out4 = [x  y;
    z 16]
    return out1, out2, out3, out4
end
)r'   r(   r   r)   r   )e1r}   e3e4r+   r,   r   r-   s           r    test_jl_matrix_output_autoname_2r   b  s    
a%B	!A#qsAaC!	"B	!qcA3	 B	!Q!R!	"B"")*IieDGFAYF	  r    c            	      8   [        S5      u  p[        SSS5      n[        U[        [        -   [
        -  5      n[        U[        SS[        //5      5      n[        U S[        -  5      nSX4U/4n[        USSS[        [
        [        4S	9u  nUS   nS
n	X:X  d   eg )NzB,CrM   r%   rZ   rJ   r"   r#   FrS   zafunction test(x, z, y)
    C = z .* (x + y)
    A = [1 2 x]
    B = 2 * x
    return C, A, B
end
)r   r   r   r'   r(   r)   r   r   )
rN   rO   rM   rE   rF   rP   r+   r,   r   r-   s
             r   $test_jl_results_matrix_named_orderedr   w  s    5>DAS!QAQQ	"EQAq	{+,EQ!E%./Iie()1ay2GFAYF	  r    c            	         [        SSS5      n [        SSS5      n[        SSS5      n[        SSS5      nS[        XS	S S 24   5      [        X SS S 24   5      [        X0S S 2S4   5      /4n[        US
SSS9u  nUS   nSnXg:X  d   eg )NrM   rJ   rZ   rN   r%   rO   Dr"   r   r#   Fr   zUfunction test(A)
    B = A[1,:]
    C = A[2,:]
    D = A[:,3]
    return B, C, D
end
r   r   r   )rM   rN   rO   r   r+   r,   r   r-   s           r   test_jl_matrixsymbol_slicer     s    S!QAS!QAS!QAS!QA(11g."11g."11g.0 1I ieDGFAYF	  r    c            	          [        SSS5      n [        SSS5      n[        SSS5      nS[        XSS2SS24   5      [        X SS2S	S24   5      /4n[        US
SSS9u  nUS	   nSnXV:X  d   eg )NrM   rZ   rq   rN   rJ   rO   r"   r   r%   r#   Fr   zKfunction test(A)
    B = A[1:2,1:2]
    C = A[1:2,2:3]
    return B, C
end
r   rM   rN   rO   r+   r,   r   r-   s          r   test_jl_matrixsymbol_slice2r     s    S!QAS!QAS!QA(1!QqSk2"1!QqSk24 5IieDGFAYF	  r    c            
          [        SSS5      n [        SSS5      n[        SSS5      nS[        XS	S 2S
S S24   5      [        X S S S2S S S24   5      /4n[        USSSS9u  nUS
   nSnXV:X  d   eg )NrM         rN   rJ   rO   rq   r"      r%   rZ   r#   Fr   zYfunction test(A)
    B = A[7:end,2:3:end]
    C = A[1:2:end,1:3:end]
    return B, C
end
r   r   s          r   test_jl_matrixsymbol_slice3r     s    S!QAS!QAS!QA(1ADqDk2"1!SqSk24 5IieDGFAYF	  r    c                      [        SSS5      n [        SSS5      nS[        XSS S 24   5      U SS S 24   U S S 2S4   U S S 2S4   /4n[        USS	S	S
9u  nUS   nSnXE:X  d   eg )NrM   rJ   rZ   rN   r%   r"   r   r#   Fr   zyfunction test(A)
    B = A[1,:]
    out2 = A[2,:]
    out3 = A[:,1]
    out4 = A[:,2]
    return B, out2, out3, out4
end
r   )rM   rN   r+   r,   r   r-   s         r   #test_jl_matrixsymbol_slice_autonamer     s    S!QAS!QA(1!f-q1vq1vq1vFGIieDGFAYF	  r    c            	      0   SSK Jn Jn  SSKJn  U" SSS9u  p4U " S5      nU " S5      nU " S	5      nU" S
U5      nU" SU5      n	[        S[        Xx   XXU	4   Xi   -  5      4SSSS9u  n
U
S   nSnXSSU< SU	< S30-  :X  d  XSSU< SU	< S30-  :X  d   eg g )Nr   IndexedBaseIdxr   zn mTintegerrM   r'   r(   ijmat_vec_multr#   Fr   r%   zfunction mat_vec_mult(y, A, m, n, x)
    for i = 1:m
        y[i] = 0
    end
    for i = 1:m
        for j = 1:n
            y[i] = %(rhs)s + y[i]
        end
    end
    return y
end
rhszA[,z	] .* x[j]z
x[j] .* A[]sympy.tensorr   r   sympy.core.symbolr   r   r   )r   r   r   nmrM   r'   r(   r   r   r,   r   r-   s                r   test_jl_loopsr     s    
 .)5$'DACACACACACA~r!$Q$'=>"%1GFAYF
	  %q!)D!EEE%q!)D!EEEG FE Fr    c                     SSK Jn Jn  SSKJn  U" SSS9u  p4pVU " S5      nU " S5      nU " S	5      n	U" S
U5      n
U" SU5      nU" SU5      nU" SU5      n[        S[        X   XX4   XzXU4   -  5      4SSSS9u  nUS   nSnUU:X  d   eg )Nr   r   r   zn m o pTr   rM   rN   r(   r   r   kltensorthingr#   Fr   r%   a-  function tensorthing(y, A, B, m, n, o, p)
    for i = 1:m
        y[i] = 0
    end
    for i = 1:m
        for j = 1:n
            for k = 1:o
                for l = 1:p
                    y[i] = A[i,j,k,l] .* B[j,k,l] + y[i]
                end
            end
        end
    end
    return y
end
r   )r   r   r   r   r   oprM   rN   r(   r   r   r   r   r,   r   r-   s                    r   *test_jl_tensor_loops_multiple_contractionsr     s    -)D1JA!CACACACACACACA}bqAz!qQJ-/G&HIe5:GFAYF	 " Xr    c                  r    [        [        [        S-  5      n SU 4n[        USSSS9u  nUS   nSnX4:X  d   eg )NrJ   mysqrr#   Fr   r%   z2function mysqr(x)
    x = x .^ 2
    return x
end
)r   r'   r   r5   s        r   test_jl_InOutArgumentr     sN    Aq!tD$IieDGFAYF	  r    c                     [        [        [        S-  [        -   5      n SU 4n[        USSS[        [        4S9u  nUS   nSnX4:X  d   e[        [        [        S-  [        -   5      n SU 4n[        USSSS9u  nUS   nSnX4:X  d   eg )	NrJ   r"   r#   FrS   r%   z8function test(x, y)
    x = x .^ 2 + y
    return x
end
r   )r   r'   r(   r   r5   s        r   test_jl_InOutArgument_orderr   )  s    Aq!tax DIi!aU<GFAYF	  Aq!tax DIieDGFAYF	  r    c                      [        S5      n SU " [        5      R                  [        5      [        R                  /4n[        USSSS9u  nUS   nSnX4:X  d   eg )Nfr"   r#   Fr   r%   zfunction test(x)
    # unsupported: Derivative(f(x), x)
    # unsupported: zoo
    out1 = Derivative(f(x), x)
    out2 = zoo
    return out1, out2
end
)r
   r'   diffr   ComplexInfinityr   )r   r+   r,   r   r-   s        r   test_jl_not_supportedr   E  s_    A!A$))A,(9(9:;IieDGFAYF	  r    c            	          [        S5      u  pp#[        SX-  4SSSU4S9nUS   S   nSnXV:X  d   e[        SX-  U-   4SSSX4X#4S	9nUS   S   nS
nXV:X  d   eg )Nzx y z tr   r#   F)r   r   global_varsr   r%   z4function f(x)
    out1 = x .* y
    return out1
end
)r   r   r@   r   z;function f(x, y)
    out1 = x .* y + z
    return out1
end
)r   r   )r'   r(   r)   tr,   r   r-   s          r   test_global_vars_octaver   V  s    #JA!c13Ze"#'FAYq\F	  c13q5\75()vA6CFAYq\F	  r    );ior   
sympy.corer   r   r   r   r   r	   r
   sympy.core.relationalr   $sympy.functions.elementary.piecewiser   sympy.matricesr   r   sympy.utilities.codegenr   r   r   sympy.testing.pytestr   r1   r'   r(   r)   r   r.   r3   r7   r9   r=   rC   rG   rQ   rT   r]   rb   rl   rn   rs   ru   ry   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r    r   <module>r      s     H H H * : / G G &  '
1a&
  $ "(**(   0(2!***$$$GB F8"r    