U
    iâËd'  ã                   @   sÂ  d Z ddlZddlZddlmZmZmZ ddlm	Z	 ddl
mZ ddlmZmZ eddd�d	d
„ ƒZdd„ Zeddd�dd„ ƒZeddd�dd„ ƒZedd�dd„ ƒZeddd�dd„ ƒZeddd�dd„ ƒZeddd�dd„ ƒZeddd�dd„ ƒZeddd�dd„ ƒZeddd�d d!„ ƒZeddd�d"d#„ ƒZeddd�d$d%„ ƒZeddd�d&d'„ ƒZeZeddd�d(d'„ ƒZeZd)d*„ Zed+ƒZ ed,ƒZ!ed-ƒZ"ed.ƒZ#e $d/¡Z%eddd�d0d1„ ƒZ&d2Z'e (d3ej)fd4ej*fg¡Z+ej(d3ej)fd4ej*fgdd5�Z,ej-d6e+d7�Z.e/e.j0ƒD ]&Z1e1d2 e.e1 d3< e1d8 e.e1 d4< �qej2e.e,d7�Z3eddd�d9d:„ ƒZ4G d;d<„ d<eƒZ5edd=�d>d?„ ƒZ6edd=�d@dA„ ƒZ7edd=�dBdC„ ƒZ8dDdE„ Z9eddddF�dGdH„ ƒZ:dS )Izƒ
This file will be copied to a temporary directory in order to
exercise caching compiled Numba functions.

See test_dispatcher.py.
é    N)ÚjitÚgenerated_jitÚprange)Útypes©Úc_sin)ÚTestCaseÚcaptured_stderrT©ÚcacheÚnopythonc                 C   s   | S ©N© ©Úxr   r   úS/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/tests/cache_usecases.pyÚsimple_usecase   s    r   c                 C   s   t | ƒS r   )r   r   r   r   r   Úsimple_usecase_caller   s    r   c                 C   s   | | t  S r   ©ÚZ©r   Úyr   r   r   Úadd_usecase   s    r   )r   Zforceobjc                 C   s   t ƒ  | | t S r   )Úobjectr   r   r   r   r   Úadd_objmode_usecase    s    r   )r   c                 C   s   | | t  S r   r   r   r   r   r   Úadd_nocache_usecase&   s    r   c                 C   s"   t | tjƒrdd„ }ndd„ }|S )Nc                 S   s   | | S r   r   r   r   r   r   Úimpl.   s    zgenerated_usecase.<locals>.implc                 S   s   | | S r   r   r   r   r   r   r   1   s    )Ú
isinstancer   ÚComplex)r   r   r   r   r   r   Úgenerated_usecase+   s    
r   c                 C   s   | | t  S r   r   r   r   r   r   Úinner6   s    r    c                 C   s   t | | ƒS r   ©r    r   r   r   r   Úouter:   s    r"   Fc                 C   s   t | | ƒS r   r!   r   r   r   r   Úouter_uncached>   s    r#   c                 C   s$   t ƒ  d}t| ƒD ]}|| }q|S )Nr   )r   Úrange)ÚnÚresÚir   r   r   Ú
loopliftedC   s
    
r(   c                 C   s   t | ƒS r   r   r   r   r   r   Ú	use_c_sinL   s    r)   c                 C   s   t | ƒS r   )r)   r   r   r   r   Úuse_c_sin_nest1P   s    r*   c                 C   s   t | ƒS r   )r*   r   r   r   r   Úuse_c_sin_nest2T   s    r+   c                 C   s   | d S )Né   r   r   r   r   r   Úambiguous_functionY   s    r-   c                 C   s   | d S )Né   r   r   r   r   r   r-   _   s    c                    s   t ddd�‡ fdd„ƒ}|S )NTr
   c                    s   ˆ |  S r   r   )r   r   r   r   Úclosureg   s    zmake_closure.<locals>.closure)r   )r   r/   r   r   r   Úmake_closuref   s    
r0   é   é   é   é	   i@B c                   C   s   t S r   )Úbiggier   r   r   r   Úuse_big_arrayu   s    r6   é   ÚaÚb)Úalignr,   )Údtypeg     @E@c                 C   s   | | S r   r   )Úaryr'   r   r   r   Úrecord_return‰   s    r=   c                   @   s   e Zd ZdZdd„ ZdS )Ú_TestModulez¥
    Tests for functionality of this module's functions.
    Note this does not define any "test_*" method, instead check_module()
    should be called by hand.
    c                 C   s¤   |   | dd¡d¡ |   | dd¡d¡ |   | dd¡d¡ |   | dd¡d¡ |   | dd¡d¡ | |jd¡}|   t|ƒd¡ | |j	d¡}|   t|ƒd¡ d S )Nr,   r1   r.   r7   )r,   g     ÀE@)
ZassertPreciseEqualr   r   r#   r"   r   r=   Ú
packed_arrÚtupleÚaligned_arr)ÚselfÚmodZ
packed_recZaligned_recr   r   r   Úcheck_module•   s    z_TestModule.check_moduleN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rD   r   r   r   r   r>   Ž   s   r>   )r   c                 C   s   | |  S r   r   r   r   r   r   Úfirst_class_function_mul¢   s    rI   c                 C   s   | |  S r   r   r   r   r   r   Úfirst_class_function_add§   s    rJ   c                 C   s   | |ƒS r   r   )Úfr   r   r   r   Úfirst_class_function_usecase¬   s    rL   c                  C   s   t jt } tƒ  | ¡ d S r   )ÚsysÚmodulesrE   r>   rD   )rC   r   r   r   Ú	self_test±   s    
rO   )Úparallelr   r   c                 C   s   | |  |  S r   r   )r<   r   r   r   Úparfor_usecase¶   s    rQ   );rH   rM   ÚnumpyÚnpZnumbar   r   r   Z
numba.corer   Znumba.tests.ctypes_usecasesr   Znumba.tests.supportr   r	   r   r   r   r   r   r   r    r"   r#   r(   r)   r*   r+   r-   Zrenamed_function1Zrenamed_function2r0   Zclosure1Zclosure2Zclosure3Zclosure4Zaranger5   r6   r   r;   Zint8Zfloat64Zpacked_record_typeZaligned_record_typeÚemptyr?   r$   Úsizer'   ÚarrayrA   r=   r>   rI   rJ   rL   rO   rQ   r   r   r   r   Ú<module>   s‚   



































