U
    ZÊ¹j�  ã                   @   sÀ   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 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d„ Zdd„ Ze	dd„ ƒZdS )é    N)Úimport_module)Úccode)Úcompile_link_import_stringsÚhas_c)Ú	may_xfail)Úskip)	ÚFunctionDefinitionÚFunctionPrototypeÚVariableÚPointerÚrealÚ
AssignmentÚintegerÚ	CodeBlockÚWhile)ÚvoidÚPreIncrement)Úrender_as_source_fileÚcythonÚnumpyc                  C   st   t dtƒtdtƒtdtƒf } \}}}t dtƒ}t||k t|| || ƒt|ƒgƒ}t|jdd�|ƒ}t	t
d| |ƒS )NÚnÚinpÚoutÚir   )ÚvalueZour_test_function)r
   r   r   r   r   r   r   r   Zas_Declarationr   r   )Zdeclarsr   r   r   r   ZwhlÚbody© r   úd/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/codegen/tests/test_applications.pyÚ	_mk_func1   s
    &
$r   c                 C   sN   t | ddid�}tt | ¡ƒ}td|fdd d¡d j|| jd	d
�fg|d�S )NZ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	   Zfrom_FunctionDefinitionr   ÚformatÚname)Zfuncdefr&   Zcode_strr"   r   r   r   Ú_render_compile_import   s    
ÿ  üþør)   c               	   C   s„   t stdƒ tƒ stdƒ ts&tdƒ d } t ¡ �H}ttƒ |d�\}} t  d¡}t  	|¡}| 
||¡ t  ||¡svt‚W 5 Q R X d S )Nznumpy not installed.zNo C compiler found.zCython not found.r%   g      $@)Únpr   r   r   ÚtempfileÚTemporaryDirectoryr)   r   ZarangeZ
empty_likeZ_our_test_functionZallcloseÚAssertionError)ÚinfoÚfolderÚmodr   r   r   r   r   Útest_copying_function*   s    


r1   ) r+   Zsympy.externalr   Zsympy.printing.codeprinterr   Zsympy.utilities._compilationr   r   Z!sympy.utilities._compilation.utilr   Zsympy.testing.pytestr   Zsympy.codegen.astr   r	   r
   r   r   r   r   r   r   Zsympy.codegen.cnodesr   r   Zsympy.codegen.cutilsr   r   r*   r   r)   r1   r   r   r   r   Ú<module>   s   ,