Ë
    èÿæi(ñ ã                   ó  — 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 d dlmZmZmZ d dlZeZed	„ «       Z ed
¬«      d„ «       Z ed¬«      d„ «       Zed„ «       Zed„ «       Zed„ «       Z ed¬«      d„ «       Z ed¬«      d„ «       Zed„ «       Z es ed¬«      d„ «       Z! G d„ dejD                  «      Z# G d„ de#«      Z$e G d„ d e#«      «       Z%e&d!k(  r ejN                  «        yy)"é    N)Úcontextmanager)ÚnjitÚstencil)ÚtypesÚregistry)Úcompile_extraÚFlags)ÚParallelOptions)Úskip_parfors_unsupportedÚ_32bit)ÚLoweringErrorÚTypingErrorÚNumbaValueErrorc                 ó6   — d| d   | d   z   | d   z   | d   z   z  S ©Nç      Ð?©r   é   ©r   r   ©r   éÿÿÿÿ©r   r   © ©Úas    ún/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_stencils.pyÚstencil1_kernelr      s,   € à�1�T‘7˜Q˜t™WÑ$ q¨¡xÑ/°!°E±(Ñ:Ñ;Ð;ó    )©éûÿÿÿr   ©Úneighborhoodc                 óH   — | d   }t        dd«      D ]
  }|| |   z  }Œ d|z  S )Nr    éüÿÿÿr   ç333333Ó?©Úrange)r   ÚcumÚis      r   Ústencil2_kernelr*      s2   € à
ˆB‰%€CÜ�2�qŽ\ˆØˆq�‰t‰‰ð à�‰9Ðr   ç      ð?©Úcvalc                 ó   — d| d   z  S )Nr   ©éþÿÿÿé   r   r   s    r   Ústencil3_kernelr2   #   s   € à�!�E‘(‰?Ðr   c                 óf   — d| d   | d   z   | d   z   | d   z   |d   z   |d   z   |d   z   |d   z   z  S r   r   ©r   Úbs     r   Ústencil_multiple_input_kernelr6   (   s`   € à�1�T‘7˜Q˜t™WÑ$ q¨¡xÑ/°!°E±(Ñ:Ø�T‘7ñØ˜t™Wñ%Ø'(¨¡xñ0Ø23°E±(ñ;ñ <ð <r   c                 óf   — || d   | d   z   | d   z   | d   z   |d   z   |d   z   |d   z   |d   z   z  S ©Nr   r   r   r   r   )r   r5   Úws      r   Ú!stencil_multiple_input_kernel_varr:   .   s`   € à��$‘˜!˜D™'Ñ! A e¡HÑ,¨q°©xÑ7Ø�$‘ñØ˜D™'ñ"Ø$% e¡Hñ-Ø/0°©xñ8ñ 9ð 9r   c                 ó    — |d   r| d   S |d   S ©N©r   r   r   )r   r5   Úfs      r   Ú%stencil_multiple_input_mixed_types_2dr?   4   s   € à˜’gˆ1ˆT‰7Ð* 1 T¡7Ð*r   )r5   )Ústandard_indexingc                 ó0   — | d   |d   z  | d   |d   z  z   S )Nr   r   r   r   r4   s     r   Ú!stencil_with_standard_indexing_1drB   9   s%   € àˆR‰5�1�Q‘4‰<˜!˜A™$  1¡™+Ñ%Ð%r   c                 ó`   — | d   |d   z  | d   |d   z  z   | d   |d   z  z   | d   |d   z  z   S r8   r   r4   s     r   Ú!stencil_with_standard_indexing_2drD   >   sS   € àˆd‰G�a˜‘gÑ  $¡¨!¨D©'Ñ 1Ñ1Ø�‰h˜˜5™Ñ!ñ"Ø$% e¡H¨q°©xÑ$7ñ8ð 9r   c                 ó   — | dz   S ©Nr   r   r   s    r   Úaddone_njitrG   D   s   € àˆq‰5€Lr   T©Úparallelc                 ó   — | dz   S rF   r   r   s    r   Úaddone_pjitrK   J   s   € à�1‰uˆr   c                   ó@   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	ˆ xZ
S )ÚTestStencilBaseFc                 óf   •— t        «       | _        d| j                  _        t        t        | �  |Ž  y ©NT)r	   ÚcflagsÚnrtÚsuperrM   Ú__init__)ÚselfÚargsÚ	__class__s     €r   rS   zTestStencilBase.__init__S   s&   ø€ ä“gˆŒØˆ�‰ŒäŒo˜tÑ-¨tÒ4r   c           	      ó„   — t        t        j                  j                  t        j                  j                  ||d |i «      S ©N)r   r   Ú
cpu_targetÚtyping_contextÚtarget_context)rT   ÚfuncÚsigÚflagss       r   Ú_compile_thiszTestStencilBase._compile_thisZ   s7   € ÜœX×0Ñ0×?Ñ?Ü%×0Ñ0×?Ñ?ÀÀsØ! 5¨"ó.ð 	.r   c                 óv   — t        «       }d|_        |sdn|}t        |«      |_        | j	                  |||«      S rO   )r	   rQ   r
   Úauto_parallelr_   )rT   r\   r]   Úkwsr^   Úoptionss         r   Úcompile_parallelz TestStencilBase.compile_parallel_   s;   € Ü“ˆØˆŒ	Ù!‘$ sˆÜ-¨gÓ6ˆÔØ×!Ñ! $¨¨UÓ3Ð3r   c                 ó>   — | j                  ||| j                  ¬«      S )N)r^   )r_   rP   )rT   r\   r]   s      r   Úcompile_njitzTestStencilBase.compile_njitf   s   € Ø×!Ñ! $¨°4·;±;Ð!Ó?Ð?r   c                 ó´   — t        |D �cg c]  }t        j                  |«      ‘Œ c}«      }| j                  ||«      }| j	                  ||«      }||fS c c}w rX   )ÚtupleÚnumbaÚtypeofrd   rf   )rT   ÚpyfuncrU   ÚkwargsÚxr]   ÚcpfuncÚcfuncs           r   Úcompile_allzTestStencilBase.compile_alli   sV   € Ü©dÓ3©d¨”U—\‘\ !•_¨dÑ3Ó4ˆà×&Ñ& v¨sÓ3ˆà×!Ñ! &¨#Ó.ˆØ�fˆ}Ðùò 4s   ŠAc                 ó   —  | j                   |g|¢­Ž \  }} ||Ž } ||Ž } |j                  |Ž } |j                  |Ž }	t        j                  j	                  ||d¬«       t        j                  j	                  ||d¬«       t        j                  j	                  |	|d¬«       | j                  d|j                  j                  «       «       y )Né   ©Údecimalú@do_scheduling)rp   Úentry_pointÚnpÚtestingÚassert_almost_equalÚassertInÚlibraryÚget_llvm_str)
rT   Úno_stencil_funcrk   rU   ro   rn   ÚexpectedÚ	py_outputÚnjit_outputÚparfor_outputs
             r   ÚcheckzTestStencilBase.checkq   sÁ   € Ø(˜×(Ñ(¨Ð7°$Ò7‰ˆˆvá" DÐ)ˆá˜D�Mˆ	ð (�e×'Ñ'¨Ð.ˆð +˜×*Ñ*¨DÐ1ˆä
�
‰
×&Ñ& y°(ÀAÐ&ÔFÜ
�
‰
×&Ñ& {°HÀaÐ&ÔHÜ
�
‰
×&Ñ& }°hÈÐ&ÔJð 	�‰Ð&¨¯©×(CÑ(CÓ(EÕFr   )Ú__name__Ú
__module__Ú__qualname__Ú_numba_parallel_test_rS   r_   rd   rf   rp   r‚   Ú__classcell__©rV   s   @r   rM   rM   O   s)   ø„ à!Ðô5ò.ò
4ò@òöGr   rM   c                   óþ   ‡ — e Zd Zˆ fd„Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z	ed„ «       Z
ed„ «       Zed	„ «       Zed
„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zˆ xZS )ÚTestStencilc                 ó,   •— t        t        | �
  |i |¤Ž y rX   )rR   rŠ   rS   ©rT   rU   rl   rV   s      €r   rS   zTestStencil.__init__ˆ   s   ø€ ÜŒk˜4Ñ)¨4Ð:°6Ó:r   c                 óf   — d„ }d„ }d„ }d}| j                  |||«       | j                  |||«       y)zHTests whether the optional out argument to stencil calls works.
        c                 óÄ   — t        j                  | dz  «      j                  | | f«      }t        j                  | dz  «      j                  | | f«      }t	        ||¬«      }|S )Nr1   ©Úout)rw   ÚarangeÚreshapeÚzerosr   ©ÚnÚAÚBs      r   Útest_with_outz0TestStencil.test_stencil1.<locals>.test_with_out�   sS   € Ü—	‘	˜!˜Q™$“×'Ñ'¨¨A¨Ó/ˆAÜ—‘˜˜A™“×&Ñ&¨¨1 vÓ.ˆAÜ  qÔ)ˆAØˆHr   c                 ón   — t        j                  | dz  «      j                  | | f«      }t        |«      }|S ©Nr1   )rw   r‘   r’   r   r”   s      r   Útest_without_outz3TestStencil.test_stencil1.<locals>.test_without_out•   ó1   € Ü—	‘	˜!˜Q™$“×'Ñ'¨¨A¨Ó/ˆAÜ Ó"ˆAØˆHr   c                 ó`  — t        j                  | dz  «      j                  | | f«      }t        j                  | dz  «      j                  | | f«      }t	        d| dz
  «      D ]I  }t	        d| dz
  «      D ]5  }d|||dz   f   ||dz   |f   z   |||dz
  f   z   ||dz
  |f   z   z  |||f<   Œ7 ŒK |S ©Nr1   r   r   ©rw   r‘   r’   r“   r'   ©r•   r–   r—   r)   Újs        r   Útest_impl_seqz0TestStencil.test_stencil1.<locals>.test_impl_seqš   sÐ   € Ü—	‘	˜!˜Q™$“×'Ñ'¨¨A¨Ó/ˆAÜ—‘˜˜A™“×&Ñ&¨¨1 vÓ.ˆAÜ˜1˜a !™e–_�Ü˜q ! a¡%ž�AØ" a¨¨1¨q©5¨¡kØ&'¨¨A©¨q¨¡kñ'2Ø45°a¸¸Q¹°h±Kñ'@ØBCÀAÈÁEÈ1ÀHÁ+ñ'Nñ O�A�a˜�d’Gñ )ð %ð ˆHr   éd   N©r‚   )rT   r˜   r›   r¢   r•   s        r   Útest_stencil1zTestStencil.test_stencil1‹   s9   € ò	ò	ò
	ð ˆØ�
‰
�= -°Ô3Ø�
‰
�=Ð"2°AÕ6r   c                 ó  — d„ }d„ }d}| j                  |||«       d„ }d„ }d}d}| j                  |t        j                  t        j                  f«      } |||«      }|j	                  ||«      }t
        j                  j                  ||d¬«       | j                  d	|j                  j                  «       «       d
„ }d}| j                  |t        j                  t        j                  t        j                  f«      }|j	                  |||«      }t
        j                  j                  ||d¬«       | j                  d	|j                  j                  «       «       d„ }d}| j                  |t        j                  t        j                  t        j                  f«      }|j	                  |||«      }t
        j                  j                  ||d¬«       | j                  d	|j                  j                  «       «       y)z`Tests whether the optional neighborhood argument to the stencil
        decorate works.
        c                 óF   — t        j                  | «      }t        |«      }|S rX   )rw   r‘   r*   r”   s      r   Útest_seqz+TestStencil.test_stencil2.<locals>.test_seq¬   s   € Ü—	‘	˜!“ˆAÜ Ó"ˆAØˆHr   c                 óÂ   — t        j                  | «      }t        j                  | «      }t        dt	        |«      «      D ]  }dt        ||dz
  |dz    «      z  ||<   Œ |S )Né   r%   r   ©rw   r‘   r“   r'   ÚlenÚsum©r•   r–   r—   r)   s       r   r¢   z0TestStencil.test_stencil2.<locals>.test_impl_seq±   sW   € Ü—	‘	˜!“ˆAÜ—‘˜“ˆAÜ˜1œc !›fÖ%�ØœS  1 q¡5¨¨Q© Ó0Ñ0��!’ð &àˆHr   r£   c                 óz   — t        j                  | «      }d„ } t        j                  || |ff¬«      ||«      }|S )Nc                 óX   — | |    }t        | dz   |dz   «      D ]
  }|| |   z  }Œ d|z  S ©Nr   r%   r&   ©r   r9   r(   r)   s       r   r*   zDTestStencil.test_stencil2.<locals>.test_seq.<locals>.stencil2_kernelÀ   s?   € Ø˜˜‘e�Ü ˜r A™v q¨1¡uÖ-�AØ˜1˜Q™4‘K‘Cð .à˜S‘yÐ r   r!   ©rw   r‘   ri   r   )r•   r9   r–   r*   r—   s        r   r¨   z+TestStencil.test_stencil2.<locals>.test_seq½   s=   € Ü—	‘	˜!“ˆAò!ð
 I”—‘˜o¸q¸bÀ!¸W¸KÔHÈÈAÓNˆAØˆHr   c                 óÎ   — t        j                  | «      }t        j                  | «      }t        |t	        |«      |z
  «      D ]  }dt        |||z
  ||z   dz    «      z  ||<   Œ! |S )Nr%   r   r«   )r•   r9   r–   r—   r)   s        r   r¢   z0TestStencil.test_stencil2.<locals>.test_impl_seqÈ   s`   € Ü—	‘	˜!“ˆAÜ—‘˜“ˆAÜ˜1œc !›f q™jÖ)�ØœS  1 q¡5¨¨Q©°©Ð!3Ó4Ñ4��!’ð *àˆHr   rª   rr   rs   ru   c                 ó€   — t        j                  | «      }d„ } t        j                  || |ff| f¬«      ||«      }|S )Nc                 ód   — | | dz      }t        | dz   |dz   «      D ]  }|| |dz      z  }Œ d|z  S r±   r&   r²   s       r   r*   zDTestStencil.test_stencil2.<locals>.test_seq.<locals>.stencil2_kernelÛ   sG   € Ø˜˜˜Q™‘i�Ü ˜r A™v q¨1¡uÖ-�AØ˜1˜Q ™U™8‘O‘Cð .à˜S‘yÐ r   ©r"   Úindex_offsetsr³   ©r•   r9   Úoffsetr–   r*   r—   s         r   r¨   z+TestStencil.test_stencil2.<locals>.test_seqØ   sH   € Ü—	‘	˜!“ˆAò!ð
9”—‘˜o¸q¸bÀ!¸W¸KØ.4¨W¨Kô9Ø9:¸Aó?ˆAàˆHr   r   c                 ó€   — t        j                  | «      }d„ } t        j                  || |ff| f¬«      ||«      }|S )Nc                 óF   — dt        j                  | | dz   |dz    «      z  S )Nr%   r   r1   )rw   r­   )r   r9   s     r   r*   zDTestStencil.test_stencil2.<locals>.test_seq.<locals>.stencil2_kernelï   s&   € ØœRŸV™V A q b¨1¡f¨Q°©U OÓ4Ñ4Ð4r   r·   r³   r¹   s         r   r¨   z+TestStencil.test_stencil2.<locals>.test_seqì   sH   € Ü—	‘	˜!“ˆAò5ð9”—‘˜o¸q¸bÀ!¸W¸KØ.4¨W¨Kô9Ø9:¸Aó?ˆAàˆHr   N)r‚   rd   r   Úintprv   rw   rx   ry   rz   r{   r|   )	rT   r¨   r¢   r•   r9   rn   r~   r�   rº   s	            r   Útest_stencil2zTestStencil.test_stencil2§   s©  € ò
	ò
	ð ˆØ�
‰
�= (¨AÔ.ò		ò	ð ˆØˆØ×&Ñ& x´%·*±*¼e¿j¹jÐ1IÓJˆÙ   AÓ&ˆà×*Ñ*¨1¨aÓ0ˆÜ
�
‰
×&Ñ& }°hÈÐ&ÔJØ�‰Ð&¨¯©×(CÑ(CÓ(EÔFò
	ð ˆØ×&Ñ& x´%·*±*¼e¿j¹jÜ27·*±*ð2>ó ?ˆà×*Ñ*¨1¨a°Ó8ˆÜ
�
‰
×&Ñ& }°hÈÐ&ÔJØ�‰Ð&¨¯©×(CÑ(CÓ(EÔFò	ð ˆØ×&Ñ& x´%·*±*¼e¿j¹jÜ27·*±*ð2>ó ?ˆà×*Ñ*¨1¨a°Ó8ˆÜ
�
‰
×&Ñ& }°hÈÐ&ÔJØ�‰Ð&¨¯©×(CÑ(CÓ(EÕFr   c                 ó4  — d„ }t        |«      }t        |d¬«      }d} ||«      } ||«      } ||«      }| j                  |d   dk(  xr |d   dk(  «       | j                  |d   dk(  xr |d   dk(  «       | j                  |d   dk(  xr |d   dk(  «       y)	z�Tests whether a non-zero optional cval argument to the stencil
        decorator works.  Also tests integer result type.
        c                 ón   — t        j                  | dz  «      j                  | | f«      }t        |«      }|S rš   )rw   r‘   r’   r2   r”   s      r   r¨   z+TestStencil.test_stencil3.<locals>.test_seq  rœ   r   TrH   rª   r=   r+   )é   rÁ   N)r   Ú
assertTrue)rT   r¨   Ú	test_njitÚtest_parr•   Úseq_resÚnjit_resÚpar_ress           r   Útest_stencil3zTestStencil.test_stencil3ü   s§   € ò
	ô
 ˜“Nˆ	Ü˜¨4Ô0ˆàˆÙ˜1“+ˆÙ˜Q“<ˆÙ˜1“+ˆà�‰˜ ™¨Ñ,ÒE°¸±À#Ñ1EÔFØ�‰˜ ™¨#Ñ-ÒG°(¸4±.ÀCÑ2GÔHØ�‰˜ ™¨Ñ,ÒE°¸±À#Ñ1EÕFr   c                 ó:   — d„ }d„ }d}| j                  |||«       y)z1Tests standard indexing with a 1d array.
        c                 óP   — t        j                  | «      }ddg}t        ||«      }|S )Nç      @ç      @)rw   r‘   rB   ©r•   r–   r—   ÚCs       r   r¨   z?TestStencil.test_stencil_standard_indexing_1d.<locals>.test_seq  s)   € Ü—	‘	˜!“ˆAØ�c�
ˆAÜ1°!°QÓ7ˆAØˆHr   c                 ó¾   — t        j                  | «      }ddg}t        j                  | «      }t        d| «      D ]  }||dz
     |d   z  ||   |d   z  z   ||<   Œ! |S )NrË   rÌ   r   r   ©rw   r‘   r“   r'   )r•   r–   r—   rÎ   r)   s        r   r¢   zDTestStencil.test_stencil_standard_indexing_1d.<locals>.test_impl_seq  sd   € Ü—	‘	˜!“ˆAØ�c�
ˆAÜ—‘˜“ˆAä˜1˜a–[�Ø˜˜Q™‘x ! A¡$‘¨¨1©°°!±©Ñ4��!’ð !àˆHr   r£   Nr¤   ©rT   r¨   r¢   r•   s       r   Ú!test_stencil_standard_indexing_1dz-TestStencil.test_stencil_standard_indexing_1d  s#   € ò	ò	ð ˆØ�
‰
�= (¨AÕ.r   c                 ó:   — d„ }d„ }d}| j                  |||«       y)zLTests standard indexing with a 2d array and multiple stencil calls.
        c                 ó²   — t        j                  | dz  «      j                  | | f«      }t        j                  d«      }t	        ||«      }t	        ||«      }|S )Nr1   ©rr   rr   )rw   r‘   r’   ÚonesrD   )r•   r–   r—   rÎ   ÚDs        r   r¨   z?TestStencil.test_stencil_standard_indexing_2d.<locals>.test_seq,  sL   € Ü—	‘	˜!˜Q™$“×'Ñ'¨¨A¨Ó/ˆAÜ—‘˜“ˆAÜ1°!°QÓ7ˆAÜ1°!°QÓ7ˆAØˆHr   c                 óæ  — t        j                  | dz  «      j                  | | f«      }t        j                  d«      }t        j                  | dz  «      j                  | | f«      }t        j                  | dz  «      j                  | | f«      }t        d| dz
  «      D ]^  }t        d| dz
  «      D ]J  }|||dz   f   |d   z  ||dz   |f   |d   z  z   |||dz
  f   |d   z  z   ||dz
  |f   |d   z  z   |||f<   ŒL Œ` t        d| dz
  «      D ]^  }t        d| dz
  «      D ]J  }|||dz   f   |d   z  ||dz   |f   |d   z  z   |||dz
  f   |d   z  z   ||dz
  |f   |d   z  z   |||f<   ŒL Œ` |S )Nr1   rÕ   r   r   r   r   r   )rw   r‘   r’   rÖ   r“   r'   )r•   r–   r—   rÎ   r×   r)   r¡   s          r   r¢   zDTestStencil.test_stencil_standard_indexing_2d.<locals>.test_impl_seq3  s¶  € Ü—	‘	˜!˜Q™$“×'Ñ'¨¨A¨Ó/ˆAÜ—‘˜“ˆAÜ—‘˜˜A™“×&Ñ&¨¨1 vÓ.ˆAÜ—‘˜˜A™“×&Ñ&¨¨1 vÓ.ˆAä˜1˜a !™e–_�Ü˜q ! a¡%ž�AØ   A¨¡E ™{¨Q¨t©WÑ4°q¸¸Q¹À¸±{ÀQÀtÁWÑ7LÑLØ   A¨¡E ™{¨Q¨u©XÑ5ñ 6Ø89¸!¸a¹%À¸(¹ÀaÈÁhÑ8Nñ O�A�a˜�d’Gñ )ð %ô ˜1˜a !™e–_�Ü˜q ! a¡%ž�AØ   A¨¡E ™{¨Q¨t©WÑ4°q¸¸Q¹À¸±{ÀQÀtÁWÑ7LÑLØ   A¨¡E ™{¨Q¨u©XÑ5ñ 6Ø89¸!¸a¹%À¸(¹ÀaÈÁhÑ8Nñ O�A�a˜�d’Gñ )ð %ð ˆHr   rª   Nr¤   rÑ   s       r   Ú!test_stencil_standard_indexing_2dz-TestStencil.test_stencil_standard_indexing_2d(  s#   € ò	ò	ð  ˆØ�
‰
�= (¨AÕ.r   c                 óf   — d„ }d„ }d}| j                  |||«       d„ }| j                  |||«       y)z=Tests whether multiple inputs of the same size work.
        c                 óÂ   — t        j                  | dz  «      j                  | | f«      }t        j                  | dz  «      j                  | | f«      }t        ||«      }|S rš   )rw   r‘   r’   r6   rÍ   s       r   r¨   z:TestStencil.test_stencil_multiple_inputs.<locals>.test_seqJ  sS   € Ü—	‘	˜!˜Q™$“×'Ñ'¨¨A¨Ó/ˆAÜ—	‘	˜!˜Q™$“×'Ñ'¨¨A¨Ó/ˆAÜ-¨a°Ó3ˆAØˆHr   c                 ó
  — t        j                  | dz  «      j                  | | f«      }t        j                  | dz  «      j                  | | f«      }t        j                  | dz  «      j                  | | f«      }t	        d| dz
  «      D ]u  }t	        d| dz
  «      D ]a  }d|||dz   f   ||dz   |f   z   |||dz
  f   z   ||dz
  |f   z   |||dz   f   z   ||dz   |f   z   |||dz
  f   z   ||dz
  |f   z   z  |||f<   Œc Œw |S rž   rŸ   )r•   r–   r—   rÎ   r)   r¡   s         r   r¢   z?TestStencil.test_stencil_multiple_inputs.<locals>.test_impl_seqP  s?  € Ü—	‘	˜!˜Q™$“×'Ñ'¨¨A¨Ó/ˆAÜ—	‘	˜!˜Q™$“×'Ñ'¨¨A¨Ó/ˆAÜ—‘˜˜A™“×&Ñ&¨¨1 vÓ.ˆAÜ˜1˜a !™e–_�Ü˜q ! a¡%ž�AØ"Ø˜1˜a !™e˜8™ q¨¨Q©°¨¡{Ñ2Ø˜Q  A¡˜X™;ñ'Ø)*¨1¨q©5°!¨8©ñ5à˜Q  A¡˜X™;ñ'à)*¨1¨q©5°!¨8©ñ5ð ˜Q  A¡˜X™;ñ'ð *+¨1¨q©5°!¨8©ñ5ñ6�A�a˜�d’Gñ )ð %ð ˆHr   rr   c                 óÈ   — t        j                  | dz  «      j                  | | f«      }t        j                  | dz  «      j                  | | f«      }d}t        |||«      }|S )Nr1   r   )rw   r‘   r’   r:   )r•   r–   r—   r9   rÎ   s        r   r¨   z:TestStencil.test_stencil_multiple_inputs.<locals>.test_seqa  sZ   € Ü—	‘	˜!˜Q™$“×'Ñ'¨¨A¨Ó/ˆAÜ—	‘	˜!˜Q™$“×'Ñ'¨¨A¨Ó/ˆAØˆAÜ1°!°Q¸Ó:ˆAØˆHr   Nr¤   rÑ   s       r   Útest_stencil_multiple_inputsz(TestStencil.test_stencil_multiple_inputsF  s:   € ò	ò	ð ˆØ�
‰
�= (¨AÔ.ò	ð 	�
‰
�= (¨AÕ.r   c                 ó:   — d„ }d„ }d}| j                  |||«       y )Nc                 ó¾  — t        j                  | dz  «      j                  | | f«      }| dz  t        j                  | dz  «      j                  | | f«      z
  }t        j                  | t         j                  ¬«      }t        j
                  | | f|j                  ¬«      }t        d| «      D ]-  }t        d| «      D ]  }|||f   r|||f   n|||f   |||f<   Œ Œ/ |S )Nr1   ©Údtyper   )rw   r‘   r’   ÚeyeÚbool_r“   râ   r'   )r•   r–   r—   ÚSÚOr)   r¡   s          r   r¢   z;TestStencil.test_stencil_mixed_types.<locals>.test_impl_seqk  sÉ   € Ü—	‘	˜!˜q™&Ó!×)Ñ)¨1¨a¨&Ó1ˆAØ�Q‘œŸ™ 1¨¡6Ó*×2Ñ2°A°q°6Ó:Ñ:ˆAÜ—‘�q¤§¡Ô)ˆAÜ—‘˜!˜Q˜ q§w¡wÔ/ˆAÜ˜1˜a–[�Ü˜q !ž�AØ)*¨1¨a¨4ª˜a  1 šg°a¸¸1¸±g�A�a˜�d’Gñ %ð !ð ˆHr   c                 ó  — t        j                  | dz  «      j                  | | f«      }| dz  t        j                  | dz  «      j                  | | f«      z
  }t        j                  | t         j                  ¬«      }t        |||«      }|S )Nr1   rá   )rw   r‘   r’   rã   rä   r?   )r•   r–   r—   rå   ræ   s        r   r¨   z6TestStencil.test_stencil_mixed_types.<locals>.test_sequ  st   € Ü—	‘	˜!˜q™&Ó!×)Ñ)¨1¨a¨&Ó1ˆAØ�Q‘œŸ™ 1¨¡6Ó*×2Ñ2°A°q°6Ó:Ñ:ˆAÜ—‘�q¤§¡Ô)ˆAÜ5°a¸¸AÓ>ˆAØˆHr   rr   r¤   )rT   r¢   r¨   r•   s       r   Útest_stencil_mixed_typesz$TestStencil.test_stencil_mixed_typesi  s#   € ò	ò	ð ˆØ�
‰
�= (¨AÕ.r   c                 óf   — d„ }d„ }d„ }d}| j                  |||«       | j                  |||«       y)z&Tests 2D numba.stencil calls.
        c                 óæ   — t        j                  | dz  «      j                  | | f«      }t        j                  | dz  «      j                  | | f«      } t	        j
                  d„ «      ||¬«       |S )Nr1   c                 ó6   — d| d   | d   z   | d   z   | d   z   z  S r   r   r   s    r   Ú<lambda>zCTestStencil.test_stencil_call.<locals>.test_impl1.<locals>.<lambda>†  s-   €  D¨A¨d©G°a¸±gÑ,=ÀÀ%ÁÑ,HØ./°©hñ-7ò %8r   r�   ©rw   r‘   r’   r“   ri   r   r”   s      r   Ú
test_impl1z1TestStencil.test_stencil_call.<locals>.test_impl1ƒ  sg   € Ü—	‘	˜!˜Q™$“×'Ñ'¨¨A¨Ó/ˆAÜ—‘˜˜A™“×&Ñ&¨¨1 vÓ.ˆAð9ŒE�M‰Mñ 8ó 9Ø9:ÀõCàˆHr   c                 óæ   — t        j                  | dz  «      j                  | | f«      }t        j                  | dz  «      j                  | | f«      }d„ } t	        j
                  |«      |«      }|S )Nr1   c                 ó6   — d| d   | d   z   | d   z   | d   z   z  S r   r   r   s    r   Úsfz=TestStencil.test_stencil_call.<locals>.test_impl2.<locals>.sfŽ  s,   € Ø˜q ™w¨¨4©Ñ0°1°U±8Ñ;¸aÀ¹hÑFÑGÐGr   rí   )r•   r–   r—   rñ   s       r   Ú
test_impl2z1TestStencil.test_stencil_call.<locals>.test_impl2Š  sb   € Ü—	‘	˜!˜Q™$“×'Ñ'¨¨A¨Ó/ˆAÜ—‘˜˜A™“×&Ñ&¨¨1 vÓ.ˆAòHà!”—‘˜bÓ! !Ó$ˆAØˆHr   c                 ó`  — t        j                  | dz  «      j                  | | f«      }t        j                  | dz  «      j                  | | f«      }t	        d| dz
  «      D ]I  }t	        d| dz
  «      D ]5  }d|||dz   f   ||dz   |f   z   |||dz
  f   z   ||dz
  |f   z   z  |||f<   Œ7 ŒK |S rž   rŸ   r    s        r   r¢   z4TestStencil.test_stencil_call.<locals>.test_impl_seq“  sÌ   € Ü—	‘	˜!˜Q™$“×'Ñ'¨¨A¨Ó/ˆAÜ—‘˜˜A™“×&Ñ&¨¨1 vÓ.ˆAÜ˜1˜a !™e–_�Ü˜q ! a¡%ž�AØ" a¨¨1¨q©5¨¡k°A°a¸!±e¸Q°h±KÑ&?Ø()¨!¨Q°©U¨(©ñ'4Ø67¸¸A¹¸q¸±kñ'Bñ C�A�a˜�d’Gñ )ð %ð ˆHr   r£   Nr¤   )rT   rî   rò   r¢   r•   s        r   Útest_stencil_callzTestStencil.test_stencil_call  s8   € ò	ò	ò	ð ˆØ�
‰
�= *¨aÔ0Ø�
‰
�= *¨aÕ0r   c                 ó:   — d„ }d„ }d}| j                  |||«       y)z&Tests 1D numba.stencil calls.
        c                 ó–   — t        j                  | «      }t        j                  | «      } t        j                  d„ «      ||¬«       |S )Nc                 ó*   — d| d   | d   z   | d   z   z  S ©Nr%   r   r   r   r   r   s    r   rì   zETestStencil.test_stencil_call_1D.<locals>.test_impl.<locals>.<lambda>§  s   €  C¨1¨R©5°1°Q±4©<¸!¸A¹$Ñ+>Ò$?r   r�   ©rw   r‘   r“   ri   r   r”   s      r   Ú	test_implz3TestStencil.test_stencil_call_1D.<locals>.test_impl¤  s7   € Ü—	‘	˜!“ˆAÜ—‘˜“ˆAØ@ŒE�M‰MÑ?Ó@ÀÈÕJØˆHr   c                 ó¼   — t        j                  | «      }t        j                  | «      }t        d| dz
  «      D ]  }d||dz
     ||   z   ||dz      z   z  ||<   Œ! |S r±   rÐ   r®   s       r   r¢   z7TestStencil.test_stencil_call_1D.<locals>.test_impl_seqª  s`   € Ü—	‘	˜!“ˆAÜ—‘˜“ˆAÜ˜1˜a !™e–_�Ø˜a  A¡™h¨¨1©™o°°!°a±%±Ñ8Ñ9��!’ð %àˆHr   r£   Nr¤   ©rT   rú   r¢   r•   s       r   Útest_stencil_call_1Dz TestStencil.test_stencil_call_1D   s#   € ò	ò	ð ˆØ�
‰
�= )¨QÕ/r   c                 óP  — d„ }d„ }d„ }d„ }d„ }d}| j                  |t        j                  f«      }| j                  |t        j                  f«      }| j                  |t        j                  f«      }	| j                  |t        j                  f«      }
 ||«      }|j                  |«      }|j                  |«      }|	j                  |«      }|
j                  |«      }t        j
                  j                  ||d¬«       t        j
                  j                  ||d¬«       t        j
                  j                  ||d¬«       t        j
                  j                  ||d¬«       | j                  t        «      5 } |d	«       d
d
d
«       | j                  dt        j                  «      «       | j                  t        t        f«      5 } t        |«      d	«       d
d
d
«       | j                  dt        |j                  «      «       y
# 1 sw Y   Œ‰xY w# 1 sw Y   Œ;xY w)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                 óœ   — t        j                  | «      }t        j                  | «      }d} t        j                  d„ «      |||¬«       |S )Nr   c                 ó,   — d| |    | d   z   | |   z   z  S ©Nr%   r   r   ©r   Úcs     r   rì   zITestStencil.test_stencil_call_const.<locals>.test_impl1.<locals>.<lambda>¾  s    €  s¨a°°©e°a¸±d©l¸Q¸q¹TÑ.AÒ'Br   r�   rù   ©r•   r–   r—   r  s       r   rî   z7TestStencil.test_stencil_call_const.<locals>.test_impl1º  s>   € Ü—	‘	˜!“ˆAÜ—‘˜“ˆAØˆAØCŒE�M‰MÑBÓCÀAÀqÈaÕPØˆHr   c                 óœ   — t        j                  | «      }t        j                  | «      }d} t        j                  d„ «      |||¬«       |S )Nr1   c                 ó6   — d| d|z
     | d   z   | |dz
     z   z  S ©Nr%   r   r   r   r  s     r   rì   zITestStencil.test_stencil_call_const.<locals>.test_impl2.<locals>.<lambda>Æ  s&   € ˜S A a¨!¡e¡H¨q°©t¡O°a¸¸A¹±hÑ$>Ò?r   r�   rù   r  s       r   rò   z7TestStencil.test_stencil_call_const.<locals>.test_impl2Á  sH   € Ü—	‘	˜!“ˆAÜ—‘˜“ˆAØˆAðAŒE�M‰MÙ?óAØABÀAÈ1õNàˆHr   c                 óœ   — t        j                  | «      }t        j                  | «      }d} t        j                  d„ «      |||¬«       |S )Nr1   c                 ó8   — d| | dz      | d   z   | |dz
     z   z  S r  r   r  s     r   rì   zITestStencil.test_stencil_call_const.<locals>.test_impl3.<locals>.<lambda>Ï  s)   € ˜S A q b¨1¡f¡I°°!±Ñ$4°q¸¸Q¹±xÑ$?Ò@r   r�   rù   r  s       r   Ú
test_impl3z7TestStencil.test_stencil_call_const.<locals>.test_impl3Ê  sH   € Ü—	‘	˜!“ˆAÜ—‘˜“ˆAØˆAðBŒE�M‰MÙ@óBØBCÀQÈAõOàˆHr   c                 ó¢   — t        j                  | «      }t        j                  | «      }d}d} t        j                  d„ «      ||||¬«       |S )Nr   r1   c                 ó8   — d| | |z      | d   z   | ||z
     z   z  S r  r   )r   r  Úds      r   rì   zITestStencil.test_stencil_call_const.<locals>.test_impl4.<locals>.<lambda>Ù  s)   € ˜s a¨¨¨Q©¡i°!°A±$Ñ&6¸¸1¸q¹5¹Ñ&AÒBr   r�   rù   )r•   r–   r—   r  r  s        r   Ú
test_impl4z7TestStencil.test_stencil_call_const.<locals>.test_impl4Ó  sR   € Ü—	‘	˜!“ˆAÜ—‘˜“ˆAØˆAØˆAðDŒE�M‰MÙBóDØDEÀqÈ!ØHIõKð ˆHr   c                 óÀ   — t        j                  | «      }t        j                  | «      }d}t        d| dz
  «      D ]  }d|||z
     ||   z   |||z      z   z  ||<   Œ! |S r±   rÐ   )r•   r–   r—   r  r)   s        r   r¢   z:TestStencil.test_stencil_call_const.<locals>.test_impl_seqÝ  se   € Ü—	‘	˜!“ˆAÜ—‘˜“ˆAØˆAÜ˜1˜a !™e–_�Ø˜a  A¡™h¨¨1©™o°°!°a±%±Ñ8Ñ9��!’ð %àˆHr   r£   rr   rs   rÁ   NzDstencil kernel index is not constant, 'neighborhood' option required)rd   r   r½   rv   rw   rx   ry   ÚassertRaisesr   rz   ÚstrÚ	exceptionr   r   )rT   rî   rò   r
  r  r¢   r•   Úcpfunc1Úcpfunc2Úcpfunc3Úcpfunc4r~   Úparfor_output1Úparfor_output2Úparfor_output3Úparfor_output4Úes                    r   Útest_stencil_call_constz#TestStencil.test_stencil_call_const´  sÍ  € ò	ò	ò	ò	ò	ð ˆà×'Ñ'¨
´U·Z±Z°MÓBˆØ×'Ñ'¨
´U·Z±Z°MÓBˆØ×'Ñ'¨
´U·Z±Z°MÓBˆØ×'Ñ'¨
´U·Z±Z°MÓBˆÙ  Ó#ˆà ×,Ñ,¨QÓ/ˆØ ×,Ñ,¨QÓ/ˆØ ×,Ñ,¨QÓ/ˆØ ×,Ñ,¨QÓ/ˆÜ
�
‰
×&Ñ& ~°xÈÐ&ÔKÜ
�
‰
×&Ñ& ~°xÈÐ&ÔKÜ
�
‰
×&Ñ& ~°xÈÐ&ÔKÜ
�
‰
×&Ñ& ~°xÈÐ&ÔKð ×ÑœÔ/°1Ù�qŒM÷ 0ð 	�‰ð 7Ü8;¸A¿K¹KÓ8Hô	Jð ×Ñ¤¬Ð?Ô@ÀAØŒD�Ó˜QÔ÷ Að 	�‰ð 7Ü8;¸A¿K¹KÓ8Hõ	J÷ 0Ð/ú÷ AÐ@ús   Å?	HÇHÈHÈH%c                 óª   — d„ }| j                  |t        j                  dd fd¬«      }| j                  d|j                  j                  «       «       y)zYTests 1D numba.stencil calls without parallel translation
           turned off.
        c                 ó:   —  t        j                  d„ «      | «      S )Nc                 ó*   — d| d   | d   z   | d   z   z  S rø   r   r   s    r   rì   zJTestStencil.test_stencil_parallel_off.<locals>.test_impl.<locals>.<lambda>
  s   € ¨3°!°B±%¸!¸A¹$±,ÀÀ1ÁÑ2EÒ+Fr   )ri   r   )r–   s    r   rú   z8TestStencil.test_stencil_parallel_off.<locals>.test_impl	  s   € ØG”5—=‘=Ñ!FÓGÈÓJÐJr   NF©r   ru   )rd   ri   Úfloat64ÚassertNotInr{   r|   )rT   rú   rn   s      r   Útest_stencil_parallel_offz%TestStencil.test_stencil_parallel_off  sP   € ò
	Kð ×&Ñ& y´5·=±=ÁÐ3CÐ2EØ/4ð 'ó 6ˆà×ÑÐ)¨6¯>©>×+FÑ+FÓ+HÕIr   c                 ó°   — t        d¬«      d„ «       }d„ }t        j                  d«      }t        j                  j	                   ||«       ||«      «       y)z6Tests whether nested stencil decorator works.
        TrH   c                 ó.   — t         d„ «       } || «      }|S )Nc                 ó   — d}| | dz      S )Nr1   r   r   r  s     r   Úfunz@TestStencil.test_stencil_nested1.<locals>.test_impl.<locals>.fun  s   € à�Ø˜!˜˜a™‘yÐ r   r   )r•   r'  r—   s      r   rú   z3TestStencil.test_stencil_nested1.<locals>.test_impl  s$   € äñ!ó ð!ñ �A“ˆAØˆHr   c                 ó˜   — t        j                  t        | «      t        ¬«      }t	        dt        | «      «      D ]  }| |dz
     ||<   Œ |S )Nrá   r   )rw   r“   r¬   Úintr'   )r•   r—   r)   s      r   r¢   z7TestStencil.test_stencil_nested1.<locals>.test_impl_seq  sA   € Ü—‘œ˜Q›¤sÔ+ˆAÜ˜1œc !›fÖ%�Ø˜˜Q™‘x��!’ð &àˆHr   é
   N)r   rw   r‘   rx   Úassert_equalrü   s       r   Útest_stencil_nested1z TestStencil.test_stencil_nested1  sL   € ô 
�tÔ	ñ	ó 
ð	ò	ô �I‰I�b‹MˆÜ
�
‰
×Ñ¡	¨!£©m¸AÓ.>Õ?r   c                 ó  ‡— ddg}d„ }|D ]è  }t        j                  ||¬«      Šˆfd„}t        j                  d«      j	                  d«      }t        j
                  |d«      }||d	d
d
…f<   t        j                  |«      } ‰||¬«       t        j                  j                  ||«       | j                  |«      }|D ]2  }	|	j                  «       }
t        j                  j                  |
|«       Œ4 Œê t        j                  |d¬«      Šˆfd„}t        j                  d«      j	                  d«      }t        j                  |«      }| j                  t        «      5 } ‰||¬«       d
d
d
«       d}| j                  |t        j                  «      «       | j                   | j"                  fD ]  }	  ||d«       t%        d«      ‚ y
# 1 sw Y   ŒbxY w# t        t&        f$ r%}| j                  |t        |«      «       Y d
}~ŒUd
}~ww xY w)z/ Issue #3518, out kwarg did not work with cval.é   rÌ   c                 ó   — | d   | d   z
  S ©Nr=   r   r   r   s    r   Úkernelz1TestStencil.test_out_kwarg_w_cval.<locals>.kernel,  s   € Ø�d‘G˜a ™gÑ%Ð&r   r,   c                  óŽ   •— t        j                  d«      j                  d«      } t        j                  | «      } ‰| |¬«       |S ©Né   ©rr   rÁ   r�   ©rw   r‘   r’   Ú	ones_like©r–   ÚretÚ
stencil_fns     €r   Úwrappedz2TestStencil.test_out_kwarg_w_cval.<locals>.wrapped2  s7   ø€ Ü—I‘I˜b“M×)Ñ)¨&Ó1�Ü—l‘l 1“o�Ù˜1 #Õ&Ø�
r   r4  r5  r$   r   Nr�   ù              ð?c                  óŽ   •— t        j                  d«      j                  d«      } t        j                  | «      } ‰| |¬«       |S r3  r6  r8  s     €r   r;  z2TestStencil.test_out_kwarg_w_cval.<locals>.wrappedI  s7   ø€ Ü—	‘	˜"“×%Ñ% fÓ-ˆAÜ—,‘,˜q“/ˆCÙ�q˜cÕ"ØˆJr   z-cval type does not match stencil return type.r   zExpected error was not raised)ri   r   rw   r‘   r’   Ú	full_liker7  rx   ry   rp   rv   r  r   rz   r  r  rf   rd   ÚAssertionErrorr   )rT   Ú
const_valsr1  Ú	const_valr;  r–   r~   r9  ÚimplsÚimplÚgotr  ÚmsgÚcompilerr:  s                 @r   Útest_out_kwarg_w_cvalz!TestStencil.test_out_kwarg_w_cval&  s»  ø€ ð ˜�Xˆ
ò	'ó $ˆIÜŸ™ v°IÔ>ˆJôô —	‘	˜"“×%Ñ% fÓ-ˆAÜ—|‘| A rÓ*ˆHØ'ˆH�Rš�U‰OÜ—,‘,˜q“/ˆCÙ�q˜cÕ"Ü�J‰J×*Ñ*¨3°Ô9ð ×$Ñ$ WÓ.ˆEÛ�Ø×&Ñ&Ó(�Ü—
‘
×.Ñ.¨s°HÕ=ñ ð' $ô0 —]‘] 6°Ô3ˆ
ô	ô �I‰I�b‹M×!Ñ! &Ó)ˆÜ�l‰l˜1‹oˆØ×ÑœÔ/°1Ù�q˜cÕ"÷ 0à=ˆØ�‰�cœ3˜qŸ{™{Ó+Ô,à×*Ñ*¨D×,AÑ,AÓBˆHðFÙ˜ Ô$ô %Ð%DÓEÐEñ C÷ 0Ð/ûô $¤]Ð3ò +Ø—‘˜c¤3 q£6×*Ñ*ûð+ús$   Å GÆ6	GÇGÇHÇ'HÈHc                 ól  ‡
— t         j                  t         j                  t         j                   t        d«      t        d«       fD ]ë  }d„ }t	        j
                  ||¬«      Š
ˆ
fd„}t        j                  d«      j                  d«      }t        j                  |d«      }||dd	d	…f<   t        j                  |«      } ‰
||¬
«       t         j                  j                  ||«       | j                  |«      }|D ]2  }|j                  «       }	t         j                  j                  |	|«       Œ4 Œí y	)úU Test issue #7286 where the cval is a np attr/string-based numerical
        constantÚinfc                 ó   — | d   | d   z
  S r0  r   r   s    r   r1  z9TestStencil.test_out_kwarg_w_cval_np_attr.<locals>.kernelc  s   € Ø˜$™ ! D¡'Ñ)Ð*r   r,   c                  óŽ   •— t        j                  d«      j                  d«      } t        j                  | «      } ‰| |¬«       |S )Nç      (@r5  r�   r6  r8  s     €r   r;  z:TestStencil.test_out_kwarg_w_cval_np_attr.<locals>.wrappedh  s7   ø€ Ü—I‘I˜c“N×*Ñ*¨6Ó2�Ü—l‘l 1“o�Ù˜1 #Õ&Ø�
r   rM  r5  r$   r   Nr�   )rw   ÚnanrJ  Úfloatri   r   r‘   r’   r>  r7  rx   ry   rp   rv   )rT   r-   r1  r;  r–   r~   r9  rB  rC  rD  r:  s             @r   Útest_out_kwarg_w_cval_np_attrz)TestStencil.test_out_kwarg_w_cval_np_attr^  sï   ø€ ô —V‘VœRŸV™V¤b§f¡f W¬e°E«l¼UÀ5»\¸MÓJˆDò+ô Ÿ™ v°DÔ9ˆJôô —	‘	˜#“×&Ñ& vÓ.ˆAÜ—|‘| A rÓ*ˆHØ"ˆH�Rš�U‰OÜ—,‘,˜q“/ˆCÙ�q˜cÕ"Ü�J‰J×*Ñ*¨3°Ô9ð ×$Ñ$ WÓ.ˆEÛ�Ø×&Ñ&Ó(�Ü—
‘
×.Ñ.¨s°HÕ=ñ ñ- Kr   )rƒ   r„   r…   rS   Úskip_unsupportedr¥   r¾   rÈ   rÒ   rÙ   rÞ   rè   rô   rý   r  r#  r,  rG  rP  r‡   rˆ   s   @r   rŠ   rŠ   †   s5  ø„ ô;ð ñ7ó ð7ð6 ñRGó ðRGðh ñGó ðGð* ñ/ó ð/ð* ñ/ó ð/ð: ñ /ó ð /ðD ñ/ó ð/ð* ñ1ó ð1ð@ ñ0ó ð0ð& ñMJó ðMJð^ ñ	Jó ð	Jð ñ@ó ð@ð* ñ5Fó ð5Fðn ñ>ó ô>r   rŠ   c                   óT  ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z( e)jT                  d'«      d(„ «       Z+d)„ Z,d*„ Z-d+„ Z.d,„ Z/d-„ Z0d.„ Z1d/„ Z2d0„ Z3d1„ Z4d2„ Z5d3„ Z6d4„ Z7d5„ Z8d6„ Z9d7„ Z:d8„ Z;d9„ Z<d:„ Z=d;„ Z> e)jT                  d<«      d=„ «       Z?d>„ Z@d?„ ZAd@„ ZBdA„ ZCdB„ ZDdC„ ZEdD„ ZFdE„ ZGdF„ ZHdG„ ZIdH„ ZJdI„ ZKdJ„ ZLdK„ ZMdL„ ZNdM„ ZOdN„ ZPdO„ ZQdP„ ZRdQ„ ZSdR„ ZTdS„ ZUdT„ ZVdU„ ZWdV„ ZXdW„ ZYdX„ ZZdY„ Z[dZ„ Z\d[„ Z]d\„ Z^d]„ Z_d^„ Z`d_„ Zad`„ Zbda„ Zcdb„ Zddc„ Zedd„ Zfde„ Zgdf„ Zhdg„ Zidh„ Zjdi„ Zkdj„ Zldk„ Zmdl„ Zn e)jT                  dm«      dn„ «       Zodo„ Zp e)jT                  dm«      dp„ «       Zqdq„ Zrˆ xZsS )rÚTestManyStencilsc                 ó,   •— t        t        | �
  |i |¤Ž y rX   )rR   rS  rS   rŒ   s      €r   rS   zTestManyStencils.__init__‹  s   ø€ ÜÔ Ñ.°Ð?¸Ó?r   c           	      ó:	  ‡‡‡— |j                  dt        «       «      }|j                  d«      }d}g Šg Št        d%ˆˆfd„	«       }t        |t        «      r|d   }	|d   }
|d   }n|}	|}
|}d	|i}|j	                  |«       d} ||	d
«      5  t        d&i |¤ŽŠ ‰|Ž }ddd«       t        |«      dk(  rˆfd„}n?t        |«      dk(  rˆfd„}n+t        |«      dk(  rˆfd„}nt        dt        |«      z  «      ‚t        |D �cg c]  }t        j                  |«      ‘Œ c}«      }d} ||
d«      5  | j                  ||«      } |j                  |Ž }ddd«       d} ||d«      5  | j                  ||«      } |j                  |Ž }ddd«       |r$t        d|«       t        d|«       t        d|«       	 |	sHt        j                   j#                  ||d¬«       | j%                  |j&                  |j&                  «       	 |
sHt        j                   j#                  ||d¬«       | j%                  |j&                  |j&                  «       	 |sst        j                   j#                  ||d¬«       | j%                  |j&                  |j&                  «       	 | j1                  dj2                  j5                  «       «       |rt        d«       ‰r ‰D �cg c]  }d|z  ‘Œ	 }}t9        d|z  «      ‚‰rO‰D �cg c]
  }d|d    z  ‘Œ }}d!j;                  ‰D �cg c]  }d"|z  ‘Œ	 c}«      }d#|z  }d$|z  }t9        ||z   «      ‚y# 1 sw Y   �Œ¦xY wc c}w # 1 sw Y   �ŒxY w# 1 sw Y   �ŒÜxY w# t(        $ rL}‰j+                  d
t-        |«      ›dt/        |«      ›�f«       t        dt/        |«      z  «       Y d}~�Œ¾d}~ww xY w# t(        $ rL}‰j+                  dt-        |«      ›dt/        |«      ›�f«       t        dt/        |«      z  «       Y d}~�ŒËd}~ww xY w# t6        $ r d}t7        |«      ‚w xY w# t(        $ rL}‰j+                  dt-        |«      ›dt/        |«      ›�f«       t        dt/        |«      z  «       Y d}~�ŒÇd}~ww xY wc c}w c c}w c c}w )'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.
        rc   Úexpected_exceptionFNc           	   3   ó&  •K  — 	 d –— | �‰j                  |«       y y # t        $ rg}| �,t        | d«      r| n| g}d}|D ]  }|t        ||«      z  }Œ |s0‚ ‰j                  |t	        |«      ›dt        |«      ›�f«       Y d }~y Y d }~y d }~ww xY w­w©NÚ__iter__Fú: ©ÚappendÚ	ExceptionÚhasattrÚ
isinstanceÚtyper  ©ÚextyÚusecaser  ÚlextyÚfoundÚexÚshould_failÚshould_not_fails         €€r   Úerrorhandlerz=TestManyStencils.check_against_expected.<locals>.errorhandler©  ó«   øè ø€ ð0Ûð Ð#Ø×&Ñ& wÕ/ð $øô ò -ØÐ#Ü$+¨D°*Ô$=™DÀDÀ8�EØ!�EÛ#˜Ø¤¨A¨rÓ!2Ñ2™ð $á Øà#×*Ñ*Ø Ü˜q�'¤3 q¤6ð#+ð ,÷-ñ -ô !ûð-üó+   ƒB… ‰Bž	B§AB	Á?
BÂ	BÂBr   r   ÚparforÚfunc_or_modeú@stencilr   c                 ó   •—  ‰| «      S rX   r   ©Úarg0Ústencil_func_impls    €r   Úwrap_stencilz=TestManyStencils.check_against_expected.<locals>.wrap_stencilÑ  ó   ø€ Ù(¨Ó.Ð.r   r1   c                 ó   •—  ‰| |«      S rX   r   ©rq  Úarg1rr  s     €r   rs  z=TestManyStencils.check_against_expected.<locals>.wrap_stencilÔ  ó   ø€ Ù(¨¨tÓ4Ð4r   rr   c                 ó   •—  ‰| ||«      S rX   r   ©rq  rw  Úarg2rr  s      €r   rs  z=TestManyStencils.check_against_expected.<locals>.wrap_stencil×  ó   ø€ Ù(¨¨t°TÓ:Ð:r   ú+Up to 3 arguments can be provided, found %sÚparforsz
@stencil_output:
z
njit_output:
z
parfor_output:
rs   rZ  z@stencil failed: %sz@njit failed: %sru   z*Could not find `@do_scheduling` in LLVM IRz@njit(parallel=True) failed: %sz

ú%súMThe following implementations should have raised an exception but did not:
%sr   Ú ú%s: Message: %s

úNThe following implementations should not have raised an exception but did:
%s
úErrors were:

%s©NNr   )ÚgetÚdictr   r_  Úupdater   r¬   Ú
ValueErrorrh   ri   rj   rf   rv   rd   Úprintrw   rx   ry   ÚassertEqualrâ   r]  r\  r`  r  rz   r{   r|   r?  ÚRuntimeErrorÚjoin)rT   rk   r~   rU   rl   rc   rV  ÚDEBUG_OUTPUTri  Ú
stencil_exÚnjit_exÚ	parfor_exÚstencil_argsÚstencilfunc_outputrs  rm   r]   r€   Úwrapped_cfuncr�   Úwrapped_cpfuncr  rE  rB  ÚerrsÚstr1Ústr2rg  rh  rr  s                              @@@r   Úcheck_against_expectedz'TestManyStencils.check_against_expectedŽ  s¹  ú€ ð  —*‘*˜Y¬«Ó/ˆØ#ŸZ™ZÐ(<Ó=Ðð ˆð ˆØˆô 
õ	0ó 
ð	0ô& Ð(¬$Ô/Ø+¨IÑ6ˆJØ(¨Ñ0ˆGØ*¨8Ñ4‰Ià+ˆJØ(ˆGØ*ˆIà&¨Ð/ˆØ×Ñ˜GÔ$à!ÐÙ˜* jÕ1Ü 'Ñ 7¨,Ñ 7Ðá!2°DÐ!9Ð÷ 2ô ˆt‹9˜Š>õ/ä�‹Y˜!Š^õ5ä�‹Y˜!Š^õ;ô Ø=Ü�D“	ñóð ô ©dÓ3©d¨”U—\‘\ !•_¨dÑ3Ó4ˆàˆÙ˜' 6Õ*Ø ×-Ñ-¨l¸CÓ@ˆMà3˜-×3Ñ3°TÐ:ˆK÷ +ð
 ˆÙ˜) YÕ/Ø!×2Ñ2°<ÀÓEˆNà6˜N×6Ñ6¸Ð=ˆM÷ 0ñ
 ÜÐ(Ð*<Ô=ÜÐ$ kÔ2ÜÐ&¨Ô6ð		2ÙÜ—
‘
×.Ñ.Ø&¨¸!ð /ô =à× Ñ  §¡Ð1C×1IÑ1IÔJð	/ÙÜ—
‘
×.Ñ.Ø °1ð /ô 6à× Ñ  §¡°×1BÑ1BÔCð
	>ÙÜ—
‘
×.Ñ.Ø! 8°Qð /ô 8à× Ñ  §¡°×1DÑ1DÔEð.Ø—M‘MØ(Ø&×.Ñ.×;Ñ;Ó=ô?ñ Ü�&ŒMáÙ%0Ó1¡[ �4˜!“8 [ˆCÐ1Üð !GØJMñ Nó Oð Oñ Ù*9Ó:©/ Q�T˜A˜a™D“[¨/ˆEÐ:Ø—7‘7Ù'6ó8Ù'6 !ð 2ØóØ'6ñ8ó 9ˆDð/Ø16ñ7ˆDà'¨$Ñ.ˆDÜ˜t d™{Ó+Ð+ð ÷k 2Ñ1üò( 4÷ +Ñ*ú÷ 0Ñ/ûô ò 	2Ø×"Ñ"ØÜ˜!•Wœc !œfð&ð 'ô(ô Ð'¬#¨a«&Ñ0×1Ò1ûð		2ûô ò 	/Ø×"Ñ" F¼¸Q½ÄÀQÄÐ,HÐ#IÔJÜÐ$¤s¨1£vÑ-×.Ò.ûð	/ûô &ò .ØF�CÜ(¨Ó-Ð-ð.ûô ò 	>Ø×"Ñ"ØÜ˜!•Wœc !œfð&ð 'ô(ô Ð3´c¸!³fÑ<×=Ò=ûð		>üò 2ùò
 ;ùò8sœ   ÂM Ä MÄ."MÅ#"MÆ4A
M, Ç?A
O É
A
P6 Ê*P ËRË4RÌRÍ M
ÍMÍM)Í,	OÍ5AN<Î<OÏ	PÏAPÐPÐP3Ð3P6 Ð6	RÐ?ARÒRc                 ód  ‡‡‡— |j                  dt        «       «      }|j                  d«      }g Šg Št        dˆˆfd„	«       }t        |t        «      r|d   }|d   }|d   }	n|}|}|}	d|i}
|
j	                  |«        ||d	«      5  t        di |
¤ŽŠ ‰|Ž  ddd«       t        |«      d
k(  rˆfd„}n?t        |«      dk(  rˆfd„}n+t        |«      dk(  rˆfd„}nt        dt        |«      z  «      ‚t        |D �cg c]  }t        j                  |«      ‘Œ c}«      } ||d«      5  | j                  ||«      } |j                  |Ž  ddd«        ||	d«      5  | j                  ||«      } |j                  |Ž  ddd«       ‰r ‰D �cg c]  }d|z  ‘Œ	 }}t        d|z  «      ‚‰rO‰D �cg c]
  }d|d   z  ‘Œ }}dj                  ‰D �cg c]  }d|z  ‘Œ	 c}«      }d|z  }d|z  }t        ||z   «      ‚y# 1 sw Y   �ŒcxY wc c}w # 1 sw Y   ŒÂxY w# 1 sw Y   Œ›xY wc c}w c c}w c c}w )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.
        rc   rV  Nc           	   3   ó&  •K  — 	 d –— | �‰j                  |«       y y # t        $ rg}| �,t        | d«      r| n| g}d}|D ]  }|t        ||«      z  }Œ |s0‚ ‰j                  |t	        |«      ›dt        |«      ›�f«       Y d }~y Y d }~y d }~ww xY w­wrX  r[  ra  s         €€r   ri  z7TestManyStencils.check_exceptions.<locals>.errorhandler@  rj  rk  r   r   rl  rm  rn  r   c                 ó   •—  ‰| «      S rX   r   rp  s    €r   rs  z7TestManyStencils.check_exceptions.<locals>.wrap_stencilg  rt  r   r1   c                 ó   •—  ‰| |«      S rX   r   rv  s     €r   rs  z7TestManyStencils.check_exceptions.<locals>.wrap_stencilj  rx  r   rr   c                 ó   •—  ‰| ||«      S rX   r   rz  s      €r   rs  z7TestManyStencils.check_exceptions.<locals>.wrap_stencilm  r|  r   r}  r~  r  r€  r   r�  r‚  rƒ  r„  r…  r   )r†  r‡  r   r_  rˆ  r   r¬   r‰  rh   ri   rj   rf   rv   rd   rŒ  r�  )rT   rk   rU   rl   rc   rV  ri  r�  r�  r‘  r’  rs  rm   r]   r”  r•  rE  rB  r–  r—  r˜  rg  rh  rr  s                        @@@r   Úcheck_exceptionsz!TestManyStencils.check_exceptions(  s{  ú€ ð  —*‘*˜Y¬«Ó/ˆØ#ŸZ™ZÐ(<Ó=Ðð ˆØˆô 
õ	0ó 
ð	0ô& Ð(¬$Ô/Ø+¨IÑ6ˆJØ(¨Ñ0ˆGØ*¨8Ñ4‰Ià+ˆJØ(ˆGØ*ˆIà&¨Ð/ˆØ×Ñ˜GÔ$á˜* jÕ1Ü 'Ñ 7¨,Ñ 7Ðá˜tÑ$÷ 2ô ˆt‹9˜Š>õ/ä�‹Y˜!Š^õ5ä�‹Y˜!Š^õ;ô Ø=Ü�D“	ñóð ô ©dÓ3©d¨”U—\‘\ !•_¨dÑ3Ó4ˆá˜' 6Õ*Ø ×-Ñ-¨l¸CÓ@ˆMà%ˆM×%Ñ% tÑ,÷ +ñ
 ˜) YÕ/Ø!×2Ñ2°<ÀÓEˆNà&ˆN×&Ñ&¨Ñ-÷ 0ñ
 Ù%0Ó1¡[ �4˜!“8 [ˆCÐ1Üð !GØJMñ Nó Oð Oñ Ù*9Ó:©/ Q�T˜A˜a™D“[¨/ˆEÐ:Ø—7‘7Ù'6ó8Ù'6 !ð 2ØóØ'6ñ8ó 9ˆDð/Ø16ñ7ˆDà'¨$Ñ.ˆDÜ˜t d™{Ó+Ð+ð ÷K 2Ñ1üò( 4ç*Ð*ú÷
 0Ð/üò 2ùò
 ;ùò8s<   ÂG9Ã<HÄ("HÅ"HÆH#Æ-H(ÇH-Ç9HÈHÈH c                 ó|   — t        «       }d |d<   d |d<   d |d<   d |d<   |j                  «       D ]
  \  }}|||<   Œ |S )NÚ	pyStencilr   r   rl  )r‡  Úitems)rT   rl   r  ÚkÚvs        r   Úexception_dictzTestManyStencils.exception_dictŽ  sO   € Ü‹FˆØˆˆ+‰Øˆˆ)‰Øˆˆ&‰	Øˆˆ(‰Ø—L‘L–N‰DˆAˆqØˆAˆaŠDð #àˆr   c                 óî   — |j                  d«      }|d   j                  }|�"t        |«      t        |«      k7  rt        d«      ‚|dd  D ])  }t	        |d«      sŒ||j                  k7  sŒ t        d«      ‚ y )Nr"   r   zInvalid neighborhood suppliedr   Úshapez#Input stencil arrays do not commute)r†  r§  r¬   r‰  r^  )rT   rU   rl   r"   Ú
init_shaperm   s         r   Úcheck_stencil_arraysz%TestManyStencils.check_stencil_arrays˜  sr   € Ø—z‘z .Ó1ˆØ˜!‘W—]‘]ˆ
ØÐ#Ü�:‹¤# lÓ"3Ò3Ü Ð!@ÓAÐAØ�a�b“ˆAÜ�q˜'Õ"Ø §¡Ó(Ü$Ð%JÓKÐKñ r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)z	rel indexc                 ó   — | d   S r<   r   r   s    r   r1  z-TestManyStencils.test_basic00.<locals>.kernel¥  ó   € Ø�T‘7ˆNr   c                 ó0  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]2  }t        d| j                  d   «      D ]  }| |dz   |dz   f   |||f<   Œ Œ4 |S ©Nr!   r   rá   r   ©r©  rw   Úfullr§  r`  r'   ©r   r"   Ú_TestManyStencils__retdtypeÚ_TestManyStencils__b0Ú_TestManyStencils__bÚ_TestManyStencils__ar1  rT   s         €€r   Ú__kernelz/TestManyStencils.test_basic00.<locals>.__kernel«  s’   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
Ö+�Ü   A§G¡G¨A¡JÖ/�CØ%& s¨Q¡w°°a±Ð'7Ñ%8�D˜˜c˜’Nñ 0ð ,ð ˆKr   r4  rr   rÁ   N©rw   r‘   r’   r™  ©rT   Ú_TestManyStencils__kernelr   r~   r1  s   `   @r   Útest_basic00zTestManyStencils.test_basic00£  sG   ù€ ò	õ	ô �I‰I�b‹M×!Ñ! ! QÓ'ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)úrel index add constc                 ó   — | d   S ©Nr   r   r   s    r   r1  z-TestManyStencils.test_basic01.<locals>.kernel»  r¬  r   c                 ó6  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]2  }t        d| j                  d   «      D ]  }| |dz   |dz   f   |||f<   Œ Œ4 |S r®  r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic01.<locals>.__kernelÁ  ó–   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡JÖ/�CØ%& s¨Q¡w°°a±Ð'7Ñ%8�D˜˜c˜’Nñ 0ð 0ð ˆKr   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic01zTestManyStencils.test_basic01¹  óG   ù€ ò	õ	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)r¼  c                 ó   — | d   S )Nr   r   r   s    r   r1  z-TestManyStencils.test_basic02.<locals>.kernelÑ  ó   € Ø�U‘8ˆOr   c                 ó0  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]2  }t        d| j                  d   «      D ]  }| |dz   |dz   f   |||f<   Œ Œ4 |S ©Nr!   r   rá   r   r   r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic02.<locals>.__kernel×  s’   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
Ö+�Ü   A§G¡G¨A¡JÖ/�CØ%& s¨Q¡w°°b±Ð'8Ñ%9�D˜˜c˜’Nñ 0ð ,ð ˆKr   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic02zTestManyStencils.test_basic02Ï  óG   ù€ ò	õ	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)r¼  c                 ó   — | d   S )Nr   r   r   s    r   r1  z-TestManyStencils.test_basic03.<locals>.kernelç  r¬  r   c                 ó6  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]5  }t        d| j                  d   dz
  «      D ]  }| |dz   |dz   f   |||f<   Œ Œ7 |S r®  r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic03.<locals>.__kernelí  s–   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
Ö+�Ü   A§G¡G¨A¡J°¡NÖ3�CØ%& s¨Q¡w°°a±Ð'7Ñ%8�D˜˜c˜’Nñ 4ð ,ð ˆKr   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic03zTestManyStencils.test_basic03å  rÂ  r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)r¼  c                 ó   — | d   S )Nr   r   r   s    r   r1  z-TestManyStencils.test_basic04.<locals>.kernelý  rÅ  r   c                 ó0  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]2  }t        d| j                  d   «      D ]  }| |dz   |dz   f   |||f<   Œ Œ4 |S rÇ  r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic04.<locals>.__kernel  s’   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
Ö+�Ü   A§G¡G¨A¡JÖ/�CØ%& s¨R¡x°°q±Ð'8Ñ%9�D˜˜c˜’Nñ 0ð ,ð ˆKr   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic04zTestManyStencils.test_basic04û  rÉ  r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)r¼  c                 ó   — | d   S )N©r   r   r   r   s    r   r1  z-TestManyStencils.test_basic05.<locals>.kernel  rÅ  r   c                 ó6  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]2  }t        d| j                  d   «      D ]  }| |dz   |dz   f   |||f<   Œ Œ4 |S rÇ  r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic05.<locals>.__kernel  ó–   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡JÖ/�CØ%& s¨R¡x°°q±Ð'8Ñ%9�D˜˜c˜’Nñ 0ð 0ð ˆKr   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic05zTestManyStencils.test_basic05  rÉ  r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)r¼  c                 ó   — | d   S )N©r   r   r   r   s    r   r1  z-TestManyStencils.test_basic06.<locals>.kernel)  rÅ  r   c                 ó6  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]5  }t        d| j                  d   dz
  «      D ]  }| |dz   |dz   f   |||f<   Œ Œ7 |S rÇ  r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic06.<locals>.__kernel/  s–   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
Ö+�Ü   A§G¡G¨A¡J°¡NÖ3�CØ%& s¨Q¡w°°b±Ð'8Ñ%9�D˜˜c˜’Nñ 4ð ,ð ˆKr   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic06zTestManyStencils.test_basic06'  rÉ  r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)r¼  c                 ó   — | d   S )N©r   r   r   r   s    r   r1  z-TestManyStencils.test_basic07.<locals>.kernel?  r¬  r   c                 ó<  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]5  }t        d| j                  d   dz
  «      D ]  }| |dz   |dz   f   |||f<   Œ Œ7 |S r®  r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic07.<locals>.__kernelE  sš   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡J°¡NÖ3�CØ%& s¨Q¡w°°a±Ð'7Ñ%8�D˜˜c˜’Nñ 4ð 0ð ˆKr   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic07zTestManyStencils.test_basic07=  rÂ  r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)r¼  c                 ó   — | d   S )N©r   r   r   r   s    r   r1  z-TestManyStencils.test_basic08.<locals>.kernelU  ó   € Ø�V‘9Ðr   c                 ó0  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]2  }t        d| j                  d   «      D ]  }| |dz   |dz   f   |||f<   Œ Œ4 |S rÇ  r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic08.<locals>.__kernel[  ó’   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
Ö+�Ü   A§G¡G¨A¡JÖ/�CØ%& s¨R¡x°°r±Ð'9Ñ%:�D˜˜c˜’Nñ 0ð ,ð ˆKr   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic08zTestManyStencils.test_basic08S  sG   ù€ ò	õ	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)r¼  c                 ó   — | d   S )Nr/   r   r   s    r   r1  z-TestManyStencils.test_basic09.<locals>.kernelk  rÅ  r   c                 ó6  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]2  }t        d| j                  d   «      D ]  }| |dz   |dz   f   |||f<   Œ Œ4 |S )Nr!   r   rá   r   r1   r0   r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic09.<locals>.__kernelq  rÖ  r   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic09zTestManyStencils.test_basic09i  rÉ  r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)r¼  c                 ó   — | d   | d   z   S r0  r   r   s    r   r1  z-TestManyStencils.test_basic10.<locals>.kernel�  ó   € Ø�T‘7˜Q˜t™WÑ$Ð$r   c                 óR  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]C  }t        d| j                  d   dz
  «      D ]"  }| |dz   |dz   f   | |dz   |dz   f   z   |||f<   Œ$ ŒE |S r®  r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic10.<locals>.__kernel†  s­   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
Ö+�Ü   A§G¡G¨A¡J°¡NÖ3�CØ%& s¨Q¡w°°a±Ð'7Ñ%8¸1¸SÀ1¹WÀcÈAÁgÐ=MÑ;NÑ%N�D˜˜c˜’Nñ 4ð ,ð ˆKr   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic10zTestManyStencils.test_basic10  sG   ù€ ò	%õ
	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)r¼  c                 ó   — | d   | d   z   S )Nr   r   r   r   s    r   r1  z-TestManyStencils.test_basic11.<locals>.kernel–  s   € Ø�U‘8˜a ™gÑ%Ð%r   c                 óR  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]C  }t        d| j                  d   dz
  «      D ]"  }| |dz   |dz   f   | |dz   |dz   f   z   |||f<   Œ$ ŒE |S rÇ  r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic11.<locals>.__kernel›  s­   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
Ö+�Ü   A§G¡G¨A¡J°¡NÖ3�CØ%& s¨R¡x°°q±Ð'8Ñ%9¸A¸cÀA¹gÀsÈQÁwÐ>NÑ<OÑ%O�D˜˜c˜’Nñ 4ð ,ð ˆKr   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic11zTestManyStencils.test_basic11”  sG   ù€ ò	&õ
	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)r¼  c                 ó   — | d   | d   z   S )NrÔ  rÚ  r   r   s    r   r1  z-TestManyStencils.test_basic12.<locals>.kernel«  s   € Ø�U‘8˜a ™hÑ&Ð&r   c                 óX  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]C  }t        d| j                  d   dz
  «      D ]"  }| |dz   |dz   f   | |dz   |dz   f   z   |||f<   Œ$ ŒE |S rÇ  r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic12.<locals>.__kernel°  s±   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡J°¡NÖ3�CØ%& s¨R¡x°°q±Ð'8Ñ%9¸A¸cÀA¹gÀsÈRÁxÐ>OÑ<PÑ%P�D˜˜c˜’Nñ 4ð 0ð ˆKr   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic12zTestManyStencils.test_basic12©  óG   ù€ ò	'õ
	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)r¼  c                 ó   — | d   | d   z   S )Nrä  rß  r   r   s    r   r1  z-TestManyStencils.test_basic13.<locals>.kernelÀ  s   € Ø�V‘9˜q ™wÑ&Ð&r   c                 óX  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]C  }t        d| j                  d   dz
  «      D ]"  }| |dz   |dz   f   | |dz   |dz   f   z   |||f<   Œ$ ŒE |S rÇ  r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic13.<locals>.__kernelÅ  s±   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡J°¡NÖ3�CØ%& s¨R¡x°°r±Ð'9Ñ%:¸Q¸sÀQ¹wÈÈaÉÐ?OÑ=PÑ%P�D˜˜c˜’Nñ 4ð 0ð ˆKr   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic13zTestManyStencils.test_basic13¾  rú  r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)ú!rel index add domain change constc                 ó   — | d   dz   S )Nr=   r<  r   r   s    r   r1  z-TestManyStencils.test_basic14.<locals>.kernelÕ  s   € Ø�T‘7˜R‘<Ðr   c                 ó6  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]5  }t        d| j                  d   «      D ]  }| |dz   |dz   f   dz   |||f<   Œ Œ7 |S ©Nr!   r   rá   r   r<  r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic14.<locals>.__kernelÚ  s—   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
Ö+�Ü   A§G¡G¨A¡JÖ/�CØ%& s¨Q¡w°°a±Ð'7Ñ%8¸4Ñ%?�D˜˜c˜’Nñ 0ð ,ð ˆKr   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic14zTestManyStencils.test_basic14Ó  sG   ù€ ò	 õ
	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)r   c                 ó   — d}| d   |z   S )Nr<  r=   r   ©r   Úts     r   r1  z.TestManyStencils.test_basic14b.<locals>.kernelê  s   € ØˆAØ�T‘7˜Q‘;Ðr   c                 ó:  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]7  }t        d| j                  d   «      D ]  }d}| |dz   |dz   f   |z   |||f<   Œ Œ9 |S r  r¯  ©	r   r"   r²  r³  r´  rµ  r  r1  rT   s	          €€r   r¶  z0TestManyStencils.test_basic14b.<locals>.__kernelð  sœ   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
Ö+�Ü   A§G¡G¨A¡JÖ/�CØ�AØ%& s¨Q¡w°°a±Ð'7Ñ%8¸1Ñ%<�D˜˜c˜’Nñ 0ð ,ð ˆKr   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic14bzTestManyStencils.test_basic14bè  sG   ù€ ò	õ	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)ztwo rel index, add constc                 ó   — | d   | d   z   dz   S )Nr=   r   r+   r   r   s    r   r1  z-TestManyStencils.test_basic15.<locals>.kernel  ó   € Ø�T‘7˜Q˜t™WÑ$ rÑ)Ð)r   c                 óX  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]F  }t        d| j                  d   dz
  «      D ]%  }| |dz   |dz   f   | |dz   |dz   f   z   dz   |||f<   Œ' ŒH |S ©Nr!   r   rá   r   r+   r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic15.<locals>.__kernel  ó¹   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
Ö+�Ü   A§G¡G¨A¡J°¡NÖ3�CØ&'¨¨a©°°q±Ð(8Ñ&9Ø&'¨¨a©°°q±Ð(8Ñ&9ñ':Ø<?ñ'@�D˜˜c˜’Nñ 4ð ,ð ˆKr   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic15zTestManyStencils.test_basic15ÿ  sG   ù€ ò	*õ
	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)ú&two rel index boundary test, add constc                 ó   — | d   | d   z   dz   S )Nr=   )r1   r   r+   r   r   s    r   r1  z-TestManyStencils.test_basic17.<locals>.kernel  r  r   c                 óX  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]F  }t        d| j                  d   dz
  «      D ]%  }| |dz   |dz   f   | |dz   |dz   f   z   dz   |||f<   Œ' ŒH |S )Nr!   r   rá   r   r1   r+   r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic17.<locals>.__kernel  r  r   r4  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic17zTestManyStencils.test_basic17  óG   ù€ ò	*õ
	ô �I‰I�b‹M×!Ñ! ! QÓ'ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)r  c                 ó   — | d   | d   z   dz   S )Nr=   ©r0   r   r+   r   r   s    r   r1  z-TestManyStencils.test_basic18.<locals>.kernel-  ó   € Ø�T‘7˜Q˜u™XÑ%¨Ñ*Ð*r   c                 óR  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]C  }t        d| j                  d   «      D ]%  }| |dz   |dz   f   | |dz   |dz   f   z   dz   |||f<   Œ' ŒE |S )Nr!   r   rá   r   r1   r0   r+   r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic18.<locals>.__kernel2  sµ   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
Ö+�Ü   A§G¡G¨A¡JÖ/�CØ&'¨¨a©°°q±Ð(8Ñ&9Ø&'¨¨b©°#¸±'Ð(9Ñ&:ñ';Ø=@ñ'A�D˜˜c˜’Nñ 0ð ,ð ˆKr   r4  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic18zTestManyStencils.test_basic18+  óG   ù€ ò	+õ
	ô �I‰I�b‹M×!Ñ! ! QÓ'ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)r  c                 ó   — | d   | d   z   dz   S )Nr=   ©r   rr   r+   r   r   s    r   r1  z-TestManyStencils.test_basic19.<locals>.kernelC  r  r   c                 óX  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]C  }t        d| j                  d   «      D ]%  }| |dz   |dz   f   | |dz   |dz   f   z   dz   |||f<   Œ' ŒE |S )Nr!   r   rá   r   rr   r+   r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic19.<locals>.__kernelH  s¹   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡JÖ/�CØ&'¨¨a©°°q±Ð(8Ñ&9Ø&'¨¨a©°°q±Ð(8Ñ&9ñ':Ø<?ñ'@�D˜˜c˜’Nñ 0ð 0ð ˆKr   r4  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic19zTestManyStencils.test_basic19A  r  r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)r  c                 ó   — | d   | d   z   dz   S )Nr=   )r   éýÿÿÿr+   r   r   s    r   r1  z-TestManyStencils.test_basic20.<locals>.kernelY  r  r   c                 óR  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]C  }t        d| j                  d   «      D ]%  }| |dz   |dz   f   | |dz   |dz   f   z   dz   |||f<   Œ' ŒE |S )Nr!   r   rá   rr   r   r'  r+   r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic20.<locals>.__kernel^  sµ   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
Ö+�Ü   A§G¡G¨A¡JÖ/�CØ&'¨¨a©°°q±Ð(8Ñ&9Ø&'¨¨a©°°r±Ð(9Ñ&:ñ';Ø=@ñ'A�D˜˜c˜’Nñ 0ð ,ð ˆKr   r4  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic20zTestManyStencils.test_basic20W  r  r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)zsame rel, add constc                 ó   — | d   | d   z   dz   S )Nr=   r+   r   r   s    r   r1  z-TestManyStencils.test_basic21.<locals>.kernelo  r  r   c                 óR  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]C  }t        d| j                  d   «      D ]%  }| |dz   |dz   f   | |dz   |dz   f   z   dz   |||f<   Œ' ŒE |S r  r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic21.<locals>.__kernelt  sµ   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
Ö+�Ü   A§G¡G¨A¡JÖ/�CØ&'¨¨a©°°q±Ð(8Ñ&9Ø&'¨¨a©°°q±Ð(8Ñ&9ñ':Ø<?ñ'@�D˜˜c˜’Nñ 0ð ,ð ˆKr   r4  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic21zTestManyStencils.test_basic21m  r  r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)z%rel idx const expr folding, add constc                 ó   — | d   | d   z   dz   S )Nr   r=   r+   r   r   s    r   r1  z-TestManyStencils.test_basic22.<locals>.kernel…  s   € Ø�X‘;  4¡Ñ(¨2Ñ-Ð-r   c                 óX  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]F  }t        d| j                  d   dz
  «      D ]%  }| |dz   |dz   f   | |dz   |dz   f   z   dz   |||f<   Œ' ŒH |S r  r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic22.<locals>.__kernelŠ  r  r   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic22zTestManyStencils.test_basic22ƒ  sG   ù€ ò	.õ
	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)zrel idx, work in bodyc                 óT   — t        j                  d| d   z   «      }| d   | d   z   |z   S ©Nr*  )r1   r   r   r=   ©rw   Úsin©r   rm   s     r   r1  z-TestManyStencils.test_basic23.<locals>.kernel›  s0   € Ü—‘�r˜A˜d™G‘|Ó$ˆAØ�X‘;  4¡Ñ(¨1Ñ,Ð,r   c           	      ó¤  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]i  }t        d| j                  d   dz
  «      D ]H  }t        j                  d| |dz   |dz   f   z   «      }| |dz   |dz   f   | |dz   |dz   f   z   |z   |||f<   ŒJ Œk |S ©Nr!   r   rá   r   r1   r*  ©r©  rw   r°  r§  r`  r'   r6  ©	r   r"   r²  r³  r´  rµ  rm   r1  rT   s	          €€r   r¶  z/TestManyStencils.test_basic23.<locals>.__kernel¡  sá   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡J°¡NÖ3�CÜŸ™˜r A c¨A¡g¨s°Q©wÐ&6Ñ$7Ñ7Ó8�AØ&'¨¨a©°°q±Ð(8Ñ&9Ø&'¨¨a©°°q±Ð(8Ñ&9ñ':Ø<=ñ'>�D˜˜c˜’Nñ 4ð 0ð
 ˆKr   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic23zTestManyStencils.test_basic23™  sG   ù€ ò	-õ		ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)z,rel idx, dead code should not impact rel idxc                 óN   — t        j                  d| d   z   «      }| d   | d   z   S r4  r5  r7  s     r   r1  z.TestManyStencils.test_basic23a.<locals>.kernel³  s+   € Ü—‘�r˜A˜d™G‘|Ó$ˆAØ�X‘;  4¡Ñ(Ð(r   c           	      óž  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]f  }t        d| j                  d   dz
  «      D ]E  }t        j                  d| |dz   |dz   f   z   «      }| |dz   |dz   f   | |dz   |dz   f   z   |||f<   ŒG Œh |S r9  r:  r;  s	          €€r   r¶  z0TestManyStencils.test_basic23a.<locals>.__kernel¹  sÖ   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡J°¡NÖ3�CÜŸ™˜r A c¨A¡g¨s°Q©wÐ&6Ñ$7Ñ7Ó8�AØ%& s¨Q¡w°°a±Ð'7Ñ%8¸1¸SÀ1¹WÀcÈAÁgÐ=MÑ;NÑ%N�D˜˜c˜’Nñ 4ð 0ð ˆKr   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic23azTestManyStencils.test_basic23a±  sG   ù€ ò	)õ	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 ó†   — t        j                  d«      j                  dd«      }d„ }| j                  ||t        g¬«       y)z1d idx on 2d arrr4  rr   rÁ   c                 ó   — | d   dz   S )Nr   r+   r   r   s    r   r1  z-TestManyStencils.test_basic24.<locals>.kernelÌ  s   € Ø�Q‘4˜"‘9Ðr   ©rV  N)rw   r‘   r’   rŸ  r   ©rT   r   r1  s      r   Útest_basic24zTestManyStencils.test_basic24È  s:   € ä�I‰I�b‹M×!Ñ! ! QÓ'ˆò	ð 	×Ñ˜f a¼[¸NÐÕKr   c                 ó�   — t        j                  d«      j                  dd«      }d„ }| j                  ||t        t
        g¬«       y)zno idx on 2d arrr4  rr   rÁ   c                  ó   — y)Nr+   r   r   s    r   r1  z-TestManyStencils.test_basic25.<locals>.kernelÕ  s   € Ør   rC  N©rw   r‘   r’   rŸ  r‰  r   rD  s      r   Útest_basic25zTestManyStencils.test_basic25Ñ  sB   € ä�I‰I�b‹M×!Ñ! ! QÓ'ˆò	à×Ñ˜f a¼ZÜ=Lð=OÐõ 	Pr   c                 óž   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  ddd«      } ||d«      }‰ j                  ‰||«       y)z3d arrc                 ó   — | d   | d   z
  dz   S )N)r   r   r   )r   r   r   r+   r   r   s    r   r1  z-TestManyStencils.test_basic26.<locals>.kernelÝ  s   € Ø�W‘:  '¡
Ñ*¨RÑ/Ð/r   c           	      ó¦  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]m  }t        d| j                  d   dz
  «      D ]L  }t        d| j                  d   «      D ].  }| |dz   |dz   |dz   f   | |dz   |dz   |dz   f   z
  dz   ||||f<   Œ0 ŒN Œo |S )Nr!   r   rá   r1   r   r+   r¯  )	r   r"   r²  r³  Ú_TestManyStencils__cr´  rµ  r1  rT   s	          €€r   r¶  z/TestManyStencils.test_basic26.<locals>.__kernelâ  sá   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
Ö+�Ü   A§G¡G¨A¡J°¡NÖ3�CÜ$ Q¨¯©°©
Ö3˜Ø/0°°q±¸#À¹'À3ÈÁ7Ð1JÑ/KØ/0°°q±¸#À¹'À3ÈÁ7Ð1JÑ/Kñ0Là/2ñ03˜˜S # s˜]Ò+ñ  4ñ 4ð ,ð ˆKr   é@   rÁ   é   r1   Nr·  r¸  s   `   @r   Útest_basic26zTestManyStencils.test_basic26Ú  sI   ù€ ò	0õ

	ô �I‰I�b‹M×!Ñ! ! Q¨Ó*ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 ó    ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dddd«      } ||d«      }‰ j                  ‰||«       y)z4d arrc                 ó   — | d   | d   z
  dz   S )N)r   r   r   r   )r   r   r   r   r+   r   r   s    r   r1  z-TestManyStencils.test_basic27.<locals>.kernelõ  s   € Ø�Z‘= 1 [¡>Ñ1°BÑ6Ð6r   c                 óô  •— ‰	j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]”  }t        d| j                  d   «      D ]v  }t        d| j                  d   dz
  «      D ]U  }t        d| j                  d   «      D ]7  }| |dz   |dz   |dz   |dz   f   | |dz   |dz   |dz   |dz   f   z
  dz   |||||f<   Œ9 ŒW Œx Œ– |S )	Nr!   r   rá   r   rr   r1   r   r+   r¯  )
r   r"   r²  r³  Ú_TestManyStencils__drM  r´  rµ  r1  rT   s
           €€r   r¶  z/TestManyStencils.test_basic27.<locals>.__kernelû  s  ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
Ö+�Ü   A§G¡G¨A¡JÖ/�CÜ$ Q¨¯©°©
°Q©Ö7˜Ü#(¨¨A¯G©G°A©JÖ#7˜CØ89¸#À¹'À3ÈÁ7Ø:=À¹'À3ÈÁ7ð;Kñ 9Là89¸#À¹'À3ÈÁ7Ø:=À¹'À3ÈÁ8ð;Lñ 9Mñ9Mð 9<ñ	9<˜D  c¨3°Ð!3Ò4ñ $8ñ  8ñ 0ð ,ð ˆKr   é€   rÁ   rO  r1   Nr·  r¸  s   `   @r   Útest_basic27zTestManyStencils.test_basic27ó  sK   ù€ ò	7õ	ô  �I‰I�c‹N×"Ñ" 1 a¨¨AÓ.ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óÖ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      j                  t         j                  «      } ||d«      }‰ j                  ‰||«       y)ztype widen c                 ó8   — | d   t        j                  d«      z   S )Nr=   ç      $@)rw   r!  r   s    r   r1  z-TestManyStencils.test_basic28.<locals>.kernel  s   € Ø�T‘7œRŸZ™Z¨›_Ñ,Ð,r   c                 ó\  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]H  }t        d| j                  d   «      D ]*  }| |dz   |dz   f   t        j                  d«      z   |||f<   Œ, ŒJ |S )Nr!   r   rá   r   rY  )r©  rw   r°  r§  r`  r'   r!  r±  s         €€r   r¶  z/TestManyStencils.test_basic28.<locals>.__kernel  s    ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
Ö+�Ü   A§G¡G¨A¡JÖ/�CØ%& s¨Q¡w°°a±Ð'7Ñ%8¼2¿:¹:ÀdÓ;KÑ%K�D˜˜c˜’Nñ 0ð ,ð ˆKr   r4  rr   rÁ   N©rw   r‘   r’   ÚastypeÚfloat32r™  r¸  s   `   @r   Útest_basic28zTestManyStencils.test_basic28  sV   ù€ ò	-õ	ô �I‰I�b‹M×!Ñ! ! QÓ'×.Ñ.¬r¯z©zÓ:ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óš   — t        j                  d«      j                  dd«      }d„ }| j                  ||t        t
        t        g¬«       y)zconst index from func rM  rr   rÁ   c                 óH   — | dt        t        j                  d«      «      f   S )Nr   )r)  rw   Úcosr   s    r   r1  z-TestManyStencils.test_basic29.<locals>.kernel)  s   € Ø�QœœBŸF™F 1›I›Ð&Ñ'Ð'r   rC  N©rw   r‘   r’   rŸ  r‰  r   r   rD  s      r   Útest_basic29zTestManyStencils.test_basic29%  sE   € ä�I‰I�c‹N×"Ñ" 1 aÓ(ˆò	(à×Ñ˜f a¼ZÜ=LÜ=Jð=LÐõ 	Mr   c                 óÖ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      j                  t         j                  «      } ||d«      }‰ j                  ‰||«       y)zsigned zerosc                 ó   — | d   S r<   r   r   s    r   r1  z-TestManyStencils.test_basic30.<locals>.kernel1  rå  r   c                 ó0  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]2  }t        d| j                  d   «      D ]  }| |dz   |dz   f   |||f<   Œ Œ4 |S r®  r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic30.<locals>.__kernel6  rç  r   r4  rr   rÁ   Nr[  r¸  s   `   @r   Útest_basic30zTestManyStencils.test_basic30/  sV   ù€ ò	õ
	ô �I‰I�b‹M×!Ñ! ! QÓ'×.Ñ.¬r¯z©zÓ:ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óÖ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      j                  t         j                  «      } ||d«      }‰ j                  ‰||«       y)zdoes a const propagate? 2Dc                 ó   — d}| |df   S ©Nr   r   r   r  s     r   r1  z-TestManyStencils.test_basic31.<locals>.kernelF  s   € ØˆAØ�Q˜�T‘7ˆNr   c                 ó:  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]7  }t        d| j                  d   dz
  «      D ]  }d}| ||z   |dz   f   |||f<   Œ Œ9 |S r®  r¯  r
  s	          €€r   r¶  z/TestManyStencils.test_basic31.<locals>.__kernelL  s›   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
Ö+�Ü   A§G¡G¨A¡J°¡NÖ3�CØ�AØ%& s¨Q¡w°°a±Ð'7Ñ%8�D˜˜c˜’Nñ 4ð ,ð ˆKr   r4  rr   rÁ   Nr[  r¸  s   `   @r   Útest_basic31zTestManyStencils.test_basic31D  sV   ù€ ò	õ	ô �I‰I�b‹M×!Ñ! ! QÓ'×.Ñ.¬r¯z©zÓ:ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   z constant folding not implementedc                 óT   — t        j                  d«      j                  dd«      }d„ }y)zdoes a const propagate?rM  rr   rÁ   c                 ó   — d}d|z
  }| |df   S rj  r   )r   Úsr  s      r   r1  z.TestManyStencils.test_basic31b.<locals>.kernel_  s   € ØˆAØ�A‘ˆAØ�Q˜�T‘7ˆNr   N)rw   r‘   r’   rD  s      r   Útest_basic31bzTestManyStencils.test_basic31bZ  s#   € ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆó	r   c                 ó|   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      } ||d«      }‰ j                  ‰||«       y)zdoes a const propagate? 1Dc                 ó   — d}| |   S rF   r   r  s     r   r1  z.TestManyStencils.test_basic31c.<locals>.kernelh  s   € ØˆAØ�Q‘4ˆKr   c                 óò   •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]  }d}| ||z      ||f<   Œ |S r®  r¯  )r   r"   r²  r³  rµ  r  r1  rT   s         €€r   r¶  z0TestManyStencils.test_basic31c.<locals>.__kerneln  sv   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ø�Ø˜s Q™w™Z��S�T’
ð 0ð ˆKr   rM  N©rw   r‘   r™  r¸  s   `   @r   Útest_basic31czTestManyStencils.test_basic31cf  s:   ù€ ò	õ	ô �I‰I�c‹NˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óš   — t        j                  d«      j                  dd«      }d„ }| j                  ||t        t
        t        g¬«       y)ztyped int indexrM  rr   rÁ   c                 ó6   — | t        j                  d«      df   S rj  )rw   Úint8r   s    r   r1  z-TestManyStencils.test_basic32.<locals>.kernel  s   € Ø”R—W‘W˜Q“Z �]Ñ#Ð#r   rC  Nrb  rD  s      r   Útest_basic32zTestManyStencils.test_basic32{  sE   € ä�I‰I�c‹N×"Ñ" 1 aÓ(ˆò	$à×Ñ˜f a¼ZÜ=LÜ=Jð=LÐõ 	Mr   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)zadd 0d arrayc                 ó8   — | d   t        j                  d«      z   S )Nr=   r   )rw   Úarrayr   s    r   r1  z-TestManyStencils.test_basic33.<locals>.kernel‡  s   € Ø�T‘7œRŸX™X a›[Ñ(Ð(r   c                 ó\  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]H  }t        d| j                  d   «      D ]*  }| |dz   |dz   f   t        j                  d«      z   |||f<   Œ, ŒJ |S r®  )r©  rw   r°  r§  r`  r'   r|  r±  s         €€r   r¶  z/TestManyStencils.test_basic33.<locals>.__kernelŒ  sŸ   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
Ö+�Ü   A§G¡G¨A¡JÖ/�CØ%& s¨Q¡w°°a±Ð'7Ñ%8¼2¿8¹8ÀA»;Ñ%F�D˜˜c˜’Nñ 0ð ,ð ˆKr   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic33zTestManyStencils.test_basic33…  sG   ù€ ò	)õ
	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)z<More complex rel index with dependency on addition rel indexc                 ól   — d| d   z   }|| d   | d   z   | d   z   t        j                  | d   «      z   z   S )Nç      @r   r   r   r  r5  )r   Úgs     r   r1  z-TestManyStencils.test_basic34.<locals>.kernel›  sB   € Ø�Q�t‘W‘ˆAØ˜˜$™ ! D¡'Ñ)¨A¨e©HÑ4´r·v±v¸aÀ¹hÓ7GÑGÑHÐHr   c           
      óÜ  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]…  }t        d| j                  d   dz
  «      D ]d  }d| |dz   |dz   f   z   }|| |dz   |dz   f   | |dz   |dz   f   z   | |dz   |dz   f   z   t        j                  | |dz   |dz   f   «      z   z   |||f<   Œf Œ‡ |S )	Nr!   r   rá   r   r1   r�  r   r0   r:  )	r   r"   r²  r³  r´  rµ  r‚  r1  rT   s	          €€r   r¶  z/TestManyStencils.test_basic34.<locals>.__kernel¡  s  ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡J°¡NÖ3�CØ˜a  a¡¨¨q©Ð 0Ñ1Ñ1�AØ%&¨!¨C°!©G°S¸1±WÐ,<Ñ*=Ø*+¨C°!©G°S¸1±WÐ,<Ñ*=ñ+>à*+¨C°!©G°S¸2±XÐ,=Ñ*>ñ+?ô +-¯&©&°°3¸±8¸SÀ1¹WÐ3DÑ1EÓ*Fñ+Gñ &H�D˜˜c˜’Nñ 4ð 0ð ˆKr   é�   r4  Nr·  r¸  s   `   @r   Útest_basic34zTestManyStencils.test_basic34™  sH   ù€ ò	Iõ	ô �I‰I�c‹N×"Ñ" 2 rÓ*ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 ó¤   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||ddi¬	«       y)
z<simple cval where cval is int but castable to dtype of floatc                 ó   — | d   S r¾  r   r   s    r   r1  z-TestManyStencils.test_basic35.<locals>.kernel´  r¬  r   c                 ó6  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]2  }t        d| j                  d   «      D ]  }| |dz   |dz   f   |||f<   Œ Œ4 |S )Nr!   rª   rá   r   r   r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic35.<locals>.__kernel¹  rÀ  r   rM  rr   rÁ   Nr-   rª   ©rc   r·  r¸  s   `   @r   Útest_basic35zTestManyStencils.test_basic35²  sP   ù€ ò	õ
	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÀ&È!ÀÐ#ÕMr   c                 ó¤   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||ddi¬	«       y)
zmore complex with cvalc                 ó0   — | d   | d   z   | d   z   | d   z   S ©Nr   r   rÚ  r   r   s    r   r1  z-TestManyStencils.test_basic36.<locals>.kernelÈ  ó'   € Ø�T‘7˜Q˜u™XÑ%¨¨%©Ñ0°1°U±8Ñ;Ð;r   c                 ó�  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]_  }t        d| j                  d   dz
  «      D ]>  }| |dz   |dz   f   | |dz   |dz   f   z   | |dz   |dz   f   z   | |dz   |dz   f   z   |||f<   Œ@ Œa |S )Nr!   g      @rá   r   r   r   r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic36.<locals>.__kernelÍ  sê   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 C¬t°JÓ/?Ô@ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡J°¡NÖ3�CØ&'¨¨a©°°q±Ð(8Ñ&9Ø&'¨¨a©°°r±Ð(9Ñ&:ñ';à&'¨¨a©°°r±Ð(9Ñ&:ñ';ð '(¨¨a©°°r±Ð(9Ñ&:ñ';�D˜˜c˜’Nñ 4ð 0ð ˆKr   rM  rr   rÁ   Nr-   rª   r‰  r·  r¸  s   `   @r   Útest_basic36zTestManyStencils.test_basic36Æ  sP   ù€ ò	<õ

	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÀ&È!ÀÐ#ÕMr   c                 ó¤   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||ddi¬	«       y)
zcval is exprc                 ó0   — | d   | d   z   | d   z   | d   z   S r�  r   r   s    r   r1  z-TestManyStencils.test_basic37.<locals>.kernelß  rŽ  r   c                 ó�  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]_  }t        d| j                  d   dz
  «      D ]>  }| |dz   |dz   f   | |dz   |dz   f   z   | |dz   |dz   f   z   | |dz   |dz   f   z   |||f<   Œ@ Œa |S )Nr!   ç      Q@rá   r   r   r   r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic37.<locals>.__kernelä  óê   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 D´°ZÓ0@ÔAˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡J°¡NÖ3�CØ&'¨¨a©°°q±Ð(8Ñ&9Ø&'¨¨a©°°r±Ð(9Ñ&:ñ';à&'¨¨a©°°r±Ð(9Ñ&:ñ';ð '(¨¨a©°°r±Ð(9Ñ&:ñ';�D˜˜c˜’Nñ 4ð 0ð ˆKr   rM  rr   rÁ   Nr-   r”  r‰  r·  r¸  s   `   @r   Útest_basic37zTestManyStencils.test_basic37Ý  sV   ù€ ò	<õ

	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aØ-3°WÐ,=ð 	$õ 	?r   c                 óÂ   — d„ }t        j                  d«      j                  dd«      }| j                  t        t        t        ¬«      }| j                  ||ddi|¬«       y	)
zcval is complexc                 ó0   — | d   | d   z   | d   z   | d   z   S r�  r   r   s    r   r1  z-TestManyStencils.test_basic38.<locals>.kernel÷  rŽ  r   rM  rr   rÁ   ©r   rl  r   r-   r<  ©rc   rV  N©rw   r‘   r’   r¥  r   rŸ  ©rT   r1  r   rf  s       r   Útest_basic38zTestManyStencils.test_basic38õ  sa   € ò	<ä�I‰I�c‹N×"Ñ" 1 aÓ(ˆØ× Ñ Ü#Ü"Ü ð !ó "ˆð 	×Ñ˜f a°&¸#°Ø13ð 	õ 	5r   c                 óþ   ‡ ‡‡— d„ Št        j                  d«      t        j                  d«      z   Šˆˆˆ fd„}t        j                  d«      j	                  dd«      } ||d«      }‰ j                  ‰||d	‰i¬
«       y)zcval is func exprc                 ó0   — | d   | d   z   | d   z   | d   z   S r�  r   r   s    r   r1  z-TestManyStencils.test_basic39.<locals>.kernel  rŽ  r   rË   r1   c                 ó�  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  ‰t	        |«      ¬«      }t        d| j                  d   dz
  «      D ]_  }t        d| j                  d   dz
  «      D ]>  }| |dz   |dz   f   | |dz   |dz   f   z   | |dz   |dz   f   z   | |dz   |dz   f   z   |||f<   Œ@ Œa |S )Nr!   rá   r   r   r   r¯  )	r   r"   r²  r³  r´  rµ  r-   r1  rT   s	         €€€r   r¶  z/TestManyStencils.test_basic39.<locals>.__kernel  r•  r   rM  rr   rÁ   Nr-   r‰  )rw   r6  ra  r‘   r’   r™  )rT   r¹  r   r~   r-   r1  s   `   @@r   Útest_basic39zTestManyStencils.test_basic39  sq   ú€ ò	<ô �v‰v�b‹zœBŸF™F 1›IÑ%ˆö

	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aØ-3°T¨Nð 	$õ 	<r   c                 óê   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      } |||d«      }‰ j                  ‰|||«       y)z2 args!c                 ó   — | d   |d   z   S ©Nr   )r   r0   r   r4   s     r   r1  z-TestManyStencils.test_basic40.<locals>.kernel  ó   € Ø�T‘7˜Q˜u™XÑ%Ð%r   c                 óV  •— ‰j                  | ||¬«        ‰| |«      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]@  }t        d| j                  d   «      D ]"  }| |dz   |dz   f   ||dz   |dz   f   z   |||f<   Œ$ ŒB |S )Nr!   r   rá   r1   r   r0   r¯  ©	r   r5   r"   r²  r³  r´  rµ  r1  rT   s	          €€r   r¶  z/TestManyStencils.test_basic40.<locals>.__kernel#  s±   ø€ Ø×%Ñ% a¨¸Ð%ÔFÙ  1›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡JÖ/�CØ%& s¨Q¡w°°a±Ð'7Ñ%8¸1¸SÀ1¹WÀcÈBÁhÐ=NÑ;OÑ%O�D˜˜c˜’Nñ 0ð 0ð ˆKr   rM  rr   rÁ   Nr·  ©rT   r¹  r   r5   r~   r1  s   `    @r   Útest_basic40zTestManyStencils.test_basic40  se   ù€ ò	&õ
	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÜ�I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜q $Ó'ˆØ×#Ñ# F¨H°a¸Õ;r   c                 óÜ   — d„ }t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      }| j                  |||t        t
        g¬«       y)	z(2 args! rel arrays wildly not same size!c                 ó   — | d   |d   z   S r¤  r   r4   s     r   r1  z-TestManyStencils.test_basic41.<locals>.kernel3  r¥  r   rM  rr   rÁ   r+   r   rC  N©rw   r‘   r’   rŸ  r‰  r?  ©rT   r1  r   r5   s       r   Útest_basic41zTestManyStencils.test_basic411  ó_   € ò	&ä�I‰I�c‹N×"Ñ" 1 aÓ(ˆÜ�I‰I�b‹M×!Ñ! ! QÓ'ˆØ×Ñ˜f a¨Ä
Ü@Nð@PÐõ 	Qr   c                 óÜ   — d„ }t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      }| j                  |||t        t
        g¬«       y)z%2 args! rel arrays very close in sizec                 ó   — | d   |d   z   S r¤  r   r4   s     r   r1  z-TestManyStencils.test_basic42.<locals>.kernel<  r¥  r   rM  rr   rÁ   ç      "@rC  Nr¬  r­  s       r   Útest_basic42zTestManyStencils.test_basic42:  r¯  r   c                 óê   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      } |||d«      }‰ j                  ‰|||«       y)z2 args more complexityc                 ó0   — | d   | d   z   |d   z   |d   z   S )Nr   ©r   r1   r  r   r   r4   s     r   r1  z-TestManyStencils.test_basic43.<locals>.kernelE  s'   € Ø�T‘7˜Q˜t™WÑ$ q¨¡xÑ/°!°E±(Ñ:Ð:r   c                 ó”  •— ‰j                  | ||¬«        ‰| |«      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]_  }t        d| j                  d   dz
  «      D ]>  }| |dz   |dz   f   | |dz   |dz   f   z   ||dz   |dz   f   z   ||dz   |dz   f   z   |||f<   Œ@ Œa |S )Nr!   r   rá   r   r1   r0   r   r¯  r§  s	          €€r   r¶  z/TestManyStencils.test_basic43.<locals>.__kernelJ  sî   ø€ Ø×%Ñ% a¨¸Ð%ÔFÙ  1›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡J°¡NÖ3�CØ&'¨¨a©°°q±Ð(8Ñ&9Ø&'¨¨a©°°q±Ð(8Ñ&9ñ':à&'¨¨b©°#¸±'Ð(9Ñ&:ñ';ð '(¨¨a©°°r±Ð(9Ñ&:ñ';�D˜˜c˜’Nñ 4ð 0ð ˆKr   g      >@rª   é   Nr·  r¨  s   `    @r   Útest_basic43zTestManyStencils.test_basic43C  se   ù€ ò	;õ

	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÜ�I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜q $Ó'ˆØ×#Ñ# F¨H°a¸Õ;r   c                 óÜ   — d„ }t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      }| j                  |||t        t
        g¬«       y)z!2 args, has assignment before usec                 ó   — d| d<   | d   S )Nr4  r   r   r4   s     r   r1  z-TestManyStencils.test_basic44.<locals>.kernel]  s   € ØˆAˆd‰GØ�T‘7ˆNr   rM  rr   rÁ   rC  N©rw   r‘   r’   rŸ  r   r   r­  s       r   Útest_basic44zTestManyStencils.test_basic44[  sa   € ò	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÜ�I‰I�c‹N×"Ñ" 1 aÓ(ˆØ×Ñ˜f a¨ÄÜ@Mð@OÐõ 	Pr   c                 óÜ   — d„ }t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      }| j                  |||t        t
        g¬«       y)z02 args, has assignment and then cross dependencyc                 ó"   — d| d<   | d   | d   z   S )Nr4  r   r   r   r4   s     r   r1  z-TestManyStencils.test_basic45.<locals>.kernelg  s   € ØˆAˆd‰GØ�T‘7˜Q˜t™WÑ$Ð$r   rM  rr   rÁ   rC  Nr¼  r­  s       r   Útest_basic45zTestManyStencils.test_basic45e  óa   € ò	%ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÜ�I‰I�c‹N×"Ñ" 1 aÓ(ˆØ×Ñ˜f a¨ÄÜ@Mð@OÐõ 	Pr   c                 óÜ   — d„ }t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      }| j                  |||t        t
        g¬«       y)z#2 args, has cross relidx assignmentc                 ó(   — |d   | d<   | d   | d   z   S )Nr¶  r   r   r   r4   s     r   r1  z-TestManyStencils.test_basic46.<locals>.kernelq  s"   € Ø˜‘gˆAˆd‰GØ�T‘7˜Q˜t™WÑ$Ð$r   rM  rr   rÁ   rC  Nr¼  r­  s       r   Útest_basic46zTestManyStencils.test_basic46o  rÁ  r   c                 ó8  ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      } ||||d«      }‰ j                  ‰||||«       y)z3 argsc                 ó$   — | d   |d   z   |d   z   S )Nr   r   r   r   ©r   r5   r  s      r   r1  z-TestManyStencils.test_basic47.<locals>.kernel{  s   € Ø�T‘7˜Q˜t™WÑ$ q¨¡xÑ/Ð/r   c                 ó|  •— ‰	j                  | |||¬«        ‰| ||«      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]Q  }t        d| j                  d   dz
  «      D ]0  }| |dz   |dz   f   ||dz   |dz   f   z   ||dz   |dz   f   z   |||f<   Œ2 ŒS |S rÇ  r¯  ©
r   r5   r  r"   r²  r³  r´  rµ  r1  rT   s
           €€r   r¶  z/TestManyStencils.test_basic47.<locals>.__kernel�  sÖ   ø€ Ø×%Ñ% a¨¨A¸LÐ%ÔIÙ  1 a›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡J°¡NÖ3�CØ&'¨¨a©°°q±Ð(8Ñ&9Ø&'¨¨a©°°q±Ð(8Ñ&9ñ':à&'¨¨b©°#¸±'Ð(9Ñ&:ñ';�D˜˜c˜’Nñ 4ð 0ð
 ˆKr   rM  rr   rÁ   Nr·  ©rT   r¹  r   r5   r  r~   r1  s   `     @r   Útest_basic47zTestManyStencils.test_basic47y  sƒ   ù€ ò	0õ		ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÜ�I‰I�c‹N×"Ñ" 1 aÓ(ˆÜ�I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜q ! TÓ*ˆØ×#Ñ# F¨H°a¸¸AÕ>r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)z22 args, has assignment before use via memory aliasc                 ó:   — | j                   }d|d d …d d …f<   | d   S )Nr*  r   )ÚTr  s     r   r1  z-TestManyStencils.test_basic48.<locals>.kernel–  s!   € Ø—‘ˆAØˆAŠa’ˆd‰GØ�T‘7ˆNr   c                 ód  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]I  }t        d| j                  d   «      D ]+  }| j                  }d|d d …d d …f<   | |dz   |dz   f   |||f<   Œ- ŒK |S )Nr!   r   rá   r   r*  )r©  rw   r°  r§  r`  r'   rÎ  )	r   r"   r²  r³  r´  rµ  r  r1  rT   s	          €€r   r¶  z/TestManyStencils.test_basic48.<locals>.__kernelž  s¬   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡JÖ/�CØŸ™�AØ �A’aš�d‘GØ%& s¨Q¡w°°a±Ð'7Ñ%8�D˜˜c˜’Nñ 0ð 0ð
 ˆKr   rM  rr   rÁ   Nr·  r¸  s   `   @r   Útest_basic48zTestManyStencils.test_basic48”  sG   ù€ ò	õ		ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óò   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      } |||d«      }‰ j                  ‰|||ddi¬	«       y)
z#2 args, standard_indexing on secondc                 ó   — | d   |d   z   S )Nr   r"  r   r4   s     r   r1  z-TestManyStencils.test_basic49.<locals>.kernel°  rï  r   c                 óD  •— ‰j                  | |¬«        ‰| |«      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]8  }t        d| j                  d   «      D ]  }| |dz   |dz   f   |d   z   |||f<   Œ Œ: |S )Nr!   r   rá   r   r"  r¯  r§  s	          €€r   r¶  z/TestManyStencils.test_basic49.<locals>.__kernelµ  s¡   ø€ Ø×%Ñ% a°lÐ%ÔCÙ  1›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡JÖ/�CØ%& s¨Q¡w°°a±Ð'7Ñ%8¸1¸T¹7Ñ%B�D˜˜c˜’Nñ 0ð 0ð ˆKr   rM  rr   rÁ   Nr@   r5   r‰  r·  r¨  s   `    @r   Útest_basic49zTestManyStencils.test_basic49®  su   ù€ ò	%õ
	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÜ�I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜q $Ó'ˆØ×#Ñ# F¨H°a¸Ø-@À#Ð,Fð 	$õ 	Hr   z&dynamic range checking not implementedc                 ó
   — d„ }y)z2 args, standard_indexing OOBc                 ó   — | d   |d   z   S )Nr   )r   é   r   r4   s     r   r1  z-TestManyStencils.test_basic50.<locals>.kernelÈ  r¥  r   Nr   ©rT   r1  s     r   Útest_basic50zTestManyStencils.test_basic50Å  s   € ó	&r   c                 óæ   — d„ }t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      }| j                  |||dddgit        t
        g¬«       y	)
z$2 args, standard_indexing, no relidxc                 ó   — | d   |d   z   S ©Nr   )r   r1   r   r4   s     r   r1  z-TestManyStencils.test_basic51.<locals>.kernelÎ  rï  r   rM  rr   rÁ   r@   r   r5   rš  NrH  r­  s       r   Útest_basic51zTestManyStencils.test_basic51Ì  si   € ò	%ä�I‰I�c‹N×"Ñ" 1 aÓ(ˆÜ�I‰I�c‹N×"Ñ" 1 aÓ(ˆØ×Ñ˜f a¨Ø':¸SÀ#¸JÐ&GÜ2<¼oÐ1Nð 	õ 	Pr   c           	      ó@  ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      } ||||d«      }‰ j                  ‰||||d	d
i¬«       y)z(3 args, standard_indexing on middle arg c                 ó$   — | d   |d   z   |d   z   S )Nr   r¶  r   rÇ  s      r   r1  z-TestManyStencils.test_basic52.<locals>.kernelØ  s   € Ø�T‘7˜Q˜t™WÑ$ q¨¡wÑ.Ð.r   c                 ój  •— ‰	j                  | ||¬«        ‰| ||«      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]I  }t        d| j                  d   dz
  «      D ](  }| |dz   |dz   f   |d   z   ||dz   |dz   f   z   |||f<   Œ* ŒK |S )Nr!   r   rá   r   r1   r   r¯  rÉ  s
           €€r   r¶  z/TestManyStencils.test_basic52.<locals>.__kernelÝ  sÃ   ø€ Ø×%Ñ% a¨¸Ð%ÔFÙ  1 a›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡J°¡NÖ3�CØ&'¨¨a©°°q±Ð(8Ñ&9¸A¸d¹GÑ&CØ&'¨¨a©°°q±Ð(8Ñ&9ñ':�D˜˜c˜’Nñ 4ð 0ð ˆKr   rM  rr   rÁ   r�  r1   Nr@   r5   r‰  r·  rÊ  s   `     @r   Útest_basic52zTestManyStencils.test_basic52Ö  s“   ù€ ò	/õ
	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÜ�I‰I�b‹M×!Ñ! ! QÓ'ˆÜ�I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜q ! TÓ*ˆØ×#Ñ# F¨H°a¸¸AØ-@À#Ð,Fð 	$õ 	Hr   c                 ó  — d„ }t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      }| j                  t        t
        t        ¬«      }| j                  |||ddi|¬«       y	)
z92 args, standard_indexing on variable that does not existc                 ó   — | d   |d   z   S rÜ  r   r4   s     r   r1  z-TestManyStencils.test_basic53.<locals>.kernelð  rï  r   rM  rr   rÁ   r™  r@   r  rš  N)rw   r‘   r’   r¥  r]  r   rŸ  ©rT   r1  r   r5   rf  s        r   Útest_basic53zTestManyStencils.test_basic53î  s   € ò	%ä�I‰I�c‹N×"Ñ" 1 aÓ(ˆÜ�I‰I�c‹N×"Ñ" 1 aÓ(ˆØ× Ñ ÜÜ"Üð !ó ˆð 	×Ñ˜f a¨Ð5HÈ#Ð4NØ13ð 	õ 	5r   c                 óò   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      } |||d«      }‰ j                  ‰|||ddi¬	«       y)
z)2 args, standard_indexing, index from varc                 ó    — d}| d   |d|f   z   S )Nr1   r   r   r   )r   r5   r  s      r   r1  z-TestManyStencils.test_basic54.<locals>.kernelý  s   € ØˆAØ�T‘7˜Q˜q !˜t™WÑ$Ð$r   c                 óL  •— ‰	j                  | |¬«        ‰| |«      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]<  }t        d| j                  d   «      D ]  }d}| |dz   |dz   f   |d|f   z   |||f<   Œ  Œ> |S ©Nr!   r   rá   r   r1   r¯  )
r   r5   r"   r²  r³  r´  rµ  r  r1  rT   s
           €€r   r¶  z/TestManyStencils.test_basic54.<locals>.__kernel  sª   ø€ Ø×%Ñ% a°lÐ%ÔCÙ  1›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡JÖ/�CØ�AØ%& s¨Q¡w°°a±Ð'7Ñ%8¸1¸QÀ¸T¹7Ñ%B�D˜˜c˜’Nñ 0ð 0ð ˆKr   rM  rr   rÁ   Nr@   r5   r‰  r·  r¨  s   `    @r   Útest_basic54zTestManyStencils.test_basic54û  su   ù€ ò	%õ	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÜ�I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜q $Ó'ˆØ×#Ñ# F¨H°a¸Ø-@À#Ð,Fð 	$õ 	Hr   c                 óò   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      } |||d«      }‰ j                  ‰|||ddi¬	«       y)
z62 args, standard_indexing, index from more complex varc                 ó*   — d}d|z
  }| d   |d|f   z   S )Nr   r1   r   r   r   )r   r5   ro  r  s       r   r1  z-TestManyStencils.test_basic55.<locals>.kernel  s'   € ØˆAØ�A‘ˆAØ�T‘7˜Q˜q !˜t™WÑ$Ð$r   c                 óV  •— ‰
j                  | |¬«        ‰	| |«      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]A  }t        d| j                  d   «      D ]#  }d}d|z
  }| |dz   |dz   f   |d|f   z   |||f<   Œ% ŒC |S ré  r¯  )r   r5   r"   r²  r³  r´  rµ  ro  r  r1  rT   s            €€r   r¶  z/TestManyStencils.test_basic55.<locals>.__kernel  s³   ø€ Ø×%Ñ% a°lÐ%ÔCÙ  1›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡JÖ/�CØ�AØ˜A™�AØ%& s¨Q¡w°°a±Ð'7Ñ%8¸1¸QÀ¸T¹7Ñ%B�D˜˜c˜’Nñ 0ð 0ð
 ˆKr   rM  rr   rÁ   Nr@   r5   r‰  r·  r¨  s   `    @r   Útest_basic55zTestManyStencils.test_basic55  su   ù€ ò	%õ		ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÜ�I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜q $Ó'ˆØ×#Ñ# F¨H°a¸Ø-@À#Ð,Fð 	$õ 	Hr   c                 óò   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      } |||d«      }‰ j                  ‰|||ddi¬	«       y)
z,2 args, standard_indexing, added complexity c                 ó`   — d}d}|dd d …f   D ]  }||z  }Œ	 d|z
  dz
  }| d   |d|f   z   |z   S )Nr   r   r1   r   r   )r   r5   ro  Úaccr£  r  s         r   r1  z-TestManyStencils.test_basic56.<locals>.kernel/  sP   € ØˆAØˆCØ�qš!�t”W�Ø�q‘‘ð à�A‘˜‘	ˆAØ�T‘7˜Q˜q !˜t™WÑ$ sÑ*Ð*r   c                 óŒ  •— ‰j                  | |¬«        ‰| |«      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]\  }t        d| j                  d   «      D ]>  }d}d}|dd d …f   D ]  }	||	z  }Œ	 d|z
  dz
  }
| |dz   |dz   f   |d|
f   z   |z   |||f<   Œ@ Œ^ |S ré  r¯  )r   r5   r"   r²  r³  r´  rµ  ro  rñ  r£  r  r1  rT   s              €€r   r¶  z/TestManyStencils.test_basic56.<locals>.__kernel9  sÜ   ø€ Ø×%Ñ% a°lÐ%ÔCÙ  1›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡JÖ/�CØ�AØ�CØ ¢A˜vœY˜Ø˜q™™ð 'à˜A™ ™	�AØ%& s¨Q¡w°°a±Ð'7Ñ%8¸1¸QÀ¸T¹7Ñ%BÀSÑ%H�D˜˜c˜’Nñ 0ð 0ð ˆKr   rM  rr   rÁ   Nr@   r5   r‰  r·  r¨  s   `    @r   Útest_basic56zTestManyStencils.test_basic56-  su   ù€ ò	+õ	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÜ�I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜q $Ó'ˆØ×#Ñ# F¨H°a¸Ø-@À#Ð,Fð 	$õ 	Hr   c                 óò   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      } |||d«      }‰ j                  ‰|||ddi¬	«       y)
z12 args, standard_indexing, split index operation c                 ó"   — |d   }| d   |d   z   S )Nr   r   r   r   rÇ  s      r   r1  z-TestManyStencils.test_basic57.<locals>.kernelO  s   € Ø�!‘ˆAØ�T‘7˜Q˜q™T‘>Ð!r   c                 óN  •— ‰	j                  | |¬«        ‰| |«      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]=  }t        d| j                  d   «      D ]  }|d   }| |dz   |dz   f   |d   z   |||f<   Œ! Œ? |S r®  r¯  ©
r   r5   r"   r²  r³  r´  rµ  r  r1  rT   s
           €€r   r¶  z/TestManyStencils.test_basic57.<locals>.__kernelU  sª   ø€ Ø×%Ñ% a°lÐ%ÔCÙ  1›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡JÖ/�CØ˜!™�AØ%& s¨Q¡w°°a±Ð'7Ñ%8¸1¸Q¹4Ñ%?�D˜˜c˜’Nñ 0ð 0ð ˆKr   rM  rr   rÁ   Nr@   r5   r‰  r·  r¨  s   `    @r   Útest_basic57zTestManyStencils.test_basic57M  óu   ù€ ò	"õ	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÜ�I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜q $Ó'ˆØ×#Ñ# F¨H°a¸Ø-@À#Ð,Fð 	$õ 	Hr   c                 óò   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      } |||d«      }‰ j                  ‰|||ddi¬	«       y)
z?2 args, standard_indexing, split index with broadcast mutation c                 ó(   — |d   dz   }| d   |d   z   S )Nr   r   r   r   rÇ  s      r   r1  z-TestManyStencils.test_basic58.<locals>.kernelg  s!   € Ø�!‘�q‘ˆAØ�T‘7˜Q˜q™T‘>Ð!r   c                 óT  •— ‰	j                  | |¬«        ‰| |«      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]@  }t        d| j                  d   «      D ]"  }|d   dz   }| |dz   |dz   f   |d   z   |||f<   Œ$ ŒB |S r®  r¯  r÷  s
           €€r   r¶  z/TestManyStencils.test_basic58.<locals>.__kernelm  s®   ø€ Ø×%Ñ% a°lÐ%ÔCÙ  1›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡JÖ/�CØ˜!™˜q™�AØ%& s¨Q¡w°°a±Ð'7Ñ%8¸1¸Q¹4Ñ%?�D˜˜c˜’Nñ 0ð 0ð ˆKr   rM  rr   rÁ   Nr@   r5   r‰  r·  r¨  s   `    @r   Útest_basic58zTestManyStencils.test_basic58e  rù  r   c           
      óþ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      }d} ||||d«      }‰ j                  ‰||||dd	d
gi¬«       y)z>3 args, mix of array, relative and standard indexing and constc                 ó   — | d   |d   z   |z   S ©Nr   rß  r   rÇ  s      r   r1  z-TestManyStencils.test_basic59.<locals>.kernel  s   € Ø�T‘7˜Q˜t™WÑ$ qÑ(Ð(r   c                 óL  •— ‰	j                  | |¬«        ‰| ||«      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ];  }t        d| j                  d   «      D ]  }| |dz   |dz   f   |d   z   |z   |||f<   Œ Œ= |S )Nr!   r   rá   r   rß  r¯  rÉ  s
           €€r   r¶  z/TestManyStencils.test_basic59.<locals>.__kernel„  s¨   ø€ Ø×%Ñ% a°lÐ%ÔCÙ  1 a›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡JÖ/�CØ%& s¨Q¡w°°a±Ð'7Ñ%8¸1¸T¹7Ñ%BÀQÑ%F�D˜˜c˜’Nñ 0ð 0ð ˆKr   rM  rr   rÁ   r*  Nr@   r5   r  r‰  r·  rÊ  s   `     @r   Útest_basic59zTestManyStencils.test_basic59}  s‚   ù€ ò	)õ
	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÜ�I‰I�c‹N×"Ñ" 1 aÓ(ˆØˆÙ˜A˜q ! TÓ*ˆØ×#Ñ# F¨H°a¸¸AØ-@À3ÈÀ*Ð,Mð 	$õ 	Or   c           	      ó  — d„ }t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      }d}| j                  t        ¬«      }| j                  ||||ddd	gi|¬
«       y)zP3 args, mix of array, relative and standard indexing,
        tuple pass throughc                 ó$   — | d   |d   z   |d   z   S )Nr   rß  r   r   rÇ  s      r   r1  z-TestManyStencils.test_basic60.<locals>.kernel˜  s   € Ø�T‘7˜Q˜t™WÑ$ q¨¡tÑ+Ð+r   rM  rr   rÁ   )r*  )rl  r@   r5   r  rš  Nr›  )rT   r1  r   r5   r  rf  s         r   Útest_basic60zTestManyStencils.test_basic60•  s}   € ò	,ä�I‰I�c‹N×"Ñ" 1 aÓ(ˆÜ�I‰I�c‹N×"Ñ" 1 aÓ(ˆØˆà× Ñ ¬Ð Ó8ˆØ×Ñ˜f a¨¨AØ':¸SÀ#¸JÐ&GØ13ð 	õ 	5r   c                 óÖ   — d„ }t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      }| j                  |||ddit        ¬«       y)	z"2 args, standard_indexing on firstc                 ó   — | d   |d   z   S r   r   r4   s     r   r1  z-TestManyStencils.test_basic61.<locals>.kernel¥  rï  r   rM  rr   rÁ   r@   r   rš  N)rw   r‘   r’   rŸ  r]  r­  s       r   Útest_basic61zTestManyStencils.test_basic61£  s_   € ò	%ä�I‰I�c‹N×"Ñ" 1 aÓ(ˆÜ�I‰I�c‹N×"Ñ" 1 aÓ(ˆØ×Ñ˜f a¨Ø':¸CÐ&@Ü1:ð 	õ 	<r   c           	      óô   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      } |||d«      }‰ j                  ‰|||ddd	œ¬
«       y)z"2 args, standard_indexing and cvalc                 ó   — | d   |d   z   S r   r   r4   s     r   r1  z-TestManyStencils.test_basic62.<locals>.kernel¯  rï  r   c                 óD  •— ‰j                  | |¬«        ‰| |«      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]8  }t        d| j                  d   «      D ]  }| |dz   |dz   f   |d   z   |||f<   Œ Œ: |S )Nr!   rY  rá   r   r   rß  r¯  r§  s	          €€r   r¶  z/TestManyStencils.test_basic62.<locals>.__kernel´  s¡   ø€ Ø×%Ñ% a°lÐ%ÔCÙ  1›ˆJÜ—7‘7˜1Ÿ7™7 D´°ZÓ0@ÔAˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡JÖ/�CØ%& s¨Q¡w°°a±Ð'7Ñ%8¸1¸T¹7Ñ%B�D˜˜c˜’Nñ 0ð 0ð ˆKr   rM  rr   rÁ   Nr5   rY  )r@   r-   r‰  r·  r¨  s   `    @r   Útest_basic62zTestManyStencils.test_basic62­  sw   ù€ ò	%õ
	ô �I‰I�c‹N×"Ñ" 1 aÓ(ˆÜ�I‰I�c‹N×"Ñ" 1 aÓ(ˆÙ˜A˜q $Ó'ˆØ×#Ñ# F¨H°a¸ØBEØ58ñ-:ð 	$õ 	;r   c                 ó  — d„ }t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      }| j                  t        t        t        ¬«      }| j                  |||ddi|¬	«       y
)zQ2 args, standard_indexing applied to relative, should fail,
        non-const idxc                 ó   — | d|d   f   S )Nr   r   r   r4   s     r   r1  z-TestManyStencils.test_basic63.<locals>.kernelÇ  s   € Ø�Q˜˜$™�Z‘=Ð r   rM  rr   rÁ   r4  r™  r@   r5   rš  Nr›  rä  s        r   Útest_basic63zTestManyStencils.test_basic63Ä  s   € ò	!ä�I‰I�c‹N×"Ñ" 1 aÓ(ˆÜ�I‰I�b‹M×!Ñ! ! QÓ'ˆØ× Ñ Ü#Ü"Ü ð !ó "ˆð 	×Ñ˜f a¨Ð5HÈ#Ð4NØ13ð 	õ 	5r   c                 ó–   — d„ }t        j                  d«      j                  dd«      }| j                  ||ddit        t
        g¬«       y)	z!1 arg that uses standard_indexingc                 ó   — | d   S r<   r   r   s    r   r1  z-TestManyStencils.test_basic64.<locals>.kernelÕ  r¬  r   rM  rr   rÁ   r@   r   rš  NrH  ©rT   r1  r   s      r   Útest_basic64zTestManyStencils.test_basic64Ó  sI   € ò	ä�I‰I�c‹N×"Ñ" 1 aÓ(ˆØ×Ñ˜f aÐ2EÀsÐ1KÜ2<¼oÐ1Nð 	õ 	Pr   c                 óˆ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      }d} |||«      }‰ j                  ‰||d|i¬«       y)zbasic induced neighborhood testc                 óB   — d}t        dd«      D ]
  }|| |   z  }Œ |dz  S ©Nr   éãÿÿÿr   é   r&   ©r   Úcumulr)   s      r   r1  z-TestManyStencils.test_basic65.<locals>.kernelÝ  ó.   € ØˆEÜ˜3 –]�Ø˜˜1™‘‘ð #à˜2‘:Ðr   c                 ó  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ])  }d}t        dd«      D ]  }|| ||z      z  }Œ |dz  ||f<   Œ+ |S ©Nr!   r   rá   é   r  r   r  r¯  ©	r   r"   r²  r³  Ú_TestManyStencils__anr  r)   r1  rT   s	          €€r   r¶  z/TestManyStencils.test_basic65.<locals>.__kernelå  ó�   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜b !§'¡'¨!¡*Ö-�Ø�Ü˜s Až�AØ˜Q˜t a™x™[Ñ(‘Eð 'à# b™j��T�U’ð	 .ð
 ˆKr   ç      N@©)r  r   r"   r‰  Nrt  ©rT   r¹  r   Únhr~   r1  s   `    @r   Útest_basic65zTestManyStencils.test_basic65Û  óN   ù€ ò	õ		ô �I‰I�c‹NˆØˆÙ˜A˜r“?ˆØ×#Ñ# F¨H°aØ-;¸RÐ,@ð 	$õ 	Br   c                 óˆ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      }d} |||«      }‰ j                  ‰||d|i¬«       y)zbasic const neighborhood testc                 óB   — d}t        dd«      D ]
  }|| d   z  }Œ |dz  S r  r&   r  s      r   r1  z-TestManyStencils.test_basic66.<locals>.kernelù  r  r   c                 ó  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ])  }d}t        dd«      D ]  }|| |dz      z  }Œ |dz  ||f<   Œ+ |S r  r¯  r  s	          €€r   r¶  z/TestManyStencils.test_basic66.<locals>.__kernel	  r!  r   r"  r#  r"   r‰  Nrt  r$  s   `    @r   Útest_basic66zTestManyStencils.test_basic66÷  r'  r   c                 ó¨   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }d} |||«      }‰ j                  ‰||d|i¬«       y	)
z"basic 2d induced neighborhood testc                 óh   — d}t        dd«      D ]  }t        dd«      D ]  }|| ||f   z  }Œ Œ |dz  S ©Nr   r    r   éöÿÿÿé2   r&   ©r   r  r)   r¡   s       r   r1  z-TestManyStencils.test_basic67.<locals>.kernel	  óF   € ØˆEÜ˜2˜q–\�Ü˜s Až�AØ˜Q˜q !˜t™WÑ$‘Eñ 'ð "ð ˜FÑ#Ð#r   c           	      óˆ  •— ‰
j                  | |¬«        ‰	| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]^  }t        d| j                  d   «      D ]@  }d}t        dd«      D ]#  }t        dd«      D ]  }|| ||z   ||z   f   z  }Œ Œ% |d	z  |||f<   ŒB Œ` |S ©
Nr!   r   rá   r*  r   rª   r    r/  r0  r¯  ©r   r"   r²  r³  Ú_TestManyStencils__bnr   r  r)   r¡   r1  rT   s            €€r   r¶  z/TestManyStencils.test_basic67.<locals>.__kernel	  óÈ   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜b !§'¡'¨!¡*Ö-�Ü! ! Q§W¡W¨Q¡ZÖ0�DØ�EÜ" 2 qž\˜Ü!& s¨A¦˜AØ! Q t¨a¡x°¸±Ð'9Ñ%:Ñ:™Eñ "/ð *ð (-¨r¡z�D˜˜t˜Ò$ñ 1ð .ð ˆKr   ç      i@r*  é   ©r   ©r/  r   r"   r‰  Nr·  r$  s   `    @r   Útest_basic67zTestManyStencils.test_basic67	  ó\   ù€ ò	$õ	ô �I‰I�iÓ ×(Ñ(¨¨RÓ0ˆØ!ˆÙ˜A˜r“?ˆØ×#Ñ# F¨H°aØ-;¸RÐ,@ð 	$õ 	Br   c                 ó–   — d„ }t        j                  d«      j                  dd«      }| j                  ||ddit        t
        g¬«       y)	z basic 2d induced 1D neighborhoodc                 óF   — d}t        dd«      D ]  }|| d|f   z  }Œ |dz  S )Nr   r/  r   r0  r&   )r   r  r¡   s      r   r1  z.TestManyStencils.test_basic67b.<locals>.kernel2	  s4   € ØˆEÜ˜3 –]�Ø˜˜1˜a˜4™Ñ ‘ð #à˜FÑ#Ð#r   r8  r*  r9  r"   )r;  rš  N)rw   r‘   r’   rŸ  r   r‰  r  s      r   Útest_basic67bzTestManyStencils.test_basic67b0	  sK   € ò	$ô
 �I‰I�iÓ ×(Ñ(¨¨RÓ0ˆØ×Ñ˜f a°.À+Ð1NÜ2=¼zÐ1Jð 	õ 	Lr   c                 ó¨   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }d} |||«      }‰ j                  ‰||d|i¬«       y	)
z0basic 2d one induced, one cost neighborhood testc                 óh   — d}t        dd«      D ]  }t        dd«      D ]  }|| |df   z  }Œ Œ |dz  S r.  r&   r1  s       r   r1  z-TestManyStencils.test_basic68.<locals>.kernel>	  r2  r   c           	      óˆ  •— ‰
j                  | |¬«        ‰	| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]^  }t        d| j                  d   «      D ]@  }d}t        dd«      D ]#  }t        dd«      D ]  }|| ||z   |dz   f   z  }Œ Œ% |d	z  |||f<   ŒB Œ` |S r4  r¯  r5  s            €€r   r¶  z/TestManyStencils.test_basic68.<locals>.__kernelH	  r7  r   r8  r*  r9  r:  r"   r‰  Nr·  r$  s   `    @r   Útest_basic68zTestManyStencils.test_basic68<	  s\   ù€ ò	$õ	ô �I‰I�iÓ ×(Ñ(¨¨RÓ0ˆØ!ˆÙ˜A˜r“?ˆØ×#Ñ# F¨H°aØ-;¸RÐ,@ð 	$õ 	Br   c                 ó¨   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }d} |||«      }‰ j                  ‰||d|i¬«       y	)
z#basic 2d two cost neighborhood testc                 ód   — d}t        dd«      D ]  }t        dd«      D ]
  }|| d   z  }Œ Œ |dz  S )Nr   r    r   r/  r=   r0  r&   r1  s       r   r1  z-TestManyStencils.test_basic69.<locals>.kernel^	  sB   € ØˆEÜ˜2˜q–\�Ü˜s Až�AØ˜Q˜t™WÑ$‘Eñ 'ð "ð ˜FÑ#Ð#r   c           	      óˆ  •— ‰
j                  | |¬«        ‰	| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]^  }t        d| j                  d   «      D ]@  }d}t        dd«      D ]#  }t        dd«      D ]  }|| |dz   |dz   f   z  }Œ Œ% |d	z  |||f<   ŒB Œ` |S r4  r¯  r5  s            €€r   r¶  z/TestManyStencils.test_basic69.<locals>.__kernelg	  r7  r   r8  r*  r9  r:  r"   r‰  Nr·  r$  s   `    @r   Útest_basic69zTestManyStencils.test_basic69\	  r=  r   c                 ó¨   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }d} |||«      }‰ j                  ‰||d|i¬«       y	)
zneighborhood adding complexityc                 ó|   — d}d}t        dd«      D ]%  }||z   }t        dd«      D ]  }|| ||f   |z   z  }Œ Œ' |dz  S )Nr   rM  r    r   r/  r0  r&   ©r   r  Úzzr)   r  r¡   s         r   r1  z-TestManyStencils.test_basic70.<locals>.kernel|	  sX   € ØˆEØˆBÜ˜2˜q–\�Ø˜‘F�Ü˜s Až�AØ˜Q˜q !˜t™W q™[Ñ(‘Eñ 'ð "ð ˜FÑ#Ð#r   c           	      óœ  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]h  }t        d| j                  d   «      D ]J  }d}d}t        dd«      D ]+  }||z   }	t        d	d«      D ]  }
|| ||z   ||
z   f   |	z   z  }Œ Œ- |d
z  |||f<   ŒL Œj |S )Nr!   r   rá   r*  r   rª   rM  r    r/  r0  r¯  ©r   r"   r²  r³  r6  r   r  rL  r)   r  r¡   r1  rT   s              €€r   r¶  z/TestManyStencils.test_basic70.<locals>.__kernel‡	  sÛ   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜b !§'¡'¨!¡*Ö-�Ü! ! Q§W¡W¨Q¡ZÖ0�DØ�EØ�BÜ" 2 qž\˜Ø ™F˜Ü!& s¨A¦˜AØ! Q t¨a¡x°¸±Ð'9Ñ%:¸QÑ%>Ñ>™Eñ "/ð *ð (-¨r¡z�D˜˜t˜Ò$ñ 1ð .ð ˆKr   r8  r*  r9  r:  r"   r‰  Nr·  r$  s   `    @r   Útest_basic70zTestManyStencils.test_basic70z	  s\   ù€ ò	$õ	ô �I‰I�iÓ ×(Ñ(¨¨RÓ0ˆØ!ˆÙ˜A˜r“?ˆØ×#Ñ# F¨H°aØ-;¸RÐ,@ð 	$õ 	Br   c                 óˆ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      }d} |||«      }‰ j                  ‰||d|i¬«       y)zneighborhood, type changec                 óZ   — d}t        dd«      D ]  }d}|dkD  rd}|| |   |z   z  }Œ |dz  S )Nr   r  r   ç        éñÿÿÿr<  r  r&   )r   r  r)   r£  s       r   r1  z-TestManyStencils.test_basic71.<locals>.kernelž	  sF   € ØˆEÜ˜3 –]�Ø�Ø�s’7Ø�AØ˜˜1™ ™Ñ!‘ð	 #ð
 ˜2‘:Ðr   c                 ó6  •— ‰	j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]5  }d}t        dd«      D ]  }d}|dkD  rd	}|| ||z      |z   z  }Œ |d
z  ||f<   Œ7 |S )Nr!   r   rá   r  r  r   rR  rS  r<  r  r¯  )
r   r"   r²  r³  r   r  r)   r£  r1  rT   s
           €€r   r¶  z/TestManyStencils.test_basic71.<locals>.__kernel©	  s§   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜b !§'¡'¨!¡*Ö-�Ø�Ü˜s Až�AØ�AØ˜3’wØ ˜Ø˜Q˜t a™x™[¨1™_Ñ,‘Eð	 'ð
 $ b™j��T�U’ð .ð ˆKr   r"  r#  r"   r‰  Nrt  r$  s   `    @r   Útest_basic71zTestManyStencils.test_basic71œ	  sN   ù€ ò	õ	ô �I‰I�c‹NˆØˆÙ˜A˜r“?ˆØ×#Ñ# F¨H°aØ-;¸RÐ,@ð 	$õ 	Br   c                 óˆ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      }d} |||«      }‰ j                  ‰||d|i¬«       y)z+neighborhood, narrower range than specifiedc                 óB   — d}t        dd«      D ]
  }|| |   z  }Œ |dz  S )Nr   éíÿÿÿr'  r  r&   r  s      r   r1  z-TestManyStencils.test_basic72.<locals>.kernel¿	  ó.   € ØˆEÜ˜3 –^�Ø˜˜1™‘‘ð $à˜2‘:Ðr   c                 ó  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ])  }d}t        dd«      D ]  }|| ||z      z  }Œ |dz  ||f<   Œ+ |S )Nr!   r   rá   r  rX  r'  r  r¯  r  s	          €€r   r¶  z/TestManyStencils.test_basic72.<locals>.__kernelÇ	  ó�   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜b !§'¡'¨!¡*Ö-�Ø�Ü˜s Bž�AØ˜Q˜t a™x™[Ñ(‘Eð (à# b™j��T�U’ð	 .ð
 ˆKr   r"  r#  r"   r‰  Nrt  r$  s   `    @r   Útest_basic72zTestManyStencils.test_basic72½	  r'  r   c                 óˆ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      }d} |||«      }‰ j                  ‰||d|i¬«       y)zneighborhood, +ve rangec                 óB   — d}t        dd«      D ]
  }|| |   z  }Œ |dz  S )Nr   rª   é   r  r&   r  s      r   r1  z-TestManyStencils.test_basic73.<locals>.kernelÚ	  s.   € ØˆEÜ˜1˜b–\�Ø˜˜1™‘‘ð "à˜2‘:Ðr   c                 ó$  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ])  }d}t        dd«      D ]  }|| ||z      z  }Œ |dz  ||f<   Œ+ |S )Nr!   r   rá   r*  rª   r_  r  r¯  r  s	          €€r   r¶  z/TestManyStencils.test_basic73.<locals>.__kernelâ	  s”   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜a §¡¨¡¨b¡Ö1�Ø�Ü˜q "ž�AØ˜Q˜t a™x™[Ñ(‘Eð &à# b™j��T�U’ð	 2ð
 ˆKr   r"  ))rª   r*  r"   r‰  Nrt  r$  s   `    @r   Útest_basic73zTestManyStencils.test_basic73Ø	  sN   ù€ ò	õ		ô �I‰I�c‹NˆØˆÙ˜A˜r“?ˆØ×#Ñ# F¨H°aØ-;¸RÐ,@ð 	$õ 	Br   c                 óˆ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      }d} |||«      }‰ j                  ‰||d|i¬«       y)zneighborhood, -ve rangec                 óB   — d}t        dd«      D ]
  }|| |   z  }Œ |dz  S )Nr   r/  r$   r  r&   r  s      r   r1  z.TestManyStencils.test_basic73b.<locals>.kernelõ	  rY  r   c                 ó  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ])  }d}t        dd«      D ]  }|| ||z      z  }Œ |dz  ||f<   Œ+ |S )Nr!   r   rá   r*  r/  r$   r  r¯  r  s	          €€r   r¶  z0TestManyStencils.test_basic73b.<locals>.__kernelý	  r[  r   r"  ))r/  r    r"   r‰  Nrt  r$  s   `    @r   Útest_basic73bzTestManyStencils.test_basic73bó	  sN   ù€ ò	õ		ô �I‰I�c‹NˆØˆÙ˜A˜r“?ˆØ×#Ñ# F¨H°aØ-;¸RÐ,@ð 	$õ 	Br   c                 óˆ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      }d} |||«      }‰ j                  ‰||d|i¬«       y)z!neighborhood, -ve->+ve range spanc                 óB   — d}t        dd«      D ]
  }|| |   z  }Œ |dz  S )Nr   r    r_  r  r&   r  s      r   r1  z-TestManyStencils.test_basic74.<locals>.kernel
  s.   € ØˆEÜ˜2˜r–]�Ø˜˜1™‘‘ð #à˜2‘:Ðr   c                 ó$  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ])  }d}t        dd«      D ]  }|| ||z      z  }Œ |dz  ||f<   Œ+ |S )	Nr!   r   rá   rª   r*  r    r_  r  r¯  r  s	          €€r   r¶  z/TestManyStencils.test_basic74.<locals>.__kernel
  s”   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜a §¡¨¡¨b¡Ö1�Ø�Ü˜r 2ž�AØ˜Q˜t a™x™[Ñ(‘Eð 'à# b™j��T�U’ð	 2ð
 ˆKr   r"  ))r    r*  r"   r‰  Nrt  r$  s   `    @r   Útest_basic74zTestManyStencils.test_basic74
  r'  r   c                 óˆ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      }d} |||«      }‰ j                  ‰||d|i¬«       y)z!neighborhood, -ve->-ve range spanc                 óB   — d}t        dd«      D ]
  }|| |   z  }Œ |dz  S )Nr   r/  r   r  r&   r  s      r   r1  z-TestManyStencils.test_basic75.<locals>.kernel+
  rY  r   c                 ó  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ])  }d}t        dd«      D ]  }|| ||z      z  }Œ |dz  ||f<   Œ+ |S )Nr!   r   rá   r*  r/  r   r  r¯  r  s	          €€r   r¶  z/TestManyStencils.test_basic75.<locals>.__kernel4
  r[  r   r"  ))r/  r0   r"   r‰  Nrt  r$  s   `    @r   Útest_basic75zTestManyStencils.test_basic75)
  sN   ù€ ò	õ		ô �I‰I�c‹NˆØˆÙ˜A˜r“?ˆØ×#Ñ# F¨H°aØ-;¸RÐ,@ð 	$õ 	Br   c                 ó¨   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }d} |||«      }‰ j                  ‰||d|i¬«       y	)
zneighborhood, mixed range spanc                 ó|   — d}d}t        dd«      D ]%  }||z   }t        dd«      D ]  }|| ||f   |z   z  }Œ Œ' |dz  S )Nr   rM  r'  rÁ   r0  r&   rK  s         r   r1  z-TestManyStencils.test_basic76.<locals>.kernelG
  sX   € ØˆEØˆBÜ˜2˜q–\�Ø˜‘F�Ü˜r 1ž�AØ˜Q˜q !˜t™W q™[Ñ(‘Eñ &ð "ð ˜FÑ#Ð#r   c           	      ó¢  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]h  }t        d| j                  d   «      D ]J  }d}d}t        dd«      D ]+  }||z   }	t        dd«      D ]  }
|| ||z   ||
z   f   |	z   z  }Œ Œ- |d	z  |||f<   ŒL Œj |S )
Nr!   r   rá   rr   r   rM  r'  rÁ   r0  r¯  rN  s              €€r   r¶  z/TestManyStencils.test_basic76.<locals>.__kernelS
  sß   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜a §¡¨¡¨a¡Ö0�Ü! ! Q§W¡W¨Q¡ZÖ0�DØ�EØ�BÜ" 2 qž\˜Ø ™F˜Ü!& r¨1¦˜AØ! Q t¨a¡x°¸±Ð'9Ñ%:¸QÑ%>Ñ>™Eñ ".ð *ð (-¨r¡z�D˜˜t˜Ò$ñ 1ð 1ð ˆKr   r8  r*  r9  ))r'  r   )r'  rr   r"   r‰  Nr·  r$  s   `    @r   Útest_basic76zTestManyStencils.test_basic76E
  s\   ù€ ò	$õ	ô �I‰I�iÓ ×(Ñ(¨¨RÓ0ˆØ!ˆÙ˜A˜r“?ˆØ×#Ñ# F¨H°aØ-;¸RÐ,@ð 	$õ 	Br   c                 óö   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      }d} ||||«      }‰ j                  ‰|||d|i¬«       y	)
z neighborhood, two args c                 óx   — d}t        dd«      D ]%  }t        dd«      D ]  }|| ||f   |||f   z   z  }Œ Œ' |dz  S ©Nr   r'  r   r²  r&   ©r   r5   r  r)   r¡   s        r   r1  z-TestManyStencils.test_basic77.<locals>.kernelj
  óR   € ØˆEÜ˜2˜q–\�Ü˜r 1ž�AØ˜Q˜q !˜t™W q¨¨A¨¡wÑ.Ñ.‘Eñ &ð "ð ˜B‘<Ðr   c           
      ó¨  •— ‰j                  | ||¬«        ‰
| |«      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]l  }t        d| j                  d   «      D ]N  }d}t        dd«      D ]1  }t        dd«      D ]   }	|| ||z   ||	z   f   |||z   ||	z   f   z   z  }Œ" Œ3 |dz  |||f<   ŒP Œn |S ©Nr!   r   rá   rr   r   r'  r²  r¯  ©r   r5   r"   r²  r³  r6  r   r  r)   r¡   r1  rT   s             €€r   r¶  z/TestManyStencils.test_basic77.<locals>.__kernels
  sè   ø€ Ø×%Ñ% a¨¸Ð%ÔFÙ  1›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜a §¡¨¡Ö,�Ü! ! Q§W¡W¨Q¡ZÖ0�DØ�EÜ" 2 qž\˜Ü!& r¨1¦˜AØ! a¨¨q©°$¸±(Ð(:Ñ&;Ø&'¨¨q©°$¸±(Ð(:Ñ&;ñ'<ñ =™Eñ ".ð *ð (-¨s¡{�D˜˜t˜Ò$ñ 1ð -ð ˆKr   r8  r*  r9  ©©r'  r   r{  r"   r‰  Nr·  ©rT   r¹  r   r5   r%  r~   r1  s   `     @r   Útest_basic77zTestManyStencils.test_basic77h
  ó|   ù€ ò	 õ	ô �I‰I�iÓ ×(Ñ(¨¨RÓ0ˆÜ�I‰I�iÓ ×(Ñ(¨¨RÓ0ˆØ ˆÙ˜A˜q "Ó%ˆØ×#Ñ# F¨H°a¸Ø-;¸RÐ,@ð 	$õ 	Br   c                 óö   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      }d} ||||«      }‰ j                  ‰|||d|i¬«       y	)
z. neighborhood, two args, -ve range, -ve range c                 óx   — d}t        dd«      D ]%  }t        dd«      D ]  }|| ||f   |||f   z   z  }Œ Œ' |dz  S )Nr   éúÿÿÿr0   éùÿÿÿr   r²  r&   ru  s        r   r1  z-TestManyStencils.test_basic78.<locals>.kernelŠ
  sR   € ØˆEÜ˜2˜r–]�Ü˜r 2ž�AØ˜Q˜q !˜t™W q¨¨A¨¡wÑ.Ñ.‘Eñ 'ð #ð ˜B‘<Ðr   c           
      ó¨  •— ‰j                  | ||¬«        ‰
| |«      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]l  }t        d| j                  d   «      D ]N  }d}t        dd«      D ]1  }t        d	d
«      D ]   }	|| ||z   ||	z   f   |||z   ||	z   f   z   z  }Œ" Œ3 |dz  |||f<   ŒP Œn |S )Nr!   r   rá   r.  r   r¸  r�  r0   r‚  r   r²  r¯  ry  s             €€r   r¶  z/TestManyStencils.test_basic78.<locals>.__kernel“
  sè   ø€ Ø×%Ñ% a¨¸Ð%ÔFÙ  1›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜a §¡¨¡Ö,�Ü! ! Q§W¡W¨Q¡ZÖ0�DØ�EÜ" 2 rž]˜Ü!& r¨2¦˜AØ! a¨¨q©°$¸±(Ð(:Ñ&;Ø&'¨¨q©°$¸±(Ð(:Ñ&;ñ'<ñ =™Eñ "/ð +ð (-¨s¡{�D˜˜t˜Ò$ñ 1ð -ð ˆKr   ç     Àr@r×  r9  )©r�  r'  )r‚  r0   r"   r‰  Nr·  r|  s   `     @r   Útest_basic78zTestManyStencils.test_basic78ˆ
  s|   ù€ ò	 õ	ô �I‰I�iÓ ×(Ñ(¨¨RÓ0ˆÜ�I‰I�iÓ ×(Ñ(¨¨RÓ0ˆØ"ˆÙ˜A˜q "Ó%ˆØ×#Ñ# F¨H°a¸Ø-;¸RÐ,@ð 	$õ 	Br   c                 óö   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }t        j                  d«      j                  dd«      }d} ||||«      }‰ j                  ‰|||d|i¬«       y	)
z. neighborhood, two args, -ve range, +ve range c                 óx   — d}t        dd«      D ]%  }t        dd«      D ]  }|| ||f   |||f   z   z  }Œ Œ' |dz  S )Nr   r�  r0   r1   r*  r²  r&   ru  s        r   r1  z.TestManyStencils.test_basic78b.<locals>.kernelª
  sR   € ØˆEÜ˜2˜r–]�Ü˜q "ž�AØ˜Q˜q !˜t™W q¨¨A¨¡wÑ.Ñ.‘Eñ &ð #ð ˜B‘<Ðr   c           
      ó®  •— ‰j                  | ||¬«        ‰
| |«      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]l  }t        d| j                  d   «      D ]N  }d}t        dd«      D ]1  }t        d	d
«      D ]   }	|| ||z   ||	z   f   |||z   ||	z   f   z   z  }Œ" Œ3 |dz  |||f<   ŒP Œn |S )Nr!   r   rá   r   é	   r¸  r�  r0   r1   r*  r²  r¯  ry  s             €€r   r¶  z0TestManyStencils.test_basic78b.<locals>.__kernel³
  sì   ø€ Ø×%Ñ% a¨¸Ð%ÔFÙ  1›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜a §¡¨¡¨a¡Ö0�Ü! ! Q§W¡W¨Q¡ZÖ0�DØ�EÜ" 2 rž]˜Ü!& q¨"¦˜AØ! a¨¨q©°$¸±(Ð(:Ñ&;Ø&'¨¨q©°$¸±(Ð(:Ñ&;ñ'<ñ =™Eñ ".ð +ð (-¨s¡{�D˜˜t˜Ò$ñ 1ð 1ð ˆKr   r„  r×  r9  )r…  )r1   rŠ  r"   r‰  Nr·  r|  s   `     @r   Útest_basic78bzTestManyStencils.test_basic78b¨
  r~  r   c                 ó  — d„ }t        j                  d«      j                  dd«      }t        j                  d«      j                  ddd«      }| j                  t        t        t        ¬«      }| j                  |||ddi|¬	«       y
)z% neighborhood, two incompatible args c                 óx   — d}t        dd«      D ]%  }t        dd«      D ]  }|| ||f   |||f   z   z  }Œ Œ' |dz  S rt  r&   ru  s        r   r1  z-TestManyStencils.test_basic79.<locals>.kernelÊ
  rv  r   r8  r*  r9  r1   r™  r"   rz  rš  N)rw   r‘   r’   r¥  r   rŸ  rä  s        r   Útest_basic79zTestManyStencils.test_basic79È
  sˆ   € ò	 ô �I‰I�iÓ ×(Ñ(¨¨RÓ0ˆÜ�I‰I�iÓ ×(Ñ(¨¨R°Ó3ˆØ× Ñ ÜÜÜð !ó ˆð 	×Ñ˜f a¨°^Ø5Hð5Jà13ð 	õ 	5r   c                 ó°   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }d}d} ||||«      }‰ j                  ‰|||d|i¬	«       y
)z neighborhood, type change c                 ón   — d}t        dd«      D ]   }t        dd«      D ]  }|| ||f   |z   z  }Œ Œ" |dz  S rt  r&   ru  s        r   r1  z-TestManyStencils.test_basic80.<locals>.kernelÜ
  sI   € ØˆEÜ˜2˜q–\�Ü˜r 1ž�AØ˜Q˜q !˜t™W q™[Ñ(‘Eñ &ð "ð ˜B‘<Ðr   c           	      ó’  •— ‰j                  | ||¬«        ‰
| |«      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]a  }t        d| j                  d   «      D ]C  }d}t        dd«      D ]&  }t        dd«      D ]  }	|| ||z   ||	z   f   |z   z  }Œ Œ( |dz  |||f<   ŒE Œc |S rx  r¯  ry  s             €€r   r¶  z/TestManyStencils.test_basic80.<locals>.__kernelå
  sÑ   ø€ Ø×%Ñ% a¨¸Ð%ÔFÙ  1›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜a §¡¨¡Ö,�Ü! ! Q§W¡W¨Q¡ZÖ0�DØ�EÜ" 2 qž\˜Ü!& r¨1¦˜AØ! Q t¨a¡x°¸±Ð'9Ñ%:¸QÑ%>Ñ>™Eñ ".ð *ð (-¨s¡{�D˜˜t˜Ò$ñ 1ð -ð ˆKr   r8  r*  r9  y              (@rz  r"   r‰  Nr·  r|  s   `     @r   Útest_basic80zTestManyStencils.test_basic80Ú
  sf   ù€ ò	 õ	ô �I‰I�iÓ ×(Ñ(¨¨RÓ0ˆØˆØˆÙ˜A˜q "Ó%ˆØ×#Ñ# F¨H°a¸Ø-;¸RÐ,@ð 	$õ 	Br   c                 óê   — d„ }t        j                  d«      j                  dd«      }|d   j                  «       }| j	                  t
        t        t
        ¬«      }| j                  |||ddi|¬	«       y
)z1 neighborhood, dimensionally incompatible arrays c                 ót   — d}t        dd«      D ]#  }t        dd«      D ]  }|| ||f   ||   z   z  }Œ Œ% |dz  S rt  r&   ru  s        r   r1  z-TestManyStencils.test_basic81.<locals>.kernelû
  sM   € ØˆEÜ˜2˜q–\�Ü˜r 1ž�AØ˜Q˜q !˜t™W q¨¡t™^Ñ+‘Eñ &ð "ð ˜B‘<Ðr   r8  r*  r9  r   r™  r"   rz  rš  N)rw   r‘   r’   Úcopyr¥  r   r?  rŸ  rä  s        r   Útest_basic81zTestManyStencils.test_basic81ù
  sx   € ò	 ô �I‰I�iÓ ×(Ñ(¨¨RÓ0ˆØˆa‰D�I‰I‹KˆØ× Ñ ÜÜ!Üð !ó ˆð 	×Ñ˜f a¨Ø'5Ð7IÐ&JØ13ð 	õ 	5r   c           	      óÎ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }|j                  «       }d} ||||«      }‰ j	                  ‰||||ddœ¬	«       y
)z% neighborhood, with standard_indexingc                 ót   — d}t        dd«      D ]#  }t        dd«      D ]  }|| ||f   |d   z   z  }Œ Œ% |dz  S ©Nr   r'  r   ©r   rr   r²  r&   ru  s        r   r1  z-TestManyStencils.test_basic82.<locals>.kernel  óN   € ØˆEÜ˜2˜q–\�Ü˜r 1ž�AØ˜Q˜q !˜t™W q¨¡wÑ.Ñ.‘Eñ &ð "ð ˜B‘<Ðr   c           	      ó˜  •— ‰j                  | ||¬«        ‰
| |«      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]d  }t        d| j                  d   «      D ]F  }d}t        dd«      D ])  }t        dd«      D ]  }	|| ||z   ||	z   f   |d   z   z  }Œ Œ+ |dz  |||f<   ŒH Œf |S )	Nr!   r   rá   rr   r   r'  rš  r²  r¯  ry  s             €€r   r¶  z/TestManyStencils.test_basic82.<locals>.__kernel  sÕ   ø€ Ø×%Ñ% a¨¸Ð%ÔFÙ  1›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜a §¡¨¡Ö,�Ü! ! Q§W¡W¨Q¡ZÖ0�DØ�EÜ" 2 qž\˜Ü!& r¨1¦˜AØ! Q t¨a¡x°¸±Ð'9Ñ%:¸Q¸t¹WÑ%DÑD™Eñ ".ð *ð (-¨s¡{�D˜˜t˜Ò$ñ 1ð -ð ˆKr   r8  r*  r9  rz  r5   )r"   r@   r‰  N©rw   r‘   r’   r•  r™  r|  s   `     @r   Útest_basic82zTestManyStencils.test_basic82  sp   ù€ ò	 õ	ô �I‰I�iÓ ×(Ñ(¨¨RÓ0ˆØ�F‰F‹HˆØˆÙ˜A˜q "Ó%ˆØ×#Ñ# F¨H°a¸Ø=?ØBEñ-Gð 	$õ 	Hr   c           
      ó:  ‡ ‡— d„ Št        j                  d«      j                  dd«      }|j                  «       }ˆˆ fd„}t        j                  d«      j                  dd«      }|j                  «       }d} ||||«      }‰ j	                  ‰||||ddd	œ¬
«       y)z. neighborhood, with standard_indexing and cvalc                 ót   — d}t        dd«      D ]#  }t        dd«      D ]  }|| ||f   |d   z   z  }Œ Œ% |dz  S r™  r&   ru  s        r   r1  z-TestManyStencils.test_basic83.<locals>.kernel-  r›  r   r8  r*  r9  c           	      ó˜  •— ‰j                  | ||¬«        ‰
| |«      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]d  }t        d| j                  d   «      D ]F  }d}t        dd«      D ])  }t        dd«      D ]  }	|| ||z   ||	z   f   |d   z   z  }Œ Œ+ |d	z  |||f<   ŒH Œf |S )
Nr!   ç      ø?rá   rr   r   r   r'  rš  r²  r¯  ry  s             €€r   r¶  z/TestManyStencils.test_basic83.<locals>.__kernel9  sÕ   ø€ Ø×%Ñ% a¨¸Ð%ÔFÙ  1›ˆJÜ—7‘7˜1Ÿ7™7 C¬t°JÓ/?Ô@ˆDÜ˜a §¡¨¡Ö,�Ü! ! Q§W¡W¨Q¡ZÖ0�DØ�EÜ" 2 qž\˜Ü!& r¨1¦˜AØ! Q t¨a¡x°¸±Ð'9Ñ%:¸Q¸t¹WÑ%DÑD™Eñ ".ð *ð (-¨s¡{�D˜˜t˜Ò$ñ 1ð -ð ˆKr   rz  r5   r¢  ©r"   r@   r-   r‰  Nr�  )rT   r   r5   r¹  r%  r~   r1  s   `     @r   Útest_basic83zTestManyStencils.test_basic83+  s™   ù€ ò	 ô �I‰I�iÓ ×(Ñ(¨¨RÓ0ˆØ�F‰F‹Hˆõ
	ô �I‰I�iÓ ×(Ñ(¨¨RÓ0ˆØ�F‰F‹HˆØˆÙ˜A˜q "Ó%ˆØ×#Ñ# F¨H°a¸Ø=?ØBEØ58ñ-;ð 	$õ 	<r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)z kernel calls njit c                 ó*   — | d   t        | d   «      z   S ©Nr=   r   )rG   r   s    r   r1  z-TestManyStencils.test_basic84.<locals>.kernelQ  ó   € Ø�T‘7œ[¨¨4©Ó1Ñ1Ð1r   c           	      óx  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]S  }t        d| j                  d   «      D ]5  }| |dz   |dz   f   t        j                  | |dz   |dz   f   «      z   |||f<   Œ7 ŒU |S r®  )r©  rw   r°  r§  r`  r'   rG   Úpy_funcr±  s         €€r   r¶  z/TestManyStencils.test_basic84.<locals>.__kernelV  ó¼   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡JÖ/�CØ&'¨¨a©°°q±Ð(8Ñ&9Ü&1×&9Ñ&9¸!¸CÀ!¹GÀSÈ1ÁWÐ<LÑ:MÓ&Nñ'O�D˜˜c˜’Nñ 0ð 0ð ˆKr   r8  r*  r9  Nr·  r¸  s   `   @r   Útest_basic84zTestManyStencils.test_basic84O  sH   ù€ ò	2õ
	ô �I‰I�iÓ ×(Ñ(¨¨RÓ0ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)z! kernel calls njit(parallel=True)c                 ó*   — | d   t        | d   «      z   S r§  )rK   r   s    r   r1  z-TestManyStencils.test_basic85.<locals>.kernelf  r¨  r   c           	      óx  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]S  }t        d| j                  d   «      D ]5  }| |dz   |dz   f   t        j                  | |dz   |dz   f   «      z   |||f<   Œ7 ŒU |S r®  )r©  rw   r°  r§  r`  r'   rK   rª  r±  s         €€r   r¶  z/TestManyStencils.test_basic85.<locals>.__kernell  r«  r   r8  r*  r9  Nr·  r¸  s   `   @r   Útest_basic85zTestManyStencils.test_basic85d  sH   ù€ ò	2õ	ô �I‰I�iÓ ×(Ñ(¨¨RÓ0ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 ó–   — d„ }t        j                  d«      j                  dd«      }| j                  ||ddit        t
        g¬«       y)z bad kwarg c                 ó   — | d   S r<   r   r   s    r   r1  z-TestManyStencils.test_basic86.<locals>.kernel}  r¬  r   r8  r*  r9  Úbadrš  N)rw   r‘   r’   rŸ  r‰  r   r  s      r   Útest_basic86zTestManyStencils.test_basic86{  sJ   € ò	ô �I‰I�iÓ ×(Ñ(¨¨RÓ0ˆØ×Ñ˜f a°%¸°Ü2<¼kÐ1Jð 	õ 	Lr   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)z reserved arg name in use c                 ó   — | d   S r<   r   )Ú__sentinel__s    r   r1  z-TestManyStencils.test_basic87.<locals>.kernel†  s   € Ø Ñ%Ð%r   c                 ó0  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]2  }t        d| j                  d   «      D ]  }| |dz   |dz   f   |||f<   Œ Œ4 |S r®  r¯  )r·  r"   r²  r³  r´  rµ  r1  rT   s         €€r   r¶  z/TestManyStencils.test_basic87.<locals>.__kernel‹  s›   ø€ Ø×%Ñ% lÀÐ%ÔNÙ Ó-ˆJÜ—7‘7˜<×-Ñ-¨q¼¸ZÓ8HÔIˆDÜ˜Q × 2Ñ 2°1Ñ 5Ö6�Ü   L×$6Ñ$6°qÑ$9Ö:�CØ%1°#¸±'¸3À¹7Ð2BÑ%C�D˜˜c˜’Nñ ;ð 7ð ˆKr   r8  r*  r9  Nr·  r¸  s   `   @r   Útest_basic87zTestManyStencils.test_basic87„  sH   ù€ ò	&õ
	ô �I‰I�iÓ ×(Ñ(¨¨RÓ0ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 óÀ   — d„ }t        j                  d«      j                  dd«      }| j                  t        t        t        ¬«      }| j                  ||di |¬«       y)	z use of reserved word c                 ó   — || d   z  S r¾  r   )r   r�   s     r   r1  z-TestManyStencils.test_basic88.<locals>.kernelš  s   € Ø˜˜4™‘=Ð r   rM  rr   rÁ   r™  r+   rš  Nr›  rœ  s       r   Útest_basic88zTestManyStencils.test_basic88˜  sZ   € ò	!ä�I‰I�c‹N×"Ñ" 1 aÓ(ˆØ× Ñ Ü#Ü"Ü ð !ó "ˆð 	×Ñ˜f a¨°bÈRÐÕPr   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)z basic multiple returnc                 ó0   — | d   dkD  ry| d   dk  r| d   S y)Nr   r*  rY  r"  rO  r=   rÌ   r   r   s    r   r1  z-TestManyStencils.test_basic89.<locals>.kernel¥  s'   € Ø�‰w˜Š|ØØ�4‘˜1’Ø˜‘w�àr   c                 ó–  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]b  }t        d| j                  d   «      D ]D  }| |dz   |dz   f   dkD  rd|||f<   Œ| |dz   |dz   f   dk  r| |dz   |dz   f   |||f<   Œ>d	|||f<   ŒF Œd |S )
Nr!   r   rá   r   rr   r*  rY  rO  rÌ   r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic89.<locals>.__kernel¯  sä   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡JÖ/�CØ˜˜q™ #¨¡'Ð)Ñ*¨RÒ/Ø)-˜˜S #˜XšØ˜3 ™7 C¨!¡GÐ+Ñ,¨qÒ0Ø)*¨3°©7°C¸!±GÐ+;Ñ)<˜˜S #˜Xšà),˜˜S #˜Xšñ 0ð 0ð ˆKr   r8  r*  r9  Nr·  r¸  s   `   @r   Útest_basic89zTestManyStencils.test_basic89£  sH   ù€ ò	õ	ô �I‰I�iÓ ×(Ñ(¨¨RÓ0ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c           
      óÐ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      }|j                  «       }d} ||||«      }‰ j	                  ‰||||ddd	œ¬
«       y)z@ neighborhood, with standard_indexing and cval, multiple returnsc                 óŒ   — d}t        dd«      D ]#  }t        dd«      D ]  }|| ||f   |d   z   z  }Œ Œ% |dz  }|dkD  r|dz   S |S )Nr   r'  r   rš  r²  r8  r+   r&   )r   r5   r  r)   r¡   Úress         r   r1  z-TestManyStencils.test_basic90.<locals>.kernelÃ  sc   € ØˆEÜ˜2˜q–\�Ü˜r 1ž�AØ˜Q˜q !˜t™W q¨¡wÑ.Ñ.‘Eñ &ð "ð ˜2‘,ˆCØ�UŠ{Ø˜S‘yÐ à�
r   c           	      ó¼  •— ‰j                  | ||¬«        ‰| |«      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]v  }t        d| j                  d   «      D ]X  }d}t        dd«      D ])  }t        dd«      D ]  }	|| ||z   ||	z   f   |d   z   z  }Œ Œ+ |d	z  }
|
d
kD  r|
dz   |||f<   ŒR|
|||f<   ŒZ Œx |S )Nr!   r¢  rá   rr   r   r   r'  rš  r²  r8  r+   r¯  )r   r5   r"   r²  r³  r6  r   r  r)   r¡   rÃ  r1  rT   s              €€r   r¶  z/TestManyStencils.test_basic90.<locals>.__kernelÐ  só   ø€ Ø×%Ñ% a¨¸Ð%ÔFÙ  1›ˆJÜ—7‘7˜1Ÿ7™7 C¬t°JÓ/?Ô@ˆDÜ˜a §¡¨¡Ö,�Ü! ! Q§W¡W¨Q¡ZÖ0�DØ�EÜ" 2 qž\˜Ü!& r¨1¦˜AØ! Q t¨a¡x°¸±Ð'9Ñ%:¸Q¸t¹WÑ%DÑD™Eñ ".ð *ð   #™+�CØ˜U’{Ø+.°©9˜˜T 4˜ZÒ(à+.˜˜T 4˜ZÒ(ñ 1ð -ð ˆKr   r8  r*  r9  rz  r5   r¢  r£  r‰  Nr�  r|  s   `     @r   Útest_basic90zTestManyStencils.test_basic90Á  sq   ù€ ò		õ	ô" �I‰I�iÓ ×(Ñ(¨¨RÓ0ˆØ�F‰F‹HˆØˆÙ˜A˜q "Ó%ˆØ×#Ñ# F¨H°a¸Ø=?ØBEØ58ñ-;ð 	$õ 	<r   c                 óœ   ‡ ‡— d„ Šˆˆ fd„}t        j                  d«      j                  dd«      } ||d«      }‰ j                  ‰||«       y)z? Issue #3454, const(int) == const(int) evaluating incorrectly. c                 ó$   — d}ddk(  rd}| d   |z   S )Nr   r1   r=   r   r4   s     r   r1  z-TestManyStencils.test_basic91.<locals>.kernelì  s!   € ØˆAØ�Q’Ø�Ø�T‘7˜Q‘;Ðr   c                 óH  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   «      D ]>  }t        d| j                  d   «      D ]   }d}ddk(  rd}| |dz   |dz   f   |z   |||f<   Œ" Œ@ |S ré  r¯  )	r   r"   r²  r³  r´  rµ  r5   r1  rT   s	          €€r   r¶  z/TestManyStencils.test_basic91.<locals>.__kernelô  s¨   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
Ö+�Ü   A§G¡G¨A¡JÖ/�CØ�AØ˜A’vØ˜Ø%& s¨Q¡w°°a±Ð'7Ñ%8¸1Ñ%<�D˜˜c˜’Nñ	 0ð ,ð ˆKr   r8  r*  r9  Nr·  r¸  s   `   @r   Útest_basic91zTestManyStencils.test_basic91ê  sH   ù€ ò	õ
	ô �I‰I�iÓ ×(Ñ(¨¨RÓ0ˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 ó  ‡ ‡— d„ Šˆˆ fd„}t        j                  t        j                  d«      dz  «      j                  dd«      j	                  t         j
                  «      } ||d«      }‰ j                  ‰||«       y)ú7 Issue #3497, bool return type evaluating incorrectly. c                 ól   — | d   | d   z  | d   z  | d   z  | d   z  | d   z  | d   z  | d   z  | d	   z  S ©
Nrä  r   rÔ  r   r=   r   rÚ  r   rß  r   r   s    r   r1  z-TestManyStencils.test_basic92.<locals>.kernel  óh   € Ø�f‘I  %¡Ñ(¨1¨U©8Ñ3Ø�e‘HñØ  ™wñ'Ø)*¨4©ñ1à�e‘Hñà  ™wñ'à)*¨4©ñ1ð 2r   c                 ó  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]¥  }t        d| j                  d   dz
  «      D ]„  }| |dz   |dz   f   | |dz   |dz   f   z  | |dz   |dz   f   z  | |dz   |dz   f   z  | |dz   |dz   f   z  | |dz   |dz   f   z  | |dz   |dz   f   z  | |dz   |dz   f   z  | |dz   |dz   f   z  |||f<   Œ† Œ§ |S rÇ  r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic92.<locals>.__kernel  óv  ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜Q §¡¨¡
¨Q¡Ö/�Ü   A§G¡G¨A¡J°¡NÖ3�CØ&'¨¨b©°#¸±(Ð(:Ñ&;Ø&'¨¨b©°#¸±'Ð(9Ñ&:ñ';à&'¨¨b©°#¸±'Ð(9Ñ&:ñ';ð '(¨¨a©°°r±Ð(9Ñ&:ñ';ð '(¨¨a©°°q±Ð(8Ñ&9ñ	':ð
 '(¨¨a©°°q±Ð(8Ñ&9ñ':ð '(¨¨a©°°r±Ð(9Ñ&:ñ';ð '(¨¨a©°°q±Ð(8Ñ&9ñ':ð '(¨¨a©°°q±Ð(8Ñ&9ñ':�D˜˜c˜’Nñ 4ð 0ð ˆKr   r9  r1   rÁ   rª   N©rw   r|  r‘   r’   r\  rä   r™  ©rT   r¹  r–   r~   r1  s   `   @r   Útest_basic92zTestManyStencils.test_basic92  sd   ù€ ò	2õ	ô" �H‰H”R—Y‘Y˜r“] QÑ&Ó'×/Ñ/°°1Ó5×<Ñ<¼R¿X¹XÓFˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÕ8r   c                 ó
  ‡ ‡— d„ Šˆˆ fd„}t        j                  t        j                  d«      dz  «      j                  dd«      j	                  t         j
                  «      } ||d«      }‰ j                  ‰||dd	i¬
«       y)rË  c                 ól   — | d   | d   z  | d   z  | d   z  | d   z  | d   z  | d   z  | d   z  | d	   z  S rÍ  r   r   s    r   r1  z-TestManyStencils.test_basic93.<locals>.kernel%  rÎ  r   c                 ó  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]¥  }t        d| j                  d   dz
  «      D ]„  }| |dz   |dz   f   | |dz   |dz   f   z  | |dz   |dz   f   z  | |dz   |dz   f   z  | |dz   |dz   f   z  | |dz   |dz   f   z  | |dz   |dz   f   z  | |dz   |dz   f   z  | |dz   |dz   f   z  |||f<   Œ† Œ§ |S )Nr!   r   rá   r   r   r¯  r±  s         €€r   r¶  z/TestManyStencils.test_basic93.<locals>.__kernel,  rÐ  r   r9  r1   rÁ   rª   Nr-   Tr‰  rÑ  rÒ  s   `   @r   Útest_basic93zTestManyStencils.test_basic93#  sm   ù€ ò	2õ	ô" �H‰H”R—Y‘Y˜r“] QÑ&Ó'×/Ñ/°°1Ó5×<Ñ<¼R¿X¹XÓFˆÙ˜A˜tÓ$ˆØ×#Ñ# F¨H°aÀ&È$ÀÐ#ÕPr   c                 óÈ   ‡ ‡— d„ Šˆˆ fd„}t        j                  dt         j                  ¬«      j                  dd«      }d} |||«      }‰ j	                  ‰||d|i¬	«       y
)z" Issue #3528. Support for slices. c                 ó>   — t        j                  | dd…dd…f   «      S ©Nr   r1   ©rw   Úmedianr   s    r   r1  z-TestManyStencils.test_basic94.<locals>.kernelC  ó!   € Ü—9‘9˜Q˜r !˜t R¨ T˜z™]Ó+Ð+r   c           	      óv  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]R  }t        d| j                  d   dz
  «      D ]1  }t        j                  | |dz   |dz   …|dz   |dz   …f   «      |||f<   Œ3 ŒT |S ©Nr!   r   rá   r   r   r1   ©r©  rw   r°  r§  r`  r'   rÜ  )r   r"   r²  r³  r6  r   r1  rT   s         €€r   r¶  z/TestManyStencils.test_basic94.<locals>.__kernelH  sÀ   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜a §¡¨¡¨a¡Ö0�Ü! ! Q§W¡W¨Q¡Z°!¡^Ö4�DÜ')§y¡y°°4¸"±9¸TÀA¹XÐ3EØ37¸"±9¸TÀA¹XÐ3Eð4Fñ 2Gó (H�D˜˜t˜Ò$ñ 5ð 1ð ˆKr   r9  rá   rÁ   rª   ©rÔ  rÔ  r"   r‰  N)rw   r‘   Úuint32r’   r™  r$  s   `    @r   Útest_basic94zTestManyStencils.test_basic94A  sb   ù€ ò	,õ
	ô �I‰I�b¤§	¡	Ô*×2Ñ2°1°aÓ8ˆØ ˆÙ˜A˜r“?ˆØ×#Ñ# F¨H°aØ-;¸RÐ,@ð 	$õ 	Br   znot yet supportedc                 ó
   — d„ }y)z  Slice, calculate neighborhood. c                 ó>   — t        j                  | dd…dd…f   «      S )Nr   r1   r'  rÁ   rÛ  r   s    r   r1  z-TestManyStencils.test_basic95.<locals>.kernel[  rÝ  r   Nr   rØ  s     r   Útest_basic95zTestManyStencils.test_basic95X  s   € ó	,r   c                 ó¨   ‡ ‡— d„ Šˆˆ fd„}t        j                  dt         j                  ¬«      }d} |||«      }‰ j                  ‰||d|i¬«       y)	z 1D slice. c                 ó2   — t        j                  | dd «      S rÚ  rÛ  r   s    r   r1  z-TestManyStencils.test_basic96.<locals>.kernela  s   € Ü—9‘9˜Q˜r !˜WÓ%Ð%r   c                 ó  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  dt	        |«      ¬«      }t        d| j                  d   dz
  «      D ]$  }t        j                  | |dz   |dz    «      ||f<   Œ& |S rß  rà  )r   r"   r²  r³  r   r1  rT   s        €€r   r¶  z/TestManyStencils.test_basic96.<locals>.__kernelf  s   ø€ Ø×%Ñ% a°lÐ%ÔCÙ ›ˆJÜ—7‘7˜1Ÿ7™7 A¬T°*Ó-=Ô>ˆDÜ˜a §¡¨¡¨a¡Ö0�Ü Ÿi™i¨¨$°©)°D¸1±HÐ(=Ó>��T�U’ð 1àˆKr   r9  rá   )rÔ  r"   r‰  N)rw   r‘   râ  r™  r$  s   `    @r   Útest_basic96zTestManyStencils.test_basic96_  sU   ù€ ò	&õ
	ô �I‰I�b¤§	¡	Ô*ˆØˆÙ˜A˜r“?ˆØ×#Ñ# F¨H°aØ-;¸RÐ,@ð 	$õ 	Br   c                 ó
   — d„ }y)z 2D slice and index. c                 ó:   — t        j                  | dd…df   «      S )Nr   r1   rr   rÛ  r   s    r   r1  z-TestManyStencils.test_basic97.<locals>.kernelw  s   € Ü—9‘9˜Q˜r !˜t Q˜w™ZÓ(Ð(r   Nr   rØ  s     r   Útest_basic97zTestManyStencils.test_basic97t  s   € ó	)r   c           	      ó@  ‡ ‡‡— t         j                  t         j                  t         j                   t        d«      t        d«       fD ]S  Šd„ Šˆˆˆ fd„}t        j                  d«      j                  d«      }d} |||«      }‰ j                  ‰|||‰dœ¬«       ŒU y	)
rI  rJ  c                 ó   — | d   S r<   r   r   s    r   r1  z-TestManyStencils.test_basic98.<locals>.kernel  s   € Ø˜‘w�r   c                 ó<  •— ‰j                  | |¬«        ‰| «      }t        j                  | j                  ‰t	        |«      ¬«      }t        d| j                  d   dz
  «      D ]5  }t        d| j                  d   dz
  «      D ]  }| |dz   |dz   f   |||f<   Œ Œ7 |S )Nr!   rá   r   r   r¯  )	r   r"   r²  r³  r6  r   r-   r1  rT   s	         €€€r   r¶  z/TestManyStencils.test_basic98.<locals>.__kernel„  s›   ø€ Ø×)Ñ)¨!¸,Ð)ÔGÙ# A›Y�
Ü—w‘w˜qŸw™w¨´D¸Ó4DÔE�Ü! ! Q§W¡W¨Q¡Z°!¡^Ö4�DÜ % a¨¯©°©°a©Ö 8˜Ø+,¨T°A©X°t¸a±xÐ-?Ñ+@˜˜T 4˜ZÒ(ñ !9ð 5ð �r   g      @)r1   rr   rá  )r"   r-   r‰  N)rw   rN  rJ  rO  r‘   r’   r™  )rT   r¹  r   r%  r~   r-   r1  s   `    @@r   Útest_basic98zTestManyStencils.test_basic98{  s‹   ú€ ô —V‘VœRŸV™V¤b§f¡f W¬e°E«l¼UÀ5»\¸MÓJˆDòö
ô —	‘	˜"“×%Ñ% fÓ-ˆAØ$ˆBÙ  2“ˆHØ×'Ñ'¨°¸!ØACØ8<ñ1>ð (õ ?ñ' Kr   )trƒ   r„   r…   rS   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-  r1  r<  r@  rE  rI  rP  rV  r^  rc  rg  rl  ÚunittestÚskiprp  ru  ry  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@  rD  rH  rO  rU  r\  ra  re  ri  rm  rq  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ˆ   s   @r   rS  rS  }  sÓ  ø„ ô@òX,òtd,òLò	Lò9ò,9ò,9ò,9ò,9ò,9ò,9ò,9ò,9ò,9ò,9ò*9ò*9ò*9ò*9ò*9ò.9ò,9ò,9ò,9ò,9ò,9ò,9ò,9ò09ò.LòPò9ò29ò89ò,Mò9ò*9ð, €X‡]�]Ð5Ó6ñó 7ðò9ò*Mò9ò(9ò2Nò(Nò.?ò0
5ò<ò6<ò*QòQò<ò0PòPòPò?ò69ò4Hð. €X‡]�]Ð;Ó<ñ&ó =ð&òPòHò05òHò0Hò4Hò@Hò0Hò0Oò05ò<ò;ò.5òPòBò8Bò6Bò<	LòBò@Bò< BòDBòBBò6Bò6Bò6Bò6Bò8!BòFBò@Bò@Bò@5ò$Bò>5ò$Hò@"<òH9ò*9ò.Lò9ò(	Qò9ò<'<òR9ò49ò>Qò<Bð. €X‡]�]Ð&Ó'ñ,ó (ð,òBð* €X‡]�]Ð&Ó'ñ)ó (ð)ö?r   rS  Ú__main__)(Únumpyrw   Ú
contextlibr   ri   r   r   Ú
numba.corer   r   Únumba.core.compilerr   r	   Únumba.core.cpur
   Únumba.tests.supportr   r   Únumba.core.errorsr   r   r   rò  rQ  r   r*   r2   r6   r:   r?   rB   rD   rG   rK   ÚTestCaserM   rŠ   rS  rƒ   Úmainr   r   r   Ú<module>rþ     sr  ðó Ý %ã ß ß &ß 4Ý *ß @ß IÑ IÛ ð ,Ð ð 	ñ<ó 	ð<ñ 	�kÔ"ñó #ðñ 	ˆcÔñó ðð 	ñ<ó 	ð<ð
 	ñ9ó 	ð9ð
 	ñ+ó 	ð+ñ 	˜6Ô"ñ&ó #ð&ñ 	˜6Ô"ñ9ó #ð9ð
 ñó ðñ Ù	�4Ôñó ðô4G�h×'Ñ'ô 4Gônt>�/ô t>ðn ôU(?�ó U(?ó ðU(?ðpP ˆzÒØ€H‡M�M…Oð r   