U
    iâËdlñ ã                   @   sx  d dl Zd dlmZ d dlZd dlmZmZ d dlmZm	Z	 d dl
mZmZ d dlmZ d dlmZmZmZ d dlmZmZmZ d dlZeZed	d
„ ƒZedd�dd„ ƒZedd�dd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd�dd„ ƒZedd�dd„ ƒZ edd „ ƒZ!e�s(ed!d"�d#d$„ ƒZ"eG d%d&„ d&ej#ƒƒZ$G d'd(„ d(e$ƒZ%eG d)d*„ d*e$ƒƒZ&e'd+k�rte (¡  dS ),é    N)Úcontextmanager)ÚnjitÚstencil)ÚtypesÚregistry)Úcompile_extraÚFlags)ÚParallelOptions)Úskip_parfors_unsupportedÚ_32bitÚskip_m1_llvm_rtdyld_failure)ÚLoweringErrorÚTypingErrorÚNumbaValueErrorc                 C   s$   d| d | d  | d  | d   S ©Nç      Ð?©r   é   ©r   r   ©r   éÿÿÿÿ©r   r   © ©Úar   r   úR/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/tests/test_stencils.pyÚstencil1_kernel   s    r   )©éûÿÿÿr   ©Úneighborhoodc                 C   s,   | d }t ddƒD ]}|| | 7 }qd| S )Nr   éüÿÿÿr   ç333333Ó?©Úrange)r   ÚcumÚir   r   r   Ústencil2_kernel   s    r'   ç      ð?©Úcvalc                 C   s   d| d  S )Nr   ©éþÿÿÿé   r   r   r   r   r   Ústencil3_kernel'   s    r.   c                 C   sD   d| d | d  | d  | d  |d  |d  |d  |d   S r   r   ©r   Úbr   r   r   Ústencil_multiple_input_kernel,   s     ÿÿÿÿr1   c                 C   sD   || d | d  | d  | d  |d  |d  |d  |d   S ©Nr   r   r   r   r   )r   r0   Úwr   r   r   Ú!stencil_multiple_input_kernel_var2   s     ÿÿÿÿr4   c                 C   s   |d r| d S |d S ©N©r   r   r   )r   r0   Úfr   r   r   Ú%stencil_multiple_input_mixed_types_2d8   s    r8   )r0   )Ústandard_indexingc                 C   s    | d |d  | d |d   S )Nr   r   r   r   r/   r   r   r   Ú!stencil_with_standard_indexing_1d=   s    r:   c                 C   s@   | d |d  | d |d   | d |d   | d |d   S r2   r   r/   r   r   r   Ú!stencil_with_standard_indexing_2dB   s
    ÿÿr;   c                 C   s   | d S ©Nr   r   r   r   r   r   Úaddone_njitH   s    r=   T©Úparallelc                 C   s   | d S r<   r   r   r   r   r   Úaddone_pjitN   s    r@   c                       sH   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	‡  Z
S )ÚTestStencilBaseFc                    s$   t ƒ | _d| j_tt| ƒj|Ž  d S ©NT)r   ÚcflagsÚnrtÚsuperrA   Ú__init__)ÚselfÚargs©Ú	__class__r   r   rF   X   s    zTestStencilBase.__init__c                 C   s   t tjjtjj||d |i ƒS ©N)r   r   Z
cpu_targetZtyping_contextZtarget_context)rG   ÚfuncÚsigÚflagsr   r   r   Ú_compile_this_   s        þzTestStencilBase._compile_thisc                 K   s0   t ƒ }d|_|sdn|}t|ƒ|_|  |||¡S rB   )r   rD   r	   Zauto_parallelrO   )rG   rL   rM   ÚkwsrN   Úoptionsr   r   r   Úcompile_paralleld   s
    
z TestStencilBase.compile_parallelc                 C   s   | j ||| jd�S )N)rN   )rO   rC   )rG   rL   rM   r   r   r   Úcompile_njitk   s    zTestStencilBase.compile_njitc                 O   s2   t dd„ |D ƒƒ}|  ||¡}|  ||¡}||fS )Nc                 S   s   g | ]}t  |¡‘qS r   ©ÚnumbaZtypeof©Ú.0Úxr   r   r   Ú
<listcomp>o   s     z/TestStencilBase.compile_all.<locals>.<listcomp>)ÚtuplerR   rS   )rG   ÚpyfuncrH   ÚkwargsrM   ÚcpfuncÚcfuncr   r   r   Úcompile_alln   s    zTestStencilBase.compile_allc           
      G   s„   | j |f|žŽ \}}||Ž }||Ž }|j|Ž }|j|Ž }	tjj||dd� tjj||dd� tjj|	|dd� |  d|j ¡ ¡ d S )Né   ©Údecimalú@do_scheduling)r_   Úentry_pointÚnpÚtestingÚassert_almost_equalÚassertInÚlibraryÚget_llvm_str)
rG   Zno_stencil_funcr[   rH   r^   r]   ÚexpectedZ	py_outputÚnjit_outputÚparfor_outputr   r   r   Úcheckv   s    

zTestStencilBase.check)Ú__name__Ú
__module__Ú__qualname__Z_numba_parallel_test_rF   rO   rR   rS   r_   rn   Ú__classcell__r   r   rI   r   rA   S   s   rA   c                       sÄ   e Zd Z‡ fdd„Zedd„ ƒZedd„ ƒZedd„ ƒZed	d
„ ƒZedd„ ƒZ	edd„ ƒZ
edd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZ‡  ZS )ÚTestStencilc                    s   t t| ƒj||Ž d S rK   )rE   rs   rF   ©rG   rH   r\   rI   r   r   rF   �   s    zTestStencil.__init__c                 C   s<   dd„ }dd„ }dd„ }d}|   |||¡ |   |||¡ dS )	zHTests whether the optional out argument to stencil calls works.
        c                 S   s@   t  | d ¡ | | f¡}t  | d ¡ | | f¡}t||d�}|S )Nr-   ©Úout)re   ÚarangeÚreshapeÚzerosr   ©ÚnÚAÚBr   r   r   Útest_with_out”   s    z0TestStencil.test_stencil1.<locals>.test_with_outc                 S   s$   t  | d ¡ | | f¡}t|ƒ}|S ©Nr-   )re   rw   rx   r   rz   r   r   r   Útest_without_outš   s    z3TestStencil.test_stencil1.<locals>.test_without_outc                 S   s¨   t  | d ¡ | | f¡}t  | d ¡ | | f¡}td| d ƒD ]d}td| d ƒD ]P}d|||d f ||d |f  |||d f  ||d |f   |||f< qPq>|S ©Nr-   r   r   ©re   rw   rx   ry   r$   ©r{   r|   r}   r&   Újr   r   r   Útest_impl_seqŸ   s    ÿÿÿz0TestStencil.test_stencil1.<locals>.test_impl_seqéd   N©rn   )rG   r~   r€   r…   r{   r   r   r   Útest_stencil1�   s    	zTestStencil.test_stencil1c           	      C   s8  dd„ }dd„ }d}|   |||¡ dd„ }dd„ }d}d}|  |tjtjf¡}|||ƒ}| ||¡}tjj||d	d
� |  d|j	 
¡ ¡ dd„ }d}|  |tjtjtjf¡}| |||¡}tjj||d	d
� |  d|j	 
¡ ¡ dd„ }d}|  |tjtjtjf¡}| |||¡}tjj||d	d
� |  d|j	 
¡ ¡ dS )z`Tests whether the optional neighborhood argument to the stencil
        decorate works.
        c                 S   s   t  | ¡}t|ƒ}|S rK   )re   rw   r'   rz   r   r   r   Útest_seq±   s    
z+TestStencil.test_stencil2.<locals>.test_seqc                 S   sL   t  | ¡}t  | ¡}tdt|ƒƒD ]$}dt||d |d … ƒ ||< q"|S )Né   r"   r   ©re   rw   ry   r$   ÚlenÚsum©r{   r|   r}   r&   r   r   r   r…   ¶   s
    

"z0TestStencil.test_stencil2.<locals>.test_impl_seqr†   c                 S   s2   t  | ¡}dd„ }tj|| |ffd�||ƒ}|S )Nc                 S   s8   | |  }t | d |d ƒD ]}|| | 7 }qd| S ©Nr   r"   r#   ©r   r3   r%   r&   r   r   r   r'   Å   s    
úDTestStencil.test_stencil2.<locals>.test_seq.<locals>.stencil2_kernelr   ©re   rw   rU   r   )r{   r3   r|   r'   r}   r   r   r   r‰   Â   s    
c                 S   sT   t  | ¡}t  | ¡}t|t|ƒ| ƒD ](}dt||| || d … ƒ ||< q&|S )Nr"   r   r‹   )r{   r3   r|   r}   r&   r   r   r   r…   Í   s
    

&rŠ   r`   ra   rc   c                 S   s8   t  | ¡}dd„ }tj|| |ff| fd�||ƒ}|S )Nc                 S   s@   | | d  }t | d |d ƒD ]}|| |d  7 }q"d| S r�   r#   r�   r   r   r   r'   à   s    r‘   ©r    Zindex_offsetsr’   ©r{   r3   Úoffsetr|   r'   r}   r   r   r   r‰   Ý   s    
ÿ ÿr   c                 S   s8   t  | ¡}dd„ }tj|| |ff| fd�||ƒ}|S )Nc                 S   s    dt  | | d |d … ¡ S )Nr"   r   r-   )re   r�   )r   r3   r   r   r   r'   ô   s    r‘   r“   r’   r”   r   r   r   r‰   ñ   s    
ÿ ÿN)rn   rR   r   Úintprd   re   rf   rg   rh   ri   rj   )	rG   r‰   r…   r{   r3   r]   rk   rm   r•   r   r   r   Útest_stencil2¬   s:    
ÿ	ÿzTestStencil.test_stencil2c                 C   s–   dd„ }t |ƒ}t |dd�}d}||ƒ}||ƒ}||ƒ}|  |d dkoR|d dk¡ |  |d dkop|d dk¡ |  |d dkoŽ|d dk¡ d	S )
z�Tests whether a non-zero optional cval argument to the stencil
        decorator works.  Also tests integer result type.
        c                 S   s$   t  | d ¡ | | f¡}t|ƒ}|S r   )re   rw   rx   r.   rz   r   r   r   r‰     s    z+TestStencil.test_stencil3.<locals>.test_seqTr>   rŠ   r6   r(   )é   r˜   N)r   Ú
assertTrue)rG   r‰   Z	test_njitZtest_parr{   Zseq_resZnjit_resZpar_resr   r   r   Útest_stencil3  s    zTestStencil.test_stencil3c                 C   s&   dd„ }dd„ }d}|   |||¡ dS )z1Tests standard indexing with a 1d array.
        c                 S   s    t  | ¡}ddg}t||ƒ}|S )Nç      @ç      @)re   rw   r:   ©r{   r|   r}   ÚCr   r   r   r‰     s    

z?TestStencil.test_stencil_standard_indexing_1d.<locals>.test_seqc                 S   sX   t  | ¡}ddg}t  | ¡}td| ƒD ],}||d  |d  || |d   ||< q&|S )Nr›   rœ   r   r   ©re   rw   ry   r$   )r{   r|   r}   rž   r&   r   r   r   r…   !  s    

*zDTestStencil.test_stencil_standard_indexing_1d.<locals>.test_impl_seqr†   Nr‡   ©rG   r‰   r…   r{   r   r   r   Ú!test_stencil_standard_indexing_1d  s    	z-TestStencil.test_stencil_standard_indexing_1dc                 C   s&   dd„ }dd„ }d}|   |||¡ dS )zLTests standard indexing with a 2d array and multiple stencil calls.
        c                 S   s:   t  | d ¡ | | f¡}t  d¡}t||ƒ}t||ƒ}|S )Nr-   ©r`   r`   )re   rw   rx   Úonesr;   )r{   r|   r}   rž   ÚDr   r   r   r‰   1  s
    


z?TestStencil.test_stencil_standard_indexing_2d.<locals>.test_seqc                 S   sx  t  | d ¡ | | f¡}t  d¡}t  | d ¡ | | f¡}t  | d ¡ | | f¡}td| d ƒD ]€}td| d ƒD ]l}|||d f |d  ||d |f |d   |||d f |d   ||d |f |d   |||f< qrq`td| d ƒD ]‚}td| d ƒD ]n}|||d f |d  ||d |f |d   |||d f |d   ||d |f |d   |||f< �qqð|S )Nr-   r¢   r   r   r   r   r   )re   rw   rx   r£   ry   r$   )r{   r|   r}   rž   r¤   r&   r„   r   r   r   r…   8  s&    
.ÿÿ.ÿÿzDTestStencil.test_stencil_standard_indexing_2d.<locals>.test_impl_seqrŠ   Nr‡   r    r   r   r   Ú!test_stencil_standard_indexing_2d-  s    z-TestStencil.test_stencil_standard_indexing_2dc                 C   s<   dd„ }dd„ }d}|   |||¡ dd„ }|   |||¡ dS )z=Tests whether multiple inputs of the same size work.
        c                 S   s>   t  | d ¡ | | f¡}t  | d ¡ | | f¡}t||ƒ}|S r   )re   rw   rx   r1   r�   r   r   r   r‰   O  s    
z:TestStencil.test_stencil_multiple_inputs.<locals>.test_seqc                 S   s   t  | d ¡ | | f¡}t  | d ¡ | | f¡}t  | d ¡ | | f¡}td| d ƒD ]¤}td| d ƒD ]�}d|||d f ||d |f  |||d f  ||d |f  |||d f  ||d |f  |||d f  ||d |f   |||f< qhqV|S r�   r‚   )r{   r|   r}   rž   r&   r„   r   r   r   r…   U  s*    ÿÿþþýýÿz?TestStencil.test_stencil_multiple_inputs.<locals>.test_impl_seqr`   c                 S   sD   t  | d ¡ | | f¡}t  | d ¡ | | f¡}d}t|||ƒ}|S )Nr-   r   )re   rw   rx   r4   )r{   r|   r}   r3   rž   r   r   r   r‰   f  s
    Nr‡   r    r   r   r   Útest_stencil_multiple_inputsK  s    z(TestStencil.test_stencil_multiple_inputsc                 C   s&   dd„ }dd„ }d}|   |||¡ d S )Nc                 S   s¬   t  | d ¡ | | f¡}| d t  | d ¡ | | f¡ }t j| t jd�}t j| | f|jd�}td| ƒD ]@}td| ƒD ]0}|||f r�|||f n
|||f |||f< qtqf|S )Nr-   ©Údtyper   )re   rw   rx   ÚeyeÚbool_ry   r¨   r$   )r{   r|   r}   ÚSÚOr&   r„   r   r   r   r…   p  s     0z;TestStencil.test_stencil_mixed_types.<locals>.test_impl_seqc                 S   sX   t  | d ¡ | | f¡}| d t  | d ¡ | | f¡ }t j| t jd�}t|||ƒ}|S )Nr-   r§   )re   rw   rx   r©   rª   r8   )r{   r|   r}   r«   r¬   r   r   r   r‰   z  s
     z6TestStencil.test_stencil_mixed_types.<locals>.test_seqr`   r‡   )rG   r…   r‰   r{   r   r   r   Útest_stencil_mixed_typesn  s    
z$TestStencil.test_stencil_mixed_typesc                 C   s<   dd„ }dd„ }dd„ }d}|   |||¡ |   |||¡ dS )	z&Tests 2D numba.stencil calls.
        c                 S   sJ   t  | d ¡ | | f¡}t  | d ¡ | | f¡}t dd„ ¡||d� |S )Nr-   c                 S   s$   d| d | d  | d  | d   S r   r   r   r   r   r   Ú<lambda>‹  s   ÿzCTestStencil.test_stencil_call.<locals>.test_impl1.<locals>.<lambda>ru   ©re   rw   rx   ry   rU   r   rz   r   r   r   Ú
test_impl1ˆ  s     ÿz1TestStencil.test_stencil_call.<locals>.test_impl1c                 S   sJ   t  | d ¡ | | f¡}t  | d ¡ | | f¡}dd„ }t |¡|ƒ}|S )Nr-   c                 S   s$   d| d | d  | d  | d   S r   r   r   r   r   r   Úsf“  s    z=TestStencil.test_stencil_call.<locals>.test_impl2.<locals>.sfr¯   )r{   r|   r}   r±   r   r   r   Ú
test_impl2�  s
    z1TestStencil.test_stencil_call.<locals>.test_impl2c                 S   s¨   t  | d ¡ | | f¡}t  | d ¡ | | f¡}td| d ƒD ]d}td| d ƒD ]P}d|||d f ||d |f  |||d f  ||d |f   |||f< qPq>|S r�   r‚   rƒ   r   r   r   r…   ˜  s     ÿÿz4TestStencil.test_stencil_call.<locals>.test_impl_seqr†   Nr‡   )rG   r°   r²   r…   r{   r   r   r   Útest_stencil_call„  s    		zTestStencil.test_stencil_callc                 C   s&   dd„ }dd„ }d}|   |||¡ dS )z&Tests 1D numba.stencil calls.
        c                 S   s.   t  | ¡}t  | ¡}t dd„ ¡||d� |S )Nc                 S   s   d| d | d  | d   S ©Nr"   r   r   r   r   r   r   r   r   r®   ¬  ó    zETestStencil.test_stencil_call_1D.<locals>.test_impl.<locals>.<lambda>ru   ©re   rw   ry   rU   r   rz   r   r   r   Ú	test_impl©  s    

z3TestStencil.test_stencil_call_1D.<locals>.test_implc                 S   sT   t  | ¡}t  | ¡}td| d ƒD ],}d||d  ||  ||d    ||< q"|S r�   rŸ   rŽ   r   r   r   r…   ¯  s
    

*z7TestStencil.test_stencil_call_1D.<locals>.test_impl_seqr†   Nr‡   ©rG   r·   r…   r{   r   r   r   Útest_stencil_call_1D¥  s    z TestStencil.test_stencil_call_1Dc              	   C   sP  dd„ }dd„ }dd„ }dd„ }d	d
„ }d}|   |tjf¡}|   |tjf¡}|   |tjf¡}	|   |tjf¡}
||ƒ}| |¡}| |¡}|	 |¡}|
 |¡}tjj||dd� tjj||dd� tjj||dd� tjj||dd� |  t¡�}|dƒ W 5 Q R X |  	dt
|jƒ¡ |  ttf¡�}t|ƒdƒ W 5 Q R X |  	dt
|jƒ¡ dS )zÈTests numba.stencil call that has an index that can be inferred as
        constant from a unary expr. Otherwise, this would raise an error since
        neighborhood length is not specified.
        c                 S   s4   t  | ¡}t  | ¡}d}t dd„ ¡|||d� |S )Nr   c                 S   s   d| |  | d  | |   S ©Nr"   r   r   ©r   Úcr   r   r   r®   Ã  rµ   zITestStencil.test_stencil_call_const.<locals>.test_impl1.<locals>.<lambda>ru   r¶   ©r{   r|   r}   r¼   r   r   r   r°   ¿  s
    

z7TestStencil.test_stencil_call_const.<locals>.test_impl1c                 S   s4   t  | ¡}t  | ¡}d}t dd„ ¡|||d� |S )Nr-   c                 S   s$   d| d|  | d  | |d    S ©Nr"   r   r   r   r»   r   r   r   r®   Ë  rµ   zITestStencil.test_stencil_call_const.<locals>.test_impl2.<locals>.<lambda>ru   r¶   r½   r   r   r   r²   Æ  s    

ÿ  ÿz7TestStencil.test_stencil_call_const.<locals>.test_impl2c                 S   s4   t  | ¡}t  | ¡}d}t dd„ ¡|||d� |S )Nr-   c                 S   s&   d| | d  | d  | |d    S r¾   r   r»   r   r   r   r®   Ô  rµ   zITestStencil.test_stencil_call_const.<locals>.test_impl3.<locals>.<lambda>ru   r¶   r½   r   r   r   Ú
test_impl3Ï  s    

ÿ  ÿz7TestStencil.test_stencil_call_const.<locals>.test_impl3c                 S   s:   t  | ¡}t  | ¡}d}d}t dd„ ¡||||d� |S )Nr   r-   c                 S   s&   d| | |  | d  | ||    S rº   r   )r   r¼   Údr   r   r   r®   Þ  rµ   zITestStencil.test_stencil_call_const.<locals>.test_impl4.<locals>.<lambda>ru   r¶   )r{   r|   r}   rÀ   r¼   r   r   r   Ú
test_impl4Ø  s    

ÿ  þz7TestStencil.test_stencil_call_const.<locals>.test_impl4c                 S   sX   t  | ¡}t  | ¡}d}td| d ƒD ],}d|||  ||  |||    ||< q&|S r�   rŸ   )r{   r|   r}   r¼   r&   r   r   r   r…   â  s    

*z:TestStencil.test_stencil_call_const.<locals>.test_impl_seqr†   r`   ra   r˜   zDstencil kernel index is not constant, 'neighborhood' option requiredN)rR   r   r–   rd   re   rf   rg   ÚassertRaisesr   rh   ÚstrÚ	exceptionr   r   )rG   r°   r²   r¿   rÁ   r…   r{   Zcpfunc1Zcpfunc2Zcpfunc3Zcpfunc4rk   Zparfor_output1Zparfor_output2Zparfor_output3Zparfor_output4Úer   r   r   Útest_stencil_call_const¹  s:    		




ÿÿz#TestStencil.test_stencil_call_constc                 C   s:   dd„ }| j |tjdd… fdd�}|  d|j ¡ ¡ dS )zYTests 1D numba.stencil calls without parallel translation
           turned off.
        c                 S   s   t  dd„ ¡| ƒS )Nc                 S   s   d| d | d  | d   S r´   r   r   r   r   r   r®     rµ   zJTestStencil.test_stencil_parallel_off.<locals>.test_impl.<locals>.<lambda>)rU   r   )r|   r   r   r   r·     s    z8TestStencil.test_stencil_parallel_off.<locals>.test_implNF©r   rc   )rR   rU   Úfloat64ZassertNotInri   rj   )rG   r·   r]   r   r   r   Útest_stencil_parallel_off	  s
    ÿz%TestStencil.test_stencil_parallel_offc                 C   s>   t dd�dd„ ƒ}dd„ }t d¡}tj ||ƒ||ƒ¡ dS )	z6Tests whether nested stencil decorator works.
        Tr>   c                 S   s   t dd„ ƒ}|| ƒ}|S )Nc                 S   s   d}| | d  S )Nr-   r   r   r»   r   r   r   Úfun  s    z@TestStencil.test_stencil_nested1.<locals>.test_impl.<locals>.funrÇ   )r{   rÊ   r}   r   r   r   r·     s    
z3TestStencil.test_stencil_nested1.<locals>.test_implc                 S   s:   t jt| ƒtd�}tdt| ƒƒD ]}| |d  ||< q |S )Nr§   r   )re   ry   rŒ   Úintr$   )r{   r}   r&   r   r   r   r…   "  s    z7TestStencil.test_stencil_nested1.<locals>.test_impl_seqé
   N)r   re   rw   rf   Zassert_equalr¸   r   r   r   Útest_stencil_nested1  s
    

z TestStencil.test_stencil_nested1c                    s‚  ddg}dd„ }|D ]˜}t j||d�‰ ‡ fdd„}t d¡ d	¡}t |d
¡}||ddd…f< t |¡}ˆ ||d� tj ||¡ |  	|¡}|D ]}	|	 
¡ }
tj |
|¡ q�qt j|dd�‰ ‡ fdd„}t d¡ d	¡}t |¡}|  t¡�}ˆ ||d� W 5 Q R X d}|  |t|jƒ¡ | j| jfD ]V}z||dƒ W n8 ttfk
�rp } z|  |t|ƒ¡ W 5 d}~X Y n
X tdƒ‚�q&dS )z/ Issue #3518, out kwarg did not work with cval.é   rœ   c                 S   s   | d | d  S ©Nr6   r   r   r   r   r   r   Úkernel1  s    z1TestStencil.test_out_kwarg_w_cval.<locals>.kernelr)   c                     s*   t  d¡ d¡} t  | ¡}ˆ | |d� |S ©Né   ©r`   r˜   ru   ©re   rw   rx   Ú	ones_like©r|   Úret©Z
stencil_fnr   r   Úwrapped7  s    
z2TestStencil.test_out_kwarg_w_cval.<locals>.wrappedrÒ   rÓ   r!   r   Nru   ù              ð?c                     s*   t  d¡ d¡} t  | ¡}ˆ | |d� |S rÑ   rÔ   rÖ   rØ   r   r   rÙ   N  s    
z-cval type does not match stencil return type.r   zExpected error was not raised)rU   r   re   rw   rx   Ú	full_likerÕ   rf   rg   r_   rd   rÂ   r   rh   rÃ   rÄ   rS   rR   r   ÚAssertionError)rG   Z
const_valsrÐ   Z	const_valrÙ   r|   rk   r×   ÚimplsÚimplÚgotrÅ   ÚmsgÚcompilerr   rØ   r   Útest_out_kwarg_w_cval+  s:    


"z!TestStencil.test_out_kwarg_w_cvalc           
         sÆ   t jt jt j tdƒtdƒ fD ] }dd„ }tj||d�‰ ‡ fdd„}t  d¡ d¡}t  |d	¡}||d
dd…f< t  	|¡}ˆ ||d� t j
 ||¡ |  |¡}|D ]}| ¡ }	t j
 |	|¡ q¤q dS )úU Test issue #7286 where the cval is a np attr/string-based numerical
        constantÚinfc                 S   s   | d | d  S rÏ   r   r   r   r   r   rÐ   h  s    z9TestStencil.test_out_kwarg_w_cval_np_attr.<locals>.kernelr)   c                     s*   t  d¡ d¡} t  | ¡}ˆ | |d� |S )Nç      (@rÓ   ru   rÔ   rÖ   rØ   r   r   rÙ   m  s    
z:TestStencil.test_out_kwarg_w_cval_np_attr.<locals>.wrappedrå   rÓ   r!   r   Nru   )re   Únanrä   ÚfloatrU   r   rw   rx   rÛ   rÕ   rf   rg   r_   rd   )
rG   r*   rÐ   rÙ   r|   rk   r×   rÝ   rÞ   rß   r   rØ   r   Útest_out_kwarg_w_cval_np_attrc  s    $

z)TestStencil.test_out_kwarg_w_cval_np_attr)ro   rp   rq   rF   Úskip_unsupportedrˆ   r—   rš   r¡   r¥   r¦   r­   r³   r¹   rÆ   rÉ   rÍ   râ   rè   rr   r   r   rI   r   rs   ‹   s:   

T



"

 

O


7rs   c                       s¬  e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#dCdD„ Z$dEdF„ Z%dGdH„ Z&dIdJ„ Z'dKdL„ Z(e) *dM¡dNdO„ ƒZ+dPdQ„ Z,dRdS„ Z-dTdU„ Z.dVdW„ Z/dXdY„ Z0dZd[„ Z1d\d]„ Z2d^d_„ Z3d`da„ Z4dbdc„ Z5ddde„ Z6dfdg„ Z7dhdi„ Z8djdk„ Z9dldm„ Z:dndo„ Z;dpdq„ Z<drds„ Z=dtdu„ Z>e) *dv¡dwdx„ ƒZ?dydz„ Z@d{d|„ ZAd}d~„ ZBdd€„ ZCd�d‚„ ZDdƒd„„ ZEd…d†„ ZFd‡dˆ„ ZGd‰dŠ„ ZHd‹dŒ„ ZId�dŽ„ ZJd�d�„ ZKd‘d’„ ZLd“d”„ ZMd•d–„ ZNd—d˜„ ZOd™dš„ ZPd›dœ„ ZQd�dž„ ZRdŸd „ ZSd¡d¢„ ZTd£d¤„ ZUd¥d¦„ ZVd§d¨„ ZWd©dª„ ZXd«d¬„ ZYd­d®„ ZZd¯d°„ Z[d±d²„ Z\d³d´„ Z]dµd¶„ Z^d·d¸„ Z_d¹dº„ Z`d»d¼„ Zad½d¾„ Zbd¿dÀ„ ZcdÁdÂ„ ZddÃdÄ„ ZedÅdÆ„ ZfdÇdÈ„ ZgdÉdÊ„ ZhdËdÌ„ ZidÍdÎ„ ZjdÏdÐ„ ZkdÑdÒ„ ZldÓdÔ„ ZmdÕdÖ„ Zne) *d×¡dØdÙ„ ƒZodÚdÛ„ Zpe) *d×¡dÜdÝ„ ƒZqdÞdß„ Zr‡  ZsS )àÚTestManyStencilsc                    s   t t| ƒj||Ž d S rK   )rE   rê   rF   rt   rI   r   r   rF   �  s    zTestManyStencils.__init__c              
      sÊ  |  dtƒ ¡}|  d¡}d}g ‰ g ‰td)‡ ‡fdd„	ƒ}t|tƒr\|d }	|d }
|d	 }n|}	|}
|}d
|i}| |¡ d}||	dƒ� tf |Ž‰ˆ|Ž }W 5 Q R X t|ƒdkrÀ‡fdd„}nDt|ƒdkrÚ‡fdd„}n*t|ƒdkrô‡fdd„}ntdt|ƒ ƒ‚tdd„ |D ƒƒ}d}||
dƒ� |  	||¡}|j
|Ž }W 5 Q R X d}||dƒ� |  ||¡}|j
|Ž }W 5 Q R X |�rštd|ƒ td|ƒ td|ƒ z,|	�sÄtjj||dd� |  |j|j¡ W nR tk
�r } z2ˆ ddt|ƒt|ƒf f¡ tdt|ƒ ƒ W 5 d}~X Y nX z,|
�sDtjj||dd� |  |j|j¡ W nR tk
�r˜ } z2ˆ ddt|ƒt|ƒf f¡ tdt|ƒ ƒ W 5 d}~X Y nX zf|�sþtjj||dd� |  |j|j¡ z|  d|j ¡ ¡ W n" tk
�rü   d}t|ƒ‚Y nX W nR tk
�rR } z2ˆ ddt|ƒt|ƒf f¡ td t|ƒ ƒ W 5 d}~X Y nX |�rbtd!ƒ ˆ �r‚d"d„ ˆ D ƒ}td#| ƒ‚ˆ�rÆd$d„ ˆD ƒ}d% d&d„ ˆD ƒ¡}d'| }d(| }t|| ƒ‚dS )*aæ  
        For a given kernel:

        The expected result is available from argument `expected`.

        The following results are then computed:
        * from a pure @stencil decoration of the kernel.
        * from the njit of a trivial wrapper function around the pure @stencil
          decorated function.
        * from the njit(parallel=True) of a trivial wrapper function around
           the pure @stencil decorated function.

        The results are then compared.
        rQ   Úexpected_exceptionFNc              
   3   s¢   z
d V  W n€ t k
rŠ } zb| d k	r\t| dƒr2| n| g}d}|D ]}|t||ƒO }q@|sz‚ nˆ |dt|ƒt|ƒf f¡ W 5 d }~X Y nX | d k	ržˆ  |¡ d S ©NÚ__iter__Fú%s: %s©Ú	ExceptionÚhasattrÚ
isinstanceÚappendÚtyperÃ   ©ZextyZusecaserÅ   ZlextyÚfoundÚex©Úshould_failÚshould_not_failr   r   Úerrorhandler®  s"    
ÿÿz=TestManyStencils.check_against_expected.<locals>.errorhandlerr   r   ÚparforÚfunc_or_modeú@stencilr   c                    s   ˆ | ƒS rK   r   ©Úarg0©Ústencil_func_implr   r   Úwrap_stencilÖ  s    z=TestManyStencils.check_against_expected.<locals>.wrap_stencilr-   c                    s
   ˆ | |ƒS rK   r   ©r   Úarg1r  r   r   r  Ù  s    r`   c                    s   ˆ | ||ƒS rK   r   ©r   r  Zarg2r  r   r   r  Ü  s    ú+Up to 3 arguments can be provided, found %sc                 S   s   g | ]}t  |¡‘qS r   rT   rV   r   r   r   rY   ã  s     z;TestManyStencils.check_against_expected.<locals>.<listcomp>Úparforsz
@stencil_output:
z
njit_output:
z
parfor_output:
ra   rî   z@stencil failed: %sz@njit failed: %src   z*Could not find `@do_scheduling` in LLVM IRz@njit(parallel=True) failed: %sz

c                 S   s   g | ]}d | ‘qS ©ú%sr   rV   r   r   r   rY      s     úMThe following implementations should have raised an exception but did not:
%sc                 S   s   g | ]}d |d  ‘qS ©r
  r   r   rV   r   r   r   rY   %  s     Ú c                 S   s   g | ]}d | ‘qS ©z%s: Message: %s

r   rV   r   r   r   rY   &  s   ÿÿúNThe following implementations should not have raised an exception but did:
%s
úErrors were:

%s)NN)ÚgetÚdictr   rò   Úupdater   rŒ   Ú
ValueErrorrZ   rS   rd   rR   Úprintre   rf   rg   ÚassertEqualr¨   rð   ró   rô   rÃ   rh   ri   rj   rÜ   ÚRuntimeErrorÚjoin)rG   r[   rk   rH   r\   rQ   rë   ZDEBUG_OUTPUTrû   Ú
stencil_exÚnjit_exÚ	parfor_exÚstencil_argsZstencilfunc_outputr  rM   rl   Úwrapped_cfuncrm   Úwrapped_cpfuncrÅ   rà   rÝ   ÚerrsÚstr1Ústr2r   ©rù   rú   r  r   Úcheck_against_expected“  sÜ    




ÿÿ


  ÿÿÿ"  ÿ"  ÿþÿÿ"ÿ
ÿÿz'TestManyStencils.check_against_expectedc              	      sÎ  |  dtƒ ¡}|  d¡}g ‰ g ‰td‡ ‡fdd„	ƒ}t|tƒrX|d }|d }|d }	n|}|}|}	d	|i}
|
 |¡ ||d
ƒ� tf |
Ž‰ˆ|Ž  W 5 Q R X t|ƒdkr¸‡fdd„}nDt|ƒdkrÒ‡fdd„}n*t|ƒdkrì‡fdd„}ntdt|ƒ ƒ‚tdd„ |D ƒƒ}||dƒ� |  	||¡}|j
|Ž  W 5 Q R X ||	dƒ� |  ||¡}|j
|Ž  W 5 Q R X ˆ �r†dd„ ˆ D ƒ}td| ƒ‚ˆ�rÊdd„ ˆD ƒ}d dd„ ˆD ƒ¡}d| }d| }t|| ƒ‚dS )aü  
        For a given kernel:

        The expected result is computed from a pyStencil version of the
        stencil.

        The following results are then computed:
        * from a pure @stencil decoration of the kernel.
        * from the njit of a trivial wrapper function around the pure @stencil
          decorated function.
        * from the njit(parallel=True) of a trivial wrapper function around
           the pure @stencil decorated function.

        The results are then compared.
        rQ   rë   Nc              
   3   s¢   z
d V  W n€ t k
rŠ } zb| d k	r\t| dƒr2| n| g}d}|D ]}|t||ƒO }q@|sz‚ nˆ |dt|ƒt|ƒf f¡ W 5 d }~X Y nX | d k	ržˆ  |¡ d S rì   rï   rõ   rø   r   r   rû   E  s"    
ÿÿz7TestManyStencils.check_exceptions.<locals>.errorhandlerr   r   rü   rý   rþ   r   c                    s   ˆ | ƒS rK   r   rÿ   r  r   r   r  l  s    z7TestManyStencils.check_exceptions.<locals>.wrap_stencilr-   c                    s
   ˆ | |ƒS rK   r   r  r  r   r   r  o  s    r`   c                    s   ˆ | ||ƒS rK   r   r  r  r   r   r  r  s    r  c                 S   s   g | ]}t  |¡‘qS r   rT   rV   r   r   r   rY   y  s     z5TestManyStencils.check_exceptions.<locals>.<listcomp>r  c                 S   s   g | ]}d | ‘qS r	  r   rV   r   r   r   rY   †  s     r  c                 S   s   g | ]}d |d  ‘qS r  r   rV   r   r   r   rY   ‹  s     r  c                 S   s   g | ]}d | ‘qS r  r   rV   r   r   r   rY   Œ  s   ÿÿr  r  )NN)r  r  r   rò   r  r   rŒ   r  rZ   rS   rd   rR   r  r  )rG   r[   rH   r\   rQ   rë   rû   r  r  r  r  r  rM   r  r  rà   rÝ   r  r   r!  r   r"  r   Úcheck_exceptions-  sf    




ÿÿÿ
ÿÿz!TestManyStencils.check_exceptionsc                 K   sD   t ƒ }d |d< d |d< d |d< d |d< | ¡ D ]\}}|||< q.|S )NZ	pyStencilr   r   rü   )r  Úitems)rG   r\   rÀ   ÚkÚvr   r   r   Úexception_dict“  s    
zTestManyStencils.exception_dictc                 O   sf   |  d¡}|d j}|d k	r4t|ƒt|ƒkr4tdƒ‚|dd … D ] }t|dƒr@||jkr@tdƒ‚q@d S )Nr    r   zInvalid neighborhood suppliedr   Úshapez#Input stencil arrays do not commute)r  r)  rŒ   r  rñ   )rG   rH   r\   r    Z
init_shaperX   r   r   r   Úcheck_stencil_arrays�  s    



z%TestManyStencils.check_stencil_arraysc                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	z	rel indexc                 S   s   | d S r5   r   r   r   r   r   rÐ   ª  s    z-TestManyStencils.test_basic00.<locals>.kernelc                    sx   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]6}td| jd ƒD ] }| |d |d f |||f< qPq<|S ©Nr   r   r§   r   ©r*  re   Úfullr)  rô   r$   ©r   r    Ú_TestManyStencils__retdtypeÚ_TestManyStencils__b0Ú_TestManyStencils__bÚ_TestManyStencils__a©rÐ   rG   r   r   Ú__kernel°  s     z/TestManyStencils.test_basic00.<locals>.__kernelrÒ   r`   r˜   N©re   rw   rx   r#  ©rG   Ú_TestManyStencils__kernelr   rk   r   r3  r   Útest_basic00¨  s
    

zTestManyStencils.test_basic00c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	úrel index add constc                 S   s   | d S ©Nr   r   r   r   r   r   rÐ   À  s    z-TestManyStencils.test_basic01.<locals>.kernelc                    s|   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]6}td| jd ƒD ] }| |d |d f |||f< qTq@|S r+  r,  r.  r3  r   r   r4  Æ  s     z/TestManyStencils.test_basic01.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic01¾  s
    

zTestManyStencils.test_basic01c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	r9  c                 S   s   | d S )Nr   r   r   r   r   r   rÐ   Ö  s    z-TestManyStencils.test_basic02.<locals>.kernelc                    sx   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]6}td| jd ƒD ] }| |d |d f |||f< qPq<|S ©Nr   r   r§   r   r   r,  r.  r3  r   r   r4  Ü  s     z/TestManyStencils.test_basic02.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic02Ô  s
    

zTestManyStencils.test_basic02c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	r9  c                 S   s   | d S )Nr   r   r   r   r   r   rÐ   ì  s    z-TestManyStencils.test_basic03.<locals>.kernelc                    s|   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]:}td| jd d ƒD ] }| |d |d f |||f< qTq<|S r+  r,  r.  r3  r   r   r4  ò  s     z/TestManyStencils.test_basic03.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic03ê  s
    

zTestManyStencils.test_basic03c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	r9  c                 S   s   | d S )Nr   r   r   r   r   r   rÐ     s    z-TestManyStencils.test_basic04.<locals>.kernelc                    sx   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]6}td| jd ƒD ] }| |d |d f |||f< qPq<|S r<  r,  r.  r3  r   r   r4    s     z/TestManyStencils.test_basic04.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic04   s
    

zTestManyStencils.test_basic04c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	r9  c                 S   s   | d S )N©r   r   r   r   r   r   r   rÐ     s    z-TestManyStencils.test_basic05.<locals>.kernelc                    s|   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]6}td| jd ƒD ] }| |d |d f |||f< qTq@|S r<  r,  r.  r3  r   r   r4    s     z/TestManyStencils.test_basic05.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic05  s
    

zTestManyStencils.test_basic05c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	r9  c                 S   s   | d S )N©r   r   r   r   r   r   r   rÐ   .  s    z-TestManyStencils.test_basic06.<locals>.kernelc                    s|   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]:}td| jd d ƒD ] }| |d |d f |||f< qTq<|S r<  r,  r.  r3  r   r   r4  4  s     z/TestManyStencils.test_basic06.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic06,  s
    

zTestManyStencils.test_basic06c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	r9  c                 S   s   | d S )N©r   r   r   r   r   r   r   rÐ   D  s    z-TestManyStencils.test_basic07.<locals>.kernelc                    s€   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]:}td| jd d ƒD ] }| |d |d f |||f< qXq@|S r+  r,  r.  r3  r   r   r4  J  s     z/TestManyStencils.test_basic07.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic07B  s
    

zTestManyStencils.test_basic07c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	r9  c                 S   s   | d S )N©r   r   r   r   r   r   r   rÐ   Z  s    z-TestManyStencils.test_basic08.<locals>.kernelc                    sx   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]6}td| jd ƒD ] }| |d |d f |||f< qPq<|S r<  r,  r.  r3  r   r   r4  `  s     z/TestManyStencils.test_basic08.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic08X  s
    

zTestManyStencils.test_basic08c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	r9  c                 S   s   | d S )Nr+   r   r   r   r   r   rÐ   p  s    z-TestManyStencils.test_basic09.<locals>.kernelc                    s|   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]6}td| jd ƒD ] }| |d |d f |||f< qTq@|S )Nr   r   r§   r   r-   r,   r,  r.  r3  r   r   r4  v  s     z/TestManyStencils.test_basic09.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic09n  s
    

zTestManyStencils.test_basic09c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	r9  c                 S   s   | d | d  S rÏ   r   r   r   r   r   rÐ   †  s    z-TestManyStencils.test_basic10.<locals>.kernelc                    s�   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]N}td| jd d ƒD ]4}| |d |d f | |d |d f  |||f< qTq<|S r+  r,  r.  r3  r   r   r4  ‹  s    4z/TestManyStencils.test_basic10.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic10„  s
    

zTestManyStencils.test_basic10c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	r9  c                 S   s   | d | d  S )Nr   r   r   r   r   r   r   rÐ   ›  s    z-TestManyStencils.test_basic11.<locals>.kernelc                    s�   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]N}td| jd d ƒD ]4}| |d |d f | |d |d f  |||f< qTq<|S r<  r,  r.  r3  r   r   r4     s    4z/TestManyStencils.test_basic11.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic11™  s
    

zTestManyStencils.test_basic11c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	r9  c                 S   s   | d | d  S )Nr@  rB  r   r   r   r   r   rÐ   °  s    z-TestManyStencils.test_basic12.<locals>.kernelc                    s”   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]N}td| jd d ƒD ]4}| |d |d f | |d |d f  |||f< qXq@|S r<  r,  r.  r3  r   r   r4  µ  s    4z/TestManyStencils.test_basic12.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic12®  s
    

zTestManyStencils.test_basic12c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	r9  c                 S   s   | d | d  S )NrF  rD  r   r   r   r   r   rÐ   Å  s    z-TestManyStencils.test_basic13.<locals>.kernelc                    s”   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]N}td| jd d ƒD ]4}| |d |d f | |d |d f  |||f< qXq@|S r<  r,  r.  r3  r   r   r4  Ê  s    4z/TestManyStencils.test_basic13.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic13Ã  s
    

zTestManyStencils.test_basic13c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	ú!rel index add domain change constc                 S   s   | d d S )Nr6   rÚ   r   r   r   r   r   rÐ   Ú  s    z-TestManyStencils.test_basic14.<locals>.kernelc                    s|   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]:}td| jd ƒD ]$}| |d |d f d |||f< qPq<|S ©Nr   r   r§   r   rÚ   r,  r.  r3  r   r   r4  ß  s    $z/TestManyStencils.test_basic14.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic14Ø  s
    

zTestManyStencils.test_basic14c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	rM  c                 S   s   d}| d | S )NrÚ   r6   r   ©r   Útr   r   r   rÐ   ï  s    z.TestManyStencils.test_basic14b.<locals>.kernelc                    s€   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]>}td| jd ƒD ](}d}| |d |d f | |||f< qPq<|S rN  r,  ©r   r    r/  r0  r1  r2  rQ  r3  r   r   r4  õ  s    $z0TestManyStencils.test_basic14b.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic14bí  s
    
zTestManyStencils.test_basic14bc                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	ztwo rel index, add constc                 S   s   | d | d  d S )Nr6   r   r(   r   r   r   r   r   rÐ     s    z-TestManyStencils.test_basic15.<locals>.kernelc                    s”   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]R}td| jd d ƒD ]8}| |d |d f | |d |d f  d |||f< qTq<|S ©Nr   r   r§   r   r(   r,  r.  r3  r   r   r4    s    ÿÿz/TestManyStencils.test_basic15.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic15  s
    
zTestManyStencils.test_basic15c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	ú&two rel index boundary test, add constc                 S   s   | d | d  d S )Nr6   )r-   r   r(   r   r   r   r   r   rÐ     s    z-TestManyStencils.test_basic17.<locals>.kernelc                    s”   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]R}td| jd d ƒD ]8}| |d |d f | |d |d f  d |||f< qTq<|S )Nr   r   r§   r   r-   r(   r,  r.  r3  r   r   r4  !  s    ÿÿz/TestManyStencils.test_basic17.<locals>.__kernelrÒ   r`   r˜   Nr5  r6  r   r3  r   Útest_basic17  s
    
zTestManyStencils.test_basic17c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	rV  c                 S   s   | d | d  d S )Nr6   ©r,   r   r(   r   r   r   r   r   rÐ   2  s    z-TestManyStencils.test_basic18.<locals>.kernelc                    s�   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]N}td| jd ƒD ]8}| |d |d f | |d |d f  d |||f< qPq<|S )Nr   r   r§   r   r-   r,   r(   r,  r.  r3  r   r   r4  7  s    ÿÿz/TestManyStencils.test_basic18.<locals>.__kernelrÒ   r`   r˜   Nr5  r6  r   r3  r   Útest_basic180  s
    
zTestManyStencils.test_basic18c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	rV  c                 S   s   | d | d  d S )Nr6   ©r   r`   r(   r   r   r   r   r   rÐ   H  s    z-TestManyStencils.test_basic19.<locals>.kernelc                    s”   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]N}td| jd ƒD ]8}| |d |d f | |d |d f  d |||f< qTq@|S )Nr   r   r§   r   r`   r(   r,  r.  r3  r   r   r4  M  s    ÿÿz/TestManyStencils.test_basic19.<locals>.__kernelrÒ   r`   r˜   Nr5  r6  r   r3  r   Útest_basic19F  s
    
zTestManyStencils.test_basic19c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	rV  c                 S   s   | d | d  d S )Nr6   )r   éýÿÿÿr(   r   r   r   r   r   rÐ   ^  s    z-TestManyStencils.test_basic20.<locals>.kernelc                    s�   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]N}td| jd ƒD ]8}| |d |d f | |d |d f  d |||f< qPq<|S )Nr   r   r§   r`   r   r\  r(   r,  r.  r3  r   r   r4  c  s    ÿÿz/TestManyStencils.test_basic20.<locals>.__kernelrÒ   r`   r˜   Nr5  r6  r   r3  r   Útest_basic20\  s
    
zTestManyStencils.test_basic20c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	zsame rel, add constc                 S   s   | d | d  d S )Nr6   r(   r   r   r   r   r   rÐ   t  s    z-TestManyStencils.test_basic21.<locals>.kernelc                    s�   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]N}td| jd ƒD ]8}| |d |d f | |d |d f  d |||f< qPq<|S rT  r,  r.  r3  r   r   r4  y  s    ÿÿz/TestManyStencils.test_basic21.<locals>.__kernelrÒ   r`   r˜   Nr5  r6  r   r3  r   Útest_basic21r  s
    
zTestManyStencils.test_basic21c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	z%rel idx const expr folding, add constc                 S   s   | d | d  d S )Nr   r6   r(   r   r   r   r   r   rÐ   Š  s    z-TestManyStencils.test_basic22.<locals>.kernelc                    s”   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]R}td| jd d ƒD ]8}| |d |d f | |d |d f  d |||f< qTq<|S rT  r,  r.  r3  r   r   r4  �  s    ÿÿz/TestManyStencils.test_basic22.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic22ˆ  s
    
zTestManyStencils.test_basic22c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	zrel idx, work in bodyc                 S   s&   t  d| d  ¡}| d | d  | S ©NrÌ   )r-   r   r   r6   ©re   Úsin©r   rX   r   r   r   rÐ      s    z-TestManyStencils.test_basic23.<locals>.kernelc              	      s¶   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]p}td| jd d ƒD ]V}t d| |d |d f  ¡}| |d |d f | |d |d f  | |||f< qXq@|S ©Nr   r   r§   r   r-   rÌ   ©r*  re   r-  r)  rô   r$   rb  ©r   r    r/  r0  r1  r2  rX   r3  r   r   r4  ¦  s    ÿÿz/TestManyStencils.test_basic23.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic23ž  s
    
zTestManyStencils.test_basic23c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	z,rel idx, dead code should not impact rel idxc                 S   s"   t  d| d  ¡}| d | d  S r`  ra  rc  r   r   r   rÐ   ¸  s    z.TestManyStencils.test_basic23a.<locals>.kernelc              	      s²   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]l}td| jd d ƒD ]R}t d| |d |d f  ¡}| |d |d f | |d |d f  |||f< qXq@|S rd  re  rf  r3  r   r   r4  ¾  s    4z0TestManyStencils.test_basic23a.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic23a¶  s
    
zTestManyStencils.test_basic23ac                 C   s0   t  d¡ dd¡}dd„ }| j||tgd� dS )z1d idx on 2d arrrÒ   r`   r˜   c                 S   s   | d d S )Nr   r(   r   r   r   r   r   rÐ   Ñ  s    z-TestManyStencils.test_basic24.<locals>.kernel©rë   N)re   rw   rx   r$  r   ©rG   r   rÐ   r   r   r   Útest_basic24Í  s    zTestManyStencils.test_basic24c                 C   s2   t  d¡ dd¡}dd„ }| j||ttgd� dS )zno idx on 2d arrrÒ   r`   r˜   c                 S   s   dS )Nr(   r   r   r   r   r   rÐ   Ú  s    z-TestManyStencils.test_basic25.<locals>.kernelri  N©re   rw   rx   r$  r  r   rj  r   r   r   Útest_basic25Ö  s
    
ÿzTestManyStencils.test_basic25c                    sF   dd„ ‰ ‡ ‡fdd„}t  d¡ ddd¡}||d	ƒ}ˆ ˆ ||¡ d	S )
z3d arrc                 S   s   | d | d  d S )N)r   r   r   )r   r   r   r(   r   r   r   r   r   rÐ   â  s    z-TestManyStencils.test_basic26.<locals>.kernelc              	      s¸   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]v}td| jd d ƒD ]\}td| jd ƒD ]F}| |d |d |d f | |d |d |d f  d ||||f< qhqTq<|S )Nr   r   r§   r-   r   r(   r,  )r   r    r/  r0  Ú_TestManyStencils__cr1  r2  r3  r   r   r4  ç  s    ÿþz/TestManyStencils.test_basic26.<locals>.__kernelé@   r˜   é   r-   Nr5  r6  r   r3  r   Útest_basic26ß  s
    
zTestManyStencils.test_basic26c                    sH   dd„ ‰ ‡ ‡fdd„}t  d¡ dddd¡}||d	ƒ}ˆ ˆ ||¡ d	S )
z4d arrc                 S   s   | d | d  d S )N)r   r   r   r   )r   r   r   r   r(   r   r   r   r   r   rÐ   ú  s    z-TestManyStencils.test_basic27.<locals>.kernelc                    sÜ   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]š}td| jd ƒD ]„}td| jd d ƒD ]j}td| jd ƒD ]T}| |d |d |d |d f | |d |d |d |d f  d |||||f< q|qhqPq<|S )	Nr   r   r§   r   r`   r-   r   r(   r,  )r   r    r/  r0  Z_TestManyStencils__drn  r1  r2  r3  r   r   r4     s&     ÿ ÿþüz/TestManyStencils.test_basic27.<locals>.__kernelé€   r˜   rp  r-   Nr5  r6  r   r3  r   Útest_basic27ø  s
    
zTestManyStencils.test_basic27c                    sL   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡ t j¡}||dƒ}ˆ ˆ ||¡ dS )	ztype widen c                 S   s   | d t  d¡ S )Nr6   ç      $@)re   rÈ   r   r   r   r   rÐ     s    z-TestManyStencils.test_basic28.<locals>.kernelc                    s‚   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]@}td| jd ƒD ]*}| |d |d f t d¡ |||f< qPq<|S )Nr   r   r§   r   rt  )r*  re   r-  r)  rô   r$   rÈ   r.  r3  r   r   r4    s    *z/TestManyStencils.test_basic28.<locals>.__kernelrÒ   r`   r˜   N©re   rw   rx   ÚastypeZfloat32r#  r6  r   r3  r   Útest_basic28  s
    

zTestManyStencils.test_basic28c                 C   s4   t  d¡ dd¡}dd„ }| j||tttgd� dS )zconst index from func rå   r`   r˜   c                 S   s   | dt t d¡ƒf S )Nr   )rË   re   Úcosr   r   r   r   rÐ   .  s    z-TestManyStencils.test_basic29.<locals>.kernelri  N©re   rw   rx   r$  r  r   r   rj  r   r   r   Útest_basic29*  s    
þzTestManyStencils.test_basic29c                    sL   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡ t j¡}||dƒ}ˆ ˆ ||¡ dS )	zsigned zerosc                 S   s   | d S r5   r   r   r   r   r   rÐ   6  s    z-TestManyStencils.test_basic30.<locals>.kernelc                    sx   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]6}td| jd ƒD ] }| |d |d f |||f< qPq<|S r+  r,  r.  r3  r   r   r4  ;  s     z/TestManyStencils.test_basic30.<locals>.__kernelrÒ   r`   r˜   Nru  r6  r   r3  r   Útest_basic304  s
    

zTestManyStencils.test_basic30c                    sL   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡ t j¡}||dƒ}ˆ ˆ ||¡ dS )	zdoes a const propagate? 2Dc                 S   s   d}| |df S ©Nr   r   r   rP  r   r   r   rÐ   K  s    z-TestManyStencils.test_basic31.<locals>.kernelc                    s€   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]>}td| jd d ƒD ]$}d}| || |d f |||f< qTq<|S r+  r,  rR  r3  r   r   r4  Q  s     z/TestManyStencils.test_basic31.<locals>.__kernelrÒ   r`   r˜   Nru  r6  r   r3  r   Útest_basic31I  s
    

zTestManyStencils.test_basic31z constant folding not implementedc                 C   s   t  d¡ dd¡}dd„ }dS )zdoes a const propagate?rå   r`   r˜   c                 S   s   d}d| }| |df S r|  r   )r   ÚsrQ  r   r   r   rÐ   d  s    z.TestManyStencils.test_basic31b.<locals>.kernelN)re   rw   rx   rj  r   r   r   Útest_basic31b_  s    zTestManyStencils.test_basic31bc                    s<   dd„ ‰ ‡ ‡fdd„}t  d¡}||dƒ}ˆ ˆ ||¡ dS )zdoes a const propagate? 1Dc                 S   s   d}| | S r<   r   rP  r   r   r   rÐ   m  s    z.TestManyStencils.test_basic31c.<locals>.kernelc                    s`   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]}d}| ||  ||f< q@|S r+  r,  )r   r    r/  r0  r2  rQ  r3  r   r   r4  s  s    z0TestManyStencils.test_basic31c.<locals>.__kernelrå   N©re   rw   r#  r6  r   r3  r   Útest_basic31ck  s
    	

zTestManyStencils.test_basic31cc                 C   s4   t  d¡ dd¡}dd„ }| j||tttgd� dS )ztyped int indexrå   r`   r˜   c                 S   s   | t  d¡df S r|  )re   Zint8r   r   r   r   rÐ   „  s    z-TestManyStencils.test_basic32.<locals>.kernelri  Nry  rj  r   r   r   Útest_basic32€  s    
þzTestManyStencils.test_basic32c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	zadd 0d arrayc                 S   s   | d t  d¡ S )Nr6   r   )re   Úarrayr   r   r   r   rÐ   Œ  s    z-TestManyStencils.test_basic33.<locals>.kernelc                    s‚   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]@}td| jd ƒD ]*}| |d |d f t d¡ |||f< qPq<|S r+  )r*  re   r-  r)  rô   r$   rƒ  r.  r3  r   r   r4  ‘  s    *z/TestManyStencils.test_basic33.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic33Š  s
    	
zTestManyStencils.test_basic33c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )z<More complex rel index with dependency on addition rel indexc                 S   s6   d| d  }|| d | d  | d  t  | d ¡  S )Nç      @r   r   r   rX  ra  )r   Úgr   r   r   rÐ      s    z-TestManyStencils.test_basic34.<locals>.kernelc              
      sÞ   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]˜}td| jd d ƒD ]~}d| |d |d f  }|| |d |d f | |d |d f  | |d |d f  t | |d |d f ¡  |||f< qXq@|S )	Nr   r   r§   r   r-   r…  r   r,   re  )r   r    r/  r0  r1  r2  r†  r3  r   r   r4  ¦  s    ÿþýz/TestManyStencils.test_basic34.<locals>.__kernelé�   rÒ   Nr5  r6  r   r3  r   Útest_basic34ž  s
    
zTestManyStencils.test_basic34c                    sL   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆjˆ ||d	d
id� dS )z<simple cval where cval is int but castable to dtype of floatc                 S   s   | d S r:  r   r   r   r   r   rÐ   ¹  s    z-TestManyStencils.test_basic35.<locals>.kernelc                    s|   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]6}td| jd ƒD ] }| |d |d f |||f< qTq@|S )Nr   rŠ   r§   r   r   r,  r.  r3  r   r   r4  ¾  s     z/TestManyStencils.test_basic35.<locals>.__kernelrå   r`   r˜   Nr*   rŠ   ©rQ   r5  r6  r   r3  r   Útest_basic35·  s
    	
zTestManyStencils.test_basic35c                    sL   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆjˆ ||d	d
id� dS )zmore complex with cvalc                 S   s    | d | d  | d  | d  S ©Nr   r   rB  r   r   r   r   r   rÐ   Í  s    z-TestManyStencils.test_basic36.<locals>.kernelc                    s¼   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]v}td| jd d ƒD ]\}| |d |d f | |d |d f  | |d |d f  | |d |d f  |||f< qXq@|S )Nr   g      @r§   r   r   r   r,  r.  r3  r   r   r4  Ò  s    ÿþýz/TestManyStencils.test_basic36.<locals>.__kernelrå   r`   r˜   Nr*   rŠ   r‰  r5  r6  r   r3  r   Útest_basic36Ë  s
    
zTestManyStencils.test_basic36c                    sL   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆjˆ ||d	d
id� dS )zcval is exprc                 S   s    | d | d  | d  | d  S r‹  r   r   r   r   r   rÐ   ä  s    z-TestManyStencils.test_basic37.<locals>.kernelc                    s¼   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]v}td| jd d ƒD ]\}| |d |d f | |d |d f  | |d |d f  | |d |d f  |||f< qXq@|S )Nr   ç      Q@r§   r   r   r   r,  r.  r3  r   r   r4  é  s    ÿþýz/TestManyStencils.test_basic37.<locals>.__kernelrå   r`   r˜   Nr*   r�  r‰  r5  r6  r   r3  r   Útest_basic37â  s    

ÿzTestManyStencils.test_basic37c                 C   sD   dd„ }t  d¡ dd¡}| jtttd�}| j||ddi|d	� d
S )zcval is complexc                 S   s    | d | d  | d  | d  S r‹  r   r   r   r   r   rÐ   ü  s    z-TestManyStencils.test_basic38.<locals>.kernelrå   r`   r˜   ©r   rü   r   r*   rÚ   ©rQ   rë   N©re   rw   rx   r(  r   r  r$  ©rG   rÐ   r   r÷   r   r   r   Útest_basic38ú  s    ýÿzTestManyStencils.test_basic38c                    sb   dd„ ‰t  d¡t  d¡ ‰ ‡ ‡‡fdd„}t  d¡ dd	¡}||d
ƒ}ˆjˆ||dˆ id� d
S )zcval is func exprc                 S   s    | d | d  | d  | d  S r‹  r   r   r   r   r   rÐ     s    z-TestManyStencils.test_basic39.<locals>.kernelr›   r-   c                    s¼   ˆj | |d� ˆ| ƒ}tj| jˆ t|ƒd�}td| jd d ƒD ]v}td| jd d ƒD ]\}| |d |d f | |d |d f  | |d |d f  | |d |d f  |||f< qXq@|S )Nr   r§   r   r   r   r,  r.  ©r*   rÐ   rG   r   r   r4    s    ÿþýz/TestManyStencils.test_basic39.<locals>.__kernelrå   r`   r˜   Nr*   r‰  )re   rb  rx  rw   rx   r#  r6  r   r”  r   Útest_basic39  s    

ÿzTestManyStencils.test_basic39c                    sZ   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}t  d¡ dd¡}|||dƒ}ˆ ˆ |||¡ dS )	z2 args!c                 S   s   | d |d  S ©Nr   )r   r,   r   r/   r   r   r   rÐ   #  s    z-TestManyStencils.test_basic40.<locals>.kernelc                    s”   ˆj | ||d� ˆ | |ƒ}tj| jdt|ƒd�}td| jd d ƒD ]J}td| jd ƒD ]4}| |d |d f ||d |d f  |||f< qXqD|S )Nr   r   r§   r-   r   r,   r,  ©r   r0   r    r/  r0  r1  r2  r3  r   r   r4  (  s    
4z/TestManyStencils.test_basic40.<locals>.__kernelrå   r`   r˜   Nr5  ©rG   r7  r   r0   rk   r   r3  r   Útest_basic40!  s    	zTestManyStencils.test_basic40c                 C   sF   dd„ }t  d¡ dd¡}t  d¡ dd¡}| j|||ttgd� d	S )
z(2 args! rel arrays wildly not same size!c                 S   s   | d |d  S r–  r   r/   r   r   r   rÐ   8  s    z-TestManyStencils.test_basic41.<locals>.kernelrå   r`   r˜   r(   r   ri  N©re   rw   rx   r$  r  rÜ   ©rG   rÐ   r   r0   r   r   r   Útest_basic416  s    ÿzTestManyStencils.test_basic41c                 C   sF   dd„ }t  d¡ dd¡}t  d¡ dd¡}| j|||ttgd� dS )	z%2 args! rel arrays very close in sizec                 S   s   | d |d  S r–  r   r/   r   r   r   rÐ   A  s    z-TestManyStencils.test_basic42.<locals>.kernelrå   r`   r˜   ç      "@ri  Nrš  r›  r   r   r   Útest_basic42?  s    ÿzTestManyStencils.test_basic42c                    sZ   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}t  d¡ dd¡}|||dƒ}ˆ ˆ |||¡ dS )	z2 args more complexityc                 S   s    | d | d  |d  |d  S )Nr   ©r   r-   rX  r   r   r/   r   r   r   rÐ   J  s    z-TestManyStencils.test_basic43.<locals>.kernelc                    sÀ   ˆj | ||d� ˆ | |ƒ}tj| jdt|ƒd�}td| jd d ƒD ]v}td| jd d ƒD ]\}| |d |d f | |d |d f  ||d |d f  ||d |d f  |||f< q\qD|S )Nr   r   r§   r   r-   r,   r   r,  r—  r3  r   r   r4  O  s    
ÿþýz/TestManyStencils.test_basic43.<locals>.__kernelg      >@rŠ   é   Nr5  r˜  r   r3  r   Útest_basic43H  s    zTestManyStencils.test_basic43c                 C   sF   dd„ }t  d¡ dd¡}t  d¡ dd¡}| j|||ttgd� dS )z!2 args, has assignment before usec                 S   s   d| d< | d S )NrÒ   r   r   r/   r   r   r   rÐ   b  s    z-TestManyStencils.test_basic44.<locals>.kernelrå   r`   r˜   ri  N©re   rw   rx   r$  r  r   r›  r   r   r   Útest_basic44`  s    ÿzTestManyStencils.test_basic44c                 C   sF   dd„ }t  d¡ dd¡}t  d¡ dd¡}| j|||ttgd� dS )z02 args, has assignment and then cross dependencyc                 S   s   d| d< | d | d  S )NrÒ   r   r   r   r/   r   r   r   rÐ   l  s    z-TestManyStencils.test_basic45.<locals>.kernelrå   r`   r˜   ri  Nr¢  r›  r   r   r   Útest_basic45j  s    ÿzTestManyStencils.test_basic45c                 C   sF   dd„ }t  d¡ dd¡}t  d¡ dd¡}| j|||ttgd� dS )z#2 args, has cross relidx assignmentc                 S   s   |d | d< | d | d  S )NrŸ  r   r   r   r/   r   r   r   rÐ   v  s    z-TestManyStencils.test_basic46.<locals>.kernelrå   r`   r˜   ri  Nr¢  r›  r   r   r   Útest_basic46t  s    ÿzTestManyStencils.test_basic46c                    sp   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}t  d¡ dd¡}t  d¡ dd¡}||||dƒ}ˆ ˆ ||||¡ dS )	z3 argsc                 S   s   | d |d  |d  S )Nr   r   r   r   ©r   r0   r¼   r   r   r   rÐ   €  s    z-TestManyStencils.test_basic47.<locals>.kernelc                    s°   ˆj | |||d� ˆ | ||ƒ}tj| jdt|ƒd�}td| jd d ƒD ]b}td| jd d ƒD ]H}| |d |d f ||d |d f  ||d |d f  |||f< q`qH|S r<  r,  ©r   r0   r¼   r    r/  r0  r1  r2  r3  r   r   r4  †  s    ÿþz/TestManyStencils.test_basic47.<locals>.__kernelrå   r`   r˜   Nr5  ©rG   r7  r   r0   r¼   rk   r   r3  r   Útest_basic47~  s    zTestManyStencils.test_basic47c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	z22 args, has assignment before use via memory aliasc                 S   s"   | j }d|d d …d d …f< | d S )NrÌ   r   )ÚTr»   r   r   r   rÐ   ›  s    z-TestManyStencils.test_basic48.<locals>.kernelc                    s–   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]P}td| jd ƒD ]:}| j}d|d d …d d …f< | |d |d f |||f< qTq@|S )Nr   r   r§   r   rÌ   )r*  re   r-  r)  rô   r$   rª  )r   r    r/  r0  r1  r2  r¼   r3  r   r   r4  £  s     z/TestManyStencils.test_basic48.<locals>.__kernelrå   r`   r˜   Nr5  r6  r   r3  r   Útest_basic48™  s
    
zTestManyStencils.test_basic48c                    sb   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}t  d¡ dd¡}|||dƒ}ˆjˆ |||d	d
id� dS )z#2 args, standard_indexing on secondc                 S   s   | d |d  S )Nr   rZ  r   r/   r   r   r   rÐ   µ  s    z-TestManyStencils.test_basic49.<locals>.kernelc                    s†   ˆj | |d� ˆ | |ƒ}tj| jdt|ƒd�}td| jd d ƒD ]>}td| jd ƒD ](}| |d |d f |d  |||f< qVqB|S )Nr   r   r§   r   rZ  r,  r—  r3  r   r   r4  º  s    
(z/TestManyStencils.test_basic49.<locals>.__kernelrå   r`   r˜   Nr9   r0   r‰  r5  r˜  r   r3  r   Útest_basic49³  s    
ÿzTestManyStencils.test_basic49z&dynamic range checking not implementedc                 C   s   dd„ }dS )z2 args, standard_indexing OOBc                 S   s   | d |d  S )Nr   )r   é   r   r/   r   r   r   rÐ   Í  s    z-TestManyStencils.test_basic50.<locals>.kernelNr   ©rG   rÐ   r   r   r   Útest_basic50Ê  s    zTestManyStencils.test_basic50c                 C   sP   dd„ }t  d¡ dd¡}t  d¡ dd¡}| j|||dddgittgd	� d
S )z$2 args, standard_indexing, no relidxc                 S   s   | d |d  S ©Nr   )r   r-   r   r/   r   r   r   rÐ   Ó  s    z-TestManyStencils.test_basic51.<locals>.kernelrå   r`   r˜   r9   r   r0   r�  Nrl  r›  r   r   r   Útest_basic51Ñ  s    

þzTestManyStencils.test_basic51c                    sx   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}t  d¡ d	d	¡}t  d¡ dd¡}||||d
ƒ}ˆjˆ ||||ddid� d
S )z(3 args, standard_indexing on middle arg c                 S   s   | d |d  |d  S )Nr   rŸ  r   r¦  r   r   r   rÐ   Ý  s    z-TestManyStencils.test_basic52.<locals>.kernelc                    s¢   ˆj | ||d� ˆ | ||ƒ}tj| jdt|ƒd�}td| jd d ƒD ]V}td| jd d ƒD ]<}| |d |d f |d  ||d |d f  |||f< q^qF|S )Nr   r   r§   r   r-   r   r,  r§  r3  r   r   r4  â  s    ÿz/TestManyStencils.test_basic52.<locals>.__kernelrå   r`   r˜   r…  r-   Nr9   r0   r‰  r5  r¨  r   r3  r   Útest_basic52Û  s    
ÿzTestManyStencils.test_basic52c                 C   sX   dd„ }t  d¡ dd¡}t  d¡ dd¡}| jtttd�}| j|||ddi|d	� d
S )z92 args, standard_indexing on variable that does not existc                 S   s   | d |d  S r°  r   r/   r   r   r   rÐ   õ  s    z-TestManyStencils.test_basic53.<locals>.kernelrå   r`   r˜   r�  r9   r¼   r�  N)re   rw   rx   r(  rð   r  r$  ©rG   rÐ   r   r0   r÷   r   r   r   Útest_basic53ó  s    ýÿzTestManyStencils.test_basic53c                    sb   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}t  d¡ dd¡}|||dƒ}ˆjˆ |||d	d
id� dS )z)2 args, standard_indexing, index from varc                 S   s   d}| d |d|f  S )Nr-   r   r   r   )r   r0   rQ  r   r   r   rÐ     s    z-TestManyStencils.test_basic54.<locals>.kernelc                    sŽ   ˆj | |d� ˆ | |ƒ}tj| jdt|ƒd�}td| jd d ƒD ]F}td| jd ƒD ]0}d}| |d |d f |d|f  |||f< qVqB|S ©Nr   r   r§   r   r-   r,  )r   r0   r    r/  r0  r1  r2  rQ  r3  r   r   r4    s    
,z/TestManyStencils.test_basic54.<locals>.__kernelrå   r`   r˜   Nr9   r0   r‰  r5  r˜  r   r3  r   Útest_basic54   s    
ÿzTestManyStencils.test_basic54c                    sb   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}t  d¡ dd¡}|||dƒ}ˆjˆ |||d	d
id� dS )z62 args, standard_indexing, index from more complex varc                 S   s    d}d| }| d |d|f  S )Nr   r-   r   r   r   )r   r0   r~  rQ  r   r   r   rÐ     s    z-TestManyStencils.test_basic55.<locals>.kernelc           	         s–   ˆj | |d� ˆ | |ƒ}tj| jdt|ƒd�}td| jd d ƒD ]N}td| jd ƒD ]8}d}d| }| |d |d f |d|f  |||f< qVqB|S rµ  r,  )	r   r0   r    r/  r0  r1  r2  r~  rQ  r3  r   r   r4  !  s    
,z/TestManyStencils.test_basic55.<locals>.__kernelrå   r`   r˜   Nr9   r0   r‰  r5  r˜  r   r3  r   Útest_basic55  s    ÿzTestManyStencils.test_basic55c                    sb   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}t  d¡ dd¡}|||dƒ}ˆjˆ |||d	d
id� dS )z,2 args, standard_indexing, added complexity c                 S   sJ   d}d}|dd d …f D ]}||7 }qd| d }| d |d|f  | S )Nr   r   r-   r   r   )r   r0   r~  Úaccr&  rQ  r   r   r   rÐ   4  s    
z-TestManyStencils.test_basic56.<locals>.kernelc                    sÀ   ˆj | |d� ˆ | |ƒ}tj| jdt|ƒd�}td| jd d ƒD ]x}td| jd ƒD ]b}d}d}|dd d …f D ]}	||	7 }qrd| d }
| |d |d f |d|
f  | |||f< qVqB|S rµ  r,  )r   r0   r    r/  r0  r1  r2  r~  r¸  r&  rQ  r3  r   r   r4  >  s    

0z/TestManyStencils.test_basic56.<locals>.__kernelrå   r`   r˜   Nr9   r0   r‰  r5  r˜  r   r3  r   Útest_basic562  s    
ÿzTestManyStencils.test_basic56c                    sb   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}t  d¡ dd¡}|||dƒ}ˆjˆ |||d	d
id� dS )z12 args, standard_indexing, split index operation c                 S   s   |d }| d |d  S )Nr   r   r   r   r¦  r   r   r   rÐ   T  s    z-TestManyStencils.test_basic57.<locals>.kernelc                    sŽ   ˆj | |d� ˆ | |ƒ}tj| jdt|ƒd�}td| jd d ƒD ]F}td| jd ƒD ]0}|d }| |d |d f |d  |||f< qVqB|S r+  r,  ©r   r0   r    r/  r0  r1  r2  r¼   r3  r   r   r4  Z  s    
(z/TestManyStencils.test_basic57.<locals>.__kernelrå   r`   r˜   Nr9   r0   r‰  r5  r˜  r   r3  r   Útest_basic57R  s    
ÿzTestManyStencils.test_basic57c                    sb   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}t  d¡ dd¡}|||dƒ}ˆjˆ |||d	d
id� dS )z?2 args, standard_indexing, split index with broadcast mutation c                 S   s   |d d }| d |d  S )Nr   r   r   r   r¦  r   r   r   rÐ   l  s    z-TestManyStencils.test_basic58.<locals>.kernelc                    s’   ˆj | |d� ˆ | |ƒ}tj| jdt|ƒd�}td| jd d ƒD ]J}td| jd ƒD ]4}|d d }| |d |d f |d  |||f< qVqB|S r+  r,  rº  r3  r   r   r4  r  s    
(z/TestManyStencils.test_basic58.<locals>.__kernelrå   r`   r˜   Nr9   r0   r‰  r5  r˜  r   r3  r   Útest_basic58j  s    
ÿzTestManyStencils.test_basic58c              	      sn   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}t  d¡ dd¡}d}||||d	ƒ}ˆjˆ ||||d
ddgid� d	S )z>3 args, mix of array, relative and standard indexing and constc                 S   s   | d |d  | S ©Nr   rD  r   r¦  r   r   r   rÐ   „  s    z-TestManyStencils.test_basic59.<locals>.kernelc                    sŒ   ˆj | |d� ˆ | ||ƒ}tj| jdt|ƒd�}td| jd d ƒD ]B}td| jd ƒD ],}| |d |d f |d  | |||f< qXqD|S )Nr   r   r§   r   rD  r,  r§  r3  r   r   r4  ‰  s    ,z/TestManyStencils.test_basic59.<locals>.__kernelrå   r`   r˜   rÌ   Nr9   r0   r¼   r‰  r5  r¨  r   r3  r   Útest_basic59‚  s    

ÿzTestManyStencils.test_basic59c                 C   s^   dd„ }t  d¡ dd¡}t  d¡ dd¡}d}| jtd�}| j||||dd	d
gi|d� dS )zP3 args, mix of array, relative and standard indexing,
        tuple pass throughc                 S   s   | d |d  |d  S )Nr   rD  r   r   r¦  r   r   r   rÐ   �  s    z-TestManyStencils.test_basic60.<locals>.kernelrå   r`   r˜   )rÌ   )rü   r9   r0   r¼   r�  N)re   rw   rx   r(  r  r$  )rG   rÐ   r   r0   r¼   r÷   r   r   r   Útest_basic60š  s    
þzTestManyStencils.test_basic60c                 C   sH   dd„ }t  d¡ dd¡}t  d¡ dd¡}| j|||dditd� d	S )
z"2 args, standard_indexing on firstc                 S   s   | d |d  S r½  r   r/   r   r   r   rÐ   ª  s    z-TestManyStencils.test_basic61.<locals>.kernelrå   r`   r˜   r9   r   r�  N)re   rw   rx   r$  rð   r›  r   r   r   Útest_basic61¨  s    
þzTestManyStencils.test_basic61c                    sd   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}t  d¡ dd¡}|||dƒ}ˆjˆ |||d	d
dœd� dS )z"2 args, standard_indexing and cvalc                 S   s   | d |d  S r½  r   r/   r   r   r   rÐ   ´  s    z-TestManyStencils.test_basic62.<locals>.kernelc                    s†   ˆj | |d� ˆ | |ƒ}tj| jdt|ƒd�}td| jd d ƒD ]>}td| jd ƒD ](}| |d |d f |d  |||f< qVqB|S )Nr   rt  r§   r   r   rD  r,  r—  r3  r   r   r4  ¹  s    
(z/TestManyStencils.test_basic62.<locals>.__kernelrå   r`   r˜   Nr0   rt  )r9   r*   r‰  r5  r˜  r   r3  r   Útest_basic62²  s    	ÿÿzTestManyStencils.test_basic62c                 C   sX   dd„ }t  d¡ dd¡}t  d¡ dd¡}| jtttd�}| j|||dd	i|d
� dS )zQ2 args, standard_indexing applied to relative, should fail,
        non-const idxc                 S   s   | d|d f S )Nr   r   r   r/   r   r   r   rÐ   Ì  s    z-TestManyStencils.test_basic63.<locals>.kernelrå   r`   r˜   rÒ   r�  r9   r0   r�  Nr‘  r³  r   r   r   Útest_basic63É  s    ýÿzTestManyStencils.test_basic63c                 C   s8   dd„ }t  d¡ dd¡}| j||ddittgd� d	S )
z!1 arg that uses standard_indexingc                 S   s   | d S r5   r   r   r   r   r   rÐ   Ú  s    z-TestManyStencils.test_basic64.<locals>.kernelrå   r`   r˜   r9   r   r�  Nrl  ©rG   rÐ   r   r   r   r   Útest_basic64Ø  s
    ÿzTestManyStencils.test_basic64c                    sH   dd„ ‰ ‡ ‡fdd„}t  d¡}d}|||ƒ}ˆjˆ ||d|id� d	S )
zbasic induced neighborhood testc                 S   s(   d}t ddƒD ]}|| | 7 }q|d S ©Nr   éãÿÿÿr   é   r#   ©r   Úcumulr&   r   r   r   rÐ   â  s    z-TestManyStencils.test_basic65.<locals>.kernelc                    sx   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]6}d}tddƒD ]}|| ||  7 }qN|d ||f< q<|S ©Nr   r   r§   é   rÆ  r   rÇ  r,  ©r   r    r/  r0  Ú_TestManyStencils__anrÉ  r&   r3  r   r   r4  ê  s    z/TestManyStencils.test_basic65.<locals>.__kernelç      N@©)rÆ  r   r    r‰  Nr€  ©rG   r7  r   Únhrk   r   r3  r   Útest_basic65à  s    


ÿzTestManyStencils.test_basic65c                    sH   dd„ ‰ ‡ ‡fdd„}t  d¡}d}|||ƒ}ˆjˆ ||d|id� d	S )
zbasic const neighborhood testc                 S   s(   d}t ddƒD ]}|| d 7 }q|d S rÅ  r#   rÈ  r   r   r   rÐ   þ  s    z-TestManyStencils.test_basic66.<locals>.kernelc                    sx   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]6}d}tddƒD ]}|| |d  7 }qN|d ||f< q<|S rÊ  r,  rÌ  r3  r   r   r4  	  s    z/TestManyStencils.test_basic66.<locals>.__kernelrÎ  rÏ  r    r‰  Nr€  rÐ  r   r3  r   Útest_basic66ü  s    


ÿzTestManyStencils.test_basic66c                    sP   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}d}|||ƒ}ˆjˆ ||d	|id
� dS )z"basic 2d induced neighborhood testc                 S   s<   d}t ddƒD ]$}t ddƒD ]}|| ||f 7 }qq|d S ©Nr   r   r   éöÿÿÿé2   r#   ©r   rÉ  r&   r„   r   r   r   rÐ   	  s
    z-TestManyStencils.test_basic67.<locals>.kernelc           	   	      s¨   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]f}td| jd ƒD ]P}d}tddƒD ],}tddƒD ]}|| || || f 7 }qpqb|d	 |||f< qPq<|S ©
Nr   r   r§   rÌ   r   rŠ   r   rÕ  rÖ  r,  ©	r   r    r/  r0  Ú_TestManyStencils__bnrÍ  rÉ  r&   r„   r3  r   r   r4  "	  s    z/TestManyStencils.test_basic67.<locals>.__kernelç      i@rÌ   é   ©r   ©rÕ  r   r    r‰  Nr5  rÐ  r   r3  r   Útest_basic67	  s    	

ÿzTestManyStencils.test_basic67c                 C   s8   dd„ }t  d¡ dd¡}| j||ddittgd� d	S )
z basic 2d induced 1D neighborhoodc                 S   s,   d}t ddƒD ]}|| d|f 7 }q|d S )Nr   rÕ  r   rÖ  r#   )r   rÉ  r„   r   r   r   rÐ   7	  s    z.TestManyStencils.test_basic67b.<locals>.kernelrÛ  rÌ   rÜ  r    )rÞ  r�  N)re   rw   rx   r$  r   r  rÃ  r   r   r   Útest_basic67b5	  s
    ÿzTestManyStencils.test_basic67bc                    sP   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}d}|||ƒ}ˆjˆ ||d	|id
� dS )z0basic 2d one induced, one cost neighborhood testc                 S   s<   d}t ddƒD ]$}t ddƒD ]}|| |df 7 }qq|d S rÔ  r#   r×  r   r   r   rÐ   C	  s
    z-TestManyStencils.test_basic68.<locals>.kernelc           	   	      s¨   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]f}td| jd ƒD ]P}d}tddƒD ],}tddƒD ]}|| || |d f 7 }qpqb|d	 |||f< qPq<|S rØ  r,  rÙ  r3  r   r   r4  M	  s    z/TestManyStencils.test_basic68.<locals>.__kernelrÛ  rÌ   rÜ  rÝ  r    r‰  Nr5  rÐ  r   r3  r   Útest_basic68A	  s    


ÿzTestManyStencils.test_basic68c                    sP   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}d}|||ƒ}ˆjˆ ||d	|id
� dS )z#basic 2d two cost neighborhood testc                 S   s8   d}t ddƒD ] }t ddƒD ]}|| d 7 }qq|d S )Nr   r   r   rÕ  r6   rÖ  r#   r×  r   r   r   rÐ   c	  s
    z-TestManyStencils.test_basic69.<locals>.kernelc           	   	      s¨   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]f}td| jd ƒD ]P}d}tddƒD ],}tddƒD ]}|| |d |d f 7 }qpqb|d	 |||f< qPq<|S rØ  r,  rÙ  r3  r   r   r4  l	  s    z/TestManyStencils.test_basic69.<locals>.__kernelrÛ  rÌ   rÜ  rÝ  r    r‰  Nr5  rÐ  r   r3  r   Útest_basic69a	  s    	

ÿzTestManyStencils.test_basic69c                    sP   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}d}|||ƒ}ˆjˆ ||d	|id
� dS )zneighborhood adding complexityc                 S   sL   d}d}t ddƒD ]0}|| }t ddƒD ]}|| ||f | 7 }q(q|d S )Nr   rå   r   r   rÕ  rÖ  r#   ©r   rÉ  Úzzr&   rQ  r„   r   r   r   rÐ   �	  s    z-TestManyStencils.test_basic70.<locals>.kernelc              	      s¸   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]v}td| jd ƒD ]`}d}d}tddƒD ]8}|| }	td	dƒD ] }
|| || ||
 f |	 7 }q|qf|d
 |||f< qPq<|S )Nr   r   r§   rÌ   r   rŠ   rå   r   rÕ  rÖ  r,  ©r   r    r/  r0  rÚ  rÍ  rÉ  rä  r&   rQ  r„   r3  r   r   r4  Œ	  s     z/TestManyStencils.test_basic70.<locals>.__kernelrÛ  rÌ   rÜ  rÝ  r    r‰  Nr5  rÐ  r   r3  r   Útest_basic70	  s    

ÿzTestManyStencils.test_basic70c                    sH   dd„ ‰ ‡ ‡fdd„}t  d¡}d}|||ƒ}ˆjˆ ||d|id� d	S )
zneighborhood, type changec                 S   s<   d}t ddƒD ]$}d}|dkr"d}|| | | 7 }q|d S )Nr   rÆ  r   ç        éñÿÿÿrÚ   rÇ  r#   )r   rÉ  r&   r&  r   r   r   rÐ   £	  s    z-TestManyStencils.test_basic71.<locals>.kernelc                    sŒ   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]J}d}tddƒD ](}d}|dkrbd	}|| ||  | 7 }qN|d
 ||f< q<|S )Nr   r   r§   rË  rÆ  r   rç  rè  rÚ   rÇ  r,  )r   r    r/  r0  rÍ  rÉ  r&   r&  r3  r   r   r4  ®	  s    z/TestManyStencils.test_basic71.<locals>.__kernelrÎ  rÏ  r    r‰  Nr€  rÐ  r   r3  r   Útest_basic71¡	  s    


ÿzTestManyStencils.test_basic71c                    sH   dd„ ‰ ‡ ‡fdd„}t  d¡}d}|||ƒ}ˆjˆ ||d|id� d	S )
z+neighborhood, narrower range than specifiedc                 S   s(   d}t ddƒD ]}|| | 7 }q|d S )Nr   éíÿÿÿr\  rÇ  r#   rÈ  r   r   r   rÐ   Ä	  s    z-TestManyStencils.test_basic72.<locals>.kernelc                    sx   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]6}d}tddƒD ]}|| ||  7 }qN|d ||f< q<|S )Nr   r   r§   rË  rê  r\  rÇ  r,  rÌ  r3  r   r   r4  Ì	  s    z/TestManyStencils.test_basic72.<locals>.__kernelrÎ  rÏ  r    r‰  Nr€  rÐ  r   r3  r   Útest_basic72Â	  s    


ÿzTestManyStencils.test_basic72c                    sH   dd„ ‰ ‡ ‡fdd„}t  d¡}d}|||ƒ}ˆjˆ ||d|id� d	S )
zneighborhood, +ve rangec                 S   s(   d}t ddƒD ]}|| | 7 }q|d S )Nr   rŠ   é   rÇ  r#   rÈ  r   r   r   rÐ   ß	  s    z-TestManyStencils.test_basic73.<locals>.kernelc                    s|   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]6}d}tddƒD ]}|| ||  7 }qR|d ||f< q@|S )Nr   r   r§   rÌ   rŠ   rì  rÇ  r,  rÌ  r3  r   r   r4  ç	  s    z/TestManyStencils.test_basic73.<locals>.__kernelrÎ  ))rŠ   rÌ   r    r‰  Nr€  rÐ  r   r3  r   Útest_basic73Ý	  s    


ÿzTestManyStencils.test_basic73c                    sH   dd„ ‰ ‡ ‡fdd„}t  d¡}d}|||ƒ}ˆjˆ ||d|id� d	S )
zneighborhood, -ve rangec                 S   s(   d}t ddƒD ]}|| | 7 }q|d S )Nr   rÕ  r!   rÇ  r#   rÈ  r   r   r   rÐ   ú	  s    z.TestManyStencils.test_basic73b.<locals>.kernelc                    sx   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]6}d}tddƒD ]}|| ||  7 }qN|d ||f< q<|S )Nr   r   r§   rÌ   rÕ  r!   rÇ  r,  rÌ  r3  r   r   r4  
  s    z0TestManyStencils.test_basic73b.<locals>.__kernelrÎ  ))rÕ  r   r    r‰  Nr€  rÐ  r   r3  r   Útest_basic73bø	  s    


ÿzTestManyStencils.test_basic73bc                    sH   dd„ ‰ ‡ ‡fdd„}t  d¡}d}|||ƒ}ˆjˆ ||d|id� d	S )
z!neighborhood, -ve->+ve range spanc                 S   s(   d}t ddƒD ]}|| | 7 }q|d S )Nr   r   rì  rÇ  r#   rÈ  r   r   r   rÐ   
  s    z-TestManyStencils.test_basic74.<locals>.kernelc                    s|   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]6}d}tddƒD ]}|| ||  7 }qR|d ||f< q@|S )	Nr   r   r§   rŠ   rÌ   r   rì  rÇ  r,  rÌ  r3  r   r   r4  
  s    z/TestManyStencils.test_basic74.<locals>.__kernelrÎ  ))r   rÌ   r    r‰  Nr€  rÐ  r   r3  r   Útest_basic74
  s    


ÿzTestManyStencils.test_basic74c                    sH   dd„ ‰ ‡ ‡fdd„}t  d¡}d}|||ƒ}ˆjˆ ||d|id� d	S )
z!neighborhood, -ve->-ve range spanc                 S   s(   d}t ddƒD ]}|| | 7 }q|d S )Nr   rÕ  r   rÇ  r#   rÈ  r   r   r   rÐ   0
  s    z-TestManyStencils.test_basic75.<locals>.kernelc                    sx   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]6}d}tddƒD ]}|| ||  7 }qN|d ||f< q<|S )Nr   r   r§   rÌ   rÕ  r   rÇ  r,  rÌ  r3  r   r   r4  9
  s    z/TestManyStencils.test_basic75.<locals>.__kernelrÎ  ))rÕ  r,   r    r‰  Nr€  rÐ  r   r3  r   Útest_basic75.
  s    	


ÿzTestManyStencils.test_basic75c                    sP   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}d}|||ƒ}ˆjˆ ||d	|id
� dS )zneighborhood, mixed range spanc                 S   sL   d}d}t ddƒD ]0}|| }t ddƒD ]}|| ||f | 7 }q(q|d S )Nr   rå   r\  r˜   rÖ  r#   rã  r   r   r   rÐ   L
  s    z-TestManyStencils.test_basic76.<locals>.kernelc              	      s¼   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]v}td| jd ƒD ]`}d}d}tddƒD ]8}|| }	tddƒD ] }
|| || ||
 f |	 7 }q€qj|d	 |||f< qTq@|S )
Nr   r   r§   r`   r   rå   r\  r˜   rÖ  r,  rå  r3  r   r   r4  X
  s     z/TestManyStencils.test_basic76.<locals>.__kernelrÛ  rÌ   rÜ  ))r\  r   )r\  r`   r    r‰  Nr5  rÐ  r   r3  r   Útest_basic76J
  s    

ÿzTestManyStencils.test_basic76c                    sf   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}t  d¡ dd¡}d}||||ƒ}ˆjˆ |||d	|id
� dS )z neighborhood, two args c                 S   sH   d}t ddƒD ]0}t ddƒD ] }|| ||f |||f  7 }qq|d S ©Nr   r\  r   r�  r#   ©r   r0   rÉ  r&   r„   r   r   r   rÐ   o
  s
     z-TestManyStencils.test_basic77.<locals>.kernelc           
   
      sÀ   ˆj | ||d� ˆ | |ƒ}tj| jdt|ƒd�}td| jd ƒD ]z}td| jd ƒD ]d}d}tddƒD ]@}tddƒD ]0}	|| || ||	 f ||| ||	 f  7 }qtqf|d |||f< qTq@|S ©Nr   r   r§   r`   r   r\  r�  r,  ©
r   r0   r    r/  r0  rÚ  rÍ  rÉ  r&   r„   r3  r   r   r4  x
  s    
ÿ
z/TestManyStencils.test_basic77.<locals>.__kernelrÛ  rÌ   rÜ  ©©r\  r   r÷  r    r‰  Nr5  ©rG   r7  r   r0   rÑ  rk   r   r3  r   Útest_basic77m
  s    	ÿzTestManyStencils.test_basic77c                    sf   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}t  d¡ dd¡}d}||||ƒ}ˆjˆ |||d	|id
� dS )z. neighborhood, two args, -ve range, -ve range c                 S   sH   d}t ddƒD ]0}t ddƒD ] }|| ||f |||f  7 }qq|d S )Nr   éúÿÿÿr,   éùÿÿÿr   r�  r#   ró  r   r   r   rÐ   �
  s
     z-TestManyStencils.test_basic78.<locals>.kernelc           
   
      sÀ   ˆj | ||d� ˆ | |ƒ}tj| jdt|ƒd�}td| jd ƒD ]z}td| jd ƒD ]d}d}tddƒD ]@}td	d
ƒD ]0}	|| || ||	 f ||| ||	 f  7 }qtqf|d |||f< qTq@|S )Nr   r   r§   rÎ   r   r   rú  r,   rû  r   r�  r,  rõ  r3  r   r   r4  ˜
  s    
ÿ
z/TestManyStencils.test_basic78.<locals>.__kernelç     Àr@r­  rÜ  )©rú  r\  )rû  r,   r    r‰  Nr5  rø  r   r3  r   Útest_basic78�
  s    	ÿzTestManyStencils.test_basic78c                    sf   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}t  d¡ dd¡}d}||||ƒ}ˆjˆ |||d	|id
� dS )z. neighborhood, two args, -ve range, +ve range c                 S   sH   d}t ddƒD ]0}t ddƒD ] }|| ||f |||f  7 }qq|d S )Nr   rú  r,   r-   rÌ   r�  r#   ró  r   r   r   rÐ   ¯
  s
     z.TestManyStencils.test_basic78b.<locals>.kernelc           
   
      sÄ   ˆj | ||d� ˆ | |ƒ}tj| jdt|ƒd�}td| jd d ƒD ]z}td| jd ƒD ]d}d}tddƒD ]@}td	d
ƒD ]0}	|| || ||	 f ||| ||	 f  7 }qxqj|d |||f< qXqD|S )Nr   r   r§   r   é	   r   rú  r,   r-   rÌ   r�  r,  rõ  r3  r   r   r4  ¸
  s    
ÿ
z0TestManyStencils.test_basic78b.<locals>.__kernelrü  r­  rÜ  )rý  )r-   rÿ  r    r‰  Nr5  rø  r   r3  r   Útest_basic78b­
  s    	ÿzTestManyStencils.test_basic78bc                 C   sZ   dd„ }t  d¡ dd¡}t  d¡ ddd¡}| jtttd�}| j|||dd	i|d
� dS )z% neighborhood, two incompatible args c                 S   sH   d}t ddƒD ]0}t ddƒD ] }|| ||f |||f  7 }qq|d S rò  r#   ró  r   r   r   rÐ   Ï
  s
     z-TestManyStencils.test_basic79.<locals>.kernelrÛ  rÌ   rÜ  r-   r�  r    rö  r�  N)re   rw   rx   r(  r   r$  r³  r   r   r   Útest_basic79Í
  s    ýÿþzTestManyStencils.test_basic79c                    sX   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}d}d	}||||ƒ}ˆjˆ |||d
|id� dS )z neighborhood, type change c                 S   s@   d}t ddƒD ](}t ddƒD ]}|| ||f | 7 }qq|d S rò  r#   ró  r   r   r   rÐ   á
  s
    z-TestManyStencils.test_basic80.<locals>.kernelc           
   	      s°   ˆj | ||d� ˆ | |ƒ}tj| jdt|ƒd�}td| jd ƒD ]j}td| jd ƒD ]T}d}tddƒD ]0}tddƒD ] }	|| || ||	 f | 7 }qtqf|d |||f< qTq@|S rô  r,  rõ  r3  r   r   r4  ê
  s    
 z/TestManyStencils.test_basic80.<locals>.__kernelrÛ  rÌ   rÜ  y              (@rö  r    r‰  Nr5  rø  r   r3  r   Útest_basic80ß
  s    	ÿzTestManyStencils.test_basic80c                 C   sR   dd„ }t  d¡ dd¡}|d  ¡ }| jtttd�}| j|||dd	i|d
� dS )z1 neighborhood, dimensionally incompatible arrays c                 S   sD   d}t ddƒD ],}t ddƒD ]}|| ||f ||  7 }qq|d S rò  r#   ró  r   r   r   rÐ      s
    z-TestManyStencils.test_basic81.<locals>.kernelrÛ  rÌ   rÜ  r   r�  r    rö  r�  N)re   rw   rx   Úcopyr(  r   rÜ   r$  r³  r   r   r   Útest_basic81þ
  s    ý
þzTestManyStencils.test_basic81c                    s^   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}| ¡ }d}||||ƒ}ˆjˆ ||||d	d
œd� dS )z% neighborhood, with standard_indexingc                 S   sD   d}t ddƒD ],}t ddƒD ]}|| ||f |d  7 }qq|d S ©Nr   r\  r   ©r   r`   r�  r#   ró  r   r   r   rÐ     s
    z-TestManyStencils.test_basic82.<locals>.kernelc           
   	      s´   ˆj | ||d� ˆ | |ƒ}tj| jdt|ƒd�}td| jd ƒD ]n}td| jd ƒD ]X}d}tddƒD ]4}tddƒD ]$}	|| || ||	 f |d  7 }qtqf|d |||f< qTq@|S )	Nr   r   r§   r`   r   r\  r  r�  r,  rõ  r3  r   r   r4    s    
$z/TestManyStencils.test_basic82.<locals>.__kernelrÛ  rÌ   rÜ  rö  r0   )r    r9   r‰  N©re   rw   rx   r  r#  rø  r   r3  r   Útest_basic82  s    	ÿÿzTestManyStencils.test_basic82c              	      sz   dd„ ‰ t  d¡ dd¡}| ¡ }‡ ‡fdd„}t  d¡ dd¡}| ¡ }d}||||ƒ}ˆjˆ ||||d	d
dœd� dS )z. neighborhood, with standard_indexing and cvalc                 S   sD   d}t ddƒD ],}t ddƒD ]}|| ||f |d  7 }qq|d S r  r#   ró  r   r   r   rÐ   2  s
    z-TestManyStencils.test_basic83.<locals>.kernelrÛ  rÌ   rÜ  c           
   	      s´   ˆj | ||d� ˆ | |ƒ}tj| jdt|ƒd�}td| jd ƒD ]n}td| jd ƒD ]X}d}tddƒD ]4}tddƒD ]$}	|| || ||	 f |d  7 }qtqf|d	 |||f< qTq@|S )
Nr   ç      ø?r§   r`   r   r   r\  r  r�  r,  rõ  r3  r   r   r4  >  s    
$z/TestManyStencils.test_basic83.<locals>.__kernelrö  r0   r	  ©r    r9   r*   r‰  Nr  )rG   r   r0   r7  rÑ  rk   r   r3  r   Útest_basic830  s    þÿzTestManyStencils.test_basic83c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	z kernel calls njit c                 S   s   | d t | d ƒ S ©Nr6   r   )r=   r   r   r   r   rÐ   V  s    z-TestManyStencils.test_basic84.<locals>.kernelc              	      s–   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]P}td| jd ƒD ]:}| |d |d f t | |d |d f ¡ |||f< qTq@|S r+  )r*  re   r-  r)  rô   r$   r=   Úpy_funcr.  r3  r   r   r4  [  s    ÿz/TestManyStencils.test_basic84.<locals>.__kernelrÛ  rÌ   rÜ  Nr5  r6  r   r3  r   Útest_basic84T  s
    

zTestManyStencils.test_basic84c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	z! kernel calls njit(parallel=True)c                 S   s   | d t | d ƒ S r  )r@   r   r   r   r   rÐ   k  s    z-TestManyStencils.test_basic85.<locals>.kernelc              	      s–   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]P}td| jd ƒD ]:}| |d |d f t | |d |d f ¡ |||f< qTq@|S r+  )r*  re   r-  r)  rô   r$   r@   r  r.  r3  r   r   r4  q  s    ÿz/TestManyStencils.test_basic85.<locals>.__kernelrÛ  rÌ   rÜ  Nr5  r6  r   r3  r   Útest_basic85i  s
    

zTestManyStencils.test_basic85c                 C   s8   dd„ }t  d¡ dd¡}| j||ddittgd� dS )	z bad kwarg c                 S   s   | d S r5   r   r   r   r   r   rÐ   ‚  s    z-TestManyStencils.test_basic86.<locals>.kernelrÛ  rÌ   rÜ  Úbadr�  N)re   rw   rx   r$  r  r   rÃ  r   r   r   Útest_basic86€  s
    ÿzTestManyStencils.test_basic86c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	z reserved arg name in use c                 S   s   | d S r5   r   )Ú__sentinel__r   r   r   rÐ   ‹  s    z-TestManyStencils.test_basic87.<locals>.kernelc                    sx   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]6}td| jd ƒD ] }| |d |d f |||f< qPq<|S r+  r,  )r  r    r/  r0  r1  r2  r3  r   r   r4  �  s     z/TestManyStencils.test_basic87.<locals>.__kernelrÛ  rÌ   rÜ  Nr5  r6  r   r3  r   Útest_basic87‰  s
    	
zTestManyStencils.test_basic87c                 C   sB   dd„ }t  d¡ dd¡}| jtttd�}| j||di |d� d	S )
z use of reserved word c                 S   s   || d  S r:  r   )r   rv   r   r   r   rÐ   Ÿ  s    z-TestManyStencils.test_basic88.<locals>.kernelrå   r`   r˜   r�  r(   r�  Nr‘  r’  r   r   r   Útest_basic88�  s    ýzTestManyStencils.test_basic88c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	z basic multiple returnc                 S   s,   | d dkrdS | d dk r$| d S dS d S )Nr   rÌ   rt  rZ  rp  r6   rœ   r   r   r   r   r   rÐ   ª  s
    z-TestManyStencils.test_basic89.<locals>.kernelc                    sÈ   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]‚}td| jd ƒD ]l}| |d |d f dkr~d|||f< qT| |d |d f dk r´| |d |d f |||f< qTd	|||f< qTq@|S )
Nr   r   r§   r   r`   rÌ   rt  rp  rœ   r,  r.  r3  r   r   r4  ´  s    z/TestManyStencils.test_basic89.<locals>.__kernelrÛ  rÌ   rÜ  Nr5  r6  r   r3  r   Útest_basic89¨  s
    

zTestManyStencils.test_basic89c              	      s`   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}| ¡ }d}||||ƒ}ˆjˆ ||||d	d
dœd� dS )z@ neighborhood, with standard_indexing and cval, multiple returnsc                 S   s\   d}t ddƒD ],}t ddƒD ]}|| ||f |d  7 }qq|d }|dkrT|d S |S d S )Nr   r\  r   r  r�  rÛ  r(   r#   )r   r0   rÉ  r&   r„   Úresr   r   r   rÐ   È  s    z-TestManyStencils.test_basic90.<locals>.kernelc              	      sÒ   ˆj | ||d� ˆ | |ƒ}tj| jdt|ƒd�}td| jd ƒD ]Œ}td| jd ƒD ]v}d}tddƒD ]4}tddƒD ]$}	|| || ||	 f |d  7 }qtqf|d	 }
|
d
kr¾|
d |||f< qT|
|||f< qTq@|S )Nr   r	  r§   r`   r   r   r\  r  r�  rÛ  r(   r,  )r   r0   r    r/  r0  rÚ  rÍ  rÉ  r&   r„   r  r3  r   r   r4  Õ  s    
$z/TestManyStencils.test_basic90.<locals>.__kernelrÛ  rÌ   rÜ  rö  r0   r	  r
  r‰  Nr  rø  r   r3  r   Útest_basic90Æ  s    þÿzTestManyStencils.test_basic90c                    sD   dd„ ‰ ‡ ‡fdd„}t  d¡ dd¡}||dƒ}ˆ ˆ ||¡ dS )	z? Issue #3454, const(int) == const(int) evaluating incorrectly. c                 S   s   d}ddkrd}| d | S )Nr   r-   r6   r   r/   r   r   r   rÐ   ñ  s    z-TestManyStencils.test_basic91.<locals>.kernelc                    sŒ   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd ƒD ]J}td| jd ƒD ]4}d}ddkrdd}| |d |d f | |||f< qPq<|S rµ  r,  )r   r    r/  r0  r1  r2  r0   r3  r   r   r4  ù  s    $z/TestManyStencils.test_basic91.<locals>.__kernelrÛ  rÌ   rÜ  Nr5  r6  r   r3  r   Útest_basic91ï  s
    
zTestManyStencils.test_basic91c                    sV   dd„ ‰ ‡ ‡fdd„}t  t  d¡d ¡ dd¡ t j¡}||d	ƒ}ˆ ˆ ||¡ d	S )
ú7 Issue #3497, bool return type evaluating incorrectly. c                 S   sH   | d | d A | d A | d A | d A | d A | d A | d A | d	 A S ©
NrF  r   r@  r   r6   r   rB  r   rD  r   r   r   r   r   rÐ     s    ÿÿÿþþþz-TestManyStencils.test_basic92.<locals>.kernelc                    s   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]Ú}td| jd d ƒD ]À}| |d |d f | |d |d f A | |d |d f A | |d |d f A | |d |d f A | |d |d f A | |d |d f A | |d |d f A | |d |d f A |||f< qXq@|S r<  r,  r.  r3  r   r   r4    s.    ÿþýüûúùø	z/TestManyStencils.test_basic92.<locals>.__kernelrÜ  r-   r˜   rŠ   N©re   rƒ  rw   rx   rv  rª   r#  ©rG   r7  r|   rk   r   r3  r   Útest_basic92	  s
    $
zTestManyStencils.test_basic92c                    s^   dd„ ‰ ‡ ‡fdd„}t  t  d¡d ¡ dd¡ t j¡}||d	ƒ}ˆjˆ ||d
did� d	S )r  c                 S   sH   | d | d A | d A | d A | d A | d A | d A | d A | d	 A S r  r   r   r   r   r   rÐ   *  s    ÿÿÿþþþz-TestManyStencils.test_basic93.<locals>.kernelc                    s   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]Ú}td| jd d ƒD ]À}| |d |d f | |d |d f A | |d |d f A | |d |d f A | |d |d f A | |d |d f A | |d |d f A | |d |d f A | |d |d f A |||f< qXq@|S )Nr   r   r§   r   r   r,  r.  r3  r   r   r4  1  s.    ÿþýüûúùø	z/TestManyStencils.test_basic93.<locals>.__kernelrÜ  r-   r˜   rŠ   Nr*   Tr‰  r  r  r   r3  r   Útest_basic93(  s
    $
zTestManyStencils.test_basic93c                    sV   dd„ ‰ ‡ ‡fdd„}t jdt jd� dd¡}d	}|||ƒ}ˆjˆ ||d
|id� dS )z" Issue #3528. Support for slices. c                 S   s   t  | dd…dd…f ¡S ©Nr   r-   ©re   Úmedianr   r   r   r   rÐ   H  s    z-TestManyStencils.test_basic94.<locals>.kernelc              	      s–   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]P}td| jd d ƒD ]6}t | |d |d …|d |d …f ¡|||f< qXq@|S ©Nr   r   r§   r   r   r-   ©r*  re   r-  r)  rô   r$   r!  ©r   r    r/  r0  rÚ  rÍ  r3  r   r   r4  M  s     ÿz/TestManyStencils.test_basic94.<locals>.__kernelrÜ  r§   r˜   rŠ   ©r@  r@  r    r‰  N)re   rw   Úuint32rx   r#  rÐ  r   r3  r   Útest_basic94F  s    


ÿzTestManyStencils.test_basic94znot yet supportedc                 C   s   dd„ }dS )z  Slice, calculate neighborhood. c                 S   s   t  | dd…dd…f ¡S )Nr   r-   r\  r˜   r   r   r   r   r   rÐ   `  s    z-TestManyStencils.test_basic95.<locals>.kernelNr   r®  r   r   r   Útest_basic95]  s    zTestManyStencils.test_basic95c                    sN   dd„ ‰ ‡ ‡fdd„}t jdt jd�}d}|||ƒ}ˆjˆ ||d|id	� d
S )z 1D slice. c                 S   s   t  | dd… ¡S r  r   r   r   r   r   rÐ   f  s    z-TestManyStencils.test_basic96.<locals>.kernelc                    sj   ˆj | |d� ˆ | ƒ}tj| jdt|ƒd�}td| jd d ƒD ]$}t | |d |d … ¡||f< q@|S r"  r#  )r   r    r/  r0  rÍ  r3  r   r   r4  k  s    "z/TestManyStencils.test_basic96.<locals>.__kernelrÜ  r§   )r@  r    r‰  N)re   rw   r&  r#  rÐ  r   r3  r   Útest_basic96d  s    

ÿzTestManyStencils.test_basic96c                 C   s   dd„ }dS )z 2D slice and index. c                 S   s   t  | dd…df ¡S )Nr   r-   r`   r   r   r   r   r   rÐ   |  s    z-TestManyStencils.test_basic97.<locals>.kernelNr   r®  r   r   r   Útest_basic97y  s    zTestManyStencils.test_basic97c                    sx   t jt jt j tdƒtdƒ fD ]R‰ dd„ ‰‡ ‡‡fdd„}t  d¡ d¡}d}|||ƒ}ˆjˆ|||ˆ d	œd
� q dS )rã   rä   c                 S   s   | d S r5   r   r   r   r   r   rÐ   „  s    z-TestManyStencils.test_basic98.<locals>.kernelc                    s€   ˆj | |d� ˆ| ƒ}tj| jˆ t|ƒd�}td| jd d ƒD ]:}td| jd d ƒD ] }| |d |d f |||f< qXq@|S )Nr   r§   r   r   r,  r$  r”  r   r   r4  ‰  s     z/TestManyStencils.test_basic98.<locals>.__kernelg      @)r-   r`   r%  )r    r*   r‰  N)re   ræ   rä   rç   rw   rx   r#  rÐ  r   r”  r   Útest_basic98€  s    $


ÿÿzTestManyStencils.test_basic98)tro   rp   rq   rF   r#  r$  r(  r*  r8  r;  r=  r>  r?  rA  rC  rE  rG  rH  rI  rJ  rK  rL  rO  rS  rU  rW  rY  r[  r]  r^  r_  rg  rh  rk  rm  rq  rs  rw  rz  r{  r}  ÚunittestÚskipr  r�  r‚  r„  rˆ  rŠ  rŒ  rŽ  r“  r•  r™  rœ  rž  r¡  r£  r¤  r¥  r©  r«  r¬  r¯  r±  r²  r´  r¶  r·  r¹  r»  r¼  r¾  r¿  rÀ  rÁ  rÂ  rÄ  rÒ  rÓ  rß  rà  rá  râ  ræ  ré  rë  rí  rî  rï  rð  rñ  rù  rþ  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r'  r(  r)  r*  r+  rr   r   r   rI   r   rê   ‚  sæ    f
		


		




 
 "!#    $	)

rê   Ú__main__))Únumpyre   Ú
contextlibr   rU   r   r   Z
numba.corer   r   Znumba.core.compilerr   r   Znumba.core.cpur	   Znumba.tests.supportr
   r   r   Znumba.core.errorsr   r   r   r,  ré   r   r'   r.   r1   r4   r8   r:   r;   r=   r@   ZTestCaserA   rs   rê   ro   Úmainr   r   r   r   Ú<module>   sz   









7   z                    ,
