
    Xh                     
   d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	 d dl
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mZ d d	lmZ  ed
          Z ed          Zd Zd Ze	 ed          d                         Z dS )    N)import_module)ccode)compile_link_import_stringshas_c)	may_xfail)skipskip_under_pyodide)	FunctionDefinitionFunctionPrototypeVariablePointerreal
Assignmentinteger	CodeBlockWhile)voidPreIncrement)render_as_source_filecythonnumpyc                     t          dt                    t          dt                    t          dt                    fx} \  }}}t          dt                    }t	          ||k     t          ||         ||                   t          |          g          }t          |                    d          |          }t          t          d| |          S )Nninpoutir   )valueour_test_function)r   r   r   r   r   r   r   r   as_Declarationr
   r   )declarsr   r   r   r   whlbodys          w/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/sympy/codegen/tests/test_applications.py	_mk_func1r$      s    $S'22GE44H4H'RWY]J^J^^^GkacgA
!jQQ00,q//B
C
CCQ%%A%..44Dd$7$GGG    c           	          t          | ddi          }t          t          j        |                     }t	          d|fdd                    d          dz                       || j        d	
          fg|          S )NcontractF)settingszour_test_func.cz_our_test_func.pyxz#cython: language_level={}
3zfcdef extern {declar}
def _{fname}({typ}[:] inp, {typ}[:] out):
    {fname}(inp.size, &inp[0], &out[0])double)declarfnametyp	build_dir)r   r   r   from_FunctionDefinitionr   formatname)funcdefr/   code_strr+   s       r#   _render_compile_importr5      s    $W
E7JKKKH$<WEEFFF&	H%	 > E Ec J J!J!J LR6+18 LR L" L"	#(    r%   z,Emscripten does not support process spawningc                     t           st          d           t                      st          d           t          st          d           d } t	          j                    5 }t          t                      |          \  }} t                               d          }t           	                    |          }|
                    ||           t                               ||          sJ 	 d d d            d S # 1 swxY w Y   d S )Nznumpy not installed.zNo C compiler found.zCython not found.r.   g      $@)npr   r   r   tempfileTemporaryDirectoryr5   r$   arange
empty_like_our_test_functionallclose)infofoldermodr   r   s        r#   test_copying_functionrA   *   s/     %#$$$77 %#$$$ " !!!D		$	&	& %&*9;;&III	TiioommC  sC((({{3$$$$$$% % % % % % % % % % % % % % % % % %s   BC55C9<C9)!r8   sympy.externalr   sympy.printing.codeprinterr   sympy.utilities._compilationr   r   !sympy.utilities._compilation.utilr   sympy.testing.pytestr   r	   sympy.codegen.astr
   r   r   r   r   r   r   r   r   sympy.codegen.cnodesr   r   sympy.codegen.cutilsr   r   r7   r$   r5   rA    r%   r#   <module>rK      s    ( ( ( ( ( ( , , , , , , K K K K K K K K 7 7 7 7 7 7 9 9 9 9 9 9 9 9                      4 3 3 3 3 3 3 3 6 6 6 6 6 6	x	 	 ]7H H H   BCC% % DC % % %r%   