
    sh(                       S SK rS SKJr  S SKrS SKJrJr  S SKJrJ	r	  S SK
JrJr  S SKJr  S SKJrJr  S SKJrJrJr  S SKr\r\S	 5       r\" S
S9S 5       r\" SS9S 5       r\S 5       r\S 5       r\S 5       r\" SS9S 5       r\" SS9S 5       r\S 5       r \(       d  \" SS9S 5       r! " S S\RD                  5      r# " S S\#5      r$\ " S S \#5      5       r%\&S!:X  a  \RN                  " 5         gg)"    N)contextmanager)njitstencil)typesregistry)compile_extraFlags)ParallelOptions)skip_parfors_unsupported_32bit)LoweringErrorTypingErrorNumbaValueErrorc                 6    SU S   U S   -   U S   -   U S   -   -  $ N      ?r      r   r   r   r   r    as    m/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_stencils.pystencil1_kernelr      s,    1T7QtW$qx/!E(:;;    )r   neighborhoodc                 J    U S   n[        SS5       H
  nXU   -  nM     SU-  $ )Nr    r   333333?range)r   cumis      r   stencil2_kernelr*      s0    
B%C2q\t 9r         ?cvalc                     SU S   -  $ )Nr      r   r   s    r   stencil3_kernelr2   #   s    !E(?r   c                 f    SU S   U S   -   U S   -   U S   -   US   -   US   -   US   -   US   -   -  $ r   r   r   bs     r   stencil_multiple_input_kernelr6   (   s`    1T7QtW$qx/!E(:T7tW%'(x023E(; < <r   c                 d    X S   U S   -   U S   -   U S   -   US   -   US   -   US   -   U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                 *    US   (       a  U S   $ US   $ Nr   r   r   )r   r5   fs      r   %stencil_multiple_input_mixed_types_2dr?   4   s    g1T7*1T7*r   )r5   )standard_indexingc                 0    U S   US   -  U S   US   -  -   $ )Nr   r   r   r   r4   s     r   !stencil_with_standard_indexing_1drB   9   s%    R51Q4<!A$1+%%r   c                 `    U S   US   -  U S   US   -  -   U S   US   -  -   U S   U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                     U S-   $ Nr   r   r   s    r   addone_njitrG   D   s    q5Lr   Tparallelc                     U S-   $ rF   r   r   s    r   addone_pjitrK   J   s    1ur   c                   J   ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
S	rU =r$ )
TestStencilBaseO   Fc                 h   > [        5       U l        SU R                  l        [        [        U ]  " U6   g NT)r	   cflagsnrtsuperrM   __init__)selfargs	__class__s     r   rT   TestStencilBase.__init__S   s&    got-t4r   c           	          [        [        R                  R                  [        R                  R                  XS U0 5      $ N)r   r   
cpu_targettyping_contexttarget_context)rU   funcsigflagss       r   _compile_thisTestStencilBase._compile_thisZ   s5    X00??%00??!5". 	.r   c                 ~    [        5       nSUl        U(       d  SOUn[        U5      Ul        U R	                  XU5      $ rP   )r	   rR   r
   auto_parallelra   )rU   r^   r_   kwsr`   optionss         r   compile_parallel TestStencilBase.compile_parallel_   s9    	!$s-g6!!$U33r   c                 6    U R                  XU R                  S9$ )N)r`   )ra   rQ   )rU   r^   r_   s      r   compile_njitTestStencilBase.compile_njitf   s    !!$4;;!??r   c                     [        U Vs/ s H  n[        R                  " U5      PM     sn5      nU R                  X5      nU R	                  X5      nXv4$ s  snf rZ   )tuplenumbatypeofrg   rj   )rU   pyfuncrV   kwargsxr_   cpfunccfuncs           r   compile_allTestStencilBase.compile_alli   sP    d3dU\\!_d34&&v3!!&.} 4s    Ac                    U R                   " U/UQ76 u  pEU" U6 nU" U6 nUR                  " U6 nUR                  " U6 n	[        R                  R	                  XvSS9  [        R                  R	                  XSS9  [        R                  R	                  XSS9  U R                  SUR                  R                  5       5        g )N   decimal@do_scheduling)ru   entry_pointnptestingassert_almost_equalassertInlibraryget_llvm_str)
rU   no_stencil_funcrp   rV   rt   rs   expected	py_outputnjit_outputparfor_outputs
             r   checkTestStencilBase.checkq   s    ((7$7"D)DM	 ''. **D1


&&yA&F


&&{a&H


&&}&J 	&(C(C(EFr   )rQ   )__name__
__module____qualname____firstlineno___numba_parallel_test_rT   ra   rg   rj   ru   r   __static_attributes____classcell__rW   s   @r   rM   rM   O   s/    !5.
4@G Gr   rM   c                     ^  \ rS rSrU 4S jr\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
\S 5       r\S	 5       r\S
 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rSrU =r$ )TestStencil   c                 .   > [         [        U ]
  " U0 UD6  g rZ   )rS   r   rT   rU   rV   rq   rW   s      r   rT   TestStencil.__init__   s    k4)4:6:r   c                 b    S nS nS nSnU R                  X1U5        U R                  X2U5        g)zHTests whether the optional out argument to stencil calls works.
        c                     [         R                  " U S-  5      R                  X 45      n[         R                  " U S-  5      R                  X 45      n[	        XS9nU$ )Nr1   out)r}   arangereshapezerosr   nABs      r   test_with_out0TestStencil.test_stencil1.<locals>.test_with_out   sM    		!Q$''/AA&&v.A)AHr   c                 n    [         R                  " U S-  5      R                  X 45      n[        U5      nU$ Nr1   )r}   r   r   r   r   s      r   test_without_out3TestStencil.test_stencil1.<locals>.test_without_out   /    		!Q$''/A"AHr   c                 ^   [         R                  " U S-  5      R                  X 45      n[         R                  " U S-  5      R                  X 45      n[	        SU S-
  5       HG  n[	        SU S-
  5       H1  nSXUS-   4   XS-   U4   -   XUS-
  4   -   XS-
  U4   -   -  X#U4'   M3     MI     U$ Nr1   r   r   r}   r   r   r   r'   r   r   r   r)   js        r   test_impl_seq0TestStencil.test_stencil1.<locals>.test_impl_seq   s    		!Q$''/AA&&v.A1a!e_q!a%A"a1q5k&'Aqk'245QhK'@BCE1H+'N OAdG ) % Hr   d   Nr   )rU   r   r   r   r   s        r   test_stencil1TestStencil.test_stencil1   s4    		
	 

=3

=A6r   c                    S nS nSnU R                  X!U5        S nS nSnSnU R                  U[        R                  [        R                  45      nU" X45      nUR	                  X45      n[
        R                  R                  XvSS9  U R                  S	UR                  R                  5       5        S
 nSnU R                  U[        R                  [        R                  [        R                  45      nUR	                  X4U5      n[
        R                  R                  XvSS9  U R                  S	UR                  R                  5       5        S nSnU R                  U[        R                  [        R                  [        R                  45      nUR	                  X4U5      n[
        R                  R                  XvSS9  U R                  S	UR                  R                  5       5        g)zPTests whether the optional neighborhood argument to the stencil
decorate works.
c                 H    [         R                  " U 5      n[        U5      nU$ rZ   )r}   r   r*   r   s      r   test_seq+TestStencil.test_stencil2.<locals>.test_seq   s    		!A"AHr   c                     [         R                  " U 5      n[         R                  " U 5      n[        S[	        U5      5       H  nS[        XS-
  US-    5      -  X#'   M     U$ )N   r%   r   r}   r   r   r'   lensumr   r   r   r)   s       r   r   0TestStencil.test_stencil2.<locals>.test_impl_seq   sS    		!AA1c!f%Sq5Q00 &Hr   r   c                 t    [         R                  " U 5      nS n[        R                  " X1* U44S9" X!5      nU$ )Nc                 X    X*    n[        U* S-   US-   5       H
  nX U   -  nM     SU-  $ Nr   r%   r&   r   r9   r(   r)   s       r   r*   DTestStencil.test_stencil2.<locals>.test_seq.<locals>.stencil2_kernel   s;    erAvq1u-AQ4KC .Sy r   r!   r}   r   rn   r   )r   r9   r   r*   r   s        r   r   r      s6    		!A!
 ob!WKHNAHr   c                     [         R                  " U 5      n[         R                  " U 5      n[        U[	        U5      U-
  5       H  nS[        X$U-
  XA-   S-    5      -  X4'   M     U$ )Nr%   r   r   )r   r9   r   r   r)   s        r   r   r      sZ    		!AA1c!fqj)Sq5!344 *Hr   r   rx   ry   r{   c                 z    [         R                  " U 5      nS n[        R                  " XA* U44U* 4S9" X15      nU$ )Nc                 d    X* S-      n[        U* S-   US-   5       H  nX US-      -  nM     SU-  $ r   r&   r   s       r   r*   r      sC    QirAvq1u-AQU8OC .Sy r   r"   index_offsetsr   r   r9   offsetr   r*   r   s         r   r   r      sB    		!A!
 ob!WK.4WK99:?AHr   r   c                 z    [         R                  " U 5      nS n[        R                  " XA* U44U* 4S9" X15      nU$ )Nc                 F    S[         R                  " X* S-   US-    5      -  $ )Nr%   r   r1   )r}   r   )r   r9   s     r   r*   r      s$    RVVAb1fQUO444r   r   r   r   s         r   r   r      s@    		!A5ob!WK.4WK99:?AHr   N)r   rg   r   intpr|   r}   r~   r   r   r   r   )	rU   r   r   r   r9   rs   r   r   r   s	            r   test_stencil2TestStencil.test_stencil2   s   
	
	 

=A.			 &&x%**ejj1IJ &**10


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


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


&&}&J&(C(C(EFr   c                 L   S n[        U5      n[        USS9nSnU" U5      nU" U5      nU" U5      nU R                  US   S:H  =(       a    US   S:H  5        U R                  US   S:H  =(       a    US   S:H  5        U R                  US   S:H  =(       a    US   S:H  5        g)	zqTests whether a non-zero optional cval argument to the stencil
decorator works.  Also tests integer result type.
c                 n    [         R                  " U S-  5      R                  X 45      n[        U5      nU$ r   )r}   r   r   r2   r   s      r   r   +TestStencil.test_stencil3.<locals>.test_seq  r   r   TrH   r   r=   r+   )   r   N)r   
assertTrue)rU   r   	test_njittest_parr   seq_resnjit_respar_ress           r   test_stencil3TestStencil.test_stencil3   s    
	
 N	401+Q<1+,E#1EF#-G(4.C2GH,E#1EFr   c                 8    S nS nSnU R                  X!U5        g)z1Tests standard indexing with a 1d array.
        c                 P    [         R                  " U 5      nSS/n[        X5      nU$ )N      @      @)r}   r   rB   r   r   r   Cs       r   r   ?TestStencil.test_stencil_standard_indexing_1d.<locals>.test_seq  s'    		!Ac
A1!7AHr   c                     [         R                  " U 5      nSS/n[         R                  " U 5      n[        SU 5       H  nXS-
     US   -  X   US   -  -   X4'   M     U$ )Nr   r   r   r   r}   r   r   r'   )r   r   r   r   r)   s        r   r   DTestStencil.test_stencil_standard_indexing_1d.<locals>.test_impl_seq  s^    		!Ac
AA1a[Qx!A$!4 !Hr   r   Nr   rU   r   r   r   s       r   !test_stencil_standard_indexing_1d-TestStencil.test_stencil_standard_indexing_1d  s!    		 

=A.r   c                 8    S nS nSnU R                  X!U5        g)zLTests standard indexing with a 2d array and multiple stencil calls.
        c                     [         R                  " U S-  5      R                  X 45      n[         R                  " S5      n[	        X5      n[	        X25      nU$ )Nr1   rx   rx   )r}   r   r   onesrD   )r   r   r   r   Ds        r   r   ?TestStencil.test_stencil_standard_indexing_2d.<locals>.test_seq,  sF    		!Q$''/AA1!7A1!7AHr   c                    [         R                  " U S-  5      R                  X 45      n[         R                  " S5      n[         R                  " U S-  5      R                  X 45      n[         R                  " U S-  5      R                  X 45      n[        SU S-
  5       H\  n[        SU S-
  5       HF  nXUS-   4   US   -  XS-   U4   US   -  -   XUS-
  4   US   -  -   XS-
  U4   US   -  -   X5U4'   MH     M^     [        SU S-
  5       H\  n[        SU S-
  5       HF  nX5US-   4   US   -  X5S-   U4   US   -  -   X5US-
  4   US   -  -   X5S-
  U4   US   -  -   XEU4'   MH     M^     U$ )Nr1   r   r   r   r   r   r   )r}   r   r   r   r   r'   )r   r   r   r   r   r)   r   s          r   r   DTestStencil.test_stencil_standard_indexing_2d.<locals>.test_impl_seq3  s   		!Q$''/AAA&&v.AA&&v.A1a!e_q!a%A AE{QtW4qQ{QtW7LL AE{QuX5 689a%(ah8N OAdG ) % 1a!e_q!a%A AE{QtW4qQ{QtW7LL AE{QuX5 689a%(ah8N OAdG ) % Hr   r   Nr   r   s       r   !test_stencil_standard_indexing_2d-TestStencil.test_stencil_standard_indexing_2d(  s!    		  

=A.r   c                 b    S nS nSnU R                  X!U5        S nU R                  X!U5        g)z=Tests whether multiple inputs of the same size work.
        c                     [         R                  " U S-  5      R                  X 45      n[         R                  " U S-  5      R                  X 45      n[        X5      nU$ r   )r}   r   r   r6   r   s       r   r   :TestStencil.test_stencil_multiple_inputs.<locals>.test_seqJ  sM    		!Q$''/A		!Q$''/A-a3AHr   c                     [         R                  " U S-  5      R                  X 45      n[         R                  " U S-  5      R                  X 45      n[         R                  " U S-  5      R                  X 45      n[	        SU S-
  5       Ho  n[	        SU S-
  5       HY  nSXUS-   4   XS-   U4   -   XUS-
  4   -   XS-
  U4   -   X$US-   4   -   X$S-   U4   -   X$US-
  4   -   X$S-
  U4   -   -  X4U4'   M[     Mq     U$ r   r   )r   r   r   r   r)   r   s         r   r   ?TestStencil.test_stencil_multiple_inputs.<locals>.test_impl_seqP  s'   		!Q$''/A		!Q$''/AA&&v.A1a!e_q!a%A"a!e8qQ{2AX;')*q5!85AX;')*q5!85 AX;' *+q5!856AdG ) % Hr   rx   c                     [         R                  " U S-  5      R                  X 45      n[         R                  " U S-  5      R                  X 45      nSn[        XU5      nU$ )Nr1   r   )r}   r   r   r:   )r   r   r   r9   r   s        r   r   r   a  sT    		!Q$''/A		!Q$''/AA1!:AHr   Nr   r   s       r   test_stencil_multiple_inputs(TestStencil.test_stencil_multiple_inputsF  s6    		 

=A.	 	

=A.r   c                 8    S nS nSnU R                  XU5        g )Nc                    [         R                  " U S-  5      R                  X 45      nU S-  [         R                  " U S-  5      R                  X 45      -
  n[         R                  " U [         R                  S9n[         R
                  " X 4UR                  S9n[        SU 5       H1  n[        SU 5       H  nX5U4   (       a  XU4   OX%U4   XEU4'   M      M3     U$ )Nr1   dtyper   )r}   r   r   eyebool_r   r   r'   )r   r   r   SOr)   r   s          r   r   ;TestStencil.test_stencil_mixed_types.<locals>.test_impl_seqk  s    		!q&!))1&1AQ16*22A6::Aq)A!qww/A1a[q!A)*a4a1ga1gAdG % ! Hr   c                    [         R                  " U S-  5      R                  X 45      nU S-  [         R                  " U S-  5      R                  X 45      -
  n[         R                  " U [         R                  S9n[        XU5      nU$ )Nr1   r   )r}   r   r   r  r  r?   )r   r   r   r  r  s        r   r   6TestStencil.test_stencil_mixed_types.<locals>.test_sequ  sn    		!q&!))1&1AQ16*22A6::Aq)A5aA>AHr   rx   r   )rU   r   r   r   s       r   test_stencil_mixed_types$TestStencil.test_stencil_mixed_typesi  s!    		 

=A.r   c                 b    S nS nS nSnU R                  X1U5        U R                  X2U5        g)z&Tests 2D numba.stencil calls.
        c                     [         R                  " U S-  5      R                  X 45      n[         R                  " U S-  5      R                  X 45      n[        R
                  " S 5      " XS9  U$ )Nr1   c                 6    SU S   U S   -   U S   -   U S   -   -  $ r   r   r   s    r   <lambda>CTestStencil.test_stencil_call.<locals>.test_impl1.<locals>.<lambda>  s-    DAdGag,=%,H./h-7 %8r   r   r}   r   r   r   rn   r   r   s      r   
test_impl11TestStencil.test_stencil_call.<locals>.test_impl1  s]    		!Q$''/AA&&v.AMM 8 99:CHr   c                     [         R                  " U S-  5      R                  X 45      n[         R                  " U S-  5      R                  X 45      nS n[        R
                  " U5      " U5      nU$ )Nr1   c                 6    SU S   U S   -   U S   -   U S   -   -  $ r   r   r   s    r   sf=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_impl21TestStencil.test_stencil_call.<locals>.test_impl2  s\    		!Q$''/AA&&v.AHb!!$AHr   c                 ^   [         R                  " U S-  5      R                  X 45      n[         R                  " U S-  5      R                  X 45      n[	        SU S-
  5       HG  n[	        SU S-
  5       H1  nSXUS-   4   XS-   U4   -   XUS-
  4   -   XS-
  U4   -   -  X#U4'   M3     MI     U$ r   r   r   s        r   r   4TestStencil.test_stencil_call.<locals>.test_impl_seq  s    		!Q$''/AA&&v.A1a!e_q!a%A"a1q5kA!eQhK&?()QU('467Aqk'B CAdG ) % Hr   r   Nr   )rU   r  r  r   r   s        r   test_stencil_callTestStencil.test_stencil_call  s4    			 

=a0

=a0r   c                 8    S nS nSnU R                  X!U5        g)z&Tests 1D numba.stencil calls.
        c                     [         R                  " U 5      n[         R                  " U 5      n[        R                  " S 5      " XS9  U$ )Nc                 *    SU S   U S   -   U S   -   -  $ Nr%   r   r   r   r   r   s    r   r  ETestStencil.test_stencil_call_1D.<locals>.test_impl.<locals>.<lambda>  s    C1R51Q4<!A$+>$?r   r   r}   r   r   rn   r   r   s      r   	test_impl3TestStencil.test_stencil_call_1D.<locals>.test_impl  s3    		!AAMM?@JHr   c                     [         R                  " U 5      n[         R                  " U 5      n[        SU S-
  5       H  nSXS-
     X   -   XS-      -   -  X#'   M     U$ r   r   r   s       r   r   7TestStencil.test_stencil_call_1D.<locals>.test_impl_seq  sX    		!AA1a!e_aAhoa%89 %Hr   r   Nr   rU   r"  r   r   s       r   test_stencil_call_1D TestStencil.test_stencil_call_1D  s!    		 

=Q/r   c                 D   S nS nS nS nS nSnU R                  U[        R                  45      nU R                  U[        R                  45      nU R                  U[        R                  45      n	U R                  U[        R                  45      n
U" U5      nUR                  U5      nUR                  U5      nU	R                  U5      nU
R                  U5      n[        R
                  R                  XSS9  [        R
                  R                  XSS9  [        R
                  R                  XSS9  [        R
                  R                  XSS9  U R                  [        5       nU" S	5        S
S
S
5        U R                  S[        WR                  5      5        U R                  [        [        45       n[        U5      " S	5        S
S
S
5        U R                  S[        UR                  5      5        g
! , (       d  f       N= f! , (       d  f       NE= f)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                     [         R                  " U 5      n[         R                  " U 5      nSn[        R                  " S 5      " XUS9  U$ )Nr   c                 (    SX*    U S   -   X   -   -  $ Nr%   r   r   r   cs     r   r  ITestStencil.test_stencil_call_const.<locals>.test_impl1.<locals>.<lambda>  s    saeadlQT.A'Br   r   r!  r   r   r   r.  s       r   r  7TestStencil.test_stencil_call_const.<locals>.test_impl1  s:    		!AAAMMBCAaPHr   c                     [         R                  " U 5      n[         R                  " U 5      nSn[        R                  " S 5      " XUS9  U$ )Nr1   c                 4    SU SU-
     U S   -   XS-
     -   -  $ Nr%   r   r   r   r-  s     r   r  ITestStencil.test_stencil_call_const.<locals>.test_impl2.<locals>.<lambda>  s$    SAa!eHqtOaAh$>?r   r   r!  r0  s       r   r  7TestStencil.test_stencil_call_const.<locals>.test_impl2  sA    		!AAAMM?AAB1NHr   c                     [         R                  " U 5      n[         R                  " U 5      nSn[        R                  " S 5      " XUS9  U$ )Nr1   c                 4    SX* S-      U S   -   XS-
     -   -  $ r4  r   r-  s     r   r  ITestStencil.test_stencil_call_const.<locals>.test_impl3.<locals>.<lambda>  s%    SAb1fI!$4qQx$?@r   r   r!  r0  s       r   
test_impl37TestStencil.test_stencil_call_const.<locals>.test_impl3  sA    		!AAAMM@BBCAOHr   c                     [         R                  " U 5      n[         R                  " U 5      nSnSn[        R                  " S 5      " XUUS9  U$ )Nr   r1   c                 4    SX* U-      U S   -   XU-
     -   -  $ r,  r   )r   r.  ds      r   r  ITestStencil.test_stencil_call_const.<locals>.test_impl4.<locals>.<lambda>  s%    saQi!A$&6q5&ABr   r   r!  )r   r   r   r>  r.  s        r   
test_impl47TestStencil.test_stencil_call_const.<locals>.test_impl4  sK    		!AAAAMMBDDE!HIK Hr   c                     [         R                  " U 5      n[         R                  " U 5      nSn[        SU S-
  5       H  nSXU-
     X   -   XU-      -   -  X$'   M     U$ r   r   )r   r   r   r.  r)   s        r   r   :TestStencil.test_stencil_call_const.<locals>.test_impl_seq  s]    		!AAA1a!e_aAhoa%89 %Hr   r   rx   ry   r   NzDstencil kernel index is not constant, 'neighborhood' option required)rg   r   r   r|   r}   r~   r   assertRaisesr   r   str	exceptionr   r   )rU   r  r  r:  r@  r   r   cpfunc1cpfunc2cpfunc3cpfunc4r   parfor_output1parfor_output2parfor_output3parfor_output4es                    r   test_stencil_call_const#TestStencil.test_stencil_call_const  s   					 ''
UZZMB''
UZZMB''
UZZMB''
UZZMB # ,,Q/ ,,Q/ ,,Q/ ,,Q/


&&~&K


&&~&K


&&~&K


&&~&K /1qM 0 	 78;AKK8H	J ?@AQ A 	 78;AKK8H	J 0/ A@s   /	H  H 
H
Hc                     S nU R                  U[        R                  SS 4SS9nU R                  SUR                  R                  5       5        g)zFTests 1D numba.stencil calls without parallel translation
turned off.
c                 <    [         R                  " S 5      " U 5      $ )Nc                 *    SU S   U S   -   U S   -   -  $ r  r   r   s    r   r  JTestStencil.test_stencil_parallel_off.<locals>.test_impl.<locals>.<lambda>
  s    3!B%!A$,12E+Fr   )rn   r   )r   s    r   r"  8TestStencil.test_stencil_parallel_off.<locals>.test_impl	  s    ==!FGJJr   NFr   r{   )rg   rn   float64assertNotInr   r   )rU   r"  rs   s      r   test_stencil_parallel_off%TestStencil.test_stencil_parallel_off  sP    
	K &&y5==3C2E/4 ' 6)6>>+F+F+HIr   c                     [        SS9S 5       nS n[        R                  " S5      n[        R                  R	                  U" U5      U" U5      5        g)z6Tests whether nested stencil decorator works.
        TrH   c                 .    [         S 5       nU" U 5      nU$ )Nc                     SnX* S-      $ )Nr1   r   r   r-  s     r   fun@TestStencil.test_stencil_nested1.<locals>.test_impl.<locals>.fun  s    ay r   rW  )r   r_  r   s      r   r"  3TestStencil.test_stencil_nested1.<locals>.test_impl  s$    ! ! AAHr   c                     [         R                  " [        U 5      [        S9n[	        S[        U 5      5       H  nXS-
     X'   M     U$ )Nr   r   )r}   r   r   intr'   )r   r   r)   s      r   r   7TestStencil.test_stencil_nested1.<locals>.test_impl_seq  s=    Qs+A1c!f%Qx &Hr   
   N)r   r}   r   r~   assert_equalr&  s       r   test_stencil_nested1 TestStencil.test_stencil_nested1  sL     
t		 
		 IIbM


	!mA.>?r   c                 $  ^ SS/nS nU H  n[         R                  " X#S9mU4S jn[        R                  " S5      R	                  S5      n[        R
                  " US5      nX6S	S
S
24'   [        R                  " U5      nT" XWS9  [        R                  R                  Xv5        U R                  U5      nU H2  n	U	R                  5       n
[        R                  R                  X5        M4     M     [         R                  " USS9mU4S jn[        R                  " S5      R	                  S5      n[        R                  " U5      nU R                  [        5       nT" XWS9  S
S
S
5        SnU R                  U[        WR                  5      5        U R                   U R"                  4 H  n U" US5        [%        S5      e   g
! , (       d  f       Nh= f! [        [&        4 a&  nU R                  U[        U5      5         S
nAM]  S
nAff = f)z.Issue #3518, out kwarg did not work with cval.   r   c                     U S   U S   -
  $ Nr=   r   r   r   s    r   kernel1TestStencil.test_out_kwarg_w_cval.<locals>.kernel,  s    dGag%&r   r,   c                     > [         R                  " S5      R                  S5      n [         R                  " U 5      nT" XS9  U$ N   rx   r   r   r}   r   r   	ones_liker   ret
stencil_fns     r   wrapped2TestStencil.test_out_kwarg_w_cval.<locals>.wrapped2  s5    IIbM))&1ll1o1&
r   rq  rr  r$   r   Nr                 ?c                     > [         R                  " S5      R                  S5      n [         R                  " U 5      nT" XS9  U$ rp  rs  ru  s     r   rx  ry  I  s5    		"%%f-A,,q/Cq"Jr   z-cval type does not match stencil return type.r   zExpected error was not raised)rn   r   r}   r   r   	full_likert  r~   r   ru   r|   rD  r   r   rE  rF  rj   rg   AssertionErrorr   )rU   
const_valsrm  	const_valrx  r   r   rv  implsimplgotrO  msgcompilerrw  s                 @r   test_out_kwarg_w_cval!TestStencil.test_out_kwarg_w_cval&  s    X
	' $Iv>J 		"%%f-A||Ar*H'RUO,,q/Cq"JJ**39 $$W.E&&(

..s= ' $0 ]]63
	 IIbM!!&)ll1o/1q" 0=c3q{{+,**D,A,ABHF$ %%DEE C 0/ $]3 +c3q6**+s$   G1	G
GH)H

Hc                 h  ^
 [         R                  [         R                  [         R                  * [        S5      [        S5      * 4 H  nS n[        R
                  " X!S9m
U
4S jn[         R                  " S5      R                  S5      n[         R                  " US5      nXSS	S	24'   [         R                  " U5      nT
" XFS
9  [         R                  R                  Xe5        U R                  U5      nU H2  nUR                  5       n	[         R                  R                  X5        M4     M     g	)LTest issue #7286 where the cval is a np attr/string-based numerical
constantinfc                     U S   U S   -
  $ rl  r   r   s    r   rm  9TestStencil.test_out_kwarg_w_cval_np_attr.<locals>.kernelc  s    $!D')*r   r,   c                     > [         R                  " S5      R                  S5      n [         R                  " U 5      nT" XS9  U$ )N      (@rr  r   rs  ru  s     r   rx  :TestStencil.test_out_kwarg_w_cval_np_attr.<locals>.wrappedh  s5    IIcN**62ll1o1&
r   r  rr  r$   r   Nr   )r}   nanr  floatrn   r   r   r   r|  rt  r~   r   ru   r|   )rU   r-   rm  rx  r   r   rv  r  r  r  rw  s             @r   test_out_kwarg_w_cval_np_attr)TestStencil.test_out_kwarg_w_cval_np_attr^  s     VVRVVbffWeElU5\MJD+ v9J 		#&&v.A||Ar*H"RUO,,q/Cq"JJ**39 $$W.E&&(

..s= - Kr   r   )r   r   r   r   rT   skip_unsupportedr   r   r   r   r   r   r  r  r'  rP  rZ  rg  r  r  r   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                   ^  ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)\*RV                  " S(5      S) 5       r,S* r-S+ r.S, r/S- r0S. r1S/ r2S0 r3S1 r4S2 r5S3 r6S4 r7S5 r8S6 r9S7 r:S8 r;S9 r<S: r=S; r>S< r?\*RV                  " S=5      S> 5       r@S? rAS@ rBSA rCSB rDSC rESD rFSE rGSF rHSG rISH rJSI rKSJ rLSK rMSL rNSM rOSN rPSO rQSP rRSQ rSSR rTSS rUST rVSU rWSV rXSW rYSX rZSY r[SZ r\S[ r]S\ r^S] r_S^ r`S_ raS` rbSa rcSb rdSc reSd rfSe rgSf rhSg riSh rjSi rkSj rlSk rmSl rnSm ro\*RV                  " Sn5      So 5       rpSp rq\*RV                  " Sn5      Sq 5       rrSr rsSsrtU =ru$ )tTestManyStencilsi}  c                 .   > [         [        U ]
  " U0 UD6  g rZ   )rS   r  rT   r   s      r   rT   TestManyStencils.__init__  s    .??r   c           	      	  ^^^ UR                  S[        5       5      nUR                  S5      nSn/ m/ m[        S%UU4S jj5       n[        U[        5      (       a  US   n	US   n
US   nOUn	Un
UnS	U0nUR	                  U5        SnU" U	S
5         [        S&0 UD6mT" U6 nSSS5        [        U5      S:X  a  U4S jnOC[        U5      S:X  a  U4S jnO-[        U5      S:X  a  U4S jnO[        S[        U5      -  5      e[        U Vs/ s H  n[        R                  " U5      PM     sn5      nSnU" U
S5         U R                  UU5      nUR                  " U6 nSSS5        SnU" US5         U R                  UU5      nUR                  " U6 nSSS5        U(       a$  [        SU5        [        SU5        [        SU5         U	(       dD  [        R                   R#                  XSS9  U R%                  UR&                  UR&                  5         U
(       dE  [        R                   R#                  UUSS9  U R%                  UR&                  UR&                  5         U(       dq  [        R                   R#                  UUSS9  U R%                  UR&                  UR&                  5         U R1                  SWR2                  R5                  5       5        O U(       a  [        S5        T(       a#  T Vs/ s H  nSU-  PM
     nn[9        SU-  5      eT(       aU  T Vs/ s H  nSUS    -  PM     nnS!R;                  T Vs/ s H  nS"U-  PM
     sn5      nS#U-  nS$U-  n[9        UU-   5      eg! , (       d  f       GN= fs  snf ! , (       d  f       GN2= f! , (       d  f       GN= f! [(         aN  nTR+                  S
[-        U5      < S[/        U5      < 345        [        S[/        U5      -  5         SnAGNSnAff = f! [(         aN  nTR+                  S[-        U5      < S[/        U5      < 345        [        S[/        U5      -  5         SnAGNSnAff = f! [6         a    Sn[7        U5      ef = f! [(         aN  nTR+                  S[-        U5      < S[/        U5      < 345        [        S[/        U5      -  5         SnAGNSnAff = fs  snf s  snf s  snf )'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.
rf   expected_exceptionFNc           	   3   F  >#     S v   U b  TR                  U5        g g ! [         au  nU b<  [        U S5      (       a  U OU /nSnU H  nU[        X%5      -  nM     U(       d  e  S nAg TR                  U[	        U5      < S[        U5      < 345         S nAg S nAff = f7fN__iter__F: append	Exceptionhasattr
isinstancetyperE  extyusecaserO  lextyfoundexshould_failshould_not_fails         r   errorhandler=TestManyStencils.check_against_expected.<locals>.errorhandler       0 #&&w/ $  -#$+D*$=$=DD8E!E#A!22 $  ! $** q'3q6#+ ,- --6   B! B!
B:B#B!(,BB!BB!r   r   parforfunc_or_mode@stencilr   c                    > T" U 5      $ rZ   r   arg0stencil_func_impls    r   wrap_stencil=TestManyStencils.check_against_expected.<locals>.wrap_stencil      (..r   r1   c                    > T" X5      $ rZ   r   r  arg1r  s     r   r  r        (44r   rx   c                    > T" XU5      $ rZ   r   r  r  arg2r  s      r   r  r        (T::r   +Up to 3 arguments can be provided, found %sparforsz
@stencil_output:
z
njit_output:
z
parfor_output:
ry   r  z@stencil failed: %sz@njit failed: %sr{   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   
ValueErrorrm   rn   ro   rj   r|   rg   printr}   r~   r   assertEqualr   r  r  r  rE  r   r   r   r}  RuntimeErrorjoin)rU   rp   r   rV   rq   rf   r  DEBUG_OUTPUTr  
stencil_exnjit_ex	parfor_exstencil_argsstencilfunc_outputr  rr   r_   r   wrapped_cfuncr   wrapped_cpfuncrO  r  r  errsstr1str2r  r  r  s                              @@@r   check_against_expected'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3T:K +
 )Y/!22<EN*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   M5 N?"N4"N
AN0 AP #AR 0*Q& 9S#S!S&5
N
N
N-0
P:APP
Q#AQQ#&Q>>R 
SASSc                   ^^^ UR                  S[        5       5      nUR                  S5      n/ m/ m[        SUU4S jj5       n[        U[        5      (       a  US   nUS   nUS   n	OUnUnUn	SU0n
U
R	                  U5        U" US	5         [        S0 U
D6mT" U6   SSS5        [        U5      S
:X  a  U4S jnOC[        U5      S:X  a  U4S jnO-[        U5      S:X  a  U4S jnO[        S[        U5      -  5      e[        U Vs/ s H  n[        R                  " U5      PM     sn5      nU" US5         U R                  X5      nUR                  " U6   SSS5        U" U	S5         U R                  X5      nUR                  " U6   SSS5        T(       a#  T Vs/ s H  nSU-  PM
     nn[        SU-  5      eT(       aU  T Vs/ s H  nSUS   -  PM     nnSR                  T Vs/ s H  nSU-  PM
     sn5      nSU-  nSU-  n[        UU-   5      eg! , (       d  f       GN= fs  snf ! , (       d  f       N= f! , (       d  f       N= fs  snf s  snf s  snf )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.
rf   r  Nc           	   3   F  >#     S v   U b  TR                  U5        g g ! [         au  nU b<  [        U S5      (       a  U OU /nSnU H  nU[        X%5      -  nM     U(       d  e  S nAg TR                  U[	        U5      < S[        U5      < 345         S nAg S nAff = f7fr  r  r  s         r   r  7TestManyStencils.check_exceptions.<locals>.errorhandler@  r  r  r   r   r  r  r  r   c                    > T" U 5      $ rZ   r   r  s    r   r  7TestManyStencils.check_exceptions.<locals>.wrap_stencilg  r  r   r1   c                    > T" X5      $ rZ   r   r  s     r   r  r  j  r  r   rx   c                    > T" XU5      $ rZ   r   r  s      r   r  r  m  r  r   r  r  r  r  r   r  r  r  r  r  r   )r  r  r   r  r  r   r   r  rm   rn   ro   rj   r|   rg   r  r  )rU   rp   rV   rq   rf   r  r  r  r  r  r  r  rr   r_   r  r  r  r  r  r  r  r  r  r  s                        @@@r   check_exceptions!TestManyStencils.check_exceptions(  sv     **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* --l@M%%t, +
 )Y/!22<EN&&- 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<   H	 H-9!H2+!II	I,I
H*2
I 
Ic                 |    [        5       nS US'   S US'   S US'   S US'   UR                  5        H	  u  p4XBU'   M     U$ )N	pyStencilr   r   r  )r  items)rU   rq   r>  kvs        r   exception_dictTestManyStencils.exception_dict  sK    F+)&	(LLNDAaD #r   c                    UR                  S5      nUS   R                  nUb#  [        U5      [        U5      :w  a  [        S5      eUSS   H0  n[	        US5      (       d  M  XER                  :w  d  M'  [        S5      e   g )Nr"   r   zInvalid neighborhood suppliedr   shapez#Input stencil arrays do not commute)r  r  r   r  r  )rU   rV   rq   r"   
init_shaperr   s         r   check_stencil_arrays%TestManyStencils.check_stencil_arrays  ss    zz.1!W]]
#:#l"33 !@AAabAq'""($%JKK r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)z	rel indexc                     U S   $ r<   r   r   s    r   rm  -TestManyStencils.test_basic00.<locals>.kernel      T7Nr   c                 (  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       H3  n[        SU R                  S   5       H  nXS-   US-   4   X5U4'   M     M5     U$ Nr!   r   r   r   r  r}   fullr  r  r'   r   r"   _TestManyStencils__retdtype_TestManyStencils__b0_TestManyStencils__b_TestManyStencils__arm  rU   s         r   __kernel/TestManyStencils.test_basic00.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
+ AGGAJ/C%&Qwa'7%8DcN 0 , Kr   rq  rx   r   Nr}   r   r   r  rU   _TestManyStencils__kernelr   r   rm  s   `   @r   test_basic00TestManyStencils.test_basic00  sE    		 IIbM!!!Q'At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)rel index add constc                     U S   $ Nr   r   r   s    r   rm  -TestManyStencils.test_basic01.<locals>.kernel  r  r   c                 .  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H3  n[        SU R                  S   5       H  nXS-   US-   4   X5U4'   M     M5     U$ r  r  r  s         r   r  /TestManyStencils.test_basic01.<locals>.__kernel      %%a%CJ77177AT*-=>DQ
Q/ AGGAJ/C%&Qwa'7%8DcN 0 0 Kr   r  rx   r   Nr  r  s   `   @r   test_basic01TestManyStencils.test_basic01  E    		 IIcN""1a(At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)r
  c                     U S   $ )Nr   r   r   s    r   rm  -TestManyStencils.test_basic02.<locals>.kernel      U8Or   c                 (  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       H3  n[        SU R                  S   5       H  nXS-   US-   4   X5U4'   M     M5     U$ Nr!   r   r   r   r   r  r  s         r   r  /TestManyStencils.test_basic02.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
+ AGGAJ/C%&Qwb'8%9DcN 0 , Kr   r  rx   r   Nr  r  s   `   @r   test_basic02TestManyStencils.test_basic02  E    		 IIcN""1a(At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)r
  c                     U S   $ )Nr   r   r   s    r   rm  -TestManyStencils.test_basic03.<locals>.kernel  r  r   c                 .  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       H6  n[        SU R                  S   S-
  5       H  nXS-   US-   4   X5U4'   M     M8     U$ r  r  r  s         r   r  /TestManyStencils.test_basic03.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
+ AGGAJN3C%&Qwa'7%8DcN 4 , Kr   r  rx   r   Nr  r  s   `   @r   test_basic03TestManyStencils.test_basic03  r  r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)r
  c                     U S   $ )Nr   r   r   s    r   rm  -TestManyStencils.test_basic04.<locals>.kernel  r  r   c                 (  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       H3  n[        SU R                  S   5       H  nXS-   US-   4   X5U4'   M     M5     U$ r  r  r  s         r   r  /TestManyStencils.test_basic04.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
+ AGGAJ/C%&Rxq'8%9DcN 0 , Kr   r  rx   r   Nr  r  s   `   @r   test_basic04TestManyStencils.test_basic04  r  r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)r
  c                     U S   $ )Nr   r   r   r   s    r   rm  -TestManyStencils.test_basic05.<locals>.kernel  r  r   c                 .  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H3  n[        SU R                  S   5       H  nXS-   US-   4   X5U4'   M     M5     U$ r  r  r  s         r   r  /TestManyStencils.test_basic05.<locals>.__kernel      %%a%CJ77177AT*-=>DQ
Q/ AGGAJ/C%&Rxq'8%9DcN 0 0 Kr   r  rx   r   Nr  r  s   `   @r   test_basic05TestManyStencils.test_basic05  r  r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)r
  c                     U S   $ )Nr   r   r   r   s    r   rm  -TestManyStencils.test_basic06.<locals>.kernel)  r  r   c                 .  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       H6  n[        SU R                  S   S-
  5       H  nXS-   US-   4   X5U4'   M     M8     U$ r  r  r  s         r   r  /TestManyStencils.test_basic06.<locals>.__kernel/  s    %%a%CJ77177AT*-=>DQ
+ AGGAJN3C%&Qwb'8%9DcN 4 , Kr   r  rx   r   Nr  r  s   `   @r   test_basic06TestManyStencils.test_basic06'  r  r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)r
  c                     U S   $ )Nr   r   r   r   s    r   rm  -TestManyStencils.test_basic07.<locals>.kernel?  r  r   c                 4  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H6  n[        SU R                  S   S-
  5       H  nXS-   US-   4   X5U4'   M     M8     U$ r  r  r  s         r   r  /TestManyStencils.test_basic07.<locals>.__kernelE  s    %%a%CJ77177AT*-=>DQ
Q/ AGGAJN3C%&Qwa'7%8DcN 4 0 Kr   r  rx   r   Nr  r  s   `   @r   test_basic07TestManyStencils.test_basic07=  r  r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)r
  c                     U S   $ )Nr   r   r   r   s    r   rm  -TestManyStencils.test_basic08.<locals>.kernelU      V9r   c                 (  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       H3  n[        SU R                  S   5       H  nXS-   US-   4   X5U4'   M     M5     U$ r  r  r  s         r   r  /TestManyStencils.test_basic08.<locals>.__kernel[      %%a%CJ77177AT*-=>DQ
+ AGGAJ/C%&Rxr'9%:DcN 0 , Kr   r  rx   r   Nr  r  s   `   @r   test_basic08TestManyStencils.test_basic08S  sE    		 IIcN""1a(At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)r
  c                     U S   $ )Nr/   r   r   s    r   rm  -TestManyStencils.test_basic09.<locals>.kernelk  r  r   c                 .  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H3  n[        SU R                  S   5       H  nXS-   US-   4   X5U4'   M     M5     U$ )Nr!   r   r   r   r1   r0   r  r  s         r   r  /TestManyStencils.test_basic09.<locals>.__kernelq  r2  r   r  rx   r   Nr  r  s   `   @r   test_basic09TestManyStencils.test_basic09i  r  r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)r
  c                     U S   U S   -   $ rl  r   r   s    r   rm  -TestManyStencils.test_basic10.<locals>.kernel      T7QtW$$r   c                 H  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       HC  n[        SU R                  S   S-
  5       H   nXS-   US-   4   XS-   US-   4   -   X5U4'   M"     ME     U$ r  r  r  s         r   r  /TestManyStencils.test_basic10.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
+ AGGAJN3C%&Qwa'7%811WcAg=M;N%NDcN 4 , Kr   r  rx   r   Nr  r  s   `   @r   test_basic10TestManyStencils.test_basic10  sE    	%
	 IIcN""1a(At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)r
  c                     U S   U S   -   $ )Nr   r   r   r   s    r   rm  -TestManyStencils.test_basic11.<locals>.kernel  s    U8ag%%r   c                 H  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       HC  n[        SU R                  S   S-
  5       H   nXS-   US-   4   XS-   US-   4   -   X5U4'   M"     ME     U$ r  r  r  s         r   r  /TestManyStencils.test_basic11.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
+ AGGAJN3C%&Rxq'8%9AAgsQw>N<O%ODcN 4 , Kr   r  rx   r   Nr  r  s   `   @r   test_basic11TestManyStencils.test_basic11  sE    	&
	 IIcN""1a(At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)r
  c                     U S   U S   -   $ )Nr.  r7  r   r   s    r   rm  -TestManyStencils.test_basic12.<locals>.kernel  s    U8ah&&r   c                 N  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       HC  n[        SU R                  S   S-
  5       H   nXS-   US-   4   XS-   US-   4   -   X5U4'   M"     ME     U$ r  r  r  s         r   r  /TestManyStencils.test_basic12.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
Q/ AGGAJN3C%&Rxq'8%9AAgsRx>O<P%PDcN 4 0 Kr   r  rx   r   Nr  r  s   `   @r   test_basic12TestManyStencils.test_basic12  E    	'
	 IIcN""1a(At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)r
  c                     U S   U S   -   $ )NrG  r?  r   r   s    r   rm  -TestManyStencils.test_basic13.<locals>.kernel  s    V9qw&&r   c                 N  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       HC  n[        SU R                  S   S-
  5       H   nXS-   US-   4   XS-   US-   4   -   X5U4'   M"     ME     U$ r  r  r  s         r   r  /TestManyStencils.test_basic13.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
Q/ AGGAJN3C%&Rxr'9%:QQwa?O=P%PDcN 4 0 Kr   r  rx   r   Nr  r  s   `   @r   test_basic13TestManyStencils.test_basic13  rl  r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)!rel index add domain change constc                     U S   S-   $ )Nr=   rz  r   r   s    r   rm  -TestManyStencils.test_basic14.<locals>.kernel  s    T7R<r   c                 .  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       H6  n[        SU R                  S   5       H  nXS-   US-   4   S-   X5U4'   M     M8     U$ Nr!   r   r   r   rz  r  r  s         r   r  /TestManyStencils.test_basic14.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
+ AGGAJ/C%&Qwa'7%84%?DcN 0 , Kr   r  rx   r   Nr  r  s   `   @r   test_basic14TestManyStencils.test_basic14  sE    	 
	 IIcN""1a(At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)ru  c                     SnU S   U-   $ )Nrz  r=   r   r   ts     r   rm  .TestManyStencils.test_basic14b.<locals>.kernel  s    AT7Q;r   c                 2  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       H8  n[        SU R                  S   5       H  nSnXS-   US-   4   U-   X5U4'   M     M:     U$ ry  r  	r   r"   r  r  r   r  r  rm  rU   s	          r   r  0TestManyStencils.test_basic14b.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
+ AGGAJ/CA%&Qwa'7%81%<DcN 0 , Kr   r  rx   r   Nr  r  s   `   @r   test_basic14bTestManyStencils.test_basic14b  sE    		 IIcN""1a(At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)ztwo rel index, add constc                     U S   U S   -   S-   $ )Nr=   r   r+   r   r   s    r   rm  -TestManyStencils.test_basic15.<locals>.kernel      T7QtW$r))r   c                 N  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       HF  n[        SU R                  S   S-
  5       H#  nXS-   US-   4   XS-   US-   4   -   S-   X5U4'   M%     MH     U$ Nr!   r   r   r   r+   r  r  s         r   r  /TestManyStencils.test_basic15.<locals>.__kernel      %%a%CJ77177AT*-=>DQ
+ AGGAJN3C&'aq(8&9&'aq(8&9':<?'@DcN 4 , Kr   r  rx   r   Nr  r  s   `   @r   test_basic15TestManyStencils.test_basic15  sE    	*
	 IIcN""1a(At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)&two rel index boundary test, add constc                     U S   U S   -   S-   $ )Nr=   )r1   r   r+   r   r   s    r   rm  -TestManyStencils.test_basic17.<locals>.kernel  r  r   c                 N  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       HF  n[        SU R                  S   S-
  5       H#  nXS-   US-   4   XS-   US-   4   -   S-   X5U4'   M%     MH     U$ )Nr!   r   r   r   r1   r+   r  r  s         r   r  /TestManyStencils.test_basic17.<locals>.__kernel  r  r   rq  rx   r   Nr  r  s   `   @r   test_basic17TestManyStencils.test_basic17  E    	*
	 IIbM!!!Q'At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)r  c                     U S   U S   -   S-   $ )Nr=   r0   r   r+   r   r   s    r   rm  -TestManyStencils.test_basic18.<locals>.kernel-      T7QuX%**r   c                 H  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       HC  n[        SU R                  S   5       H#  nXS-   US-   4   XS-   US-   4   -   S-   X5U4'   M%     ME     U$ )Nr!   r   r   r   r1   r0   r+   r  r  s         r   r  /TestManyStencils.test_basic18.<locals>.__kernel2  s    %%a%CJ77177AT*-=>DQ
+ AGGAJ/C&'aq(8&9&'b#'(9&:';=@'ADcN 0 , Kr   rq  rx   r   Nr  r  s   `   @r   test_basic18TestManyStencils.test_basic18+  E    	+
	 IIbM!!!Q'At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)r  c                     U S   U S   -   S-   $ )Nr=   r   rx   r+   r   r   s    r   rm  -TestManyStencils.test_basic19.<locals>.kernelC  r  r   c                 N  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       HC  n[        SU R                  S   5       H#  nXS-   US-   4   XS-   US-   4   -   S-   X5U4'   M%     ME     U$ )Nr!   r   r   r   rx   r+   r  r  s         r   r  /TestManyStencils.test_basic19.<locals>.__kernelH  s    %%a%CJ77177AT*-=>DQ
Q/ AGGAJ/C&'aq(8&9&'aq(8&9':<?'@DcN 0 0 Kr   rq  rx   r   Nr  r  s   `   @r   test_basic19TestManyStencils.test_basic19A  r  r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)r  c                     U S   U S   -   S-   $ )Nr=   )r   r+   r   r   s    r   rm  -TestManyStencils.test_basic20.<locals>.kernelY  r  r   c                 H  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       HC  n[        SU R                  S   5       H#  nXS-   US-   4   XS-   US-   4   -   S-   X5U4'   M%     ME     U$ )Nr!   r   r   rx   r   r  r+   r  r  s         r   r  /TestManyStencils.test_basic20.<locals>.__kernel^  s    %%a%CJ77177AT*-=>DQ
+ AGGAJ/C&'aq(8&9&'ar(9&:';=@'ADcN 0 , Kr   rq  rx   r   Nr  r  s   `   @r   test_basic20TestManyStencils.test_basic20W  r  r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)zsame rel, add constc                     U S   U S   -   S-   $ )Nr=   r+   r   r   s    r   rm  -TestManyStencils.test_basic21.<locals>.kernelo  r  r   c                 H  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       HC  n[        SU R                  S   5       H#  nXS-   US-   4   XS-   US-   4   -   S-   X5U4'   M%     ME     U$ r  r  r  s         r   r  /TestManyStencils.test_basic21.<locals>.__kernelt  s    %%a%CJ77177AT*-=>DQ
+ AGGAJ/C&'aq(8&9&'aq(8&9':<?'@DcN 0 , Kr   rq  rx   r   Nr  r  s   `   @r   test_basic21TestManyStencils.test_basic21m  r  r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)z%rel idx const expr folding, add constc                     U S   U S   -   S-   $ )Nr   r=   r+   r   r   s    r   rm  -TestManyStencils.test_basic22.<locals>.kernel  s    X;4(2--r   c                 N  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       HF  n[        SU R                  S   S-
  5       H#  nXS-   US-   4   XS-   US-   4   -   S-   X5U4'   M%     MH     U$ r  r  r  s         r   r  /TestManyStencils.test_basic22.<locals>.__kernel  r  r   r  rx   r   Nr  r  s   `   @r   test_basic22TestManyStencils.test_basic22  sE    	.
	 IIcN""1a(At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)zrel idx, work in bodyc                 V    [         R                  " SU S   -   5      nU S   U S   -   U-   $ Nre  )r1   r   r   r=   r}   sinr   rr   s     r   rm  -TestManyStencils.test_basic23.<locals>.kernel  s0    rAdG|$AX;4(1,,r   c           	        > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       Hi  n[        SU R                  S   S-
  5       HF  n[        R                  " SXS-   US-   4   -   5      nXS-   US-   4   XS-   US-   4   -   U-   X5U4'   MH     Mk     U$ Nr!   r   r   r   r1   re  r  r}   r  r  r  r'   r  	r   r"   r  r  r   r  rr   rm  rU   s	          r   r  /TestManyStencils.test_basic23.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
Q/ AGGAJN3CrAAgsQw&6$778A&'aq(8&9&'aq(8&9':<='>DcN 4 0
 Kr   r  rx   r   Nr  r  s   `   @r   test_basic23TestManyStencils.test_basic23  sE    	-		 IIcN""1a(At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)z,rel idx, dead code should not impact rel idxc                 P    [         R                  " SU S   -   5      nU S   U S   -   $ r  r  r  s     r   rm  .TestManyStencils.test_basic23a.<locals>.kernel  s+    rAdG|$AX;4((r   c           	        > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       Hf  n[        SU R                  S   S-
  5       HC  n[        R                  " SXS-   US-   4   -   5      nXS-   US-   4   XS-   US-   4   -   X5U4'   ME     Mh     U$ r  r  r  s	          r   r  0TestManyStencils.test_basic23a.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
Q/ AGGAJN3CrAAgsQw&6$778A%&Qwa'7%811WcAg=M;N%NDcN 4 0 Kr   r  rx   r   Nr  r  s   `   @r   test_basic23aTestManyStencils.test_basic23a  sE    	)	 IIcN""1a(At$##FH8r   c                     [         R                  " S5      R                  SS5      nS nU R                  X![        /S9  g)z1d idx on 2d arrrq  rx   r   c                     U S   S-   $ )Nr   r+   r   r   s    r   rm  -TestManyStencils.test_basic24.<locals>.kernel  s    Q4"9r   r  N)r}   r   r   r  r   rU   r   rm  s      r   test_basic24TestManyStencils.test_basic24  s8    IIbM!!!Q'	 	f[NKr   c                     [         R                  " S5      R                  SS5      nS nU R                  X![        [
        /S9  g)zno idx on 2d arrrq  rx   r   c                     g)Nr+   r   r   s    r   rm  -TestManyStencils.test_basic25.<locals>.kernel  s    r   r  Nr}   r   r   r  r  r   r  s      r   test_basic25TestManyStencils.test_basic25  s@    IIbM!!!Q'	fZ=L=O 	Pr   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SSS5      nU" US5      nT R                  TX25        g)z3d arrc                     U S   U S   -
  S-   $ )N)r   r   r   )r   r   r   r+   r   r   s    r   rm  -TestManyStencils.test_basic26.<locals>.kernel  s    W:'
*R//r   c           	        > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       Hn  n[        SU R                  S   S-
  5       HK  n[        SU R                  S   5       H+  nXS-   US-   US-   4   XS-   US-   US-   4   -
  S-   X6XT4'   M-     MM     Mp     U$ )Nr!   r   r   r1   r   r+   r  )	r   r"   r  r  _TestManyStencils__cr   r  rm  rU   s	          r   r  /TestManyStencils.test_basic26.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
+ AGGAJN3C$Q
3/0q#'371J/K/0q#'371J/K0L/203#]+  4 4 , Kr   @   r      r1   Nr  r  s   `   @r   test_basic26TestManyStencils.test_basic26  sG    	0

	 IIbM!!!Q*At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SSSS5      nU" US5      nT R                  TX25        g)z4d arrc                     U S   U S   -
  S-   $ )N)r   r   r   r   )r   r   r   r   r+   r   r   s    r   rm  -TestManyStencils.test_basic27.<locals>.kernel  s    Z=1[>1B66r   c                   > T	R                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       H  n[        SU R                  S   5       Hw  n[        SU R                  S   S-
  5       HT  n[        SU R                  S   5       H4  nXS-   US-   US-   US-   4   XS-   US-   US-   US-   4   -
  S-   X7XeU4'   M6     MV     My     M     U$ )	Nr!   r   r   r   rx   r1   r   r+   r  )
r   r"   r  r  _TestManyStencils__dr  r   r  rm  rU   s
           r   r  /TestManyStencils.test_basic27.<locals>.__kernel  s   %%a%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<Dc!34 $8  8 0 , Kr      r   r  r1   Nr  r  s   `   @r   test_basic27TestManyStencils.test_basic27  sI    	7	  IIcN""1aA.At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      R                  [         R                  5      nU" US5      nT R                  TX25        g)ztype widen c                 :    U S   [         R                  " S5      -   $ )Nr=         $@)r}   rX  r   s    r   rm  -TestManyStencils.test_basic28.<locals>.kernel  s    T7RZZ_,,r   c                 V  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       HJ  n[        SU R                  S   5       H*  nXS-   US-   4   [        R                  " S5      -   X5U4'   M,     ML     U$ )Nr!   r   r   r   r  )r  r}   r  r  r  r'   rX  r  s         r   r  /TestManyStencils.test_basic28.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
+ AGGAJ/C%&Qwa'7%82::d;K%KDcN 0 , Kr   rq  rx   r   Nr}   r   r   astypefloat32r  r  s   `   @r   test_basic28TestManyStencils.test_basic28  sT    	-	 IIbM!!!Q'..rzz:At$##FH8r   c                     [         R                  " S5      R                  SS5      nS nU R                  X![        [
        [        /S9  g)zconst index from func r  rx   r   c                 J    U S[        [        R                  " S5      5      4   $ )Nr   )rc  r}   cosr   s    r   rm  -TestManyStencils.test_basic29.<locals>.kernel)  s    QBFF1I&''r   r  Nr}   r   r   r  r  r   r   r  s      r   test_basic29TestManyStencils.test_basic29%  sC    IIcN""1a(	(fZ=L=J=L 	Mr   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      R                  [         R                  5      nU" US5      nT R                  TX25        g)zsigned zerosc                     U S   $ r<   r   r   s    r   rm  -TestManyStencils.test_basic30.<locals>.kernel1  rI  r   c                 (  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       H3  n[        SU R                  S   5       H  nXS-   US-   4   X5U4'   M     M5     U$ r  r  r  s         r   r  /TestManyStencils.test_basic30.<locals>.__kernel6  rL  r   rq  rx   r   Nr  r  s   `   @r   test_basic30TestManyStencils.test_basic30/  sT    	
	 IIbM!!!Q'..rzz:At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      R                  [         R                  5      nU" US5      nT R                  TX25        g)zdoes a const propagate? 2Dc                     SnXS4   $ Nr   r   r   r  s     r   rm  -TestManyStencils.test_basic31.<locals>.kernelF  s    AT7Nr   c                 2  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       H8  n[        SU R                  S   S-
  5       H  nSnXU-   US-   4   X5U4'   M     M:     U$ r  r  r  s	          r   r  /TestManyStencils.test_basic31.<locals>.__kernelL  s    %%a%CJ77177AT*-=>DQ
+ AGGAJN3CA%&Qwa'7%8DcN 4 , Kr   rq  rx   r   Nr  r  s   `   @r   test_basic31TestManyStencils.test_basic31D  sT    		 IIbM!!!Q'..rzz:At$##FH8r   z constant folding not implementedc                 V    [         R                  " S5      R                  SS5      nS ng)zdoes a const propagate?r  rx   r   c                     SnSU-
  nXS4   $ r  r   )r   sr  s      r   rm  .TestManyStencils.test_basic31b.<locals>.kernel_  s    AAAT7Nr   N)r}   r   r   r  s      r   test_basic31bTestManyStencils.test_basic31bZ  s#     IIcN""1a(	r   c                 ~   ^ ^ S mUU 4S jn[         R                  " S5      nU" US5      nT R                  TX25        g)zdoes a const propagate? 1Dc                     SnX   $ rF   r   r  s     r   rm  .TestManyStencils.test_basic31c.<locals>.kernelh  s    A4Kr   c                    > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H  nSnXU-      X44'   M     U$ r  r  )r   r"   r  r  r  r  rm  rU   s         r   r  0TestManyStencils.test_basic31c.<locals>.__kerneln  sp    %%a%CJ77177AT*-=>DQ
Q/QwZT
 0 Kr   r  Nr}   r   r  r  s   `   @r   test_basic31cTestManyStencils.test_basic31cf  s8    		 IIcNAt$##FH8r   c                     [         R                  " S5      R                  SS5      nS nU R                  X![        [
        [        /S9  g)ztyped int indexr  rx   r   c                 8    U [         R                  " S5      S4   $ r  )r}   int8r   s    r   rm  -TestManyStencils.test_basic32.<locals>.kernel  s    RWWQZ]##r   r  Nr  r  s      r   test_basic32TestManyStencils.test_basic32{  sC    IIcN""1a(	$fZ=L=J=L 	Mr   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)zadd 0d arrayc                 :    U S   [         R                  " S5      -   $ )Nr=   r   )r}   arrayr   s    r   rm  -TestManyStencils.test_basic33.<locals>.kernel  s    T7RXXa[((r   c                 V  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       HJ  n[        SU R                  S   5       H*  nXS-   US-   4   [        R                  " S5      -   X5U4'   M,     ML     U$ r  )r  r}   r  r  r  r'   r.  r  s         r   r  /TestManyStencils.test_basic33.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
+ AGGAJ/C%&Qwa'7%8288A;%FDcN 0 , Kr   r  rx   r   Nr  r  s   `   @r   test_basic33TestManyStencils.test_basic33  sE    	)
	 IIcN""1a(At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)z<More complex rel index with dependency on addition rel indexc                 l    SU S   -   nXS   U S   -   U S   -   [         R                  " U S   5      -   -   $ )N      @r   r   r   r  r  )r   gs     r   rm  -TestManyStencils.test_basic34.<locals>.kernel  s@    QtWA$!D')AeH4rvvah7GGHHr   c           
        > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H  n[        SU R                  S   S-
  5       H`  nSXS-   US-   4   -   nX`US-   US-   4   XS-   US-   4   -   XS-   US-   4   -   [        R                  " XS-   US-   4   5      -   -   X5U4'   Mb     M     U$ )	Nr!   r   r   r   r1   r6  r   r0   r  )	r   r"   r  r  r   r  r7  rm  rU   s	          r   r  /TestManyStencils.test_basic34.<locals>.__kernel  s
   %%a%CJ77177AT*-=>DQ
Q/ AGGAJN3Caaq 011A%&C!GS1W,<*=*+!GS1W,<*=+>*+!GS2X,=*>+? +-&&8S1W3D1E*F+G &HDcN 4 0 Kr      rq  Nr  r  s   `   @r   test_basic34TestManyStencils.test_basic34  sF    	I	 IIcN""2r*At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX2SS0S	9  g)
z<simple cval where cval is int but castable to dtype of floatc                     U S   $ r  r   r   s    r   rm  -TestManyStencils.test_basic35.<locals>.kernel  r  r   c                 .  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H3  n[        SU R                  S   5       H  nXS-   US-   4   X5U4'   M     M5     U$ )Nr!   r   r   r   r   r  r  s         r   r  /TestManyStencils.test_basic35.<locals>.__kernel  r  r   r  rx   r   Nr-   r   rf   r  r  s   `   @r   test_basic35TestManyStencils.test_basic35  sN    	
	 IIcN""1a(At$##FH&!#Mr   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX2SS0S	9  g)
zmore complex with cvalc                 0    U S   U S   -   U S   -   U S   -   $ Nr   r   r7  r   r   s    r   rm  -TestManyStencils.test_basic36.<locals>.kernel  '    T7QuX%%01U8;;r   c                   > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H]  n[        SU R                  S   S-
  5       H:  nXS-   US-   4   XS-   US-   4   -   XS-   US-   4   -   XS-   US-   4   -   X5U4'   M<     M_     U$ )Nr!   g      @r   r   r   r   r  r  s         r   r  /TestManyStencils.test_basic36.<locals>.__kernel  s    %%a%CJ77177CtJ/?@DQ
Q/ AGGAJN3C&'aq(8&9&'ar(9&:';&'ar(9&:'; '(ar(9&:';DcN 4 0 Kr   r  rx   r   Nr-   r   rC  r  r  s   `   @r   test_basic36TestManyStencils.test_basic36  sN    	<

	 IIcN""1a(At$##FH&!#Mr   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX2SS0S	9  g)
zcval is exprc                 0    U S   U S   -   U S   -   U S   -   $ rH  r   r   s    r   rm  -TestManyStencils.test_basic37.<locals>.kernel  rJ  r   c                   > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H]  n[        SU R                  S   S-
  5       H:  nXS-   US-   4   XS-   US-   4   -   XS-   US-   4   -   XS-   US-   4   -   X5U4'   M<     M_     U$ )Nr!         Q@r   r   r   r   r  r  s         r   r  /TestManyStencils.test_basic37.<locals>.__kernel      %%a%CJ77177DZ0@ADQ
Q/ AGGAJN3C&'aq(8&9&'ar(9&:';&'ar(9&:'; '(ar(9&:';DcN 4 0 Kr   r  rx   r   Nr-   rS  rC  r  r  s   `   @r   test_basic37TestManyStencils.test_basic37  sT    	<

	 IIcN""1a(At$##FH-3W,= 	$ 	?r   c                     S n[         R                  " S5      R                  SS5      nU R                  [        [        [        S9nU R                  XSS0US9  g	)
zcval is complexc                 0    U S   U S   -   U S   -   U S   -   $ rH  r   r   s    r   rm  -TestManyStencils.test_basic38.<locals>.kernel  rJ  r   r  rx   r   r   r  r   r-   rz  rf   r  Nr}   r   r   r  r   r  rU   rm  r   r  s       r   test_basic38TestManyStencils.test_basic38  s_    	<IIcN""1a(  #"  ! " 	f&#13 	 	5r   c                    ^ ^^ S m[         R                  " S5      [         R                  " S5      -   mUUU 4S jn[         R                  " S5      R	                  SS5      nU" US5      nT R                  TX2S	T0S
9  g)zcval is func exprc                 0    U S   U S   -   U S   -   U S   -   $ rH  r   r   s    r   rm  -TestManyStencils.test_basic39.<locals>.kernel  rJ  r   r   r1   c                   > TR                  XS9  T" U 5      n[        R                  " U R                  T[	        U5      S9n[        SU R                  S   S-
  5       H]  n[        SU R                  S   S-
  5       H:  nXS-   US-   4   XS-   US-   4   -   XS-   US-   4   -   XS-   US-   4   -   X5U4'   M<     M_     U$ )Nr!   r   r   r   r   r  )	r   r"   r  r  r   r  r-   rm  rU   s	         r   r  /TestManyStencils.test_basic39.<locals>.__kernel  rU  r   r  rx   r   Nr-   rC  )r}   r  r  r   r   r  )rU   r  r   r   r-   rm  s   `   @@r   test_basic39TestManyStencils.test_basic39  so    	< vvbzBFF1I%

	 IIcN""1a(At$##FH-3TN 	$ 	<r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nU" X#S5      nT R                  TXBU5        g)z2 args!c                     U S   US   -   $ Nr   )r   r0   r   r4   s     r   rm  -TestManyStencils.test_basic40.<locals>.kernel      T7QuX%%r   c                 J  > TR                  XUS9  T" X5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H@  n[        SU R                  S   5       H   nXS-   US-   4   XS-   US-   4   -   XFU4'   M"     MB     U$ )Nr!   r   r   r1   r   r0   r  	r   r5   r"   r  r  r   r  rm  rU   s	          r   r  /TestManyStencils.test_basic40.<locals>.__kernel#  s    %%a%FJ77177AT*-=>DQ
Q/ AGGAJ/C%&Qwa'7%811WcBh=N;O%ODcN 0 0 Kr   r  rx   r   Nr  rU   r  r   r5   r   rm  s   `    @r   test_basic40TestManyStencils.test_basic40  sa    	&
	 IIcN""1a(IIcN""1a(A$'##FH;r   c                     S n[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nU R                  XU[        [
        /S9  g)	z(2 args! rel arrays wildly not same size!c                     U S   US   -   $ rj  r   r4   s     r   rm  -TestManyStencils.test_basic41.<locals>.kernel3  rl  r   r  rx   r   r+   r   r  Nr}   r   r   r  r  r}  rU   rm  r   r5   s       r   test_basic41TestManyStencils.test_basic411  ]    	&IIcN""1a(IIbM!!!Q'f
@N@P 	Qr   c                     S n[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nU R                  XU[        [
        /S9  g)z%2 args! rel arrays very close in sizec                     U S   US   -   $ rj  r   r4   s     r   rm  -TestManyStencils.test_basic42.<locals>.kernel<  rl  r   r  rx   r         "@r  Nrv  rw  s       r   test_basic42TestManyStencils.test_basic42:  rz  r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nU" X#S5      nT R                  TXBU5        g)z2 args more complexityc                 0    U S   U S   -   US   -   US   -   $ )Nr   r   r1   r  r   r   r4   s     r   rm  -TestManyStencils.test_basic43.<locals>.kernelE  s'    T7QtW$qx/!E(::r   c                   > TR                  XUS9  T" X5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H]  n[        SU R                  S   S-
  5       H:  nXS-   US-   4   XS-   US-   4   -   XS-   US-   4   -   XS-   US-   4   -   XFU4'   M<     M_     U$ )Nr!   r   r   r   r1   r0   r   r  rn  s	          r   r  /TestManyStencils.test_basic43.<locals>.__kernelJ  s    %%a%FJ77177AT*-=>DQ
Q/ AGGAJN3C&'aq(8&9&'aq(8&9':&'b#'(9&:'; '(ar(9&:';DcN 4 0 Kr   g      >@r      Nr  rp  s   `    @r   test_basic43TestManyStencils.test_basic43C  sa    	;

	 IIcN""1a(IIcN""1a(A$'##FH;r   c                     S n[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nU R                  XU[        [
        /S9  g)z!2 args, has assignment before usec                     SU S'   U S   $ )Nrq  r   r   r4   s     r   rm  -TestManyStencils.test_basic44.<locals>.kernel]  s    AdGT7Nr   r  rx   r   r  Nr}   r   r   r  r   r   rw  s       r   test_basic44TestManyStencils.test_basic44[  s_    	 IIcN""1a(IIcN""1a(f@M@O 	Pr   c                     S n[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nU R                  XU[        [
        /S9  g)z02 args, has assignment and then cross dependencyc                 "    SU S'   U S   U S   -   $ )Nrq  r   r   r   r4   s     r   rm  -TestManyStencils.test_basic45.<locals>.kernelg  s    AdGT7QtW$$r   r  rx   r   r  Nr  rw  s       r   test_basic45TestManyStencils.test_basic45e  _    	% IIcN""1a(IIcN""1a(f@M@O 	Pr   c                     S n[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nU R                  XU[        [
        /S9  g)z#2 args, has cross relidx assignmentc                 (    US   U S'   U S   U S   -   $ )Nr  r   r   r   r4   s     r   rm  -TestManyStencils.test_basic46.<locals>.kernelq  s"    gAdGT7QtW$$r   r  rx   r   r  Nr  rw  s       r   test_basic46TestManyStencils.test_basic46o  r  r   c                 :  ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nU" X#US5      nT R                  TXRX45        g)z3 argsc                 $    U S   US   -   US   -   $ )Nr   r   r   r   r   r5   r.  s      r   rm  -TestManyStencils.test_basic47.<locals>.kernel{  s    T7QtW$qx//r   c                 l  > T	R                  XX#S9  T" XU5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       HP  n[        SU R                  S   S-
  5       H-  nXS-   US-   4   XS-   US-   4   -   X'S-   US-   4   -   XWU4'   M/     MR     U$ r  r  
r   r5   r.  r"   r  r  r   r  rm  rU   s
           r   r  /TestManyStencils.test_basic47.<locals>.__kernel  s    %%aA%IaJ77177AT*-=>DQ
Q/ AGGAJN3C&'aq(8&9&'aq(8&9':&'b#'(9&:';DcN 4 0
 Kr   r  rx   r   Nr  rU   r  r   r5   r.  r   rm  s   `     @r   test_basic47TestManyStencils.test_basic47y  s}    	0		 IIcN""1a(IIcN""1a(IIcN""1a(A!T*##FH>r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)z22 args, has assignment before use via memory aliasc                 :    U R                   nSUS S 2S S 24'   U S   $ )Nre  r   )Tr-  s     r   rm  -TestManyStencils.test_basic48.<locals>.kernel  s!    AAadGT7Nr   c                 \  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       HJ  n[        SU R                  S   5       H*  nU R                  nSUS S 2S S 24'   XS-   US-   4   X5U4'   M,     ML     U$ )Nr!   r   r   r   re  )r  r}   r  r  r  r'   r  )	r   r"   r  r  r   r  r.  rm  rU   s	          r   r  /TestManyStencils.test_basic48.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
Q/ AGGAJ/CA AadG%&Qwa'7%8DcN 0 0
 Kr   r  rx   r   Nr  r  s   `   @r   test_basic48TestManyStencils.test_basic48  sE    			 IIcN""1a(At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nU" X#S5      nT R                  TXBUSS0S	9  g)
z#2 args, standard_indexing on secondc                     U S   US   -   $ )Nr   r  r   r4   s     r   rm  -TestManyStencils.test_basic49.<locals>.kernel  rY  r   c                 :  > TR                  XS9  T" X5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H9  n[        SU R                  S   5       H  nXS-   US-   4   US   -   XFU4'   M     M;     U$ )Nr!   r   r   r   r  r  rn  s	          r   r  /TestManyStencils.test_basic49.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
Q/ AGGAJ/C%&Qwa'7%81T7%BDcN 0 0 Kr   r  rx   r   Nr@   r5   rC  r  rp  s   `    @r   test_basic49TestManyStencils.test_basic49  sq    	%
	 IIcN""1a(IIcN""1a(A$'##FH-@#,F 	$ 	Hr   z&dynamic range checking not implementedc                 
    S ng)z2 args, standard_indexing OOBc                     U S   US   -   $ )Nr   )r      r   r4   s     r   rm  -TestManyStencils.test_basic50.<locals>.kernel  rl  r   Nr   rU   rm  s     r   test_basic50TestManyStencils.test_basic50  s    	&r   c                     S n[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nU R                  XUSSS/0[        [
        /S9  g	)
z$2 args, standard_indexing, no relidxc                     U S   US   -   $ Nr   )r   r1   r   r4   s     r   rm  -TestManyStencils.test_basic51.<locals>.kernel  rY  r   r  rx   r   r@   r   r5   r\  Nr  rw  s       r   test_basic51TestManyStencils.test_basic51  sg    	%IIcN""1a(IIcN""1a(f':S#J&G2<o1N 	 	Pr   c           	      <  ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nU" X#US5      nT R                  TXRX4S	S
0S9  g)z(3 args, standard_indexing on middle arg c                 $    U S   US   -   US   -   $ )Nr   r  r   r  s      r   rm  -TestManyStencils.test_basic52.<locals>.kernel  s    T7QtW$qw..r   c                 ^  > T	R                  XUS9  T" XU5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       HI  n[        SU R                  S   S-
  5       H&  nXS-   US-   4   US   -   X'S-   US-   4   -   XWU4'   M(     MK     U$ )Nr!   r   r   r   r1   r   r  r  s
           r   r  /TestManyStencils.test_basic52.<locals>.__kernel  s    %%a%FaJ77177AT*-=>DQ
Q/ AGGAJN3C&'aq(8&9AdG&C&'aq(8&9':DcN 4 0 Kr   r  rx   r   r6  r1   Nr@   r5   rC  r  r  s   `     @r   test_basic52TestManyStencils.test_basic52  s    	/
	 IIcN""1a(IIbM!!!Q'IIcN""1a(A!T*##FH-@#,F 	$ 	Hr   c                    S n[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nU R                  [        [
        [        S9nU R                  XUSS0US9  g	)
z92 args, standard_indexing on variable that does not existc                     U S   US   -   $ r  r   r4   s     r   rm  -TestManyStencils.test_basic53.<locals>.kernel  rY  r   r  rx   r   r[  r@   r.  r\  N)r}   r   r   r  r  r   r  rU   rm  r   r5   r  s        r   test_basic53TestManyStencils.test_basic53  s}    	%IIcN""1a(IIcN""1a(  " !  	f5H#4N13 	 	5r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nU" X#S5      nT R                  TXBUSS0S	9  g)
z)2 args, standard_indexing, index from varc                      SnU S   USU4   -   $ )Nr1   r   r   r   )r   r5   r  s      r   rm  -TestManyStencils.test_basic54.<locals>.kernel  s    AT7Qq!tW$$r   c                 B  > T	R                  XS9  T" X5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H=  n[        SU R                  S   5       H  nSnXS-   US-   4   USU4   -   XFU4'   M     M?     U$ Nr!   r   r   r   r1   r  )
r   r5   r"   r  r  r   r  r  rm  rU   s
           r   r  /TestManyStencils.test_basic54.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
Q/ AGGAJ/CA%&Qwa'7%81QT7%BDcN 0 0 Kr   r  rx   r   Nr@   r5   rC  r  rp  s   `    @r   test_basic54TestManyStencils.test_basic54  sq    	%	 IIcN""1a(IIcN""1a(A$'##FH-@#,F 	$ 	Hr   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nU" X#S5      nT R                  TXBUSS0S	9  g)
z62 args, standard_indexing, index from more complex varc                 *    SnSU-
  nU S   USU4   -   $ )Nr   r1   r   r   r   )r   r5   r  r  s       r   rm  -TestManyStencils.test_basic55.<locals>.kernel  s'    AAAT7Qq!tW$$r   c                 L  > T
R                  XS9  T	" X5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       HB  n[        SU R                  S   5       H"  nSnSU-
  nXS-   US-   4   USU4   -   XFU4'   M$     MD     U$ r  r  )r   r5   r"   r  r  r   r  r  r  rm  rU   s            r   r  /TestManyStencils.test_basic55.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
Q/ AGGAJ/CAAA%&Qwa'7%81QT7%BDcN 0 0
 Kr   r  rx   r   Nr@   r5   rC  r  rp  s   `    @r   test_basic55TestManyStencils.test_basic55  sq    	%		 IIcN""1a(IIcN""1a(A$'##FH-@#,F 	$ 	Hr   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nU" X#S5      nT R                  TXBUSS0S	9  g)
z,2 args, standard_indexing, added complexity c                 b    SnSnUSS S 24    H  nX4-  nM	     SU-
  S-
  nU S   USU4   -   U-   $ )Nr   r   r1   r   r   )r   r5   r  accr  r  s         r   rm  -TestManyStencils.test_basic56.<locals>.kernel/  sN    ACq!tW A	AT7Qq!tW$s**r   c                   > TR                  XS9  T" X5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H^  n[        SU R                  S   5       H>  nSnSnUSS S 24    H  n	X-  nM	     SU-
  S-
  n
XS-   US-   4   USU
4   -   U-   XFU4'   M@     M`     U$ r  r  )r   r5   r"   r  r  r   r  r  r  r  r  rm  rU   s              r   r  /TestManyStencils.test_basic56.<locals>.__kernel9  s    %%a%CJ77177AT*-=>DQ
Q/ AGGAJ/CACAvY 'A	A%&Qwa'7%81QT7%BS%HDcN 0 0 Kr   r  rx   r   Nr@   r5   rC  r  rp  s   `    @r   test_basic56TestManyStencils.test_basic56-  sq    	+	 IIcN""1a(IIcN""1a(A$'##FH-@#,F 	$ 	Hr   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nU" X#S5      nT R                  TXBUSS0S	9  g)
z12 args, standard_indexing, split index operation c                 "    US   nU S   US   -   $ )Nr   r   r   r   r  s      r   rm  -TestManyStencils.test_basic57.<locals>.kernelO  s    !AT7QqT>!r   c                 D  > T	R                  XS9  T" X5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H>  n[        SU R                  S   5       H  nUS   nXS-   US-   4   US   -   XFU4'   M      M@     U$ r  r  
r   r5   r"   r  r  r   r  r.  rm  rU   s
           r   r  /TestManyStencils.test_basic57.<locals>.__kernelU  s    %%a%CJ77177AT*-=>DQ
Q/ AGGAJ/C!A%&Qwa'7%81Q4%?DcN 0 0 Kr   r  rx   r   Nr@   r5   rC  r  rp  s   `    @r   test_basic57TestManyStencils.test_basic57M  q    	"	 IIcN""1a(IIcN""1a(A$'##FH-@#,F 	$ 	Hr   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nU" X#S5      nT R                  TXBUSS0S	9  g)
z?2 args, standard_indexing, split index with broadcast mutation c                 (    US   S-   nU S   US   -   $ )Nr   r   r   r   r  s      r   rm  -TestManyStencils.test_basic58.<locals>.kernelg  s!    !qAT7QqT>!r   c                 J  > T	R                  XS9  T" X5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       HA  n[        SU R                  S   5       H!  nUS   S-   nXS-   US-   4   US   -   XFU4'   M#     MC     U$ r  r  r  s
           r   r  /TestManyStencils.test_basic58.<locals>.__kernelm  s    %%a%CJ77177AT*-=>DQ
Q/ AGGAJ/C!qA%&Qwa'7%81Q4%?DcN 0 0 Kr   r  rx   r   Nr@   r5   rC  r  rp  s   `    @r   test_basic58TestManyStencils.test_basic58e  r  r   c           
         ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nSnU" X#US5      nT R                  TXRX4SS	S
/0S9  g)z>3 args, mix of array, relative and standard indexing and constc                     U S   US   -   U-   $ Nr   r?  r   r  s      r   rm  -TestManyStencils.test_basic59.<locals>.kernel  s    T7QtW$q((r   c                 B  > T	R                  XS9  T" XU5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H<  n[        SU R                  S   5       H  nXS-   US-   4   US   -   U-   XWU4'   M     M>     U$ )Nr!   r   r   r   r?  r  r  s
           r   r  /TestManyStencils.test_basic59.<locals>.__kernel  s    %%a%CaJ77177AT*-=>DQ
Q/ AGGAJ/C%&Qwa'7%81T7%BQ%FDcN 0 0 Kr   r  rx   r   re  Nr@   r5   r.  rC  r  r  s   `     @r   test_basic59TestManyStencils.test_basic59}  s|    	)
	 IIcN""1a(IIcN""1a(A!T*##FH-@3*,M 	$ 	Or   c           	          S n[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nSnU R                  [        S9nU R                  XX4SSS	/0US
9  g)zH3 args, mix of array, relative and standard indexing,
tuple pass throughc                 $    U S   US   -   US   -   $ )Nr   r?  r   r   r  s      r   rm  -TestManyStencils.test_basic60.<locals>.kernel  s    T7QtW$qt++r   r  rx   r   )re  )r  r@   r5   r.  r\  Nr]  )rU   rm  r   r5   r.  r  s         r   test_basic60TestManyStencils.test_basic60  sy    	,IIcN""1a(IIcN""1a(   8f':S#J&G13 	 	5r   c                     S n[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nU R                  XUSS0[        S9  g)	z"2 args, standard_indexing on firstc                     U S   US   -   $ r  r   r4   s     r   rm  -TestManyStencils.test_basic61.<locals>.kernel  rY  r   r  rx   r   r@   r   r\  N)r}   r   r   r  r  rw  s       r   test_basic61TestManyStencils.test_basic61  s]    	%IIcN""1a(IIcN""1a(f':C&@1: 	 	<r   c           	         ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nU" X#S5      nT R                  TXBUSSS	.S
9  g)z"2 args, standard_indexing and cvalc                     U S   US   -   $ r  r   r4   s     r   rm  -TestManyStencils.test_basic62.<locals>.kernel  rY  r   c                 :  > TR                  XS9  T" X5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H9  n[        SU R                  S   5       H  nXS-   US-   4   US   -   XFU4'   M     M;     U$ )Nr!   r  r   r   r   r?  r  rn  s	          r   r  /TestManyStencils.test_basic62.<locals>.__kernel  s    %%a%CJ77177DZ0@ADQ
Q/ AGGAJ/C%&Qwa'7%81T7%BDcN 0 0 Kr   r  rx   r   Nr5   r  )r@   r-   rC  r  rp  s   `    @r   test_basic62TestManyStencils.test_basic62  ss    	%
	 IIcN""1a(IIcN""1a(A$'##FHBE58-: 	$ 	;r   c                    S n[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nU R                  [        [        [        S9nU R                  XUSS0US	9  g
)zI2 args, standard_indexing applied to relative, should fail,
non-const idxc                     U SUS   4   $ )Nr   r   r   r4   s     r   rm  -TestManyStencils.test_basic63.<locals>.kernel  s    Q$Z= r   r  rx   r   rq  r[  r@   r5   r\  Nr]  r  s        r   test_basic63TestManyStencils.test_basic63  s}    	!IIcN""1a(IIbM!!!Q'  #"  ! " 	f5H#4N13 	 	5r   c                     S n[         R                  " S5      R                  SS5      nU R                  XSS0[        [
        /S9  g)	z!1 arg that uses standard_indexingc                     U S   $ r<   r   r   s    r   rm  -TestManyStencils.test_basic64.<locals>.kernel  r  r   r  rx   r   r@   r   r\  Nr  rU   rm  r   s      r   test_basic64TestManyStencils.test_basic64  sG    	IIcN""1a(f2Es1K2<o1N 	 	Pr   c                    ^ ^ S mUU 4S jn[         R                  " S5      nSnU" X#5      nT R                  TXBSU0S9  g)zbasic induced neighborhood testc                 D    Sn[        SS5       H
  nXU   -  nM     US-  $ Nr   r      r&   r   cumulr)   s      r   rm  -TestManyStencils.test_basic65.<locals>.kernel  ,    E3]1 #2:r   c                   > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       H)  nSn[        SS5       H  nXPXF-      -  nM     US-  X44'   M+     U$ Nr!   r   r      r  r   r  r  	r   r"   r  r  _TestManyStencils__anr  r)   rm  rU   s	          r   r  /TestManyStencils.test_basic65.<locals>.__kernel  s    %%a%CJ77177AT*-=>Db!''!*-sAAtx[(E '#bjU	 .
 Kr         N@)r  r   r"   rC  Nr#  rU   r  r   nhr   rm  s   `    @r   test_basic65TestManyStencils.test_basic65  J    			 IIcNA?##FH-;R,@ 	$ 	Br   c                    ^ ^ S mUU 4S jn[         R                  " S5      nSnU" X#5      nT R                  TXBSU0S9  g)zbasic const neighborhood testc                 D    Sn[        SS5       H
  nXS   -  nM     US-  $ r  r&   r  s      r   rm  -TestManyStencils.test_basic66.<locals>.kernel  r!  r   c                   > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       H*  nSn[        SS5       H  nXPUS-      -  nM     US-  X44'   M,     U$ r#  r  r%  s	          r   r  /TestManyStencils.test_basic66.<locals>.__kernel	  s    %%a%CJ77177AT*-=>Db!''!*-sAAtax[(E '#bjU	 .
 Kr   r(  r)  r"   rC  Nr#  r*  s   `    @r   test_basic66TestManyStencils.test_basic66  r.  r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nSnU" X#5      nT R                  TXBSU0S9  g	)
z"basic 2d induced neighborhood testc                 l    Sn[        SS5       H  n[        SS5       H  nXX#4   -  nM     M      US-  $ Nr   r    r   2   r&   r   r  r)   r   s       r   rm  -TestManyStencils.test_basic67.<locals>.kernel	  sB    E2q\sAAqtW$E ' " F##r   c           	        > T
R                  XS9  T	" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       Ha  n[        SU R                  S   5       HA  nSn[        SS5       H#  n[        SS5       H  nX`XW-   XH-   4   -  nM     M%     US	-  X5U4'   MC     Mc     U$ 
Nr!   r   r   re  r   r   r    r9  r:  r  r   r"   r  r  _TestManyStencils__bnr&  r  r)   r   rm  rU   s            r   r  /TestManyStencils.test_basic67.<locals>.__kernel	  s    %%a%CJ77177AT*-=>Db!''!*-!!QWWQZ0DE"2q\!&sAA!tx'9%::E "/ * (-rzDt$ 1 . Kr         i@re     r   r9  r   r"   rC  Nr  r*  s   `    @r   test_basic67TestManyStencils.test_basic67	  X    	$	 IIi ((R0!A?##FH-;R,@ 	$ 	Br   c                     S n[         R                  " S5      R                  SS5      nU R                  XSS0[        [
        /S9  g)	z basic 2d induced 1D neighborhoodc                 H    Sn[        SS5       H  nXSU4   -  nM     US-  $ )Nr   r9  r   r:  r&   )r   r  r   s      r   rm  .TestManyStencils.test_basic67b.<locals>.kernel2	  s2    E3]1a4  #F##r   rB  re  rC  r"   )rE  r\  N)r}   r   r   r  r   r  r  s      r   test_basic67bTestManyStencils.test_basic67b0	  sI    	$
 IIi ((R0f.+1N2=z1J 	 	Lr   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nSnU" X#5      nT R                  TXBSU0S9  g	)
z0basic 2d one induced, one cost neighborhood testc                 n    Sn[        SS5       H  n[        SS5       H  nXUS4   -  nM     M!     US-  $ r8  r&   r;  s       r   rm  -TestManyStencils.test_basic68.<locals>.kernel>	  sD    E2q\sAAq!tW$E ' " F##r   c           	        > T
R                  XS9  T	" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       Hb  n[        SU R                  S   5       HB  nSn[        SS5       H$  n[        SS5       H  nX`XW-   US-   4   -  nM     M&     US	-  X5U4'   MD     Md     U$ r>  r  r?  s            r   r  /TestManyStencils.test_basic68.<locals>.__kernelH	  s    %%a%CJ77177AT*-=>Db!''!*-!!QWWQZ0DE"2q\!&sAA!tx'9%::E "/ * (-rzDt$ 1 . Kr   rB  re  rC  rD  r"   rC  Nr  r*  s   `    @r   test_basic68TestManyStencils.test_basic68<	  sX    	$	 IIi ((R0!A?##FH-;R,@ 	$ 	Br   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nSnU" X#5      nT R                  TXBSU0S9  g	)
z#basic 2d two cost neighborhood testc                 j    Sn[        SS5       H  n[        SS5       H
  nXS   -  nM     M     US-  $ )Nr   r    r   r9  r=   r:  r&   r;  s       r   rm  -TestManyStencils.test_basic69.<locals>.kernel^	  s@    E2q\sAAtW$E ' " F##r   c           	        > T
R                  XS9  T	" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       Hc  n[        SU R                  S   5       HC  nSn[        SS5       H%  n[        SS5       H  nX`US-   US-   4   -  nM     M'     US	-  X5U4'   ME     Me     U$ r>  r  r?  s            r   r  /TestManyStencils.test_basic69.<locals>.__kernelg	  s    %%a%CJ77177AT*-=>Db!''!*-!!QWWQZ0DE"2q\!&sAA!tax'9%::E "/ * (-rzDt$ 1 . Kr   rB  re  rC  rD  r"   rC  Nr  r*  s   `    @r   test_basic69TestManyStencils.test_basic69\	  rH  r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nSnU" X#5      nT R                  TXBSU0S9  g	)
zneighborhood adding complexityc                 ~    SnSn[        SS5       H%  nX#-   n[        SS5       H  nXX54   U-   -  nM     M'     US-  $ )Nr   r  r    r   r9  r:  r&   r   r  zzr)   r  r   s         r   rm  -TestManyStencils.test_basic70.<locals>.kernel|	  sR    EB2q\FsAAqtWq[(E ' " F##r   c           	        > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       Hj  n[        SU R                  S   5       HJ  nSnSn[        SS5       H*  nXx-   n	[        S	S5       H  n
X`XX-   XJ-   4   U	-   -  nM     M,     US
-  X5U4'   ML     Ml     U$ )Nr!   r   r   re  r   r   r  r    r9  r:  r  r   r"   r  r  r@  r&  r  r_  r)   r  r   rm  rU   s              r   r  /TestManyStencils.test_basic70.<locals>.__kernel	  s    %%a%CJ77177AT*-=>Db!''!*-!!QWWQZ0DEB"2q\F!&sAA!tx'9%:Q%>>E "/ * (-rzDt$ 1 . Kr   rB  re  rC  rD  r"   rC  Nr  r*  s   `    @r   test_basic70TestManyStencils.test_basic70z	  sX    	$	 IIi ((R0!A?##FH-;R,@ 	$ 	Br   c                    ^ ^ S mUU 4S jn[         R                  " S5      nSnU" X#5      nT R                  TXBSU0S9  g)zneighborhood, type changec                 ^    Sn[        SS5       H  nSnUS:  a  SnXU   U-   -  nM     US-  $ )Nr   r  r           rz  r  r&   )r   r  r)   r  s       r   rm  -TestManyStencils.test_basic71.<locals>.kernel	  sD    E3]s7A1!	 #
 2:r   c                 .  > T	R                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       H6  nSn[        SS5       H  nSnUS:  a  S	nXPXF-      U-   -  nM     US
-  X44'   M8     U$ )Nr!   r   r   r$  r  r   rh  ri  rz  r  r  )
r   r"   r  r  r&  r  r)   r  rm  rU   s
           r   r  /TestManyStencils.test_basic71.<locals>.__kernel	  s    %%a%CJ77177AT*-=>Db!''!*-sAAA3w tx[1_,E	 '
 $bjU . Kr   r(  r)  r"   rC  Nr#  r*  s   `    @r   test_basic71TestManyStencils.test_basic71	  sJ    		 IIcNA?##FH-;R,@ 	$ 	Br   c                    ^ ^ S mUU 4S jn[         R                  " S5      nSnU" X#5      nT R                  TXBSU0S9  g)z+neighborhood, narrower range than specifiedc                 D    Sn[        SS5       H
  nXU   -  nM     US-  $ )Nr   r  r  r&   r  s      r   rm  -TestManyStencils.test_basic72.<locals>.kernel	  ,    E3^1 $2:r   c                   > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       H)  nSn[        SS5       H  nXPXF-      -  nM     US-  X44'   M+     U$ )Nr!   r   r   r$  rq  r  r  r  r%  s	          r   r  /TestManyStencils.test_basic72.<locals>.__kernel	      %%a%CJ77177AT*-=>Db!''!*-sBAtx[(E (#bjU	 .
 Kr   r(  r)  r"   rC  Nr#  r*  s   `    @r   test_basic72TestManyStencils.test_basic72	  r.  r   c                    ^ ^ S mUU 4S jn[         R                  " S5      nSnU" X#5      nT R                  TXBSU0S9  g)zneighborhood, +ve rangec                 D    Sn[        SS5       H
  nXU   -  nM     US-  $ )Nr   r      r  r&   r  s      r   rm  -TestManyStencils.test_basic73.<locals>.kernel	  s,    E1b\1 "2:r   c                   > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H)  nSn[        SS5       H  nXPXF-      -  nM     US-  X44'   M+     U$ )Nr!   r   r   re  r   r{  r  r  r%  s	          r   r  /TestManyStencils.test_basic73.<locals>.__kernel	  s    %%a%CJ77177AT*-=>Dab1q"Atx[(E &#bjU	 2
 Kr   r(  ))r   re  r"   rC  Nr#  r*  s   `    @r   test_basic73TestManyStencils.test_basic73	  sJ    			 IIcNA?##FH-;R,@ 	$ 	Br   c                    ^ ^ S mUU 4S jn[         R                  " S5      nSnU" X#5      nT R                  TXBSU0S9  g)zneighborhood, -ve rangec                 D    Sn[        SS5       H
  nXU   -  nM     US-  $ )Nr   r9  r$   r  r&   r  s      r   rm  .TestManyStencils.test_basic73b.<locals>.kernel	  rs  r   c                   > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       H)  nSn[        SS5       H  nXPXF-      -  nM     US-  X44'   M+     U$ )Nr!   r   r   re  r9  r$   r  r  r%  s	          r   r  0TestManyStencils.test_basic73b.<locals>.__kernel	  rv  r   r(  ))r9  r    r"   rC  Nr#  r*  s   `    @r   test_basic73bTestManyStencils.test_basic73b	  sJ    			 IIcNA?##FH-;R,@ 	$ 	Br   c                    ^ ^ S mUU 4S jn[         R                  " S5      nSnU" X#5      nT R                  TXBSU0S9  g)z!neighborhood, -ve->+ve range spanc                 D    Sn[        SS5       H
  nXU   -  nM     US-  $ )Nr   r    r{  r  r&   r  s      r   rm  -TestManyStencils.test_basic74.<locals>.kernel
  s,    E2r]1 #2:r   c                   > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H)  nSn[        SS5       H  nXPXF-      -  nM     US-  X44'   M+     U$ )	Nr!   r   r   r   re  r    r{  r  r  r%  s	          r   r  /TestManyStencils.test_basic74.<locals>.__kernel
  s    %%a%CJ77177AT*-=>Dab1r2Atx[(E '#bjU	 2
 Kr   r(  ))r    re  r"   rC  Nr#  r*  s   `    @r   test_basic74TestManyStencils.test_basic74
  r.  r   c                    ^ ^ S mUU 4S jn[         R                  " S5      nSnU" X#5      nT R                  TXBSU0S9  g)z!neighborhood, -ve->-ve range spanc                 D    Sn[        SS5       H
  nXU   -  nM     US-  $ )Nr   r9  r   r  r&   r  s      r   rm  -TestManyStencils.test_basic75.<locals>.kernel+
  rs  r   c                   > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       H)  nSn[        SS5       H  nXPXF-      -  nM     US-  X44'   M+     U$ )Nr!   r   r   re  r9  r   r  r  r%  s	          r   r  /TestManyStencils.test_basic75.<locals>.__kernel4
  rv  r   r(  ))r9  r0   r"   rC  Nr#  r*  s   `    @r   test_basic75TestManyStencils.test_basic75)
  sJ    			 IIcNA?##FH-;R,@ 	$ 	Br   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nSnU" X#5      nT R                  TXBSU0S9  g	)
zneighborhood, mixed range spanc                 ~    SnSn[        SS5       H%  nX#-   n[        SS5       H  nXX54   U-   -  nM     M'     US-  $ )Nr   r  r  r   r:  r&   r^  s         r   rm  -TestManyStencils.test_basic76.<locals>.kernelG
  sR    EB2q\Fr1AqtWq[(E & " F##r   c           	        > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       Hj  n[        SU R                  S   5       HJ  nSnSn[        SS5       H*  nXx-   n	[        SS5       H  n
X`XX-   XJ-   4   U	-   -  nM     M,     US	-  X5U4'   ML     Ml     U$ )
Nr!   r   r   rx   r   r  r  r   r:  r  rb  s              r   r  /TestManyStencils.test_basic76.<locals>.__kernelS
  s    %%a%CJ77177AT*-=>Daa0!!QWWQZ0DEB"2q\F!&r1A!tx'9%:Q%>>E ". * (-rzDt$ 1 1 Kr   rB  re  rC  ))r  r   )r  rx   r"   rC  Nr  r*  s   `    @r   test_basic76TestManyStencils.test_basic76E
  sX    	$	 IIi ((R0!A?##FH-;R,@ 	$ 	Br   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nSnU" X#U5      nT R                  TXRUSU0S9  g	)
zneighborhood, two args c                 z    Sn[        SS5       H%  n[        SS5       H  nX X44   XU4   -   -  nM     M'     US-  $ Nr   r  r   r~  r&   r   r5   r  r)   r   s        r   rm  -TestManyStencils.test_basic77.<locals>.kernelj
  L    E2q\r1AqtWqAw..E & " B<r   c           
        > TR                  XUS9  T
" X5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       Hm  n[        SU R                  S   5       HM  nSn[        SS5       H/  n[        SS5       H  n	XpXh-   XY-   4   XU-   XY-   4   -   -  nM     M1     US-  XFU4'   MO     Mo     U$ Nr!   r   r   rx   r   r  r~  r  r   r5   r"   r  r  r@  r&  r  r)   r   rm  rU   s             r   r  /TestManyStencils.test_basic77.<locals>.__kernels
  s    %%a%FJ77177AT*-=>Da,!!QWWQZ0DE"2q\!&r1A!$((:&;&'q$((:&;'< =E ". * (-s{Dt$ 1 - Kr   rB  re  rC  r  r   r  r"   rC  Nr  rU   r  r   r5   r+  r   rm  s   `     @r   test_basic77TestManyStencils.test_basic77h
  x    	 	 IIi ((R0IIi ((R0 A"%##FH-;R,@ 	$ 	Br   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nSnU" X#U5      nT R                  TXRUSU0S9  g	)
z-neighborhood, two args, -ve range, -ve range c                 z    Sn[        SS5       H%  n[        SS5       H  nX X44   XU4   -   -  nM     M'     US-  $ )Nr   r0   r   r~  r&   r  s        r   rm  -TestManyStencils.test_basic78.<locals>.kernel
  sL    E2r]r2AqtWqAw..E ' # B<r   c           
        > TR                  XUS9  T
" X5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       Hm  n[        SU R                  S   5       HM  nSn[        SS5       H/  n[        S	S
5       H  n	XpXh-   XY-   4   XU-   XY-   4   -   -  nM     M1     US-  XFU4'   MO     Mo     U$ )Nr!   r   r   rj  r   r  r  r0   r  r   r~  r  r  s             r   r  /TestManyStencils.test_basic78.<locals>.__kernel
  s    %%a%FJ77177AT*-=>Da,!!QWWQZ0DE"2r]!&r2A!$((:&;&'q$((:&;'< =E "/ + (-s{Dt$ 1 - Kr        r@r  rC  )r  r  )r  r0   r"   rC  Nr  r  s   `     @r   test_basic78TestManyStencils.test_basic78
  sx    	 	 IIi ((R0IIi ((R0"A"%##FH-;R,@ 	$ 	Br   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SS5      nSnU" X#U5      nT R                  TXRUSU0S9  g	)
z-neighborhood, two args, -ve range, +ve range c                 z    Sn[        SS5       H%  n[        SS5       H  nX X44   XU4   -   -  nM     M'     US-  $ )Nr   r  r0   r1   re  r~  r&   r  s        r   rm  .TestManyStencils.test_basic78b.<locals>.kernel
  sL    E2r]q"AqtWqAw..E & # B<r   c           
        > TR                  XUS9  T
" X5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       Hm  n[        SU R                  S   5       HM  nSn[        SS5       H/  n[        S	S
5       H  n	XpXh-   XY-   4   XU-   XY-   4   -   -  nM     M1     US-  XFU4'   MO     Mo     U$ )Nr!   r   r   r   	   r  r  r0   r1   re  r~  r  r  s             r   r  0TestManyStencils.test_basic78b.<locals>.__kernel
  s    %%a%FJ77177AT*-=>Daa0!!QWWQZ0DE"2r]!&q"A!$((:&;&'q$((:&;'< =E ". + (-s{Dt$ 1 1 Kr   r  r  rC  )r  )r1   r  r"   rC  Nr  r  s   `     @r   test_basic78bTestManyStencils.test_basic78b
  r  r   c                    S n[         R                  " S5      R                  SS5      n[         R                  " S5      R                  SSS5      nU R                  [        [        [        S9nU R                  XUSS0US	9  g
)z$neighborhood, two incompatible args c                 z    Sn[        SS5       H%  n[        SS5       H  nX X44   XU4   -   -  nM     M'     US-  $ r  r&   r  s        r   rm  -TestManyStencils.test_basic79.<locals>.kernel
  r  r   rB  re  rC  r1   r[  r"   r  r\  N)r}   r   r   r  r   r  r  s        r   test_basic79TestManyStencils.test_basic79
  s    	  IIi ((R0IIi ((R3   !  	f^5H5J13 	 	5r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nSnSnU" X#U5      nT R                  TXRUSU0S	9  g
)zneighborhood, type change c                 r    Sn[        SS5       H!  n[        SS5       H  nX X44   U-   -  nM     M#     US-  $ r  r&   r  s        r   rm  -TestManyStencils.test_basic80.<locals>.kernel
  sE    E2q\r1AqtWq[(E & " B<r   c           	        > TR                  XUS9  T
" X5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       Hd  n[        SU R                  S   5       HD  nSn[        SS5       H&  n[        SS5       H  n	XpXh-   XY-   4   U-   -  nM     M(     US-  XFU4'   MF     Mf     U$ r  r  r  s             r   r  /TestManyStencils.test_basic80.<locals>.__kernel
  s    %%a%FJ77177AT*-=>Da,!!QWWQZ0DE"2q\!&r1A!tx'9%:Q%>>E ". * (-s{Dt$ 1 - Kr   rB  re  rC  y              (@r  r"   rC  Nr  r  s   `     @r   test_basic80TestManyStencils.test_basic80
  sb    	 	 IIi ((R0A"%##FH-;R,@ 	$ 	Br   c                     S n[         R                  " S5      R                  SS5      nUS   R                  5       nU R	                  [
        [        [
        S9nU R                  XUSS0US	9  g
)z0neighborhood, dimensionally incompatible arrays c                 v    Sn[        SS5       H#  n[        SS5       H  nX X44   X   -   -  nM     M%     US-  $ r  r&   r  s        r   rm  -TestManyStencils.test_basic81.<locals>.kernel
  sG    E2q\r1AqtWqt^+E & " B<r   rB  re  rC  r   r[  r"   r  r\  N)r}   r   r   copyr  r   r}  r  r  s        r   test_basic81TestManyStencils.test_basic81
  sv    	  IIi ((R0aDIIK  ! !  	f'57I&J13 	 	5r   c           	         ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nUR                  5       nSnU" X#U5      nT R	                  TXRUUSS.S	9  g
)z$neighborhood, with standard_indexingc                 x    Sn[        SS5       H$  n[        SS5       H  nX X44   US   -   -  nM     M&     US-  $ Nr   r  r   r   rx   r~  r&   r  s        r   rm  -TestManyStencils.test_basic82.<locals>.kernel  J    E2q\r1AqtWqw..E & " B<r   c           	        > TR                  XUS9  T
" X5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       Hg  n[        SU R                  S   5       HG  nSn[        SS5       H)  n[        SS5       H  n	XpXh-   XY-   4   US   -   -  nM     M+     US-  XFU4'   MI     Mi     U$ )	Nr!   r   r   rx   r   r  r  r~  r  r  s             r   r  /TestManyStencils.test_basic82.<locals>.__kernel  s    %%a%FJ77177AT*-=>Da,!!QWWQZ0DE"2q\!&r1A!tx'9%:QtW%DDE ". * (-s{Dt$ 1 - Kr   rB  re  rC  r  r5   )r"   r@   rC  Nr}   r   r   r  r  r  s   `     @r   test_basic82TestManyStencils.test_basic82  sl    	 	 IIi ((R0FFHA"%##FH=?BE-G 	$ 	Hr   c           
      6  ^ ^ S m[         R                  " S5      R                  SS5      nUR                  5       nUU 4S jn[         R                  " S5      R                  SS5      nUR                  5       nSnU" XU5      nT R	                  TXQUUSSS	.S
9  g)z-neighborhood, with standard_indexing and cvalc                 x    Sn[        SS5       H$  n[        SS5       H  nX X44   US   -   -  nM     M&     US-  $ r  r&   r  s        r   rm  -TestManyStencils.test_basic83.<locals>.kernel-  r  r   rB  re  rC  c           	        > TR                  XUS9  T
" X5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       Hg  n[        SU R                  S   5       HG  nSn[        SS5       H)  n[        SS5       H  n	XpXh-   XY-   4   US   -   -  nM     M+     US	-  XFU4'   MI     Mi     U$ )
Nr!         ?r   rx   r   r   r  r  r~  r  r  s             r   r  /TestManyStencils.test_basic83.<locals>.__kernel9  s    %%a%FJ77177CtJ/?@Da,!!QWWQZ0DE"2q\!&r1A!tx'9%:QtW%DDE ". * (-s{Dt$ 1 - Kr   r  r5   r  r"   r@   r-   rC  Nr  )rU   r   r5   r  r+  r   rm  s   `     @r   test_basic83TestManyStencils.test_basic83+  s    	  IIi ((R0FFH
	 IIi ((R0FFHA"%##FH=?BE58-; 	$ 	<r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)zkernel calls njit c                 *    U S   [        U S   5      -   $ Nr=   r   )rG   r   s    r   rm  -TestManyStencils.test_basic84.<locals>.kernelQ      T7[4111r   c           	      n  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       HS  n[        SU R                  S   5       H3  nXS-   US-   4   [        R                  XS-   US-   4   5      -   X5U4'   M5     MU     U$ r  )r  r}   r  r  r  r'   rG   py_funcr  s         r   r  /TestManyStencils.test_basic84.<locals>.__kernelV      %%a%CJ77177AT*-=>DQ
Q/ AGGAJ/C&'aq(8&9&1&9&9!!GS1W<L:M&N'ODcN 0 0 Kr   rB  re  rC  Nr  r  s   `   @r   test_basic84TestManyStencils.test_basic84O  sF    	2
	 IIi ((R0At$##FH8r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)z kernel calls njit(parallel=True)c                 *    U S   [        U S   5      -   $ r  )rK   r   s    r   rm  -TestManyStencils.test_basic85.<locals>.kernelf  r  r   c           	      n  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       HS  n[        SU R                  S   5       H3  nXS-   US-   4   [        R                  XS-   US-   4   5      -   X5U4'   M5     MU     U$ r  )r  r}   r  r  r  r'   rK   r  r  s         r   r  /TestManyStencils.test_basic85.<locals>.__kernell  r  r   rB  re  rC  Nr  r  s   `   @r   test_basic85TestManyStencils.test_basic85d  sF    	2	 IIi ((R0At$##FH8r   c                     S n[         R                  " S5      R                  SS5      nU R                  XSS0[        [
        /S9  g)z
bad kwarg c                     U S   $ r<   r   r   s    r   rm  -TestManyStencils.test_basic86.<locals>.kernel}  r  r   rB  re  rC  badr\  N)r}   r   r   r  r  r   r  s      r   test_basic86TestManyStencils.test_basic86{  sH    	 IIi ((R0f%2<k1J 	 	Lr   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)zreserved arg name in use c                     U S   $ r<   r   )__sentinel__s    r   rm  -TestManyStencils.test_basic87.<locals>.kernel  s    %%r   c                 (  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       H3  n[        SU R                  S   5       H  nXS-   US-   4   X5U4'   M     M5     U$ r  r  )r   r"   r  r  r   r  rm  rU   s         r   r  /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%CDcN ; 7 Kr   rB  re  rC  Nr  r  s   `   @r   test_basic87TestManyStencils.test_basic87  sF    	&
	 IIi ((R0At$##FH8r   c                     S n[         R                  " S5      R                  SS5      nU R                  [        [        [        S9nU R                  XS0 US9  g)	zuse of reserved word c                     XS   -  $ r  r   )r   r   s     r   rm  -TestManyStencils.test_basic88.<locals>.kernel  s    4= r   r  rx   r   r[  r+   r\  Nr]  r^  s       r   test_basic88TestManyStencils.test_basic88  sX    	!IIcN""1a(  #"  ! " 	fbRPr   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)zbasic multiple returnc                 4    U S   S:  a  gU S   S:  a  U S   $ g)Nr   re  r  r  r  r=   r   r   r   s    r   rm  -TestManyStencils.test_basic89.<locals>.kernel  s'    w|41wr   c                   > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       Hc  n[        SU R                  S   5       HC  nXS-   US-   4   S:  a  SX5U4'   M  XS-   US-   4   S:  a  XS-   US-   4   X5U4'   M=  S	X5U4'   ME     Me     U$ )
Nr!   r   r   r   rx   re  r  r  r   r  r  s         r   r  /TestManyStencils.test_basic89.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
Q/ AGGAJ/Cq#')*R/)-#X7C!G+,q0)*7C!G+;)<#X),#X 0 0 Kr   rB  re  rC  Nr  r  s   `   @r   test_basic89TestManyStencils.test_basic89  sF    		 IIi ((R0At$##FH8r   c           
         ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nUR                  5       nSnU" X#U5      nT R	                  TXRUUSSS	.S
9  g)z?neighborhood, with standard_indexing and cval, multiple returnsc                     Sn[        SS5       H$  n[        SS5       H  nX X44   US   -   -  nM     M&     US-  nUS:  a  US-   $ U$ )Nr   r  r   r  r~  rB  r+   r&   )r   r5   r  r)   r   ress         r   rm  -TestManyStencils.test_basic90.<locals>.kernel  s_    E2q\r1AqtWqw..E & " 2,CU{Sy 
r   c           	        > TR                  XUS9  T" X5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       Hy  n[        SU R                  S   5       HY  nSn[        SS5       H)  n[        SS5       H  n	XpXh-   XY-   4   US   -   -  nM     M+     US	-  n
U
S
:  a  U
S-   XFU4'   MT  XXe4'   M[     M{     U$ )Nr!   r  r   rx   r   r   r  r  r~  rB  r+   r  )r   r5   r"   r  r  r@  r&  r  r)   r   r  rm  rU   s              r   r  /TestManyStencils.test_basic90.<locals>.__kernel  s    %%a%FJ77177CtJ/?@Da,!!QWWQZ0DE"2q\!&r1A!tx'9%:QtW%DDE ". *  #+CU{+.94Z(+.TZ( 1 - Kr   rB  re  rC  r  r5   r  r  rC  Nr  r  s   `     @r   test_basic90TestManyStencils.test_basic90  sm    			" IIi ((R0FFHA"%##FH=?BE58-; 	$ 	<r   c                    ^ ^ S mUU 4S jn[         R                  " S5      R                  SS5      nU" US5      nT R                  TX25        g)z>Issue #3454, const(int) == const(int) evaluating incorrectly. c                 &    SnSS:X  a  SnU S   U-   $ )Nr   r1   r=   r   r4   s     r   rm  -TestManyStencils.test_basic91.<locals>.kernel  s!    AQT7Q;r   c                 B  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   5       H@  n[        SU R                  S   5       H   nSnSS:X  a  SnXS-   US-   4   U-   X5U4'   M"     MB     U$ r  r  )	r   r"   r  r  r   r  r5   rm  rU   s	          r   r  /TestManyStencils.test_basic91.<locals>.__kernel  s    %%a%CJ77177AT*-=>DQ
+ AGGAJ/CAAv%&Qwa'7%81%<DcN	 0 , Kr   rB  re  rC  Nr  r  s   `   @r   test_basic91TestManyStencils.test_basic91  sF    	
	 IIi ((R0At$##FH8r   c                   ^ ^ S mUU 4S jn[         R                  " [         R                  " S5      S-  5      R                  SS5      R	                  [         R
                  5      nU" US5      nT R                  TX25        g)6Issue #3497, bool return type evaluating incorrectly. c                 l    U S   U S   -  U S   -  U S   -  U S   -  U S   -  U S   -  U S   -  U S	   -  $ 
NrG  r   r.  r   r=   r   r7  r   r?  r   r   s    r   rm  -TestManyStencils.test_basic92.<locals>.kernel  h    fI%(1U83eH w')*41eH w')*41 2r   c                   > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H  n[        SU R                  S   S-
  5       H{  nXS-   US-   4   XS-   US-   4   -  XS-   US-   4   -  XS-   US-   4   -  XS-   US-   4   -  XS-   US-   4   -  XS-   US-   4   -  XS-   US-   4   -  XS-   US-   4   -  X5U4'   M}     M     U$ r  r  r  s         r   r  /TestManyStencils.test_basic92.<locals>.__kernel  `   %%a%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':DcN 4 0 Kr   rC  r1   r   r   Nr}   r.  r   r   r  r  r  rU   r  r   r   rm  s   `   @r   test_basic92TestManyStencils.test_basic92  sb    	2	" HHRYYr]Q&'//15<<RXXFAt$##FH8r   c                   ^ ^ S mUU 4S jn[         R                  " [         R                  " S5      S-  5      R                  SS5      R	                  [         R
                  5      nU" US5      nT R                  TX2SS	0S
9  g)r"  c                 l    U S   U S   -  U S   -  U S   -  U S   -  U S   -  U S   -  U S   -  U S	   -  $ r$  r   r   s    r   rm  -TestManyStencils.test_basic93.<locals>.kernel%  r&  r   c                   > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H  n[        SU R                  S   S-
  5       H{  nXS-   US-   4   XS-   US-   4   -  XS-   US-   4   -  XS-   US-   4   -  XS-   US-   4   -  XS-   US-   4   -  XS-   US-   4   -  XS-   US-   4   -  XS-   US-   4   -  X5U4'   M}     M     U$ )Nr!   r   r   r   r   r  r  s         r   r  /TestManyStencils.test_basic93.<locals>.__kernel,  r)  r   rC  r1   r   r   Nr-   TrC  r*  r+  s   `   @r   test_basic93TestManyStencils.test_basic93#  sk    	2	" HHRYYr]Q&'//15<<RXXFAt$##FH&$#Pr   c                    ^ ^ S mUU 4S jn[         R                  " S[         R                  S9R                  SS5      nSnU" X#5      nT R	                  TXBSU0S	9  g
)z!Issue #3528. Support for slices. c                 @    [         R                  " U SS2SS24   5      $ Nr   r1   r}   medianr   s    r   rm  -TestManyStencils.test_basic94.<locals>.kernelC  !    99Qr!tRTz]++r   c           	      p  > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       HT  n[        SU R                  S   S-
  5       H1  n[        R                  " XS-   US-   2US-   US-   24   5      X5U4'   M3     MV     U$ Nr!   r   r   r   r   r1   r  r}   r  r  r  r'   r9  )r   r"   r  r  r@  r&  rm  rU   s         r   r  /TestManyStencils.test_basic94.<locals>.__kernelH  s    %%a%CJ77177AT*-=>Daa0!!QWWQZ!^4D')yy"9TAX3E37"9TAX3E4F 2G (HDt$ 5 1 Kr   rC  r   r   r   r.  r.  r"   rC  N)r}   r   uint32r   r  r*  s   `    @r   test_basic94TestManyStencils.test_basic94A  s^    	,
	 IIb		*221a8 A?##FH-;R,@ 	$ 	Br   znot yet supportedc                 
    S ng)zSlice, calculate neighborhood. c                 @    [         R                  " U SS2SS24   5      $ )Nr   r1   r  r   r8  r   s    r   rm  -TestManyStencils.test_basic95.<locals>.kernel[  r;  r   Nr   r  s     r   test_basic95TestManyStencils.test_basic95X  s    	,r   c                    ^ ^ S mUU 4S jn[         R                  " S[         R                  S9nSnU" X#5      nT R                  TXBSU0S9  g)	z
1D slice. c                 4    [         R                  " U SS 5      $ r7  r8  r   s    r   rm  -TestManyStencils.test_basic96.<locals>.kernela  s    99Qr!W%%r   c                   > TR                  XS9  T" U 5      n[        R                  " U R                  S[	        U5      S9n[        SU R                  S   S-
  5       H$  n[        R                  " XS-   US-    5      X44'   M&     U$ r=  r>  )r   r"   r  r  r&  rm  rU   s        r   r  /TestManyStencils.test_basic96.<locals>.__kernelf  sy    %%a%CJ77177AT*-=>Daa0 ii)D1H(=>U 1Kr   rC  r   )r.  r"   rC  N)r}   r   rA  r  r*  s   `    @r   test_basic96TestManyStencils.test_basic96_  sQ    	&
	 IIb		*A?##FH-;R,@ 	$ 	Br   c                 
    S ng)z2D slice and index. c                 <    [         R                  " U SS2S4   5      $ )Nr   r1   rx   r8  r   s    r   rm  -TestManyStencils.test_basic97.<locals>.kernelw  s    99Qr!tQwZ((r   Nr   r  s     r   test_basic97TestManyStencils.test_basic97t  s    	)r   c           	      >  ^ ^^ [         R                  [         R                  [         R                  * [        S5      [        S5      * 4 HQ  mS mUUU 4S jn[         R                  " S5      R                  S5      nSnU" X#5      nT R                  TXBUTS.S9  MS     g	)
r  r  c                     U S   $ r<   r   r   s    r   rm  -TestManyStencils.test_basic98.<locals>.kernel  s    wr   c                 4  > TR                  XS9  T" U 5      n[        R                  " U R                  T[	        U5      S9n[        SU R                  S   S-
  5       H6  n[        SU R                  S   S-
  5       H  nXS-   US-   4   X5U4'   M     M8     U$ )Nr!   r   r   r   r  )	r   r"   r  r  r@  r&  r-   rm  rU   s	         r   r  /TestManyStencils.test_basic98.<locals>.__kernel  s    ))!)G#AY
wwqwwD4DE!!QWWQZ!^4D %aa 8+,AXtax-?+@4Z( !9 5 r   g      @)r1   rx   r@  )r"   r-   rC  N)r}   r  r  r  r   r   r  )rU   r  r   r+  r   r-   rm  s   `    @@r   test_basic98TestManyStencils.test_basic98{  s     VVRVVbffWeElU5\MJD
 		"%%f-A$BH''AC8<1> ( ?' Kr   r   )vr   r   r   r   rT   r  r  r  r  r  r  r  r#  r*  r3  r;  rC  rM  rT  r\  rc  rj  rr  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  unittestskipr  r$  r*  r2  r<  rD  rM  rV  r_  rf  rq  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r,  r4  rF  rL  rS  rZ  rd  rm  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r,  r3  rB  rG  rN  rS  rZ  r   r   r   s   @r   r  r  }  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, ]]56 79*M9(92N(N.?0
5<6<*QQ<0PPP?694H. ]];<& =&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. ]]&', (,B* ]]&') ()? ?r   r  __main__)(numpyr}   
contextlibr   rn   r   r   
numba.corer   r   numba.core.compilerr   r	   numba.core.cpur
   numba.tests.supportr   r   numba.core.errorsr   r   r   r\  r  r   r*   r2   r6   r:   r?   rB   rD   rG   rK   TestCaserM   r   r  r   mainr   r   r   <module>rh     sp    %   & 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MMO r   