
    J/Phϥ                        d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZmZmZmZmZmZmZmZ d dlmZmZmZmZ d dlmZmZ d dlmZmZm Z  d d	l!m"Z" d d
l#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- d dl.m/Z/m0Z0m1Z1m2Z2 d dl3m4Z4m Z m5Z5 d dl6m7Z7 d dl8Z8eZ9 e7dej:        fdej:        fg           G d de;                      Z<dZ=dZ> G d de          Z? e5dd           G d de4                      Z@ G d de          ZA G d de          ZB G d d e          ZC G d! d"e          ZDeEd#k    r e8jF                     dS dS )$    N)
namedtuple)StringIO)njittypeofprange)typestypingirbytecodepostproccpuregistryutils)TestCasetagskip_parfors_unsupportedskip_unless_scipy)EquivSetArrayAnalysis)CompilerFlagsPassManager)remove_dead)
ExtractByteCodeTranslateByteCode	FixupArgsIRProcessingDeadBranchPruneRewriteSemanticConstantsGenericRewritesWithLifting
PreserveIRInlineClosureLikes)NopythonTypeInferenceAnnotateTypesNopythonRewritesIRLegalization)FunctionPassr   register_pass)jitclassLTc                       e Zd Zd ZdS )ExampleClass3700c                 (    || _         |dz   | _        d S N   )r+   r,   )selfns     _/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_array_analysis.py__init__zExampleClass3700.__init__+   s    Q    N)__name__
__module____qualname__r5    r6   r4   r.   r.   )   s#            r6   r.   )g333333?      c                       e Zd ZdZd Zd ZdS )TestEquivSetz'
    Test array_analysis.EquivSet.
    c                    t                      }|                    dd           |                     |                    dd                     |                     |                    dd                     |                    dd           |                     |                    dd                     |                     |                    dd                     |                    dd           |                     |                    dddd                     |                     |                    dd                     d S Nabcde)r   insert_equiv
assertTrueis_equivassertFalse)r2   s1s     r4   test_insert_equivzTestEquivSet.test_insert_equiv:   s   ZZ
S!!!C--...C--...
S!!!C--...S#..///
S!!!Cc377888S#../////r6   c                    t                      }t                      }|                    |          }|                     |                                           |                    dd           |                    |          }|                     |                                           |                    dd           |                    |          }|                     |                                           |                    dd           |                    |          }|                     |                                           |                    dd           |                    dd           |                    |          }|                     |                    dd                     |                     |                    dd                     |                     |                    dd                     d S rA   )r   	intersectrH   is_emptyrG   rI   rJ   )r2   rK   s2rs       r4   test_intersectzTestEquivSet.test_intersectF   s   ZZZZLL

%%%
S!!!LL

%%%
S!!!LL

%%%
S!!!LL

%%%
S!!!
S!!!LL

3,,---C--...C--.....r6   N)r7   r8   r9   __doc__rL   rR   r:   r6   r4   r?   r?   5   s<         
0 
0 
0/ / / / /r6   r?   FT)analysis_onlymutates_CFGc                       e Zd ZdZd Zd ZdS )ArrayAnalysisPassarray_analysis_passc                 .    t          j        |            d S N)r(   r5   )r2   s    r4   r5   zArrayAnalysisPass.__init__`   s    d#####r6   c                    t          |j        |j        |j        |j                  |_        |j                            |j        j                   t          j	        |j                  }|                                 |j
                            |j                                                   |j        r2t          |j
                  dk    r|                    |j
                   dS )Nr1   F)r   	typingctxfunc_irtypemap	calltypesarray_analysisrunblocksr   PostProcessorfunc_ir_copiesappendcopytest_idempotencelen)r2   state	post_procs      r4   run_passzArrayAnalysisPass.run_passc   s    ,U_em-2]EO M  M  !5666*5=99	##EM$6$6$8$8999! 	9c%*>&?&?!&C&C""5#7888ur6   N)r7   r8   r9   _namer5   rk   r:   r6   r4   rW   rW   \   s7        !E$ $ $	 	 	 	 	r6   rW   c                   :    e Zd Zeddi dddfd            ZddZdS )ArrayAnalysisTesterNc           	          |st                      }d|_        |t          j        j        }|t          j        j        } | |||||||          S NT)r   nrtr   
cpu_targettyping_contexttarget_context)clsargsreturn_typeflagslocalslibraryrs   rt   s           r4   mk_pipelinezArrayAnalysisTester.mk_pipelineq   sa      	GGE	!%0?N!&1@Ns>>7D+&" " 	"r6   c                 n   t           j                            |          | j        _        t                                          | j                   d| j        _        d| j        _        | j        }g |_	        ||_
        d}t          |          }|                    t          d           |                    t          d           |                    t          d           |j        j        sQ|                    t$          d           |                    t&          d           |                    t(          d	           |                    t*          d
           |                    t,          d           |j        j        s|                    t.          d           |                    t0          d           |r|                    t0          d           |                    t2          d           |                    t4          d           |                                 |                    |           |j        S )z4
        Populate and run compiler pipeline
        r:   Narray_analysis_testingzanalyzing bytecodezfix up argszprocessing IRznopython rewriteszrewrite semantic constantszdead branch pruningz(inline calls to locally defined closuresznopython frontendzarray analysiszidempotence array analysisz$ensure IR is legal prior to loweringzannotate types)r   FunctionIdentityfrom_functionri   func_idr   rk   liftedlifted_fromrd   rg   r   add_passr   r   r   rx   no_rewritesr    r   r   r#   r$   r&   rW   r'   r%   finalizera   r`   )r2   funcrg   ri   namepms         r4   compile_to_irz!ArrayAnalysisTester.compile_to_ir~   s    &6DDTJJ
""4:...
!%

!!1'
%';<<<
I}---
L/222{& 	@KK)<===KK02NOOOKK)>???
&>	@ 	@ 	@ 	)+>???{& 	?KK(*=>>> 	%'7888 	IKK)+GHHH
N$JKKK
M#3444 	
u##r6   rZ   )r7   r8   r9   classmethodr{   r   r:   r6   r4   rn   rn   o   sT        +/tB d
" 
" 
" [
"+$ +$ +$ +$ +$ +$r6   rn   c                       e Zd Zd Zg g dfdZd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zed             ZdS )TestArrayAnalysisc                 F   g }|D ]h}t          |j        |j        |           t                      }|                    |           |                    |                                           i|                     t          t          |                    dk               d S )N)filer1   )
r   rb   	arg_namesr   dumpre   getvaluerH   rh   set)r2   ir_listoutputsr]   outputs        r4   
compare_irzTestArrayAnalysis.compare_ir   s     	. 	.G(97CCCZZFLLfL%%%NN6??,,----CLL))Q./////r6   Tc                 P   t                               |          }|r| j        nd }|                    ||          }|r|D ]}	 |	|j        d                    |/|                     |                     |j                             dS |D ]}	 |	|j        |j                   dS )z<
        Compile the given function and get its IR.
        c                     dS )Nr:   r:   )xs    r4   <lambda>z5TestArrayAnalysis._compile_and_test.<locals>.<lambda>   s    r r6   r   N)	rn   r{   r   r   
equiv_setsrH   _has_no_assertcallr]   r^   )
r2   fnarg_tysassertsequivs
idempotenttest_pipelinerg   analysisr   s
             r4   _compile_and_testz#TestArrayAnalysis._compile_and_test   s     ,77@@.8I4??kk ..r3CDD 	- - -X(+,,,,?OOD33H4DEEFFFFF 9 9X%x'788889 9r6   c                    d                     d                    |                    }|j                                        D ]\  }}|                    d          D ]|}|                    |j        j                  }t          |t          j
                  rA|j        dk    r6||j        d         j                 }	|	j                            |          r  dS }dS )	NzSizes of {} do not matchz, callopassert_equivr   TF)formatjoinrb   items
find_exprsget_definitionr   r   
isinstancer
   Globalrv   literal_value
startswith)
r2   r]   r^   rv   msglabelblockexprr   typs
             r4   _has_assertcallz!TestArrayAnalysis._has_assertcall   s    (//		$@@#N0022 	$ 	$LE5((F(33 $ $++DIN;;b"),, $N1J1J!$)A,"34C(33C88 $#ttt$ ur6   c                    |j                                         D ]\  }}|                    d          D ]}|j        dk    r|                    |j        d          }|                    |d          }t          |t          j                  r|j	        n|}t          |t          j                  r|j	        n|}||k    r  dS dS )Ngetattrr   shapeT)lhs_onlyF)
rb   r   r   attrr   valuer   r
   Varr   )r2   r]   r   r   r   r   yzs           r4   _has_shapecallz TestArrayAnalysis._has_shapecall   s    #N0022 	$ 	$LE5((I(66 $ $9''..tzD.IIA..q4.@@A",Q"7"7>QA",Q"7"7>QAAvv#ttt$ ur6   c                    |j                                         D ]f\  }}|                    d          D ]J}|                    |j        j                  }t          |t          j                  r|j        dk    r  dS KgdS )Nr   r   r   FT)	rb   r   r   r   r   r   r   r
   r   )r2   r]   r   r   r   r   s         r4   r   z$TestArrayAnalysis._has_no_assertcall   s    #N0022 	! 	!LE5((F(33 ! !++DIN;;b"),, !N1J1J 555! tr6   c                       fdS )Nc                 X                                             | |                    S rZ   )rH   r   r]   r^   rv   r2   s     r4   r   z/TestArrayAnalysis.with_assert.<locals>.<lambda>   s*      '488): ): r6   r:   r2   rv   s   ``r4   with_assertzTestArrayAnalysis.with_assert   "    : : : : : 	:r6   c                       fdS )Nc                 X                                             | |                    S rZ   )rJ   r   r   s     r4   r   z2TestArrayAnalysis.without_assert.<locals>.<lambda>   s,    (8(8  '488): ): r6   r:   r   s   ``r4   without_assertz TestArrayAnalysis.without_assert   r   r6   c                      fd fdS )Nc                     t                    }t          |dz
            D ]*}|                     |         |dz
                     s dS +dS Nr1   FTrh   rangerI   	equiv_setr3   irv   s      r4   checkz+TestArrayAnalysis.with_equiv.<locals>.check   s\    D		A1q5\\ ! ! ))$q'4A;?? ! 55!4r6   c                 @                          |                     S rZ   rH   r   r   r2   s    r4   r   z.TestArrayAnalysis.with_equiv.<locals>.<lambda>       y1A1A!B!B r6   r:   r2   rv   r   s   ``@r4   
with_equivzTestArrayAnalysis.with_equiv   3    	 	 	 	 	 CBBBBBr6   c                      fd fdS )Nc                     t                    }t          |dz
            D ]*}|                     |         |dz
                     r dS +dS r   r   r   s      r4   r   z.TestArrayAnalysis.without_equiv.<locals>.check   s\    D		A1q5\\ ! !%%d1gtAE{;; ! 55!4r6   c                 @                          |                     S rZ   r   r   s    r4   r   z1TestArrayAnalysis.without_equiv.<locals>.<lambda>   r   r6   r:   r   s   ``@r4   without_equivzTestArrayAnalysis.without_equiv   r   r6   c                       fdS )Nc                 V                                             |                     S rZ   )rH   r   r]   sr2   r   s     r4   r   z2TestArrayAnalysis.with_shapecall.<locals>.<lambda>  s#    $//$2E2Egq2Q2Q"R"R r6   r:   r2   r   s   ``r4   with_shapecallz TestArrayAnalysis.with_shapecall  s    RRRRRRr6   c                       fdS )Nc                 V                                             |                     S rZ   )rJ   r   r   s     r4   r   z5TestArrayAnalysis.without_shapecall.<locals>.<lambda>  s&    $"2"243F3FwPQ3R3R"S"S r6   r:   r   s   ``r4   without_shapecallz#TestArrayAnalysis.without_shapecall  s    SSSSSSr6   c           
         d }|                      |d|                     dd          |                     dd          |                     dd          g	           d
 }|                      |t          j        fd            d }|                      |t          j        t          j        f|                     dd          g           d }|                      |t          j        fd            d }|                      |t          j        fd            d }|                      |t          j        fd            d }|                      |t          j        t          j        f|                     dd          |                     dd          g           d }|                      |t          j        t          j        f|                     dd          |                     dd          g           d }	|                      |	t          j        t          j        f|                     dd          |                     dd          g           d }
|                      |
t          j        f|                     dd          g           d }|                      |t          j        t          j        f|                     dd          |                     dd          g           d }|                      |d|                     dd          g	           d }|                      |d|                     ddd          g	           d }t          j        t          j        d d          }|                      |t          j        ||f          fd            d! }|                      |t          j        f|                     dd          g	           t          d"ddg          fd#}|                      |t          j        f|                     d$d%          g	           d& }|                      |t          j        t          j        d d          fd            d' }|                      |t          j        t          j        d(d          fd            d) }|                      |t          j        t          j        t          j        fd            d* }|                      |t          j        t          j        fd            d+ }|                      |t          j        t          j        d d          t          j        t          j        d d          fd            |                      |t          j        t          j        d(d          t          j        t          j        d(d          fd            | 	                    t                    5 }|                      |t          j        t          j        d d          t          j        t          j        d(d          fd            d d d            n# 1 swxY w Y   d,}|                     |t          |j                             d S )-Nc                      t          j        d          } t          j        d          }d}d}t          j        ||f          }d S Nr   r1   npzeros)rB   rC   mr3   rD   s        r4   test_0z1TestArrayAnalysis.test_base_cases.<locals>.test_0  s>    AAAA!Q  AFr6   r:   rB   )r   rC   r1   rD   r   r1   r   c                 \    t          j        |           }t          j        |           }||z   S rZ   r   r3   rB   rC   s      r4   test_1z1TestArrayAnalysis.test_base_cases.<locals>.test_1  %    AAq5Lr6   )r   c                 \    t          j        |          }t          j        |           }||z   S rZ   r   r   r3   rB   rC   s       r4   test_2z1TestArrayAnalysis.test_base_cases.<locals>.test_2  r   r6   c                 4    t          j        |           }|| z   S rZ   r   r3   rB   s     r4   test_3z1TestArrayAnalysis.test_base_cases.<locals>.test_3!  s    Aq5Lr6   c                 H    t          j        |           }|dz   }|dz   }||z   S Nr1      r   r3   rB   rC   rD   s       r4   test_4z1TestArrayAnalysis.test_base_cases.<locals>.test_4&  s*    AAAAAq5Lr6   c                 h    t          j        | | f          }| }t          j        || f          }||z   S rZ   r   )r3   rB   r   rC   s       r4   test_5z1TestArrayAnalysis.test_base_cases.<locals>.test_5-  s6    !Q  AA!Q  Aq5Lr6   c                 p    t          j        |          }t          j        |           }||z   }||z
  }||z   S rZ   r   )r   r3   rB   rC   rE   rF   s         r4   test_6z1TestArrayAnalysis.test_base_cases.<locals>.test_64  s7    AAAAAAq5Lr6   rE   rF   c                 ~    t          j        |          }t          j        |           }| dk    r||z   }n||z
  }||z   S N
   r   r   r3   rB   rC   rE   s        r4   test_7z1TestArrayAnalysis.test_base_cases.<locals>.test_7>  B    AABwwEEq5Lr6   c                 ~    t          j        |          }t          j        |           }| dk    r||z   }n||z   }||z   S r	  r   r  s        r4   test_8z1TestArrayAnalysis.test_base_cases.<locals>.test_8J  r  r6   c                     t          j        |           }d}| dk     r9| dz  } t          j        |           }|t          j        ||z             z  }| dk     9|S Nr   r  r1   r   onessum)r   Ar   Bs       r4   test_9z1TestArrayAnalysis.test_base_cases.<locals>.test_9V  s[    

AAa%%QGAJJRVAE]]" a%% Hr6   r  r  c                 &   | dz
  }|dz   }|dz   }t          j        |          }t          j        |          }t          j        |          }t          j        |           }t          j        ||z             }	t          j        ||z             }
|	|
z   S r0   r   r   r  )r   r3   pqrQ   r  r  CDr   ts              r4   test_10z2TestArrayAnalysis.test_base_cases.<locals>.test_10a  s|    AAAAAAAAAAq1uAq1uAq5Lr6   r  r  c                      t          j        d          } t          j        d          }| dd          }|d d         }t          |          }t          |          }||k    S )N   r1   r   r  rh   rB   rC   rD   rE   rF   fs         r4   test_11z2TestArrayAnalysis.test_base_cases.<locals>.test_11p  sU    

A

A!""A#2#AAAAA6Mr6   r%  c                  4   t          j        d                              d          } t          j        d                              d          }| dd d d f         }|d dd d f         }|j        d         }|j        d         }t	          |          }||k    S )N   )r!  r!  r1   r"  r   )r   r  reshaper   rh   )rB   rC   rD   rE   rF   r%  gs          r4   test_12z2TestArrayAnalysis.test_base_cases.<locals>.test_12{  s    ##E**A##E**A!""QQQ$A#2#aaa%A
A
AAA6Mr6   r*  c                     | }|d         S Nr   r:   )r,   T2s     r4   test_tup_argz7TestArrayAnalysis.test_base_cases.<locals>.test_tup_arg  s    Ba5Lr6   r1   c                     t          j        |           }|f}t          j        t          |d                             }|S r-  r#  )r   r  Sr  s       r4   test_arr_in_tupz:TestArrayAnalysis.test_base_cases.<locals>.test_arr_in_tup  s4    

AAAaD		""AHr6   r,   c                 ,     | |           }|d         S r-  r:   )r3   rQ   r,   s     r4   test_namedtuplez:TestArrayAnalysis.test_base_cases.<locals>.test_namedtuple  s    !QAQ4Kr6   rQ   r3   r3   c                 T    t          j        |           }t          |d                   S r-  )r   whererh   )r  rD   s     r4   test_np_where_tup_returnzCTestArrayAnalysis.test_base_cases.<locals>.test_np_where_tup_return  s    Aqt99r6   c                 L    | j         \  }}t          j        ||f          }| |z   S rZ   )r   r   r  )r  r   r3   r  s       r4   
test_shapez5TestArrayAnalysis.test_base_cases.<locals>.test_shape  s'    WFQAAq5Lr6   r  c                 Z   t          j        |           }t          j        |          }t          j        |          }| |k    rt          j        ||z             }nd}||k    rd}nt          j        ||z             }d}| |k    r ||k    rt          j        ||z   |z             }||z   |z   S r-  r  )	lr   r3   r  r  r  rQ   r   r  s	            r4   	test_condz4TestArrayAnalysis.test_base_cases.<locals>.test_cond  s    

A

A

AAvvF1q5MMAvvF1q5MMAAvv66q1uqy))Aq519r6   c                     | |k    sJ t          j        |           }t          j        |          }t          j        ||z             S rZ   r  )r   r3   r  r  s       r4   test_assert_1z8TestArrayAnalysis.test_base_cases.<locals>.test_assert_1  s;    6666

A

A6!a%== r6   c                 T    | j         |j         k    sJ t          j        | |z             S rZ   )r   r   r  )r  r  s     r4   test_assert_2z8TestArrayAnalysis.test_base_cases.<locals>.test_assert_2  s)    7ag%%%%6!a%== r6   zDimension mismatch)r   r   r   intpr   r   ArrayTupler   assertRaisesAssertionErrorassertInstr	exception)r2   r   r   r   r   r  r  r  r  r  r  r  r&  r+  r/  int_arr_typr2  r4  r8  r:  r=  r?  rA  raisesr   r,   s                            @r4   test_base_casesz!TestArrayAnalysis.test_base_cases  s   	 	 	 	vr'+sD'A'A'+sD'A'A'+sF'C'C'E 	 	F 	F 	F
	 	 	 	v
}dCCC	 	 	 	v
EJ'?(,(8(8c(B(B'C 	 	E 	E 	E	 	 	 	v
}dCCC	 	 	
 	v
}dCCC	 	 	
 	v
}dCCC	 	 	 	v
EJ'?(,(8(8c(B(B(,(;(;C(E(E(G 	 	H 	H 	H	 	 	 	v
EJ'?(,(8(8c(B(B(,(;(;C(E(E(G 	 	H 	H 	H	 	 	 	v
EJ'?(,(8(8c(B(B(,(8(8c(B(B(D 	 	E 	E 	E	 	 	 	v
}(,(8(8c(B(B'C 	 	E 	E 	E
	 
	 
	 	wEJ(@(,(8(8c(B(B(,(;(;C(E(E(G 	 	H 	H 	H	 	 	 	w'+sC'@'@&A 	 	C 	C 	C	 	 	 	w'+sC'E'E&F 	 	H 	H 	H	 	 	 k%*a55|[+{3446 	 	F 	F 	F	 	 	 	'+sC'@'@&A 	 	C 	C 	C sSI&&	 	 	 	 	 	(,Z(H(H'I 	 	L 	L 	L	 	 	 	7[Q,,. 	 	> 	> 	>	 	 	 	zEK
As,K,K+M'+ 	 	- 	- 	-	 	 	" 	y5:uz5:*N'+ 	 	- 	- 	-	! 	! 	!
 	}uz5:.F'+ 	 	- 	- 	-	! 	! 	! 	}u{5:q#/N/N/4{5:q#/N/N/Q'+ 	 	- 	- 	- 	}u{5:q#/N/N/4{5:q#/N/N/Q'+ 	 	- 	- 	- ~.. 	1&""=5;uz1c3R3R38;uz1c3R3R3U+/ # 1 1 1	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 #c3v/0011111s   AX))X-0X-c           	      H   ddl m} |d             fd}|                     |t          j        f|                     dd          g|                     dd          g           fd}|                     |t          j        f|                     dd          g	            |d
          d             fd}|                     |t          j        f|                     ddd          |                     dd          g|                     dd          g           d S )Nr   )stencilc                 N    d| d         | d         z   | d         z   | d         z   z  S )Ng      ?r   )r1   r   )r   r"  )r"  r   r:   rB   s    r4   kernel_1z4TestArrayAnalysis.test_stencilcall.<locals>.kernel_1  s+    1S6AcF?QtW4qw>??r6   c                 P    t          j        | | f          } |          }||z   S rZ   r   r  r3   rB   rC   rQ  s      r4   r   z2TestArrayAnalysis.test_stencilcall.<locals>.test_1  s*    1AAq5Lr6   rB   rC   r   r   c                     t          j        | | f          }t          j        | dz   | dz   f          } ||           |S )Nr1   )outrS  rT  s      r4   r   z2TestArrayAnalysis.test_stencilcall.<locals>.test_2  sI    1A1QqS	""AHQAHr6   r   )rD   )standard_indexingc                 6    | d         |d         z   |d         z   S )N)r   r1   r   )r   r"  r   r   r:   )rB   rC   rD   s      r4   kernel_2z4TestArrayAnalysis.test_stencilcall.<locals>.kernel_2  s    U8ai'!A$..r6   c                     t          j        d                              ddd          }t          j        d                              | dd          }t          j        d          } |||          }|S )N@   r=      r  r1   )r   aranger)  r   )r3   rB   rC   uvrZ  s        r4   r   z2TestArrayAnalysis.test_stencilcall.<locals>.test_3  sf    	"%%a!,,A	"%%a!,,AAAq!!AHr6   r`  r_  )	numba.stencils.stencilrN  r   r   rB  r   r   r   r   )r2   rN  r   r   r   rQ  rZ  s        @@r4   test_stencilcallz"TestArrayAnalysis.test_stencilcall  s   222222		@ 	@ 
	@	 	 	 	 	
 	v
}'+sC'@'@&A(,(;(;C(E(E'F 	 	H 	H 	H	 	 	 	 	 	v
}'+'9'9#s'C'C&D 	 	F 	F 	F 
6	*	*	*	/ 	/ 
+	*	/	 	 	 	 	 	v
}'+sC'E'E'+'9'9#s'C'C'E(,(8(8c(B(B'C 	 	E 	E 	E 	E 	Er6   c                    d }|                      |t          j        t          j        f|                     dd          |                     dd          gd           d }|                      |t          j        f|                     dd          |                     dd	          gd           d
 }|                      |t          j        f|                     dd          gd           d }|                      |t          j        f|                     dd          gd           d }|                      |t          j        t          j        f|                     dd          |                     dd          |                     dd          gd           d }|                      |t          j        f|                     dd          gd           d }|                      |t          j        f|                     dd          gd           d }|                      |t          j        f|                     dd          gd           d }	|                      |	t          j        f|                     dd          |                     dd          |                     dd          |                     dd          gd           d S )Nc                     t          j        |           }t          j        |          }t          j        ||z             }|d| dz
           }|d|dz
           }t          j        ||z             }||z   S r0   r  )r   r3   r  r  r   r  r  r  s           r4   r   z,TestArrayAnalysis.test_slice.<locals>.test_1  si    AAq1uA!AaC%A!AaC%Aq1uAq5Lr6   r  r  r  r  F)r   r   c                     t          j        |           }|d| dz
           }|d| dz
           }|d| dz
           }||z   }||z   S )Nr   r<   r1   r  r   )r   r  r  r  r  Es         r4   r   z,TestArrayAnalysis.test_slice.<locals>.test_2  sT    A!AaC%A!AaC%A!AaC%AAAq5Lr6   rf  c                     t          j        | | f          }|d| dz
  d| dz
  f         }|d| dz
  d| dz
  f         }||z   }|S r  r   r   r  r  r  rf  s        r4   r   z,TestArrayAnalysis.test_slice.<locals>.test_3   s[    !AA!AaC%!A#+A!AaC%!A#+AAAHr6   c                     t          j        | | f          }|d| dz
  d d f         }|d| dz
  d d f         }||z   }|S r  r   rh  s        r4   r  z,TestArrayAnalysis.test_slice.<locals>.test_4*  sS    !AA!AaC%'
A!AaC%'
AAAHr6   c                     t          j        |           }t          j        |           }|d| dz
           |d| dz
  <   t          j        |          }|d| dz
           }||d|dz
  <   ||z   S )Nr1   r   r  r   )r   r3   r  r  r  r  s         r4   r  z,TestArrayAnalysis.test_slice.<locals>.test_54  ss    AA1Q3xAa!eHA!AaC%AAa!eH q5Lr6   c                     t          j        | | f          }|d| dz
  d df         }|d| dz
  d df         }||z   }|S )Nr   r  r"  r1   r   rh  s        r4   r  z,TestArrayAnalysis.test_slice.<locals>.test_6D  sS    !AA!AaC%)A!AaC%)AAAHr6   c                     t          j        | | f          }|d| dz
  ddf         }|d| dz
  ddf         }||z   }|S )Nr   r  r"  r1   r   rh  s        r4   r  z,TestArrayAnalysis.test_slice.<locals>.test_7N  sS    !AA!AaC%2+A!AaC%2+AAAHr6   c                 z    t          j        | | f          }|d | dz
  dd f         }|ddd d f         }||z   }|S )Nr  r   r1   r"  r   rh  s        r4   r  z,TestArrayAnalysis.test_slice.<locals>.test_8X  sO    !AA$1Q3$qrr'
A!B$qqq&	AAAHr6   c                     t          j        |           }|d d         }|dd          }|d dd         }||z   }|}|dz  }|||fS )Nr   r1   r"  r   )r   r  r  r  r  rf  Fs          r4   r  z,TestArrayAnalysis.test_slice.<locals>.test_9b  s\     !A"1"A!""A&2b&	AAAAFAa7Nr6   r   rr  )r   r   )r   r   rB  r   r   r   r   )
r2   r   r   r   r  r  r  r  r  r  s
             r4   
test_slicezTestArrayAnalysis.test_slice  sl   	 	 	 	v
5:'?(,(8(8c(B(B(,(;(;C(E(E(G*/ 	 	1 	1 	1
	 	 	 	v
}(,(;(;C(E(E(,(;(;C(E(E(G*/ 	 	1 	1 	1
	 	 	 	v
}(,(;(;C(E(E'F*/ 	 	1 	1 	1	 	 	 	v
}(,(;(;C(E(E'F*/ 	 	1 	1 	1		 		 		 	v
5:'>(,(;(;C(E(E(,(8(8c(B(B(,(8(8c(B(B(D +0	 	 	1 	1 	1	 	 	 	v
}(,(;(;C(E(E'F*/ 	 	1 	1 	1	 	 	 	v
}(,(8(8c(B(B'C*/ 	 	1 	1 	1	 	 	 	v
}(,(;(;C(E(E'F*/ 	 	1 	1 	1
	 
	 
	 	v
}'+'9'9#s'C'C'+sC'@'@'+sC'@'@'+sC'@'@'C +0 	 	1 	1 	1 	1 	1r6   c                    d }|                      |t          j        f|                     dd          |                     dd          |                     dd          g           d }|                      |t          j        f|                     dd          g|                     d          g	           d
 }|                      |t          j        f|                     dd          |                     dd          |                     dd          g           d }|                      |t          j        f|                     dd          |                     dd          |                     dd          g           d }|                      |t          j        f|                     dd          |                     dd          |                     dd          |                     dd          g           d }|                      |t          j        f|                     dd          g           d }|                      |t          j        f|                     dd          |                     dd          g|                     d          |                     d          g	           d }|                      |t          j        t          j        dd          f|                     ddddd          g|                     d          |                     d          g	           d }	|                      |	t          j        f|                     dd          g|                     d          g	           d }
|                      |
t          j        t          j        f|                     dd          |                     dd          |                     dd          g           d }|                      |t          j        t          j        t          j        f|                     dd          |                     dd          |                     dd          |                     dd          |                     dd          |                     dd          |                     d d          g           d! }|                      |t          j        t          j        f|                     dd          |                     dd          |                     dd          g           d" }t          d#          d$z   }dgd% t          t          d          |          D             z   }dgd& t          t          d          |          D             z   }|d' t          t          d          |          D             z  }|                      |t          j        f | j        |  | j        | g           d( }|                      |t          j        t          j        f|                     dd)          |                     d*d+          g|                     d          |                     d          |                     d*          |                     d,          g	           d- }|                      |d.|                     d,d/          |                     d0d1          |                     d2d3          |                     d4d5          |                     d6d7          |                     d8d9          |                     d:d;          g           d< }|                      |t          j        t          j        f|                     d=d          |                     dd>          |                     dd?d@          |                     dAdB          |                     dCdDdE          g           dF }|                      |t          j
        t          j
        f|                     ddG          |                     ddH          g           dI }|                      |t          j        t          j        t          j        f|                     ddJ          |                     ddK          |                     ddJ          |                     dAdL          |                     dCdM          |                     dDdM          g|                     d=dN          g	           dO }|                      |t          j        t          j        f|                     ddd          gd 	           dP }|                      |d.|                     dd          gd 	           d S )QNc                     t          j        |           }t          j        | | f          }t          j        | | f          }d S N)r   r   r  s       r4   
test_zerosz6TestArrayAnalysis.test_numpy_calls.<locals>.test_zerosv  <    A!Q  A1v&&&AAAr6   rB   r3   rC   r5  rD   r   c                 \    t          j        d          }t          j        d          }||z   S r   )r   arrayr  r   s      r4   test_0d_arrayz9TestArrayAnalysis.test_numpy_calls.<locals>.test_0d_array  s%    A

Aq5Lr6   rU  c                     t          j        |           }t          j        | | f          }t          j        | | f          }d S rv  rS  r  s       r4   	test_onesz5TestArrayAnalysis.test_numpy_calls.<locals>.test_ones  s:    

AAAq!f%%%AAAr6   c                     t          j        |           }t          j        | | f          }t          j        | | f          }d S rv  )r   emptyr  s       r4   
test_emptyz6TestArrayAnalysis.test_numpy_calls.<locals>.test_empty  rx  r6   c                     t          j        |           }t          j        |           }t          j        | |           }t          j        | | dz             }d S )N)N)r  Mr1   )r   eyer3   rB   rC   rD   rE   s        r4   test_eyez4TestArrayAnalysis.test_numpy_calls.<locals>.test_eye  sN    q		AAa   Aa!e$$$AAAr6   rE   c                 .    t          j        |           }d S rZ   )r   identityr   s     r4   test_identityz9TestArrayAnalysis.test_numpy_calls.<locals>.test_identity  s    AAAAr6   c                     t          j        |           }t          j        |          }t          j        |          }t          j        |d          }d S )Nr1   )k)r   r  diagr  s        r4   	test_diagz5TestArrayAnalysis.test_numpy_calls.<locals>.test_diag  s>    AA

A

AQAAAr6   )r3   c                     t          j        |           }t          j        |           }t          j        |           }t          j        | d          }t          j        |           }d S r0   )r   
empty_like
zeros_like	ones_like	full_likeasfortranarrayr$  s         r4   test_array_likez;TestArrayAnalysis.test_numpy_calls.<locals>.test_array_like  sR    a  Aa  AQAQ""A!!$$AAAr6   r  r  rF   r%  c                     t          j        | | z            }|                    | | f          }|                                |                                z   S rZ   )r   r  r)  r  r   s      r4   test_reshapez8TestArrayAnalysis.test_numpy_calls.<locals>.test_reshape  sC    AA		1a&!!A5577QUUWW$$r6   c                 h    t          j        | |f          }|j        }|                                }d S rZ   r   r  r,   	transposer   r3   rB   rC   rD   s        r4   test_transposez:TestArrayAnalysis.test_numpy_calls.<locals>.test_transpose  s+    AAAAAAr6   )r   r3   )r3   r   c                    t          j        | ||f          }|j        }|                                }|                    ddd          }|                    d          }|                    ddd          }|                    d          }	d S )Nr  r   r1   )r  r   r1   )r   r  r1   r  )
r   r3   r  rB   rC   rD   rE   dtrF   ets
             r4   test_transpose_3dz=TestArrayAnalysis.test_numpy_calls.<locals>.test_transpose_3d  s{    Aq	""AAAAa""AW%%BAa""AW%%BBBr6   )r   r3   r  )r  r3   r   )r  r   r3   r  )r   r  r3   r  c                 N    t          j        | |f          }|j        }|j        }d S rZ   )r   r  realimagr  s        r4   test_real_imag_attrz?TestArrayAnalysis.test_numpy_calls.<locals>.test_real_imag_attr  s%    AAAAAAr6   c                    t           j                            |           }t           j                            | |           }t           j                            |           }t           j                            | |           }t           j                            |           }t           j                            | | f          }t           j                            | | f          }t           j                            |           }t           j                            | | f          }	t           j                            | | f          }
t           j                            |           }t           j                            | | f          }t           j                            | | f          }t           j                            |           }t           j                            | | f          }t           j                            | | f          }t           j                            |           }t           j                            | | f          }t           j                            | | f          }t           j                            d|           }t           j                            d| | f          }t           j                            d| | f          }t           j        	                    d|           }t           j        	                    d| | f          }t           j        	                    d| | f          }t           j        
                    d|           }t           j        
                    d| | f          }t           j        
                    d| | f          }t           j                            d|           }t           j                            d| | f          }t           j                            d| | f          }t           j                            d|           } t           j                            d| | f          }!t           j                            d| | f          }"t           j                            d|           }#t           j                            d| | f          }$t           j                            d| | f          }%t           j                            d|           }&t           j                            d| | f          }'t           j                            d| | f          }(t           j                            dd|           })t           j                            dd| | f          }*t           j                            dd| | f          }+t           j                            dd|           },t           j                            dd| | f          }-t           j                            dd| | f          }.t           j                            dd|           }/t           j                            dd| | f          }0t           j                            dd| | f          }1t           j                            dd|           }2t           j                            dd| | f          }3t           j                            dd| | f          }4t           j                            dd|           }5t           j                            dd| | f          }6t           j                            dd| | f          }7t           j                            dd|           }8t           j                            dd| | f          }9t           j                            dd| | f          }:t           j                            dd|           };t           j                            dd| | f          }<t           j                            dd| | f          }=t           j                            dd|           }>t           j                            dd| | f          }?t           j                            dd| | f          }@t           j                            dd|           }At           j                            dd| | f          }Bt           j                            dd| | f          }Ct           j                            ddd|           }Dt           j                            ddd| | f          }Et           j                            ddd| | f          }Fd S )N)sizer
  g?r   r1   rm  )r   randomrandrandnranfrandom_samplesamplestandard_normal	chisquareweibullpower	geometricexponentialpoissonrayleighnormaluniformbetabinomialr%  gamma	lognormallaplacerandint
triangular)Gr3   a0a1b0b1c0c1c2d0d1d2e0e1e2f0f1f2g0g1g2h0h1h2i0i1i2j0j1j2k0k1k2l0l1l2m0m1m2n0n1n2o0o1o2p0p1p2q0q1q2r0r1r2s0rK   rP   t0t1t2u0u1u2v0v1v2w0w1w2x0x1x2sG                                                                          r4   test_randomz7TestArrayAnalysis.test_numpy_calls.<locals>.test_random  s7   ""B1%%B##BA&&B""BA''BaV,,B((++B((!Q00B((q!f(55B!!!$$B!!1a&))B!!1v!..B!!!$$B!!1a&))B!!1v!..B**1--B**Aq622B**A*77B$$R++B$$R!Q00B$$Rq!f$55B""2q))B""21v..B""2QF"33BQ''BaV,,B1a&11B$$S!,,B$$S1a&11B$$S1v$66B&&r1--B&&rAq622B&&rA&77B""2q))B""21v..B""2QF"33B##B**B##BA//B##BaV#44B!!!Q**B!!!QA//B!!!QaV!44B""1a++B""1a!Q00B""1aq!f"55BQ**BQA//BQaV44B##Aq!,,B##Aq1a&11B##Aq1v#66BS!Q''BS!aV,,BS!1a&11Ba++Ba!Q00Baq!f55B$$Q1--B$$QAq622B$$QA$77B""1a++B""1a!Q00B""1aq!f"55B""1b!,,B""1b1a&11B""1b1v"66B%%b!R33B%%b!R!Q88B%%b!Rq!f%==BBBr6   r   r1   c                 2    g | ]}t          |          d z   S )0chr.0r   s     r4   
<listcomp>z6TestArrayAnalysis.test_numpy_calls.<locals>.<listcomp>=  s"    IIIaSVVc\IIIr6   c                 2    g | ]}t          |          d z   S 1r  r  s     r4   r  z6TestArrayAnalysis.test_numpy_calls.<locals>.<listcomp>>  s"     M M M!Q# M M Mr6   c                 2    g | ]}t          |          d z   S r
  r  r  s     r4   r  z6TestArrayAnalysis.test_numpy_calls.<locals>.<listcomp>?  s"    ???A3q66C<???r6   c                    t          j        |           }t          j        |          }t          j        ||f          }t          j        d|f          }t          j        d|f          }t          j        ||f          }t          j        | df          }t          j        | df          }	t          j        ||	fd          }
t          j        | |f          }t          j        | |f          }t          j        ||f          }d S )Nr  r<   r1   axis)r   r  concatenate)r   r3   rB   rC   rD   rE   rF   r%  r   jr  r<  or  s                 r4   test_concatenatez<TestArrayAnalysis.test_numpy_calls.<locals>.test_concatenateD  s    

A

A1v&&AAAAA1v&&A AAAA1vA...AAAAA1v&&AAAr6   )r!  r3   r  )r   r!  r  c                     t          j        d          } t          j        d          }t          j        d          }t          j        | | f          }t          j        ||f          }t          j        | | f          }t          j        ||f          }t          j        | | f          }t          j        ||f          }t          j        ||f          }	d S )N)r  r  r<   )r  r<   r=   )r   r  vstackhstackdstack)
r  r<  r  r  r  rQ   r   r  r_  r`  s
             r4   test_vsd_stackz:TestArrayAnalysis.test_numpy_calls.<locals>.test_vsd_stack_  s    AA	""A	1a&!!A	1a&!!A	1a&!!A	1a&!!A	1a&!!A	1a&!!A	1a&!!AAAr6   r:   )r  r  r  )r=   r<   rQ   )r=   r   )r     r  )r1   r  r  r_  )r  r<   r  r`  )r  r<   r]  c                    t          j        |           }t          j        |          }t          j        ||f          }t          j        | |f          }t          j        | |f          }t          j        ||f          }t          j        ||fd          }t          j        ||fd          }	t          j        ||fd          }
t          j        ||fd          }d S )Nr   r  r1   r  r"  )r   r  stack)r   r3   rB   rC   rD   rE   rF   r%  r*  hr   r  s               r4   
test_stackz6TestArrayAnalysis.test_numpy_calls.<locals>.test_stacku  s    

A

A!Q  AAAAA!Q  A!Qa(((A!Qa(((A!Qa(((A!Qb)))AAAr6   r   )r  r   r*  )r  r   r3   r  )r   r  r3   r   r  )r   r3   r  c                 \    t          j        | |          }t          j        | |d          }d S r	  )r   linspacer   s       r4   test_linspacez9TestArrayAnalysis.test_numpy_calls.<locals>.test_linspace  s*    Aq!!AAq"%%AAAr6   )2   )r
  c                    t          j        t          j        d          t          j        d                    }t          j        t          j        d          t          j        d                    }t          j        t          j        d          t          j        d                    }t          j        t          j        d          t          j        d                    }t          j        t          j        ||f          t          j        ||f                    }t          j        t          j        ||f          t          j        | | f                    }d S )Nr1   r  r  )r1   r  r;   )r   dotr  )	r<  r   r3   rB   rC   rF   r  r   r  s	            r4   test_dotz4TestArrayAnalysis.test_numpy_calls.<locals>.test_dot  s    rwqzz271::..Arwqzz276??33A rwv44A rwv88Arw1vA88Arw1vA88AAAr6   r   )r<   )r  r=   )r   r   r<  c                     t          j        | |f          }t          j        |          }||z   }t          j        d|f          }||z   |z
  }d S r0   rS  )r   r3   rB   rC   rD   rE   rF   s          r4   test_broadcastz:TestArrayAnalysis.test_numpy_calls.<locals>.test_broadcast  sK    AA

AAAAAA	AAAr6   c                  j    t          j        t                    } t          j        t                    }d S rZ   )r   r  GVAL2)rB   rC   s     r4   test_global_tuplez=TestArrayAnalysis.test_numpy_calls.<locals>.test_global_tuple  s     AAAAr6   )r   r   rB  r   r   r   r   rC  ordr   float64r   )r2   rw  r{  r}  r  r  r  r  r  r  r  r  r  r  lastvars1dvars2dr  r  r  r!  r%  r'  r*  s                           r4   test_numpy_callsz"TestArrayAnalysis.test_numpy_callst  st
   	' 	' 	' 	zEJ='+sC'@'@'+sJ'G'G'+sC'@'@'B 	 	C 	C 	C
	 	 	 	}uzm'+'9'9#s'C'C&D(,(>(>s(C(C'D 	 	F 	F 	F	& 	& 	& 	y5:-'+sC'@'@'+sJ'G'G'+sC'@'@'B 	 	C 	C 	C
	' 	' 	' 	zEJ='+sC'@'@'+sJ'G'G'+sC'@'@'B 	 	C 	C 	C
	% 	% 	%
 	x%*'+sJ'G'G'+sJ'G'G'+sC'@'@'+'9'9#s'C'C'E 	 	F 	F 	F	 	 	}uzm'+sJ'G'G&H 	 	J 	J 	J	  	  	 
 	y5:-'+sF'C'C'+sJ'G'G'I(,(;(;C(@(@(,(>(>s(C(C(E 	 	F 	F 	F	% 	% 	% 	UZC1P1P0R#'??3S#s#K#K'M(,(;(;C(@(@(,(>(>s(C(C(E 	 	F 	F 	F	% 	% 	% 	|ej]'+sJ'G'G&H(,(>(>s(C(C'D 	 	F 	F 	F
	 	 	 	~
EJ/G'+sJ'G'G'+sJ'G'G'+sJ'G'G'I 	 	J 	J 	J	& 	& 	& 	05:uz5:2V'+sO'L'L'+sO'L'L'+sO'L'L'+sO'L'L'+t_'M'M'+sO'L'L'+t_'M'M'O 	 	P 	P 	P	 	 	
 	2UZ4L'+sJ'G'G'+sJ'G'G'+sJ'G'G') 	 	* 	* 	*F	> F	> F	>P 3xx!|II5S43H3HIIII M MuSXXt7L7L M M MM??s3xx)>)>????{UZM'6t'?'6t'?'A 	 	B 	B 	B	' 	' 	'$ 	/%*ej1I'+sH'E'E'+sH'E'E'G )-(;(;C(@(@(,(>(>s(C(C(,(>(>s(C(C(,(;(;C(@(@(B	 	 	C 	C 	C
	" 
	" 
	" 	~r'+sF'C'C'+sF'C'C'+sD'A'A'+sF'C'C'+sI'F'F'+sI'F'F'+sI'F'F') 	 	* 	* 	*
	* 
	* 
	* 	zEJ
+C(,S(A(A(,X(F(F(,$'m)= )=OO$'8 8OO$'m= =(
 	 		 		 			& 	& 	&
 	}u}em.L'+sE'B'B'+sE'B'B'D 	 	E 	E 	E	9 	9 	9 	x%*ej%*)M'+'9'9#t'D'D'+sD'A'A'+sD'A'A'+sF'C'C'+sJ'G'G'+sJ'G'G') )-(8(8c(B(B'C 	 	E 	E 	E	 	 	 	~
EJ/G'+sC'E'E&F'+ 	 	- 	- 	-
	 	 	 	0"'+sC'@'@&A'+ 	 	- 	- 	- 	- 	-r6   N)r7   r8   r9   r   r   r   r   r   r   r   r   r   r   r   rL  rb  rs  r   r0  r:   r6   r4   r   r      s-       0 0 0 68t 9 9 9 9"	 	 	
 
 
  : : :: : :C C CC C CS S ST T TS2 S2 S2l'E 'E 'ERl1 l1 l1\ H- H- H- H- H-r6   r   c                       e Zd ZdZdZed             Zed             Zed             Zed             Z	ed             Z
ed             Zd	S )
!TestArrayAnalysisParallelRequiredzkThis is to just split out tests that need the parallel backend and
    therefore serialised execution.
    Fc                     t           d             fd}	  t          |d          d           d S # t          $ r |                     d           Y d S w xY w)Nc                 
    || fS rZ   r:   )r   r   s     r4   swapz9TestArrayAnalysisParallelRequired.test_misc.<locals>.swap  s    a&Lr6   c                     t          j        |           }t          j        |           }t          |           D ]#} ||         ||                   \  ||<   ||<   $d S rZ   )r   r  r   )r   rB   rC   r   r5  s       r4   test_bug2537zATestArrayAnalysisParallelRequired.test_misc.<locals>.test_bug2537  sc    

A

A1XX . .!T!A$!--
!add. .r6   Tparallelr
  ztest_bug2537 raised IndexError!)r   
IndexErrorfail)r2   r7  r5  s     @r4   	test_miscz+TestArrayAnalysisParallelRequired.test_misc  s     
	 	 
		. 	. 	. 	. 	.	9-D---b11111 	9 	9 	9II7888888	9s   4 AAc                     t          ddg          } |d          fd}|                      t          |d                       |                       d S )NRowr  r<   c                  *    } | j         }|dk    rd}|S )Nr  r<   )r  )rrresrows     r4   	test_implzKTestArrayAnalysisParallelRequired.test_global_namedtuple.<locals>.test_impl  s"    B$CaxxJr6   Tr8  )r   assertEqualr   )r2   r>  rC  rB  s      @r4   test_global_namedtuplez8TestArrayAnalysisParallelRequired.test_global_namedtuple  st    &&c!ff	 	 	 	 	 	7i$7779999;;GGGGGr6   c                    d }d}t          |          }t          j        |j                  }t          j        |j                  }|                      t          |d          ||           |||                     d S )Nc                 b    t          | j                  D ]}|||<   |                                S rZ   )r   r,   r  )t_objXr   s      r4   rC  zLTestArrayAnalysisParallelRequired.test_array_T_issue_3700.<locals>.test_impl  s1    EG__  !5577Nr6   r!  Tr8  )r.   r   r   r,   rD  r   )r2   rC  r3   rH  X1X2s         r4   test_array_T_issue_3700z9TestArrayAnalysisParallelRequired.test_array_T_issue_3700  s    	 	 	
  ##XegXeg*DT***5"55yy7K7K	M 	M 	M 	M 	Mr6   c                 H   d }|                       t          |d                       |                       d }t          j        d          }t	          d           }t          j                             t          |d          ||           |||                     d S )Nc                  &    t          d d           } dS rp   )slicerP  s    r4   
test_impl1zQTestArrayAnalysisParallelRequired.test_slice_shape_issue_3380.<locals>.test_impl1  s    dD!!A4r6   Tr8  c                     |}| |         S rZ   r:   )r  rB   rC   s      r4   
test_impl2zQTestArrayAnalysisParallelRequired.test_slice_shape_issue_3380.<locals>.test_impl2  s    AQ4Kr6   r
  )rD  r   r   r^  rO  testingassert_array_equal)r2   rP  rR  r  rB   s        r4   test_slice_shape_issue_3380z=TestArrayAnalysisParallelRequired.test_slice_shape_issue_3380  s    	 	 	 	8j4888::JJLLIII	 	 	 IbMM$KK

%%+Dd+++Aq11::a3C3C	E 	E 	E 	E 	Er6   c                     t          d          d             }t          j        d          }t          j                             ||          |                    |                     d S )NTr8  c                     | j         d         }t          j        |          }t          |          D ]E}t          j        | t          j        d          t          j        d                             ||<   F|S r   )r   r   r   r   r  int32)datar  sumsr   s       r4   rC  zPTestArrayAnalysisParallelRequired.test_slice_dtype_issue_5056.<locals>.test_impl  se    
1A8A;;DAYY @ @&bhqkk"(1++&=!>??QKr6   g      $@)r   r   r^  rS  rT  py_func)r2   rC  rY  s      r4   test_slice_dtype_issue_5056z=TestArrayAnalysisParallelRequired.test_slice_dtype_issue_5056  sl     
t				 	 
		 y~~

%%iiooy7H7H7N7NOOOOOr6   c                 v    d }|                       t          |d                       |                       dS )zimake sure a global tuple with non-integer values does not cause errors
        (test for #6726).
        c                       t           d         } | S r-  )GVAL)rE   s    r4   rC  zFTestArrayAnalysisParallelRequired.test_global_tuple.<locals>.test_impl  s    QAHr6   Tr8  N)rD  r   )r2   rC  s     r4   r*  z3TestArrayAnalysisParallelRequired.test_global_tuple  sK    	 	 	 	7i$7779999;;GGGGGr6   N)r7   r8   r9   rS   _numba_parallel_test_skip_unsupportedr<  rE  rL  rU  r\  r*  r:   r6   r4   r2  r2    s          "9 9 9" H H H M M M E E E" P P P 	H 	H 	H 	H 	Hr6   r2  c                   *    e Zd Zd Zed             ZdS )TestArrayAnalysisInterfacec                    i }t          t                    D ]/}|                    d          rt          t          |          ||<   0d }t	          j        |          }|                                D ]^\  }}t	          j        |          }|                     ||          5  |                     ||           d d d            n# 1 swxY w Y   _d S )N_analyze_op_call_c                     d S rZ   r:   )r2   scoper   locrv   kwss         r4   
iface_stubzMTestArrayAnalysisInterface.test_analyze_op_call_interface.<locals>.iface_stub,  s    Dr6   )fnamesig)	dirr   r   r   r   pysignaturer   subTestrD  )r2   aocrk  rj  expectedr  r`  gots           r4   test_analyze_op_call_interfacez9TestArrayAnalysisInterface.test_analyze_op_call_interface%  s   '' 	; 	;E 344 ;$]E::E
	 	 	$Z00IIKK 	0 	0DAq#A&&CA3// 0 0  h///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0s   "CC		C		c                    	
 ddl m} ddlm} |j        |         	ddi
 
fd	fd}	 ||j        |<   t
          j        fd}  t          d	          |          d
          }
d         }                     |d           	|j        |<   n# 	|j        |<   w xY w  t          d	          |          d
          } 	                    ||            
                    |
d                    d S )Nr   )Parfor)r`   counterc                    | j         }|j        d                             d          D ]Q}|                    |j                  }t          |dd           u r"t          |j        d         dd           dk    r nRd S |                    |          }| j        d         }	                    |
                    d|j                             dxx         dz  cc<   d S )Nr   r   r   r   r3   rv  r1   )r]   rb   r   r   r   r   rv   get_assigneer   rH   rI   r   )	r`   r]   r   callee
variable_Aesr  r2   shareds	         r4   testcodezKTestArrayAnalysisInterface.test_array_analysis_extensions.<locals>.testcode?  s    $,Gq)44V<<   //	::67D11U::ty|VT::cAA --d33J*1-BOOBKKZ_==>>>9"r6   c                 6     |            | |||          S )z7Recursive array analysis for parfor nodes.
            r:   )parforr   r^   r`   orig_parforr}  s       r4   
new_parforzMTestArrayAnalysisInterface.test_array_analysis_extensions.<locals>.new_parforP  s2     H^$$$;	7N  r6   c                      |           }t          |           D ]-}t          j        |          }|                                ||<   .|dz   S r0   )r   r   r^  r  )r3   r  r   r1  r  s       r4   r%  zDTestArrayAnalysisInterface.test_array_analysis_extensions.<locals>.f^  sN    E!HH # #A	!A5577AaDD1ur6   Tr8  r
  )numba.parfors.parforru  numba.parforsr`   array_analysis_extensionsr   r  r   assertGreaterassertPreciseEqualrD  )r2   ru  r`   r  r%  rr  executed_countrq  r  r  r|  r}  s   `       @@@@r4   test_array_analysis_extensionsz9TestArrayAnalysisInterface.test_array_analysis_extensions4  s    	0/////000000$>vFQ	# 	# 	# 	# 	# 	# 	#"	 	 	 	 	 		K?IN4V<HE     )%$%%%a((,,C#I.N~q111 @KN4V<<{N4V<JJJJ *&4&&&q))"--X...	):;;;;;s   AB B#N)r7   r8   r9   rs  ra  r  r:   r6   r4   rc  rc  $  s?        0 0 0 ;< ;< ;< ;< ;<r6   rc  __main__)G	itertoolsnumpyr   syscollectionsr   ior   numbar   r   r   
numba.corer   r	   r
   r   r   r   r   r   numba.tests.supportr   r   r   r   numba.parfors.array_analysisr   r   numba.core.compilerr   r   r   numba.core.ir_utilsr   numba.core.untyped_passesr   r   r   r   r   r   r    r!   r"   r#   numba.core.typed_passesr$   r%   r&   r'   numba.core.compiler_machineryr(   r)   numba.experimentalr*   unittestra  rX  objectr.   r_  r)  r?   rW   rn   r   r2  rc  r7   mainr:   r6   r4   <module>r     s/           



 " " " " " "       & & & & & & & & & &	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	4 4 4 4 4 4 4 4 4 4 4 4 @ @ @ @ @ @ @ @ < < < < < < < < < < + + + + + +J J J J J J J J J J J J J J J J J J J J J J J J
B B B B B B B B B B B B S R R R R R R R R R ' ' ' ' ' '  ,  
CU[1
233    v   43 $/ $/ $/ $/ $/8 $/ $/ $/N U555       65$:$ :$ :$ :$ :$( :$ :$ :$zQ- Q- Q- Q- Q- Q- Q- Q-haH aH aH aH aH aH aH aHHL< L< L< L< L< L< L< L<^ zHMOOOOO r6   