§
    PŠtjlH  ã                   ó„  — d dl mZ d dl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mZ d dlmZmZmZ d dlmZ d dlZ ed	¦  «        \  ZZZd
„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'ed„ ¦   «         Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d „ Z1d!„ Z2d"„ Z3d#„ Z4d$„ Z5d%„ Z6d&„ Z7d'„ Z8d(„ Z9d)„ Z:dS )*é    )ÚStringIO)ÚSÚsymbolsÚEqÚpiÚCatalanÚ
EulerGammaÚFunction)ÚEquality)Ú	Piecewise)ÚMatrixÚMatrixSymbol)ÚJuliaCodeGenÚcodegenÚmake_routine)ÚXFAILNzx,y,zc                  óª   — t          ¦   «         } t          ¦   «         }|                      g |ddd¬¦  «         |                     ¦   «         }|dk    sJ ‚d S )NÚfileF©ÚheaderÚemptyÚ )r   r   Údump_jlÚgetvalue)Úcode_genÚoutputÚsources      úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/utilities/tests/test_codegen_julia.pyÚtest_empty_jl_coder      sS   € Ý‰~Œ~€HÝ‰ZŒZ€FØ×Ò�R˜ °¸UÐÑCÔCÐCØ�_Š_ÑÔ€FØ�RŠ<ˆ<ˆ<ˆ<ˆ<ˆ<ó    c                  ó¢   — dt           t          z   t          z  f} t          | ddd¬¦  «        \  }|d         dk    sJ ‚|d         }d}||k    sJ ‚d S )	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.      sm   € Ø�!�a™%¥™Ð#€IÝ�i °¸eÐDÑDÔD�G€FØ�!Œ9˜	Ò!Ð!Ð!Ð!Ø�AŒY€Fð	ð ð �XÒÐÐÐÐÐr    c                  óÂ   — dt           t          z   t          z  f} t          | ddd¬¦  «        \  }|d         dk    sJ ‚|d         }d	t          j        z   d
z   }||k    sJ ‚d S )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   %   s~   € Ø�!�a™%¥™Ð#€IÝ�i °¸UÐCÑCÔC�G€FØ�!Œ9˜	Ò!Ð!Ð!Ð!Ø�AŒY€Fà(­5Ô+<Ñ<ð @ñ 	ð ð �XÒÐÐÐÐÐr    c                  ó    — t          t          t          t          z   ¦  «        } d| f}t	          |ddd¬¦  «        \  }|d         }d}||k    sJ ‚d S )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   sb   € Ý•A��A™ÑÔ€DØ˜�€IÝ�i °¸eÐDÑDÔD�G€FØ�AŒY€Fð	ð ð �XÒÐÐÐÐÐr    c                  óv   — dt           t          z  f} t          | ddd¬¦  «        \  }|d         }d}||k    sJ ‚d S )Nr"   r#   Fr   r%   z<function test()
    out1 = pi ^ catalan
    return out1
end
)r   r   r   r*   s       r   Útest_jl_numbersymbolr9   F   sT   € Ø��W™Ð%€IÝ�i °¸eÐDÑDÔD�G€FØ�AŒY€Fð	ð ð �XÒÐÐÐÐÐr    c                  ó†   — dt           t          z  t          gf} t          | dddd¬¦  «        \  }|d         }d}||k    sJ ‚d S )Nr"   r#   F©r   r   Úinliner%   zœfunction 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   sd   € ð �"�g™+¥zÐ2Ð3€IÝ�i °Ø!¨%ð1ñ 1ô 1�G€Fà�AŒY€Fð	ð ð �XÒÐÐÐÐÐr    c                  ó  — t           t          z   } t          d| t          t           t          gd¬¦  «        }t	          ¦   «         }t          ¦   «         }|                     |g|ddd¬¦  «         |                     ¦   «         }d}||k    sJ ‚d S )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   sŒ   € Ý�q‰5€DÝ˜6 4½A½qÅ!¸9ÈwÐWÑWÔW€GÝ‰~Œ~€HÝ‰ZŒZ€FØ×Ò�g�Y ¨°uÀEÐÑJÔJÐJØ�_Š_ÑÔ€Fð	ð ð �XÒÐÐÐÐÐr    c                  ó¼   — t           t          z   t          z  } t           t          z
  t          z  }d| |gf}t          |ddd¬¦  «        \  }|d         }d}||k    sJ ‚d S )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   sn   € å•‰U•A‰I€EÝ•‰U•A‰I€EØ˜% ˜Ð(€IÝ�i °¸eÐDÑDÔD�G€FØ�AŒY€Fð	ð ð �XÒÐÐÐÐÐr    c                  óL  — t          d¦  «        \  } }}t          |t          t          z   t          z  ¦  «        }t          | t          t          z
  t          z  ¦  «        }t          |dt          z  ¦  «        }d|||gf}t          |ddd¬¦  «        \  }|d         }d}	||	k    sJ ‚d S )	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ÑÔ�G€A€qˆ!Ý�Q��Q™¥™	Ñ"Ô"€EÝ�Q��Q™¥™	Ñ"Ô"€EÝ�Q˜�!™ÑÔ€EØ˜% ¨Ð.Ð/€IÝ�i °¸eÐDÑDÔD�G€FØ�AŒY€Fð	ð ð �XÒÐÐÐÐÐr    c            	      ó¢  — t          d¦  «        \  } }}t          |t          t          z   t          z  ¦  «        }t          | t          t          z
  t          z  ¦  «        }t          |dt          z  ¦  «        }d|||gf}t          |dddt          t          t          f¬¦  «        }|d         d         dk    sJ ‚|d         d	         }d
}	||	k    sJ ‚d S )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ÑÔ�G€A€qˆ!Ý�Q��Q™¥™	Ñ"Ô"€EÝ�Q��Q™¥™	Ñ"Ô"€EÝ�Q˜�!™ÑÔ€EØ˜% ¨Ð.Ð/€IÝ�Y °¸UÝ()­1­a yð2ñ 2ô 2€Fà�!Œ9�QŒ<˜9Ò$Ð$Ð$Ð$Ø�AŒY�qŒ\€Fð	ð ð �XÒÐÐÐÐÐr    c                  óè  — ddl m} m}m} d |t          ¦  «         | t
          ¦  «        z    |t          ¦  «        z   dz                       ¦   «          |  |  |  |  |  |  |  | t          t
          z   t          z   ¦  «        ¦  «        ¦  «        ¦  «        ¦  «        ¦  «        ¦  «        ¦  «        gf}t          |ddd¬¦  «        }|d         d         dk    sJ ‚|d         d	         }d
}||k    sJ ‚d S )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ÐHÐHÐHÐHÐHÐHÐHÐHØØ�•A‘”˜˜�Q™œ‘ # #¥a¡&¤&Ñ(¨1Ñ,×4Ò4Ñ6Ô6ØˆC���C�C˜˜˜C˜C   C C¨¨­Aµ©EµA©I©¬Ñ$7Ô$7Ñ 8Ô 8Ñ9Ô9Ñ:Ô:Ñ;Ô;Ñ<Ô<Ñ=Ô=ðð€Iõ �Y °¸UÐCÑCÔC€FØ�!Œ9�QŒ<˜=Ò(Ð(Ð(Ð(Ø�AŒY�qŒ\€Fð	ð ð �XÒÐÐÐÐÐr    c                  ól  — ddl m} m} t          d¦  «        }d | dt          z  ¦  «        t          t           |t          ¦  «        ¦  «         | t          ¦  «        t          | |dt          z  ¦  «        ¦  «        gf}t          |ddd¬¦  «        \  }|d         d	k    sJ ‚|d
         }d}||k    sJ ‚d S )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ÐCÐCÐCÐCÐCÐCÐCÝ�‰Œ€AØ˜˜˜Q�q™S™œ¥8­A¨s¨sµ1©v¬vÑ#6Ô#6¸¸½A¹¼ÅÈÈCÈCÐPQÕRSÑPSÉHÌHÑ@UÔ@UÐVÐW€IÝ�i °¸eÐDÑDÔD�G€FØ�!Œ9˜Ò Ð Ð Ð Ø�AŒY€Fð	ð ð �XÒÐÐÐÐÐr    c                  óè   — t          dt          dk     ft          dz  t          dk    ft           dz   t          dk    fdd¬¦  «        } d| f}t          |d	dd¬
¦  «        \  }|d         }d}||k    sJ ‚d S )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   Ù   sŠ   € Ý	�A•q˜2’v�;¥ A¡¥q¨A¢v µ!°°A±µq¸1²u°¸yÐSXÐ	YÑ	YÔ	Y€BØ˜2�€IÝ�i °¸eÐDÑDÔD�G€FØ�AŒY€Fð	ð ð �XÒÐÐÐÐÐr    c                  óæ   — t          dt          dk     ft          dz  t          dk    ft           dz   t          dk    fd¦  «        } d| f}t          |dddd¬	¦  «        \  }|d         }d
}||k    sJ ‚d S )Nr   rd   rJ   r%   re   rh   r#   Fr;   z½function 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   é   s�   € õ 
�A•q˜2’v�;¥ A¡¥q¨A¢v µ!°°A±µq¸1²u°¸yÑ	IÔ	I€BØ˜2�€IÝ�i °¸eØ"ð$ñ $ô $�G€Fà�AŒY€Fð	ð ð �XÒÐÐÐÐÐr    c                  óÜ   — ddt           z  dt          z  gfdt          dz  dt          z  gfg} t          | ddd¬¦  «        }|d	         d	         d
k    sJ ‚|d	         d         }d}||k    sJ ‚d S )Nr`   rJ   rZ   Úbaré   r#   Fr   r   ra   r%   zœ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   r*   s       r   Útest_jl_multifcns_per_filers     s�   € Ø˜1�Q™3 ¥!¡˜*Ð%¨µ°1±°a½±c¨{Ð';Ð=€IÝ�Y °¸UÐCÑCÔC€FØ�!Œ9�QŒ<˜8Ò#Ð#Ð#Ð#Ø�AŒY�qŒ\€Fð		ð ð �XÒÐÐÐÐÐr    c                  óü   — ddt           z  dt          z  gfdt          dz  dt          z  gfg} t          | ddd¬	¦  «        }|d
         d
         dk    sJ ‚|d
         d         }dt          j        z   dz   }||k    sJ ‚d S )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ž   € Ø˜1�Q™3 ¥!¡˜*Ð%¨µ°1±°a½±c¨{Ð';Ð=€IÝ�Y °¸EÐBÑBÔB€FØ�!Œ9�QŒ<˜8Ò#Ð#Ð#Ð#Ø�AŒY�qŒ\€Fà(­5Ô+<Ñ<ð @ñ 	ð ð" �XÒÐÐÐÐÐr    c                  ó¦   — ddt           z  dt          z  gfdt          dz  dt          z  gfg} t          | dddd¬	¦  «        \  }|d
         dk    sJ ‚d S )Nr`   rJ   rZ   rp   rq   r#   ÚbazF)Úprefixr   r   r   zbaz.jlrr   )r+   r,   s     r   Útest_jl_filename_match_prefixry   /  sj   € Ø˜1�Q™3 ¥!¡˜*Ð%¨µ°1±°a½±c¨{Ð';Ð=€IÝ�i °¸uØ ð"ñ "ô "�G€Fà�!Œ9˜Ò Ð Ð Ð Ð Ð r    c                  ó   — t          t          dt          z  t          t          z  gg¦  «        } dt          t          ddd¦  «        | ¦  «        f}t          |ddd¬¦  «        }|d	         d	         d
k    sJ ‚|d	         d         }d}||k    sJ ‚d S )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Ÿ   € Ý	•!�Q•q‘S�"�Q™$�Ð Ñ	!Ô	!€BØ�¥,¨x¸¸AÑ">Ô">ÀÑCÔCÐD€IÝ�Y °¸UÐCÑCÔC€FØ�!Œ9�QŒ<˜9Ò$Ð$Ð$Ð$Ø�AŒY�qŒ\€Fð	ð ð �XÒÐÐÐÐÐr    c                  óø   — t          ddd¦  «        } t          t          dt          z  t          t
          z  gg¦  «        }dt          | |d¬¦  «        f}t          |ddd¬	¦  «        \  }|d         }d
}||k    sJ ‚d S )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  sŽ   € Ý˜( A qÑ)Ô)€FÝ	•!�Q•q‘S�"�Q™$�Ð Ñ	!Ô	!€BØ� &¨"°uÐ=Ñ=Ô=Ð>€IÝ�i °¸eÐDÑDÔD�G€FØ�AŒY€Fð	ð ð �XÒÐÐÐÐÐr    c                  ó¦   — t          t          t          t          z   dgg¦  «        } d| f}t          |ddd¬¦  «        \  }|d         }d}||k    sJ ‚d S )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  sh   € Ý•A•q�‘s˜A�;�-Ñ Ô €DØ˜�€IÝ�i °¸eÐDÑDÔD�G€FØ�AŒY€Fð	ð ð �XÒÐÐÐÐÐr    c                  óh  — t           t          z   } t          dt           z  dt          z  dt          z  gg¦  «        }t          t           gt          gt          gg¦  «        }t          t           t          gt          dgg¦  «        }d| |||ff}t	          |ddd¬¦  «        \  }|d         }d}||k    sJ ‚d S )	NrJ   é   r"   r#   Fr   r%   zžfunction 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�‘s˜A�a™C�Ð!Ñ	"Ô	"€BÝ	•!�•q�c�A˜3�Ñ	 Ô	 €BÝ	•!•Q��!˜R˜Ð!Ñ	"Ô	"€BØ˜"˜b " bÐ)Ð*€IÝ�i °¸eÐDÑDÔD�G€FØ�AŒY€Fð	ð ð �XÒÐÐÐÐÐr    c            	      ó”  — t          d¦  «        \  } }t          ddd¦  «        }t          |t          t          z   t
          z  ¦  «        }t          |t          ddt          gg¦  «        ¦  «        }t          | dt          z  ¦  «        }d|||gf}t          |dddt          t
          t          f¬	¦  «        \  }|d         }d
}	||	k    sJ ‚d S )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‰>Œ>�D€A€qÝ�S˜!˜QÑÔ€AÝ�Q��Q™¥™	Ñ"Ô"€EÝ�Q�  A¥q 	˜{Ñ+Ô+Ñ,Ô,€EÝ�Q˜�!™ÑÔ€EØ˜% ¨Ð.Ð/€IÝ�i °¸eÝ()­1­a yð2ñ 2ô 2�G€Fà�AŒY€Fð	ð ð �XÒÐÐÐÐÐr    c            	      óz  — t          ddd¦  «        } t          ddd¦  «        }t          ddd¦  «        }t          ddd¦  «        }dt          || d	d d …f         ¦  «        t          || dd d …f         ¦  «        t          || d d …df         ¦  «        gf}t          |d
dd¬¦  «        \  }|d         }d}||k    sJ ‚d S )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 a¨¨1¨1¨1¨¤gÑ.Ô.Ý" 1 a¨¨1¨1¨1¨¤gÑ.Ô.Ý" 1 a¨¨¨¨1¨¤gÑ.Ô.ð0ð 1€Iõ �i °¸eÐDÑDÔD�G€FØ�AŒY€Fð	ð ð �XÒÐÐÐÐÐr    c            	      ó.  — t          ddd¦  «        } t          ddd¦  «        }t          ddd¦  «        }dt          || dd…dd…f         ¦  «        t          || dd…d	d…f         ¦  «        gf}t          |d
dd¬¦  «        \  }|d	         }d}||k    sJ ‚d S )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 a¨¨!¨¨Q¨q¨S¨¤kÑ2Ô2Ý" 1 a¨¨!¨¨Q¨q¨S¨¤kÑ2Ô2ð4ð 5€Iå�i °¸eÐDÑDÔD�G€FØ�AŒY€Fð	ð ð �XÒÐÐÐÐÐr    c            
      ó4  — t          ddd¦  «        } t          ddd¦  «        }t          ddd¦  «        }dt          || d	d …d
d d…f         ¦  «        t          || d d d…d d d…f         ¦  «        gf}t          |ddd¬¦  «        \  }|d
         }d}||k    sJ ‚d S )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 a¨¨¨¨A¨D¨q¨D¨¤kÑ2Ô2Ý" 1 a¨¨¨!¨¨S¨S¨q¨S¨¤kÑ2Ô2ð4ð 5€Iå�i °¸eÐDÑDÔD�G€FØ�AŒY€Fð	ð ð �XÒÐÐÐÐÐr    c                  ó  — t          ddd¦  «        } t          ddd¦  «        }dt          || dd d …f         ¦  «        | dd d …f         | d d …df         | d d …df         gf}t          |dd	d	¬
¦  «        \  }|d         }d}||k    sJ ‚d S )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 a¨¨!¨!¨!¨¤fÑ-Ô-¨q°°1°1°1°¬v°q¸¸¸¸1¸´v¸qÀÀÀÀ1À¼vÐFÐG€IÝ�i °¸eÐDÑDÔD�G€FØ�AŒY€Fð	ð ð �XÒÐÐÐÐÐr    c            	      ó�  — ddl m} m} ddlm}  |dd¬¦  «        \  }} | d¦  «        } | d¦  «        } | d	¦  «        } |d
|¦  «        } |d|¦  «        }	t          dt          ||         |||	f         ||	         z  ¦  «        fddd¬¦  «        \  }
|
d         }d}||dd|›d|	›d�iz  k    s||dd|›d|	›d�iz  k    sJ ‚d S d S )Nr   ©ÚIndexedBaseÚIdx©r   zn mT©ÚintegerrM   r'   r(   ÚiÚjÚmat_vec_multr#   Fr   r%   z¹function 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«   ×  sE  € ð
 .Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ø)Ð)Ð)Ð)Ð)Ð)Øˆ7�5 $Ð'Ñ'Ô'�D€A€qØˆ�CÑÔ€AØˆ�CÑÔ€AØˆ�CÑÔ€AØˆˆC�‰Œ€AØˆˆC�‰Œ€AÝ�~¥r¨!¨A¬$°°!°Q°$´¸¸!¼±Ñ'=Ô'=Ð>ÀØ"¨%ð1ñ 1ô 1�G€Fà�AŒY€Fð
	ð ð �h % %¸q¸q¸qÀ!À!À!Ð)DÐ!EÑEÒEÐEØ�h % %¸q¸q¸qÀ!À!À!Ð)DÐ!EÑEÒEÐEÐEðFÐEÐEØEÐEr    c                  óŽ  — ddl m} m} ddlm}  |dd¬¦  «        \  }}}} | d¦  «        } | d¦  «        } | d	¦  «        }	 |d
|¦  «        }
 |d|¦  «        } |d|¦  «        } |d|¦  «        }t          dt          |	|
         ||||f         ||
|||f         z  ¦  «        fddd¬¦  «        \  }|d         }d}||k    sJ ‚d S )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Ð1Ñ1Ô1�J€A€qˆ!ˆQØˆ�CÑÔ€AØˆ�CÑÔ€AØˆ�CÑÔ€AØˆˆC�‰Œ€AØˆˆC�‰Œ€AØˆˆC�‰Œ€AØˆˆC�‰Œ€AÝ�}¥b¨¨1¬¨q°°A°q°¬z¸!¸A¸qÀ!ÀQ¸J¼-Ñ/GÑ&HÔ&HÐIØ e°5ð:ñ :ô :�G€Fà�AŒY€Fð	ð ð" �XÒÐÐÐÐÐr    c                  ó–   — t          t          t          dz  ¦  «        } d| f}t          |ddd¬¦  «        \  }|d         }d}||k    sJ ‚d S )NrJ   Úmysqrr#   Fr   r%   z2function mysqr(x)
    x = x .^ 2
    return x
end
)r   r'   r   r5   s        r   Útest_jl_InOutArgumentrµ     sb   € Ý•A•q˜!‘tÑÔ€DØ˜$�€IÝ�i °¸eÐDÑDÔD�G€FØ�AŒY€Fð	ð ð �XÒÐÐÐÐÐr    c                  ó`  — t          t          t          dz  t          z   ¦  «        } d| f}t          |dddt          t          f¬¦  «        \  }|d         }d}||k    sJ ‚t          t          t          dz  t          z   ¦  «        } d| f}t          |ddd¬¦  «        \  }|d         }d}||k    sJ ‚d S )	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Ñ   € å•A•q˜!‘t�a‘xÑ Ô €DØ˜�€IÝ�i °Ø!µa½°Uð<ñ <ô <�G€Fà�AŒY€Fð	ð ð �XÒÐÐÐå•A•q˜!‘t�a‘xÑ Ô €DØ˜�€IÝ�i °¸eÐDÑDÔD�G€FØ�AŒY€Fð	ð ð �XÒÐÐÐÐÐr    c                  óÞ   — t          d¦  «        } d | t          ¦  «                             t          ¦  «        t          j        gf}t          |ddd¬¦  «        \  }|d         }d}||k    sJ ‚d S )NÚfr"   r#   Fr   r%   z—function 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  su   € Ý�‰Œ€AØ˜!˜!�A™$œ$Ÿ)š)¥A™,œ,­Ô(9Ð:Ð;€IÝ�i °¸eÐDÑDÔD�G€FØ�AŒY€Fð	ð ð �XÒÐÐÐÐÐr    c            	      ó  — t          d¦  «        \  } }}}t          d| |z  fddd|f¬¦  «        }|d         d         }d}||k    sJ ‚t          d| |z  |z   fddd| |f||f¬	¦  «        }|d         d         }d
}||k    sJ ‚d S )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Ò   € Ý˜Ñ#Ô#�J€A€qˆ!ˆQÝ�c˜1˜Q™3�Z °¸eØ"# ð'ñ 'ô '€Fà�AŒY�qŒ\€Fð	ð ð �XÒÐÐÐå�c˜1˜Q™3˜q™5�\ 7°5ÀØ()¨1 v¸A¸q¸6ðCñ Cô C€Fà�AŒY�qŒ\€Fð	ð ð �XÒÐÐÐÐÐ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Ð HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ *Ð *Ð *Ð *Ð *Ð *Ø :Ð :Ð :Ð :Ð :Ð :Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ &Ð &Ð &Ð &Ð &Ð &Ø €€€ð ˆ'�'Ñ
Ô
�€€1€aðð ð ðð ð ðð ð ð&ð ð ð
ð 
ð 
ð ðð ñ „ðð$ð ð ð ð ð ð"ð ð ð(ð ð ð*ð ð ð*ð ð ð(ð ð ð  ðð ñ „ðð0ð ð ð(ð ð ð2!ð !ð !ðð ð ðð ð ðð ð ðð ð ð*ð ð ð*ð ð ð*ð ð ð$ð ð ð$ð ð ð$Gð Gð GðB ð  ð  ðFð ð ðð ð ð8ð ð ð"ð ð ð ð r    