
    xKg                        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    ]/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_stencils.pystencil1_kernelr      s,    1T7QtW$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2q\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`    1T7QtW$qx/!E(:T7tW%'(x023E(; < <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'!AeH,qx7$D'"$%eH-/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    g1T7*1T7*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%    R51Q4<!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    dGag$!D' 11h5!"$%eHqx$78 9r   c                     | dz   S Nr   r   r   s    r   addone_njitrG   D   s    q5Lr   Tparallelc                     | dz   S rF   r   r   s    r   addone_pjitrK   J   s    1u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ot-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3dU\\!_d34&&vs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)DM	 (e''. +**D1


&&y(A&F


&&{Ha&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    k4)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&&1v.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&&1v.A1a!e_q!a%A"a1q5k&'Aqk'245aQhK'@BCAE1H+'N OAadG ) % Hr   d   Nr   )rT   r   r   r   r   s        r   test_stencil1zTestStencil.test_stencil1   s9    		
	 

=-3

="2A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1c!f%S1q5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rAvq1u-A1Q4KC .Sy r   r!   rw   r   ri   r   )r   r9   r   r*   r   s        r   r   z+TestStencil.test_stencil2.<locals>.test_seq   s=    		!A!
 Ioqb!WKHANA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1c!fqj)S1q5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rAvq1u-A1QU8OC .Sy r   r"   index_offsetsr   r   r9   offsetr   r*   r   s         r   r   z+TestStencil.test_stencil2.<locals>.test_seq   sH    		!A!
9oqb!WK.4WK99: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&    RVVAqb1fQUO444r   r   r   r   s         r   r   z+TestStencil.test_stencil2.<locals>.test_seq   sH    		!A59oqb!WK.4WK99: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%**ejj1IJ A&**1a0


&&}h&J&(C(C(EF
	 &&x%**ejj27**2> ?**1a8


&&}h&J&(C(C(EF	 &&x%**ejj27**2> ?**1a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)	zTests 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.C2G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7A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1a[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7A1!Q7A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&&1v.AA&&1v.A1a!e_q!a%A AE{QtW4qQ{QtW7LL AE{QuX5 689!a%(ah8N OAadG ) % 1a!e_q!a%A AE{QtW4qQ{QtW7LL AE{QuX5 689!a%(ah8N OAadG ) % 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3A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&&1v.A1a!e_q!a%A"1a!e8qQ{2QAX;')*1q5!85QAX;')*1q5!85 QAX;' *+1q5!856AadG ) % 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&!))1a&1AQ16*22Aq6::Aq)A!Qqww/A1a[q!A)*1a4a1ga1gAadG % ! 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&!))1a&1AQ16*22Aq6::Aq)A5a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-    DAdGa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&&1v.A9EMM 8 99: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01U8;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&&1v.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&&1v.A1a!e_q!a%A"a1q5kAa!eQhK&?()!QU('467Aqk'B CAadG ) % 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    C1R51Q4<!A$+>$?r   r   rw   r   r   ri   r   r   s      r   	test_implz3TestStencil.test_stencil_call_1D.<locals>.test_impl  s7    		!AA@EMM?@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1a!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)zTests 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     saeadlQqT.A'Br   r   r   r   r   r   r  s       r   r   z7TestStencil.test_stencil_call_const.<locals>.test_impl1  s>    		!AAACEMMBCAqa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&    SAa!eHqtOaAh$>?r   r   r   r  s       r   r   z7TestStencil.test_stencil_call_const.<locals>.test_impl2  sH    		!AAAAEMM?AABA1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)    SAqb1fI!$4qQx$?@r   r   r   r  s       r   
test_impl3z7TestStencil.test_stencil_call_const.<locals>.test_impl3  sH    		!AAABEMM@BBCQA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)    saQi!A$&61q5&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EMMBDDEq!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1a!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   					 ''
UZZMB''
UZZMB''
UZZMB''
UZZMB # ,,Q/ ,,Q/ ,,Q/ ,,Q/


&&~x&K


&&~x&K


&&~x&K


&&~x&K /1qM 0 	 78;AKK8H	J ?@ADQ A 	 78;AKK8H	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    G5==!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 &&y5==3C2E/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1c!f%Qx! &Hr   
   N)r   rw   r   rx   assert_equalr   s       r   test_stencil_nested1z TestStencil.test_stencil_nested1  sL     
t		 
		 IIbM


	!mA.>?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    dGa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    IIbM))&1ll1o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qc"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vI>J 		"%%f-A||Ar*H'HRUO,,q/Cqc"JJ**39 $$W.E&&(

..sH= ' $0 ]]63
	 IIbM!!&)ll1o/1qc" 0=c3q{{+,**D,A,ABHF$ %%DEE C 0/ $]3 +c3q6**+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    IIcN**62ll1o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     VVRVVbffWeElU5\MJD+ vD9J 		#&&v.A||Ar*H"HRUO,,q/Cqc"JJ**39 $$W.E&&(

..sH= - 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 76 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*$=DD8E!E#Ar!22 $ #** q'3q6#+ ,- - !-+   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      (tT::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

%sMThe 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/#ZZ(<=   
	0 
	0& ($/+I6J(0G*84I+J(G*I&/G$!*j1 ' 7, 7!2D!9 2 t9>/Y!^5Y!^; =D	  d3dU\\!_d34'6* --lC@M3-33T:K +
 )Y/!22<EN6N66=M 0
 (*<=$k2&6		2

..&! / =  1C1I1IJ	/

..1 / 6  1B1BC
	>

..!8Q / 8  1D1DE.MM(&..;;=? &M%01[4!8[C1 !GJM N O O *9:/QTAaD[/E:77'68'6! 2'68 9D/167D'$.Dtd{++ k 21( 4 +* 0/  	2""!Wc!f& '( '#a&011		2  	/""FQQ,H#IJ$s1v-..	/ & .FC(--.  	>""!Wc!f& '( 3c!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/#ZZ(<=  
	0 
	0& ($/+I6J(0G*84I+J(G*I&/G$*j1 ' 7, 7t$ 2 t9>/Y!^5Y!^; =D	  d3dU\\!_d34'6* --lC@M%M%%t, +
 )Y/!22<EN&N&&- 0
 %01[4!8[C1 !GJM N O O *9:/QTAaD[/E:77'68'6! 2'68 9D/167D'$.Dtd{++ 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+)&	(LLNDAqAaD #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    zz.1!W]]
#:#l"33 !@AAab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      T7Nr   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    %%al%CJ77177AT*-=>DQ
+ AGGAJ/C%&sQwa'7%8D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    		 IIbM!!!Q'At$##FHa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      %%al%CJ77177AT*-=>DQ
Q/ AGGAJ/C%&sQwa'7%8DcN 0 0 Kr   rM  rr   r   Nr  r  s   `   @r   test_basic01zTestManyStencils.test_basic01  G    		 IIcN""1a(At$##FHa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      U8Or   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    %%al%CJ77177AT*-=>DQ
+ AGGAJ/C%&sQwb'8%9DcN 0 , Kr   rM  rr   r   Nr  r  s   `   @r   test_basic02zTestManyStencils.test_basic02  G    		 IIcN""1a(At$##FHa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    %%al%CJ77177AT*-=>DQ
+ AGGAJN3C%&sQwa'7%8D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    %%al%CJ77177AT*-=>DQ
+ AGGAJ/C%&sRxq'8%9D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      %%al%CJ77177AT*-=>DQ
Q/ AGGAJ/C%&sRxq'8%9D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    %%al%CJ77177AT*-=>DQ
+ AGGAJN3C%&sQwb'8%9D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    %%al%CJ77177AT*-=>DQ
Q/ AGGAJN3C%&sQwa'7%8D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      V9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[      %%al%CJ77177AT*-=>DQ
+ AGGAJ/C%&sRxr'9%:DcN 0 , Kr   rM  rr   r   Nr  r  s   `   @r   test_basic08zTestManyStencils.test_basic08S  sG    		 IIcN""1a(At$##FHa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      T7QtW$$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    %%al%CJ77177AT*-=>DQ
+ AGGAJN3C%&sQwa'7%81S1WcAg=M;N%NDcN 4 , Kr   rM  rr   r   Nr  r  s   `   @r   test_basic10zTestManyStencils.test_basic10  sG    	%
	 IIcN""1a(At$##FHa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    U8a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    %%al%CJ77177AT*-=>DQ
+ AGGAJN3C%&sRxq'8%9AcAgsQw>N<O%ODcN 4 , Kr   rM  rr   r   Nr  r  s   `   @r   test_basic11zTestManyStencils.test_basic11  sG    	&
	 IIcN""1a(At$##FHa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    U8a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    %%al%CJ77177AT*-=>DQ
Q/ AGGAJN3C%&sRxq'8%9AcAgsRx>O<P%PDcN 4 0 Kr   rM  rr   r   Nr  r  s   `   @r   test_basic12zTestManyStencils.test_basic12  G    	'
	 IIcN""1a(At$##FHa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    V9q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    %%al%CJ77177AT*-=>DQ
Q/ AGGAJN3C%&sRxr'9%:QsQwa?O=P%PD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    T7R<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    %%al%CJ77177AT*-=>DQ
+ AGGAJ/C%&sQwa'7%84%?DcN 0 , Kr   rM  rr   r   Nr  r  s   `   @r   test_basic14zTestManyStencils.test_basic14  sG    	 
	 IIcN""1a(At$##FHa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T7Q;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    %%al%CJ77177AT*-=>DQ
+ AGGAJ/CA%&sQwa'7%81%<DcN 0 , Kr   rM  rr   r   Nr  r  s   `   @r   test_basic14bzTestManyStencils.test_basic14b  sG    		 IIcN""1a(At$##FHa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      T7QtW$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      %%al%CJ77177AT*-=>DQ
+ AGGAJN3C&'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    	*
	 IIcN""1a(At$##FHa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    	*
	 IIbM!!!Q'At$##FHa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-      T7QuX%**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    %%al%CJ77177AT*-=>DQ
+ AGGAJ/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    	+
	 IIbM!!!Q'At$##FHa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    %%al%CJ77177AT*-=>DQ
Q/ AGGAJ/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    %%al%CJ77177AT*-=>DQ
+ AGGAJ/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    %%al%CJ77177AT*-=>DQ
+ AGGAJ/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    	.
	 IIcN""1a(At$##FHa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    rAdG|$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    %%al%CJ77177AT*-=>DQ
Q/ AGGAJN3CrAcAgsQw&6$778A&'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    	-		 IIcN""1a(At$##FHa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+    rAdG|$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    %%al%CJ77177AT*-=>DQ
Q/ AGGAJN3CrAcAgsQw&6$778A%&sQwa'7%81S1WcAg=M;N%NDcN 4 0 Kr   rM  rr   r   Nr  r  s   `   @r   test_basic23azTestManyStencils.test_basic23a  sG    	)	 IIcN""1a(At$##FHa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    Q4"9r   rV  N)rw   r   r   r  r   rT   r   r1  s      r   test_basic24zTestManyStencils.test_basic24  s:    IIbM!!!Q'	 	fa[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    IIbM!!!Q'	faZ=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    %%al%CJ77177AT*-=>DQ
+ AGGAJN3C$Q
3/0q#'371J/K/0q#'371J/K0L/203S#s]+  4 4 , Kr   @   r      r1   Nr  r  s   `   @r   test_basic26zTestManyStencils.test_basic26  sI    	0

	 IIbM!!!Q*At$##FHa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[>1B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   %%al%CJ77177AT*-=>DQ
+ AGGAJ/C$Q
Q7#(AGGAJ#7C89#'37:='37;K 9L89#'37:='38;L 9M9M 9<	9<Dc3!34 $8  8 0 , Kr      r   rO  r1   Nr  r  s   `   @r   test_basic27zTestManyStencils.test_basic27  sK    	7	  IIcN""1aA.At$##FHa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    T7RZZ_,,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    %%al%CJ77177AT*-=>DQ
+ AGGAJ/C%&sQwa'7%82::d;K%KDcN 0 , Kr   r4  rr   r   Nrw   r   r   astypefloat32r  r  s   `   @r   test_basic28zTestManyStencils.test_basic28  sV    	-	 IIbM!!!Q'..rzz:At$##FHa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BFF1I&''r   rC  Nrw   r   r   r  r  r   r   rD  s      r   test_basic29zTestManyStencils.test_basic29%  sE    IIcN""1a(	(faZ=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    	
	 IIbM!!!Q'..rzz:At$##FHa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T7Nr   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    %%al%CJ77177AT*-=>DQ
+ AGGAJN3CA%&sQwa'7%8DcN 4 , Kr   r4  rr   r   Nr[  r  s   `   @r   test_basic31zTestManyStencils.test_basic31D  sV    		 IIbM!!!Q'..rzz:At$##FHa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T7Nr   N)rw   r   r   rD  s      r   test_basic31bzTestManyStencils.test_basic31bZ  s#     IIcN""1a(	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Q4Kr   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    %%al%CJ77177AT*-=>DQ
Q/sQwZST
 0 Kr   rM  Nrw   r   r  r  s   `   @r   test_basic31czTestManyStencils.test_basic31cf  s:    		 IIcNAt$##FHa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    RWWQZ]##r   rC  Nrb  rD  s      r   test_basic32zTestManyStencils.test_basic32{  sE    IIcN""1a(	$faZ=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    T7RXXa[((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    %%al%CJ77177AT*-=>DQ
+ AGGAJ/C%&sQwa'7%8288A;%FDcN 0 , Kr   rM  rr   r   Nr  r  s   `   @r   test_basic33zTestManyStencils.test_basic33  sG    	)
	 IIcN""1a(At$##FHa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    QtWA$!D')AeH4rvvah7G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   %%al%CJ77177AT*-=>DQ
Q/ AGGAJN3Caaq 011A%&!C!GS1W,<*=*+C!GS1W,<*=+>*+C!GS2X,=*>+? +-&&38S1W3D1E*F+G &HDcN 4 0 Kr      r4  Nr  r  s   `   @r   test_basic34zTestManyStencils.test_basic34  sH    	I	 IIcN""2r*At$##FHa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    	
	 IIcN""1a(At$##FHa&!#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  '    T7QuX%%01U8;;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    %%al%CJ77177CtJ/?@DQ
Q/ AGGAJN3C&'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    	<

	 IIcN""1a(At$##FHa&!#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      %%al%CJ77177DZ0@ADQ
Q/ AGGAJN3C&'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    	<

	 IIcN""1a(At$##FHa-3W,= 	$ 	?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  r  rT   r1  r   rf  s       r   test_basic38zTestManyStencils.test_basic38  sa    	<IIcN""1a(  #  ! " 	fa&#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    	< vvbzBFF1I%

	 IIcN""1a(At$##FHa-3TN 	$ 	<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      T7QuX%%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77177AT*-=>DQ
Q/ AGGAJ/C%&sQwa'7%81S1WcBh=N;O%ODcN 0 0 Kr   rM  rr   r   Nr  rT   r  r   r5   r~   r1  s   `    @r   test_basic40zTestManyStencils.test_basic40  se    	&
	 IIcN""1a(IIcN""1a(Aq$'##FHa;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  _    	&IIcN""1a(IIbM!!!Q'fa
@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'    T7QtW$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77177AT*-=>DQ
Q/ AGGAJN3C&'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    	;

	 IIcN""1a(IIcN""1a(Aq$'##FHa;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    AdGT7Nr   rM  rr   r   rC  Nrw   r   r   r  r  r   r  s       r   test_basic44zTestManyStencils.test_basic44[  sa    	 IIcN""1a(IIcN""1a(fa
@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    AdGT7QtW$$r   rM  rr   r   rC  Nr  r  s       r   test_basic45zTestManyStencils.test_basic45e  a    	% IIcN""1a(IIcN""1a(fa
@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"    gAdGT7QtW$$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    T7QtW$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AL%I1aJ77177AT*-=>DQ
Q/ AGGAJN3C&'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		 IIcN""1a(IIcN""1a(IIcN""1a(Aq!T*##FHa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AadGT7Nr   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    %%al%CJ77177AT*-=>DQ
Q/ AGGAJ/CA AadG%&sQwa'7%8DcN 0 0
 Kr   rM  rr   r   Nr  r  s   `   @r   test_basic48zTestManyStencils.test_basic48  sG    			 IIcN""1a(At$##FHa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    %%al%C1J77177AT*-=>DQ
Q/ AGGAJ/C%&sQwa'7%81T7%BDcN 0 0 Kr   rM  rr   r   Nr@   r5   r  r  r  s   `    @r   test_basic49zTestManyStencils.test_basic49  su    	%
	 IIcN""1a(IIcN""1a(Aq$'##FHa-@#,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    	%IIcN""1a(IIcN""1a(fa':S#J&G2<o1N 	 	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    T7QtW$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1aJ77177AT*-=>DQ
Q/ AGGAJN3C&'aq(8&9AdG&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    	/
	 IIcN""1a(IIbM!!!Q'IIcN""1a(Aq!T*##FHa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    	%IIcN""1a(IIcN""1a(   !  	fa5H#4N13 	 	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T7Qq!tW$$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    %%al%C1J77177AT*-=>DQ
Q/ AGGAJ/CA%&sQwa'7%81QT7%BDcN 0 0 Kr   rM  rr   r   Nr@   r5   r  r  r  s   `    @r   test_basic54zTestManyStencils.test_basic54  su    	%	 IIcN""1a(IIcN""1a(Aq$'##FHa-@#,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T7Qq!tW$$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    %%al%C1J77177AT*-=>DQ
Q/ AGGAJ/CAAA%&sQwa'7%81QT7%BDcN 0 0
 Kr   rM  rr   r   Nr@   r5   r  r  r  s   `    @r   test_basic55zTestManyStencils.test_basic55  su    	%		 IIcN""1a(IIcN""1a(Aq$'##FHa-@#,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!tWq A	AT7Qq!tW$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    %%al%C1J77177AT*-=>DQ
Q/ AGGAJ/CACAvYq 'A	A%&sQwa'7%81QT7%BS%HDcN 0 0 Kr   rM  rr   r   Nr@   r5   r  r  r  s   `    @r   test_basic56zTestManyStencils.test_basic56-  su    	+	 IIcN""1a(IIcN""1a(Aq$'##FHa-@#,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T7QqT>!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    %%al%C1J77177AT*-=>DQ
Q/ AGGAJ/C!A%&sQwa'7%81Q4%?DcN 0 0 Kr   rM  rr   r   Nr@   r5   r  r  r  s   `    @r   test_basic57zTestManyStencils.test_basic57M  u    	"	 IIcN""1a(IIcN""1a(Aq$'##FHa-@#,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T7QqT>!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    %%al%C1J77177AT*-=>DQ
Q/ AGGAJ/C!qA%&sQwa'7%81Q4%?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    T7QtW$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    %%al%C1aJ77177AT*-=>DQ
Q/ AGGAJ/C%&sQwa'7%81T7%BQ%FDcN 0 0 Kr   rM  rr   r   r*  Nr@   r5   r  r  r  r  s   `     @r   test_basic59zTestManyStencils.test_basic59}  s    	)
	 IIcN""1a(IIcN""1a(Aq!T*##FHa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    T7QtW$qt++r   rM  rr   r   )r*  )rl  r@   r5   r  r  N)rw   r   r   r  r  r  )rT   r1  r   r5   r  rf  s         r   test_basic60zTestManyStencils.test_basic60  s}    	,IIcN""1a(IIcN""1a(  
 3faA':S#J&G13 	 	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_    	%IIcN""1a(IIcN""1a(fa':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    %%al%C1J77177DZ0@ADQ
Q/ AGGAJ/C%&sQwa'7%81T7%BDcN 0 0 Kr   rM  rr   r   Nr5   rY  )r@   r-   r  r  r  s   `    @r   test_basic62zTestManyStencils.test_basic62  sw    	%
	 IIcN""1a(IIcN""1a(Aq$'##FHaBE58-: 	$ 	;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    	!IIcN""1a(IIbM!!!Q'  #  ! " 	fa5H#4N13 	 	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    	IIcN""1a(fa2Es1K2<o1N 	 	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      %%al%CJ77177AT*-=>Db!''!*-sAAQtax[(E '#bjTU	 .
 Kr         N@)r  r   r"   r  Nrt  rT   r  r   nhr~   r1  s   `    @r   test_basic65zTestManyStencils.test_basic65  N    			 IIcNAr?##FHa-;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2q\sAAQq!tW$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	      %%al%CJ77177AT*-=>Db!''!*-!!QWWQZ0DE"2q\!&sAA!Qtax'9%::E "/ * (-rzDt$ 1 . Kr         i@r*     r   r/  r   r"   r  Nr  r$  s   `    @r   test_basic67zTestManyStencils.test_basic67	  \    	$	 IIi ((R0!Ar?##FHa-;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]1a4  #F##r   r8  r*  r9  r"   )r;  r  N)rw   r   r   r  r   r  r  s      r   test_basic67bzTestManyStencils.test_basic67b0	  sK    	$
 IIi ((R0fa.+1N2=z1J 	 	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\    	$	 IIi ((R0!Ar?##FHa-;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2q\sAAQtW$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2q\FsAAQq!tWq[(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    %%al%CJ77177AT*-=>Db!''!*-!!QWWQZ0DEB"2q\F!&sAA!Qtax'9%:Q%>>E "/ * (-rzDt$ 1 . Kr   r8  r*  r9  r:  r"   r  Nr  r$  s   `    @r   test_basic70zTestManyStencils.test_basic70z	  s\    	$	 IIi ((R0!Ar?##FHa-;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]s7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    %%al%CJ77177AT*-=>Db!''!*-sAAA3w Qtax[1_,E	 '
 $bjTU . Kr   r"  r#  r"   r  Nrt  r$  s   `    @r   test_basic71zTestManyStencils.test_basic71	  sN    		 IIcNAr?##FHa-;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	      %%al%CJ77177AT*-=>Db!''!*-sBAQtax[(E (#bjTU	 .
 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1b\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    %%al%CJ77177AT*-=>Dab1q"AQtax[(E &#bjTU	 2
 Kr   r"  ))r   r*  r"   r  Nrt  r$  s   `    @r   test_basic73zTestManyStencils.test_basic73	  sN    			 IIcNAr?##FHa-;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    			 IIcNAr?##FHa-;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2r]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    %%al%CJ77177AT*-=>Dab1r2AQtax[(E '#bjTU	 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    			 IIcNAr?##FHa-;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2q\Fr1AQq!tWq[(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    %%al%CJ77177AT*-=>Daa0!!QWWQZ0DEB"2q\F!&r1A!Qtax'9%:Q%>>E ". * (-rzDt$ 1 1 Kr   r8  r*  r9  ))r'  r   )r'  rr   r"   r  Nr  r$  s   `    @r   test_basic76zTestManyStencils.test_basic76E
  s\    	$	 IIi ((R0!Ar?##FHa-;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2q\r1AQq!tWq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77177AT*-=>Da,!!QWWQZ0DE"2q\!&r1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
  |    	 	 IIi ((R0IIi ((R0 Aq"%##FHa-;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2r]r2AQq!tWq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77177AT*-=>Da,!!QWWQZ0DE"2r]!&r2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|    	 	 IIi ((R0IIi ((R0"Aq"%##FHa-;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2r]q"AQq!tWq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77177AT*-=>Daa0!!QWWQZ0DE"2r]!&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    	  IIi ((R0IIi ((R3   !  	fa^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2q\r1AQq!tWq[(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77177AT*-=>Da,!!QWWQZ0DE"2q\!&r1A!Qtax'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    	 	 IIi ((R0Aq"%##FHa-;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2q\r1AQq!tWq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    	  IIi ((R0aDIIK  ! !  	fa'57I&J13 	 	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2q\r1AQq!tWq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77177AT*-=>Da,!!QWWQZ0DE"2q\!&r1A!Qtax'9%:QtW%DDE ". * (-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    	 	 IIi ((R0FFHAq"%##FHa=?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77177CtJ/?@Da,!!QWWQZ0DE"2q\!&r1A!Qtax'9%:QtW%DDE ". * (-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    	  IIi ((R0FFH
	 IIi ((R0FFHAq"%##FHa=?BE58-; 	$ 	<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      T7[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      %%al%CJ77177AT*-=>DQ
Q/ AGGAJ/C&'aq(8&9&1&9&9!C!GS1W<L:M&N'ODcN 0 0 Kr   r8  r*  r9  Nr  r  s   `   @r   test_basic84zTestManyStencils.test_basic84O  sH    	2
	 IIi ((R0At$##FHa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	 IIi ((R0At$##FHa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    	 IIi ((R0fa%2<k1J 	 	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77<--qZ8HIDQ 2 21 56 L$6$6q$9:C%1#'372B%CDcN ; 7 Kr   r8  r*  r9  Nr  r  s   `   @r   test_basic87zTestManyStencils.test_basic87  sH    	&
	 IIi ((R0At$##FHa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    	!IIcN""1a(  #  ! " 	fabR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    %%al%CJ77177AT*-=>DQ
Q/ AGGAJ/Cq#')*R/)-S#X37C!G+,q0)*37C!G+;)<S#X),S#X 0 0 Kr   r8  r*  r9  Nr  r  s   `   @r   test_basic89zTestManyStencils.test_basic89  sH    		 IIi ((R0At$##FHa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2q\r1AQq!tWqw..E & " 2,CU{Sy 
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77177CtJ/?@Da,!!QWWQZ0DE"2q\!&r1A!Qtax'9%:QtW%DDE ". *  #+CU{+.9T4Z(+.T4Z( 1 - Kr   r8  r*  r9  rz  r5   r  r  r  Nr  r|  s   `     @r   test_basic90zTestManyStencils.test_basic90  sq    			" IIi ((R0FFHAq"%##FHa=?BE58-; 	$ 	<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T7Q;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    %%al%CJ77177AT*-=>DQ
+ AGGAJ/CAAv%&sQwa'7%81%<DcN	 0 , Kr   r8  r*  r9  Nr  r  s   `   @r   test_basic91zTestManyStencils.test_basic91  sH    	
	 IIi ((R0At$##FHa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    fI%(1U83eH w')*41eH 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   %%al%CJ77177AT*-=>DQ
Q/ AGGAJN3C&'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	" HHRYYr]Q&'//15<<RXXFAt$##FHa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	" HHRYYr]Q&'//15<<RXXFAt$##FHa&$#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  !    99Qr!tRTz]++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    %%al%CJ77177AT*-=>Daa0!!QWWQZ!^4D')yy4"9TAX3E37"9TAX3E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    	,
	 IIb		*221a8 Ar?##FHa-;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    99Qr!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    %%al%CJ77177AT*-=>Daa0 ii$)D1H(=>TU 1Kr   r9  r   )r  r"   r  N)rw   r   r  r  r$  s   `    @r   test_basic96zTestManyStencils.test_basic96_  sU    	&
	 IIb		*Ar?##FHa-;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    99Qr!tQwZ((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#AY
wwqwwD4DE!!QWWQZ!^4D %aa 8+,TAXtax-?+@T4Z( !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     VVRVVbffWeElU5\MJD
 		"%%f-A$B2H''!AC8<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,909.LP92989,M9*9, X]]56 79*M9(92N(N.?0
5<6<*QQ<0PPP?694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94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HMMO r   