
    shӈ                       S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKr	S SK
r
S SKJr  S SKrS SKJr  S SKrS SKJrJr  S SKrS SKJrJr  S SKrS SKrS SKJrJrJrJrJ r J!r!J"r"J#r#  S SK$JrJ%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,  S SK-J.r.J/r/  S S	K0J1r1J2r2J3r3J4r4J5r5J6r6  S S
K7J8r8  S SK9J:r:  S SK;J<r<J=r=J>r>J?r?J@r@JArAJBrB  S SKCJDrE  S SKFJGrGJHrH  S SKIJJrJJKrK  S SKLJMrM  S SKNJOrOJPrPJQrQJRrRJSrSJTrTJUrUJVrVJWrWJXrXJYrYJZrZJ[r[J\r\  S SK]J^r^  S SK_J`r`  S SK$Jara  S SKbrbS SKcrc\U " S S\O5      5       rd\cR                  " \R                  " 5       S;  S5      rgSrhSri\" SS5      rjS rk\[ " S S\O5      5       rlS  rmS! rnS" roS# rpS$ rqS% rrS& rsS' rtS( ruS) rvS* rwSUS+ jrxS, ry " S- S.\z5      r{\U " S/ S0\l5      5       r|\U " S1 S2\l5      5       r}\U " S3 S4\l5      5       r~ " S5 S6\O5      r\U " S7 S8\l5      5       r\U " S9 S:\Q\l5      5       r\U " S; S<\l5      5       r\U " S= S>\l5      5       r\U " S? S@\l5      5       r\U " SA SB\l5      5       r\U " SC SD\l5      5       r " SE SF\l5      r\U " SG SH\5      5       r\^SI 5       r\U " SJ SK\5      5       r\U " SL SM\O5      5       r\U\g " SN SO\5      5       5       r\U " SP SQ\O5      5       r\U " SR SS\O5      5       r\ST:X  a  \cGR                   " 5         gg)V    Nreducerandn)defaultdict
namedtuple)cyclechain)njitprangeparallel_chunksizeget_parallel_chunksizeset_parallel_chunksizeset_num_threadsget_num_threadstypeof)	typeserrorsirrewritestyped_passesinline_closurecallconfigcompilercpu)DictList)overload_methodregister_modeltypeof_implunboxNativeValuemodels)
cpu_target)type_annotations)find_callnameguardbuild_definitionsget_definition
is_getitem
is_setitemindex_var_of_get_setitem)empty_inferred)CompilerBaseDefaultPassBuilder)register_passAnalysisPass)IRLegalization)TestCasecaptured_stdoutMemoryLeakMixinoverride_env_config
linux_onlytagskip_parfors_unsupported_32bit
needs_blasneeds_lapackdisabled_testskip_unless_scipyneeds_subprocessskip_ppc64le_invalid_ctr_loop)register_jitable)_fix_LOAD_GLOBAL_arg)utilsc                       \ rS rSrSr\R                  " 5       S:w  a  SO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g)TestParforsRunnerC   Faarch64i  i  c                     U R                   nU R                  5       R                  S5      S   R                  S5      S   nU R                  UUU R                  S9  g )N._)test_module
test_classtimeout)
__module__idsplitsubprocess_test_runner_TIMEOUT)selfthemodtest_clazz_names      l/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_parfors.pyrunnerTestParforsRunner.runnerQ   sS    '')//#.r288=bA##/>,0MM 	$ 	;    c                 $    U R                  5         g NrX   rT   s    rW   test_TestParforBasic&TestParforsRunner.test_TestParforBasicY       rZ   c                 $    U R                  5         g r\   r]   r^   s    rW   test_TestParforNumericalMisc.TestParforsRunner.test_TestParforNumericalMisc\   ra   rZ   c                 $    U R                  5         g r\   r]   r^   s    rW   test_TestParforNumPy&TestParforsRunner.test_TestParforNumPy_   ra   rZ   c                 $    U R                  5         g r\   r]   r^   s    rW   test_TestParfors"TestParforsRunner.test_TestParforsb   ra   rZ   c                 $    U R                  5         g r\   r]   r^   s    rW   test_TestParforsBitMask)TestParforsRunner.test_TestParforsBitMaske   ra   rZ   c                 $    U R                  5         g r\   r]   r^   s    rW   test_TestParforsDiagnostics-TestParforsRunner.test_TestParforsDiagnosticsh   ra   rZ   c                 $    U R                  5         g r\   r]   r^   s    rW   test_TestParforsLeaks'TestParforsRunner.test_TestParforsLeaksk   ra   rZ   c                 $    U R                  5         g r\   r]   r^   s    rW   test_TestParforsMisc&TestParforsRunner.test_TestParforsMiscn   ra   rZ   c                 $    U R                  5         g r\   r]   r^   s    rW   test_TestParforsOptions)TestParforsRunner.test_TestParforsOptionsq   ra   rZ   c                 $    U R                  5         g r\   r]   r^   s    rW   test_TestParforsSlice'TestParforsRunner.test_TestParforsSlicet   ra   rZ   c                 $    U R                  5         g r\   r]   r^   s    rW   test_TestParforsVectorizer,TestParforsRunner.test_TestParforsVectorizerw   ra   rZ   c                 $    U R                  5         g r\   r]   r^   s    rW   test_TestPrangeBasic&TestParforsRunner.test_TestPrangeBasicz   ra   rZ   c                 $    U R                  5         g r\   r]   r^   s    rW   test_TestPrangeSpecific)TestParforsRunner.test_TestPrangeSpecific}   ra   rZ    N)__name__rO   __qualname____firstlineno___numba_parallel_test_platformmachinerS   rX   r_   rc   rf   ri   rl   ro   rr   ru   rx   r{   r~   r   r   __static_attributes__r   rZ   rW   rE   rE   C   sn     "  '')Y6tDH
;rZ   rE   )i386x86_64zx86 only test      TestNamedTuplepart0part1c                     g)z
Used with check_arq_equality to indicate that we do not care
whether the value of the parameter at the end of the function
has a particular value.
Nr   abs     rW   null_comparerr      s     	rZ   c                       \ 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S jrSS jrS rS rS rS rSrg)TestParforsBase   z
Base class for testing parfors.
Provides functions for compilation and three way comparison between
python functions, njit'd functions and parfor njit'd functions.
Fc                 @    [        U40 UD6" U5      R                  U   $ r\   )r   	overloads)rT   funcsigflagss       rW   _compile_thisTestParforsBase._compile_this   s$     C!5!$'11#66rZ   c                 "    U R                  XSS9$ )NTparallelr   rT   r   r   s      rW   compile_parallel TestParforsBase.compile_parallel   s    !!$d!;;rZ   c                 $    U R                  XSSS9$ )NT)r   fastmathr   r   s      rW   compile_parallel_fastmath)TestParforsBase.compile_parallel_fastmath   s    !!$dT!JJrZ   c                 $    U R                  X5      $ r\   r   r   s      rW   compile_njitTestParforsBase.compile_njit   s    !!$,,rZ   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 r\   )tuplenumbar   r   r   )rT   pyfuncargskwargsxr   cpfunccfuncs           rW   compile_allTestParforsBase.compile_all   sT    d3dU\\!_d34 &&v3 !!&.} 4s    Ac                 &   UR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      n	UR                  SS5      n
S nU" U6 nU" U6 nU" U6 nUR                  " U6 nU" U6 nUR                  " U6 nU
ch  [        R                  R                  " X40 UD6  [        R                  R                  " UU40 UD6  U R                  [        U5      [        U5      5        OG[        U5      [        U
5      :X  d   e[        XUU
5       H  u  nnnnU" UU40 UD6  U" UU40 UD6  M     U	(       a  U R                  X65        Ub5  UR                  " U" U6 6 n[        R                  R                  " UU40 UD6  gg)	aM  
Checks python, njit and parfor impls produce the same result.

Arguments:
    pyfunc - the python function to test
    cfunc - CompilerResult from njit of pyfunc
    cpfunc - CompilerResult from njit(parallel=True) of pyfunc
    args - arguments for the function being tested
Keyword Arguments:
    scheduler_type - 'signed', 'unsigned' or None, default is None.
                   Supply in cases where the presence of a specific
                   scheduler is to be asserted.
    fastmath_pcres - a fastmath parallel compile result, if supplied
                     will be run to make sure the result is correct
    check_arg_equality - some functions need to check that a
                         parameter is modified rather than a certain
                         value returned.  If this keyword argument
                         is supplied, it should be a list of
                         comparison functions such that the i'th
                         function in the list is used to compare the
                         i'th parameter of the njit and parallel=True
                         functions against the i'th parameter of the
                         standard Python function, asserting if they
                         differ.  The length of this list must be equal
                         to the number of parameters to the function.
                         The null comparator is available for use
                         when you do not desire to test if some
                         particular parameter is changed.
    Remaining kwargs are passed to np.testing.assert_almost_equal
scheduler_typeNcheck_fastmathfastmath_pcrescheck_schedulingTcheck_arg_equalityc                     U (       d
  [        5       $ / nU  GH  n[        U[        R                  5      (       a"  UR	                  UR                  S5      5        ME  [        U[        R                  5      (       a!  UR	                  UR                  5       5        M  [        U[        R                  5      (       a  UR	                  U5        M  Uc  UR	                  U5        M  [        U[         5      (       a(  UR	                  [
        R                  " U5      5        GM
  [        U[        5      (       a  UR	                  US S  5        GM6  [        U[        5      (       a(  UR	                  [
        R
                  " U5      5        GMs  [        U[        5      (       a(  UR	                  [
        R
                  " U5      5        GM  [        S5      e   [        U5      $ )Nkz%Unsupported argument type encountered)r   
isinstancenpndarrayappendcopynumbernumbersNumberdeepcopylistr   r   
ValueError)r   new_argsr   s      rW   	copy_args:TestParforsBase.check_parfors_vs_others.<locals>.copy_args   s*   wHa,,OOAFF3K0299--OOAFFH-7>>22OOA&YOOA&5))OODMM!$454((OOAaD)4((OODIIaL14((OODIIaL1$%LMM% & ?"rZ   )
popentry_pointr   testingassert_almost_equalassertEqualtypelenzipr   )rT   r   r   r   r   r   r   r   r   r   check_args_for_equalityr   py_argspy_expected	njit_argsnjit_outputparfor_argsparfor_outputpyargnjitarg	parforargargcompparfor_fastmath_outputs                          rW   check_parfors_vs_others'TestParforsBase.check_parfors_vs_others   s   >  $4d;$4d;$4d;!::&8$?"(**-A4"H	#4 T"g& t$	''3  &**K8"*JJ**;NvNJJ**=+PPT+.]0CDw<3'>#??@?69K1H7J2w	71&1	53F37J
 !!&9 %%3%?%?DAQ%R"JJ**+A; 5-35 &rZ   c                 \    U R                   " U/UQ76 u  pEU R                  " XU/UQ70 UD6  g)zChecks that pyfunc compiles for *args under parallel=True and njit
and asserts that all version execute and produce the same resultNr   r   rT   r   r   r   r   r   s         rW   checkTestParforsBase.check  s5     ((7$7$$VFLTLVLrZ   c           	          U" 5        HJ  nU R                  [        [        [        U5      5      5         U R                  " U/UQ70 UD6  SSS5        ML     g! , (       d  f       M^  = f)zHRun self.check(impl, ...) on array data generated from arg_gen.
        N)subTestr   mapr   r   )rT   implarg_genr   r   s        rW   check_variantsTestParforsBase.check_variants  sM     IDd3vt#456

41$1&1 76 66s   A
A&	c           	         U" 5        Hh  nU R                  [        [        [        U5      5      5         [	        [        [        U5      5      nU R                  [        X5      S5        SSS5        Mj     g! , (       d  f       M|  = f)zHRun self.countParfors(impl, ...) on array types generated from
arg_gen.
   N)r   r   r   r   r   assertGreaterEqualcountParfors)rT   r   r   r   r   argtyss         rW   count_parfors_variants&TestParforsBase.count_parfors_variants   s]     IDd3vt#456s6401''T(BAF 76 66s   5A55
B	c                     SnUb  US;   a	  USU-   -  nOSn[        XB-  5      eU R                  X1R                  R                  5       5        g )Nz@do_scheduling)signedunsignedrK   z$Unknown scheduler_type specified: %s)r   assertInlibraryget_llvm_str)rT   cresr   scheduler_strmsgs        rW   r    TestParforsBase.check_scheduling*  sQ    (%!77~!55< !566m\\%>%>%@ArZ   c                    ^ U4S jn[        U" 5       5      n[        U5       Vs/ s H  n[        U5      PM     sn$ s  snf )zFMake *ct* sample 1D arrays of length *n* using np.linspace().
        c               3      >#    [         R                  " SST 5      v   [         R                  " SST 5      v   [         R                  " SST 5      v   g 7fNr   r      r   linspacens   rW   gen)TestParforsBase.gen_linspace.<locals>.gen9  s?     ++aA&&++aA&&++aA&&s   AA)r	   rangenext)rT   r  ctr  srcis    `    rW   gen_linspaceTestParforsBase.gen_linspace6  s5    	'
 CEl#(9-9aS	9---s   =c              #     #    U R                  SUS9v   U R                  SUS9 Vs/ s H  nUR                  S5      PM     nnUv   U Vs/ s H  n[        R                  " U5      PM     snv   U R                  SUS9 Vs/ s H  nUR                  S5      PM     nnUv   U Vs/ s H  n[        R                  " U5      PM     snv   gs  snf s  snf s  snf s  snf 7f)	z?Make 1D, 2D, 3D variants of the data in C and F orders
        
   )r     )r  r  r
        )r
  r     N)r  reshaper   asfortranarray)rT   r  r   arr2dsarr3dss        rW   gen_linspace_variants%TestParforsBase.gen_linspace_variantsA  s      r**  ,,u,<><a ))F#< 	 >-34Vr  #V44  ,,yR,@B@a ))I&@ 	 B-34Vr  #V44> 5B 5s4   %C"C
C" C,C"C
C"( CC"Nc                     U Vs/ s H  oBUR                   ;   d  M  UPM     nnUb  U H  nU[        U5      ;   a  M   e   U$ s  snf )z-helper function to filter out modules by name)namestr)rT   modmagicstrcheckstrr   filts         rW   _filter_modTestParforsBase._filter_modU  sK    53aaff"4353q6))) 	 6s
   AAc                 F   UR                   R                  R                  R                  R                   Vs/ s H  oDPM     nnU R                  XRUS9nUR                   R                  5       n/ nU H&  n	U	R                  U;   d  M  UR                  U	5        M(     U$ s  snf )zgets the gufunc LLVM Modules)r*  )	r  _codegen_engine_ee_modulesr,  get_asm_strr&  r   )
rT   r  r)  r*  r   r2  potential_matcheslib_asmretr(  s
             rW   _get_gufunc_modules#TestParforsBase._get_gufunc_modules]  s    #||44<<@@IIJI!AIJ !,,X6> - @ ,,**,$Cxx7"

3 % 
 Ks   Bc                 z    SnU R                  X5      n[        5       nU H  nU" U5      XVR                  '   M     U$ )z#helper for gufunc IR/asm generation__numba_parfor_gufunc)r7  dictr&  )rT   r  fnr)  gufunc_modsr   r(  s          rW   _get_gufunc_info TestParforsBase._get_gufunc_infol  s>     +..t>FCS'AhhK rZ   c                 .    U R                  U[        5      $ )z
Returns the IR of the gufuncs used as parfor kernels
as a dict mapping the gufunc name to its IR.

Arguments:
 cres - a CompileResult from `njit(parallel=True, ...)`
)r>  r'  )rT   r  s     rW   _get_gufunc_irTestParforsBase._get_gufunc_irv  s     $$T3//rZ   c                 r   ^ UR                   R                  R                  mU4S jnU R                  X5      $ )z
Returns the assembly of the gufuncs used as parfor kernels
as a dict mapping the gufunc name to its assembly.

Arguments:
 cres - a CompileResult from `njit(parallel=True, ...)`
c                 8   > [        TR                  U 5      5      $ r\   )r'  emit_assembly)r(  tms    rW   emit_asm1TestParforsBase._get_gufunc_asm.<locals>.emit_asm  s    r'',--rZ   )r  r/  _tmr>  )rT   r  rG  rF  s      @rW   _get_gufunc_asmTestParforsBase._get_gufunc_asm  s0     \\""&&	.$$T44rZ   c                    ^  T R                  X5      nT R                  U5      nS nU 4S jnUR                  5        H  u  pxU" U5      n	U" U	5        M     g)aP  
Asserts that the fastmath flag has some effect in that suitable
instructions are now labelled as `fast`. Whether LLVM can actually do
anything to optimise better now the derestrictions are supplied is
another matter!

Arguments:
 pyfunc - a function that contains operations with parallel semantics
 sig - the type signature of pyfunc
c                     U R                   " 5       n/ nU H0  n[        R                  " SU5      nUc  M  UR                  U5        M2     U$ )Nz\bfast\b)
splitlinesresearchr   )r   splitted	fast_instr   ms        rW   _get_fast_instructions?TestParforsBase.assert_fastmath.<locals>._get_fast_instructions  sG    }}HIIIk1-=$$Q'  rZ   c                 |   > SnU  H3  nSnU H  nUS-   nXR;   d  M  US-  nM     TR                  US:  5        M5     g )N)faddfsubfmulfdivfremfcmpcallr   z fastr   )
assertTrue)instrsopsinstcountopmatchrT   s         rW   _assert_fast5TestParforsBase.assert_fastmath.<locals>._assert_fast  sJ    JCBLE}
  	* rZ   N)r   rA  items)
rT   r   r   r  _irrT  re  r&  guirra  s
   `         rW   assert_fastmathTestParforsBase.assert_fastmath  sU     --f:!!$'		+ ))+JD)$/D &rZ   r   r\   )r   rO   r   r   __doc__r   r   r   r   r   r   r   r   r   r   r   r  r#  r,  r7  r>  rA  rJ  rj  r   r   rZ   rW   r   r      so     "7
<K-	\5|M2G
B	.5(05$rZ   r   c                    [         R                  " X-  5      nSU-  U-  nU[         R                  " U5      -  nX&-   U-  U-   U-  nX-
  n	SSU-  -   n
SSU	-  -   nU[         R                  " U* U-  5      -  nX-  nX
-  U-
  nX-
  U -   nU$ )N      ?      ?)r   logsqrtexp)sptpricestrikerate
volatilitytimevlogtermpowtermdend1d2NofXd1NofXd2futureValuec1r]  puts                   rW   blackscholes_implr    s    ffX&'GJ+G
rwwu~
%CNe#w
.#	5B	B9r>!F9r>!F266D&5.11K		Br!D

x
'CJrZ   c                     [        U5       HU  nU[        R                  " SS[        R                  " U * [        R                  " X5      -  5      -   -  S-
  U -  U5      -  nMW     U$ Nro  )r  r   dotrr  )YXw
iterationsr  s        rW   lr_implr    sW    :	RVVcS2661"rvva|*;#<<=CqH1MM HrZ   c                    UnU R                   u  pV[        U5       GHN  n[        R                  " [        U5       VV	s/ s HY  n[        U5       V	s/ s H?  n	[        R
                  " [        R                  " XS S 24   XIS S 24   -
  S-  5      5      PMA     sn	PM[     sn	n5      n
[        R                  " [        U5       Vs/ s H  oUS S 24   R                  5       PM     sn5      n[        R                  " [        U5       VV	s/ s HS  n[        U5       V	s/ s H9  n	[        R                  " XU:H  U	4   5      [        R                  " X:H  5      -  PM;     sn	PMU     sn	n5      nGMQ     U$ s  sn	f s  sn	nf s  snf s  sn	f s  sn	nf Nr
  )shaper  r   arraymathrq  sumargmin)A	numCenternumIterinit_centroids	centroidsNDlr  jdistlabelss               rW   example_kmeans_testr    sP   I77DA7^xxDI!HNDLqy)9;)9A ))BFFAcF9qS>,AA+E$FG)9;DLN OuQx@x!!9++-x@AHH=B9=MO=M%(4*2Q  "vva	1o6rvvfi7HH*24=MO P	  ; N@4 Os7   E6AE1E6 E<
FA FF1E6Fc                 h   [         R                  n[         R                  n[        R                  " U 5      nU(       a  [
        R                  " U5      nO[
        R                  " S5      n[        X4X5      nUR                  5         UR                  5         [        R                  " UR                  R                  USS9nUR                  5         [        R                  R!                  SUR                  5        ["        R$                  " UR                  R&                  UR                  R(                  UR                  R                  UR                  R*                  S 5      u  UR                  l        UR                  l        UR                  l        n	[2        R4                  " UR                  R                  UR                  R,                  UR                  R0                  SS UR                  R*                  UR                  R.                  [6        R8                  S9  [:        R<                  R>                  RA                  5       n
[:        R<                  R>                  RC                  UR                  R                  UR                  R,                  UR                  R0                  UR                  R&                  UR                  R(                  UU
RD                  S9nUR                  5         [        R                  R!                  SUR                  5        [        RF                  " 5       n[:        R<                  R>                  RI                  UR                  R                  UR                  R,                  UR                  R0                  UR                  R.                  UR                  R&                  UR                  R(                  XlUR                  RJ                  U
S9
nUR                  5         [:        R<                  R>                  RM                  UR                  R                  UR                  R,                  UR                  R0                  UR                  R.                  UR                  R&                  UR                  R(                  XlUR                  RJ                  U
S9
nUR                  5         [:        R<                  R>                  RO                  UR                  R                  UR                  R,                  UR                  R0                  UR                  R.                  UR                  R&                  UR                  R(                  XlUR                  RJ                  U
S9
nUR                  5         [Q        URR                  5      Ul*        XW4$ )	NT)typedzbefore-inferencer   )func_irtypemap	calltypesliftedlifted_fromr   return_typehtml_output)swappedzafter-inference)diagnostics)+r$   typing_contexttarget_contextr   run_frontendr   ParallelOptionsTestPipelinerefreshr   InlineClosureCallPassstater  runr   rewrite_registryapplyr   type_inference_stage	typingctx	targetctxr   r  r  r  r%   TypeAnnotationr   HTMLr   parforsparforParforDiagnosticsPreParforPassreplaced_fnsFlags
ParforPassmetadataParforFusionPassParforPreLoweringPassr(   blocks_definitions)	test_funcr   kwsr  r  test_iroptionstpinline_passrK   r  preparfor_passr   parfor_passs                 rW   get_optimized_numba_irr    s   ))I))I##I.G
%%c*%%d+	iD	:B$::288;K;K<CBFHK OO##$6A %%bhh&8&8
BHH,,bhhmmTC BBHHbhh*BHH,> ##    (($$XX]]HH((KK! --&&88:K]]))77
"((**BHH,>,>
BHH..(( 8 *N ##$5rxx@NNE--&&11
"((**BHH,>,>
bhh00"((2D2D)){ 2 DK OO--&&77
"((**BHH,>,>
bhh00"((2D2D)){ 8 DK OO--&&<<
"((**BHH,>,>
bhh00"((2D2D)){ = DK OO,W^^<G;rZ   c                    [        X40 UD6u  p4SnUR                  R                  5        H]  u  pg[        UR                  5       H?  u  p[        U	[        R                  R                  R                  5      (       d  M:  US-  nMA     M_     U$ Nr   r   )
r  r  rg  	enumeratebodyr   r   r  r  Parfor)
r  r   r  r  r  	ret_countlabelblockr  ra  s
             rW   r   r     st    (@C@KGI,,. ,GA$ 4 4 ; ;<<Q	 - /
 rZ   c                 r    [        X40 UD6u  p4[        UR                  UR                  R                  5      $ r\   )r  _count_arrays_innerr  r  r  r  r   r  r  r  s        rW   countArraysr  %  s.    (@C@KGw~~rxx/?/?@@rZ   c                 Z   [        X40 UD6u  p4UR                  nSnUR                  5        Hz  u  px[        UR                  5       H\  u  p[        U
[        R                  R                  R                  5      (       d  M:  U[        U
R                  R                  5      -  nM^     M|     U$ Nr   )r  r  rg  r  r  r   r   r  r  r  r   
init_block)r  r   r  r  r  r  r  r  r  r  ra  s              rW   get_init_block_sizer  )  s    (@C@KG^^FI ,GA$ 4 4 ; ;<<S!5!566	 - '
 rZ   c                 z   Sn[        5       nU R                  5        GH  u  pE[        UR                  5       H  u  pg[	        U[
        R                  R                  R                  5      (       a7  UR                  R                  5       nUR                  US'   U[        X5      -  n[	        U[        R                  5      (       d  M  [	        XR                  R                      ["        R$                  5      (       d  M  UR'                  UR                  R                   5        M     GM     U[)        U5      -  nU$ r  )setrg  r  r  r   r   r  r  r  	loop_bodyr   r  r  r   Assigntargetr&  r   ArrayCompatibleaddr   )	r  r  r  arr_setr  r  r  ra  parfor_blockss	            rW   r  r  6  s    IeG ,GA$ 4 4 ; ;<< $ 3 3 5#'??a 0HH	4++"7;;+;+;#<$)$9$9; ;DKK,,- - ' WIrZ   c                     [        X40 UD6u  p4SnUR                  R                  5        H  nU[        X65      -  nM     U$ r  )r  r  values_count_array_allocs_inner)r  r   r  r  r  r  r  s          rW   countArrayAllocsr  H  sG    (@C@KGI&&(.w>>	 ) rZ   c                    SnUR                    GH*  n[        U[        R                  R                  R
                  5      (       aG  U[        XR                  5      -  nUR                  R                  5        H  nU[        X5      -  nM     [        U[        R                  5      (       d  M  [        UR                  [        R                  5      (       d  M  UR                  R                  S:X  d  M  [        [         XR                  5      S:X  d!  [        [         XR                  5      S:X  d  GM%  US-  nGM-     U$ )Nr   r]  )emptynumpy)r-   znumba.np.unsafe.ndarrayr   )r  r   r   r  r  r  r  r  r  r  r   r  valueExprrc  r'   r&   )r  r  r  ra  r   s        rW   r  r  Q  s    I

dEMM00778827OOLLI^^**,6wBB	 - tRYY''Jtzz277,K,KJJMMV+='::>BTT<DENI  rZ   c                 r    [        X40 UD6u  p4[        X3R                  UR                  R                  5      $ r\   )r  &_count_non_parfor_array_accesses_innerr  r  r  r  s        rW   countNonParforArrayAccessesr  b  s5    (@C@KG1'>>24((2B2BD DrZ   c           	      |   SnUc
  [        5       nUR                  5        GH  u  pVUR                   GH   n[        U[        R
                  R                  R                  5      (       a_  UR                  UR                  R                  5        UR                  R                  5       nUR                  US'   U[        XX#5      -  nM  [        U5      (       ab  [        X'R                   R                   R                     ["        R$                  5      (       a#  ['        U [)        U5      U5      (       d  US-  nGM  [+        U5      (       aX  [        X'R,                  R                     ["        R$                  5      (       a#  ['        U [)        U5      U5      (       d  US-  nGMp  [        U[.        R0                  5      (       d  GM  [        UR                   [.        R2                  5      (       d  GM  UR                   R                  U;   d  GM  UR                  UR,                  R                  5        GM     GM     U$ r  )r  rg  r  r   r   r  r  r  r  	index_varr&  r  r   r  r  r*   r  r   r  _uses_indicesr,   r+   r  r   r  Var)	f_irr  r  parfor_indicesr  r  r  stmtr  s	            rW   r  r  g  s   IJJD$ 4 4 ; ;<<""4>>#6#67 $ 3 3 5#'??a CB B	 T""z'**:J:J:O:O2P--(/ (/7D6t<n8N 8NQ	 T""z'++:J:J2K))(+ (+3@248.4J 4JQ	 T299--TZZ00**//^3""4;;#3#341  '6 rZ   c                     UR                   U;   a  g[        [        X5      n[        U[        R
                  5      (       a<  UR                  S:X  a,  [        S UR                   5       5      n[        XB-  5      S:g  $ g)NTbuild_tuplec              3   8   #    U  H  oR                   v   M     g 7fr\   )r&  ).0vs     rW   	<genexpr> _uses_indices.<locals>.<genexpr>  s     5}!vv}s   r   F)
r&  r'   r)   r   r   r  rc  r  rg  r   )r  index	index_setind_defvarnamess        rW   r  r    sc    zzYND0G'277##

m(C5w}}558'(A--rZ   c                       \ rS rSrS rSrg)r  i  c                 @   [         R                  " 5       U l        XR                  l        X R                  l        X0R                  l        X@R                  l        S U R                  l        S U R                  l        S U R                  l	        0 U R                  l
        g r\   )r   	StateDictr  r  r  r   r  r  r  r  r  )rT   r  r  r   r  s        rW   __init__TestPipeline.__init__  si    '')
(

(



$

!

!%

#

 

rZ   )r  N)r   rO   r   r   r  r   r   rZ   rW   r  r    s    	!rZ   r  c                       \ 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 5       r\S 5       r\S 5       r\S 5       rS rS rS r\S 5       r\S 5       r \S 5       r!S r"Sr#g) TestParforBasici  zVSmoke tests for the parfors transforms. These tests check the most basic
functionalityc                     [         R                  " U /UQ76   [        R                  " [        R                  " S5      S5      n[        R                  " S5      [        R                  " S5      X"R
                  /U l        g )N      (@r  r        @      @)r   r  r   r  arangeTsimple_args)rT   r   rS  s      rW   r  TestParforBasic.__init__  sP      --JJryy~v.IIbM299R=!SSArZ   c                     S nU R                  [        5       nU R                  U5        S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       N4= f)Nc                  .    [         R                  " S5      $ )Nr   r   onesr   rZ   rW   	test_impl0TestParforBasic.test_simple01.<locals>.test_impl  s    772;rZ   '@do_scheduling' not foundassertRaisesAssertionErrorr   r   r'  	exceptionrT   r  raisess      rW   test_simple01TestParforBasic.test_simple01  sK    	~.&JJy! /4c&:J:J6KL /.   A
A'c                 ,    S nU R                  U5        g )Nc                  .    [         R                  " S5      $ )Nr   r  r   rZ   rW   r  0TestParforBasic.test_simple02.<locals>.test_impl  s    774= rZ   r   rT   r  s     rW   test_simple02TestParforBasic.test_simple02  s    	!

9rZ   c                 ,    S nU R                  U5        g )Nc                  .    [         R                  " S5      $ Nr   r
  r  r   rZ   rW   r  0TestParforBasic.test_simple03.<locals>.test_impl      776?"rZ   r)  r*  s     rW   test_simple03TestParforBasic.test_simple03      	#

9rZ   c                 ,    S nU R                  U5        g )Nc                  .    [         R                  " S5      $ Nr   r  r   rZ   rW   r  0TestParforBasic.test_simple04.<locals>.test_impl  s    771:rZ   r)  r*  s     rW   test_simple04TestParforBasic.test_simple04  s    	

9rZ   c                 ,    S nU R                  U5        g )Nc                  H    [         R                  " S[         R                  S9$ )Nr0  dtyper   r  
complex128r   rZ   rW   r  0TestParforBasic.test_simple07.<locals>.test_impl  s    77677rZ   r)  r*  s     rW   test_simple07TestParforBasic.test_simple07  s    	8

9rZ   c                 ,    S nU R                  U5        g )Nc                  \    [         R                  " S5      [         R                  " S5      -   $ r/  r  r   rZ   rW   r  0TestParforBasic.test_simple08.<locals>.test_impl  s    776?RWWV_44rZ   r)  r*  s     rW   test_simple08TestParforBasic.test_simple08  s    	5

9rZ   c                 ,    S nU R                  U5        g )Nc                  .    [         R                  " S5      $ )Nr   r   r  r   rZ   rW   r  0TestParforBasic.test_simple09.<locals>.test_impl  r2  rZ   r)  r*  s     rW   test_simple09TestParforBasic.test_simple09  r5  rZ   c                 ,    S nU R                  U5        g )Nc                  .    [         R                  " S5      $ )Nr   r   r  r   rZ   rW   r  0TestParforBasic.test_simple10.<locals>.test_impl  r2  rZ   r)  r*  s     rW   test_simple10TestParforBasic.test_simple10  r5  rZ   c                 ,    S nU R                  U5        g )Nc                  4    [         R                  " S5      S-   $ Nr  r  ro  r  r   rZ   rW   r  0TestParforBasic.test_simple11.<locals>.test_impl  s    778$r))rZ   r)  r*  s     rW   test_simple11TestParforBasic.test_simple11  s    	*

9rZ   c                 ,    S nU R                  U5        g )Nc                  \    [         R                  " S5      [         R                  " S5      -   $ rX  r@  r   rZ   rW   r  0TestParforBasic.test_simple12.<locals>.test_impl  s    778$r}}R'888rZ   r)  r*  s     rW   test_simple12TestParforBasic.test_simple12  s    	9

9rZ   c                     S nU R                  [        5       nU R                  U5        S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       N4= f)Nc                  .    [         R                  " S5      $ r  )r   rA  r   rZ   rW   r  0TestParforBasic.test_simple13.<locals>.test_impl  s    ==$$rZ   r  r  r   s      rW   test_simple13TestParforBasic.test_simple13  sK    	%~.&JJy! /4c&:J:J6KL /.r$  c                 ,    S nU R                  U5        g )Nc                  :    [         R                  " S5      SS S2   $ )NrY  r      r  r   rZ   rW   r  0TestParforBasic.test_simple14.<locals>.test_impl  s    778$QUU++rZ   r)  r*  s     rW   test_simple14TestParforBasic.test_simple14  s    	,

9rZ   c                 D    S nU R                   " U/U R                  Q76   g )Nc                 
    X -   $ r\   r   v1v2m1m2s       rW   r  0TestParforBasic.test_simple15.<locals>.test_impl  	    7NrZ   r   r  r*  s     rW   test_simple15TestParforBasic.test_simple15      	

90t//0rZ   c                 D    S nU R                   " U/U R                  Q76   g )Nc                 
    X"-   $ r\   r   ro  s       rW   r  0TestParforBasic.test_simple16.<locals>.test_impl  ru  rZ   rv  r*  s     rW   test_simple16TestParforBasic.test_simple16  ry  rZ   c                 D    S nU R                   " U/U R                  Q76   g )Nc                 
    X0-   $ r\   r   ro  s       rW   r  0TestParforBasic.test_simple17.<locals>.test_impl  ru  rZ   rv  r*  s     rW   test_simple17TestParforBasic.test_simple17  ry  rZ   c                 D    S nU R                   " U/U R                  Q76   g )Nc                 `    UR                   [        R                  R                  U5      S   -   $ r8  )r  r   linalgsvdro  s       rW   r  0TestParforBasic.test_simple18.<locals>.test_impl  s#    44"))--+A...rZ   rv  r*  s     rW   test_simple18TestParforBasic.test_simple18  s    	/

90t//0rZ   c                 D    S nU R                   " U/U R                  Q76   g )Nc                 .    [         R                  " X!5      $ r\   r   r  ro  s       rW   r  0TestParforBasic.test_simple19.<locals>.test_impl      66">!rZ   rv  r*  s     rW   test_simple19TestParforBasic.test_simple19      	"

90t//0rZ   c                     S nU R                  [        5       nU R                  " U/U R                  Q76   S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                 .    [         R                  " X#5      $ r\   r  ro  s       rW   r  0TestParforBasic.test_simple20.<locals>.test_impl
  r  rZ   r  )r  r  r   r  r   r'  r  r   s      rW   test_simple20TestParforBasic.test_simple20  sX    	" ~.&JJy44#3#34 /4c&:J:J6KL /.s   A%%
A3c                 D    S nU R                   " U/U R                  Q76   g )Nc                 .    [         R                  " X 5      $ r\   r  ro  s       rW   r  0TestParforBasic.test_simple21.<locals>.test_impl  r  rZ   rv  r*  s     rW   test_simple21TestParforBasic.test_simple21  r  rZ   c                 D    S nU R                   " U/U R                  Q76   g )Nc                 2    [         R                  " X -   5      $ r\   r   r  ro  s       rW   r  0TestParforBasic.test_simple22.<locals>.test_impl  s    66"'?"rZ   rv  r*  s     rW   test_simple22TestParforBasic.test_simple22  s    	#

90t//0rZ   c                 D    S nU R                   " U/U R                  Q76   g )Nc                 f    SU -  nSU -  nS[         R                  " US-  US-  -   S:  5      -  S-  $ )Nr
  r  r   r  r  )rp  rq  rr  rs  r   ys         rW   r  0TestParforBasic.test_simple23.<locals>.test_impl  s=    BABArvvadQTkAo..33rZ   rv  r*  s     rW   test_simple23TestParforBasic.test_simple23  s     	4 	

90t//0rZ   c                 ,    S nU R                  U5        g )Nc                      Sn [         R                  " X 45      n[         R                  " U 5      n[         R                  " US S 2U4   5      $ )Nri  )r   r  r  r  )r  r  r   s      rW   r  0TestParforBasic.test_simple24.<locals>.test_impl$  s9    AA		!A66!AqD'?"rZ   r)  r*  s     rW   test_simple24TestParforBasic.test_simple24#  s    	#
 	

9rZ   c                 D    S nU R                   " U/U R                  Q76   g)zAsame as corresponding test_simple_<n> case but using operator.addc                 .    [         R                  " X 5      $ r\   operatorr  ro  s       rW   r  :TestParforBasic.test_simple_operator_15.<locals>.test_impl.      <<''rZ   Nrv  r*  s     rW   test_simple_operator_15'TestParforBasic.test_simple_operator_15+  s     	( 	

90t//0rZ   c                 D    S nU R                   " U/U R                  Q76   g )Nc                 .    [         R                  " X"5      $ r\   r  ro  s       rW   r  :TestParforBasic.test_simple_operator_16.<locals>.test_impl5  r  rZ   rv  r*  s     rW   test_simple_operator_16'TestParforBasic.test_simple_operator_163       	( 	

90t//0rZ   c                 D    S nU R                   " U/U R                  Q76   g )Nc                 .    [         R                  " X05      $ r\   r  ro  s       rW   r  :TestParforBasic.test_simple_operator_17.<locals>.test_impl<  r  rZ   rv  r*  s     rW   test_simple_operator_17'TestParforBasic.test_simple_operator_17:  r  rZ   c                 ^    S nS n[         R                  " S5      nU R                  XU/S9  g )Nc                     U S-  n SU S S & g )Nr   r  r   r   s    rW   r  5TestParforBasic.test_inplace_alias.<locals>.test_implC  s    FAAaDrZ   c                 B    [         R                  R                  X5        g r\   r   r   assert_equalr   s     rW   comparer4TestParforBasic.test_inplace_alias.<locals>.comparerG      JJ##A)rZ   r   r   r   r  r   )rT   r  r  r   s       rW   test_inplace_alias"TestParforBasic.test_inplace_aliasA  s-    		* GGAJ

9XJ
?rZ   )r  N)$r   rO   r   r   rl  r  r"  r+  r3  r:  rC  rH  rN  rT  r[  r`  re  rk  rw  r}  r  r<   r  r;   r  r  r  r  r  r  r=   r  r  r  r  r   r   rZ   rW   r  r    s    BM








M
1
1
1
 1 1
 1 1
 M M 1 1
1
1 1 1 1 1 1 1
@rZ   r  c                   :    \ rS rSrSrS rS r\S 5       rS r	Sr
g)	TestParforNumericalMisciN  z*Miscellaneous 'classical' numerical tests c                     S nU R                  USSS9  U R                  [        U[        R                  45      S5        U R                  [        U[        R                  45      S5        g )Nc                     S[         R                  R                  U 5      -  S-
  nS[         R                  R                  U 5      -  S-
  nS[         R                  " US-  US-  -   S:  5      -  U -  $ )Nr
  r   r  )r   randomranfr  )r  r   r  s      rW   r  2TestParforNumericalMisc.test_pi.<locals>.test_implS  sc    BIINN1%%)ABIINN1%%)ArvvadQTkAo..22rZ   i r   decimalr   )r   r   r   r   int64r  intpr*  s     rW   test_piTestParforNumericalMisc.test_piR  sU    	3
 	

9fa
0i%++A1EY>BrZ   c                 r    [         R                  S S  4S-  nU R                  [        [        U5      S5        g Nr   r   )r   float64r   r   r  rT   r   s     rW   test_blackscholes)TestParforNumericalMisc.test_blackscholes\  s0    a #a'&7>BrZ   c                    [         R                  S S  [         R                  S S 2S S 24   [         R                  S S  [         R                  4nU R                  [	        [
        U5      S5        U R                  [        [
        U5      S5        g Nr
  r   )r   r  r  r   r   r  r  r  s     rW   test_logistic_regression0TestParforNumericalMisc.test_logistic_regressiona  se    a %--!"4emmA6Fgt4a8)'48!<rZ   c           	         [         R                  R                  S5        SnSnSn[         R                  R                  X45      n[         R                  R                  X245      nU R	                  [
        XCSUSS9  [        R                  " [        R                  SS5      [        R                  [        R                  [        R                  " [        R                  SS5      4nU R                  [        [
        U5      S5        g )	Nr      r  r  r   r  r
  C)r   r  seedr  r   r  r   Arrayr  r  r   r  )rT   r  r  centersr  r  arg_typss          rW   test_kmeans#TestParforNumericalMisc.test_kmeansh  s    
		qIINNA6"5

&A~LM 	 	O KKq#6

EJJKKq#68'(;XF	KrZ   r   N)r   rO   r   r   rl  r  r  r;   r  r  r   r   rZ   rW   r  r  N  s+    5CC
 = =KrZ   r  c                       \ rS rSrSr\S 5       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g)TestParforNumPyiy  z'Tests NumPy functionality under parforsc                     S n[         R                  " SSS5      R                  SS5      n[         R                  " SSS5      nU R                  XU5        g )Nc                 .    [         R                  " X5      $ r\   r  r   r  s     rW   r  -TestParforNumPy.test_mvdot.<locals>.test_impl      66!<rZ   r   r   ri  r
  r  )r   r  r  r   )rT   r  r  r  s       rW   
test_mvdotTestParforNumPy.test_mvdot}  sH    	  KK1b!))!R0KK1b!

9#rZ   c                 l  ^ [         R                  [         R                  [         R                  [         R                  4 Hq  mU4S jnU R                  US5        U R                  [        U[        R                  45      S5        U R                  [        U[        R                  45      S5        Ms     g )Nc                 h   > [         R                  " U 5      nT" U5      nUR                  5       nX2-   $ r\   r   r  r  )r  r  r  Brc  s       rW   r  BTestParforNumPy.test_fuse_argmin_argmax_max_min.<locals>.test_impl  s+    GGAJqEEEGurZ      r   r   )r   r  argmaxminmaxr   r   r   r   r  r  r  )rT   r  rc  s     @rW   test_fuse_argmin_argmax_max_min/TestParforNumPy.test_fuse_argmin_argmax_max_min  su    99bii8B
 JJy#&\)ekk_EqI[UZZMBAF 9rZ   c                 `    S nU R                  [        U[        R                  45      S5        g )Nc                 "    [        U 5      nUS   $ r  r   r  r  s     rW   r  DTestParforNumPy.test_np_random_func_direct_import.<locals>.test_impl  s    aAQ4KrZ   r   r   r   r   r  r*  s     rW   !test_np_random_func_direct_import1TestParforNumPy.test_np_random_func_direct_import  s&    	 	i%++A1ErZ   c                     S nS nS nSSS[        SS5      [        SS5      4 H;  nU R                  X5        U R                  US	U5        U R                  US	US	5        M=     g )
Nc                 .    [         R                  " U 5      $ r\   r   r  r  s    rW   
test_impl1/TestParforNumPy.test_arange.<locals>.test_impl1      99Q<rZ   c                 .    [         R                  " X5      $ r\   r  sr  s     rW   
test_impl2/TestParforNumPy.test_arange.<locals>.test_impl2  s    99Q?"rZ   c                 0    [         R                  " XU5      $ r\   r  r  r  ts      rW   
test_impl3/TestParforNumPy.test_arange.<locals>.test_impl3  s    99Q1%%rZ               >@r  r   r
  complexr   rT   r  r  r  args        rW   test_arangeTestParforNumPy.test_arange  sb    	 	#	& T71Q<1>CJJz'JJz1c*JJz1c1- ?rZ   c                     S nS nS nS H;  nU R                  X5        U R                  USU5        U R                  USUS5        M=     g )Nc                 H    [         R                  " U [         R                  S9$ Nr>  r   r  float32r  s    rW   r  5TestParforNumPy.test_arange_dtype.<locals>.test_impl1  s    99Qbjj11rZ   c                 H    [         R                  " X[         R                  S9$ r%  r&  r  s     rW   r  5TestParforNumPy.test_arange_dtype.<locals>.test_impl2  s    99Q44rZ   c                 J    [         R                  " XU[         R                  S9$ r%  r&  r  s      rW   r  5TestParforNumPy.test_arange_dtype.<locals>.test_impl3  s    99Q1BJJ77rZ   )r  r  r  r
  r)  r  s        rW   test_arange_dtype!TestParforNumPy.test_arange_dtype  sK    	2	5	8 #CJJz'JJz1c*JJz1c1- #rZ   c                     S nS nSSS[        SS5      [        SS5      4 H*  nU R                  USU5        U R                  USUS	5        M,     g )
Nc                 .    [         R                  " X5      $ r\   r  )startstops     rW   r  1TestParforNumPy.test_linspace.<locals>.test_impl1  s    ;;u++rZ   c                 0    [         R                  " XU5      $ r\   r  )r1  r2  nums      rW   r  1TestParforNumPy.test_linspace.<locals>.test_impl2  s    ;;uC00rZ   r  r  r  r  r   r
     r  )rT   r  r  r   s       rW   test_linspaceTestParforNumPy.test_linspace  sQ    	,	1 T71Q<1>CJJz1c*JJz1c2. ?rZ   c           
      &  ^  S nSn[         R                  R                  U5      n[         R                  R                  SUS4S9nT R	                  X5        T R	                  X5        T R                  [        U[        R                  " [        R                  SS5      45      S5        T R                  [        U[        R                  " [        R                  SS5      45      S5        U 4S	 jnT R                  X5        T R                  X5        g )
Nc                 "    U R                  5       $ r\   meanr  s    rW   r  ,TestParforNumPy.test_mean.<locals>.test_impl  s    668OrZ   d   r  r  sizer   r  r
  c                  &   > T R                  S5      $ r8  r#  r^   s   rW   <lambda>+TestParforNumPy.test_mean.<locals>.<lambda>      455a8rZ   r   r  r  randintr   r   r   r   r  r  r   r   )rT   r  r  r  r  data_gens   `     rW   	test_meanTestParforNumPy.test_mean  s    	IINN1IIb1v.

9 

9 i%++emmQPS2T1WXZ[\i%++emmQPS2T1WXZ[\ 9I0##I8rZ   c           
      X  ^  S nSn[         R                  R                  U5      n[         R                  R                  SUS4S9nUSU-  -   nT R	                  X5        T R	                  X5        T R	                  X5        T R                  [        U[        R                  " [        R                  SS5      45      S	5        T R                  [        U[        R                  " [        R                  S	S5      45      S	5        U 4S
 jnT R                  X5        T R                  X5        g )Nc                 "    U R                  5       $ r\   )varr>  s    rW   r  +TestParforNumPy.test_var.<locals>.test_impl      557NrZ   r@  r  r  rA                ?r   r  r
  c                  &   > T R                  S5      $ r8  rD  r^   s   rW   rE  *TestParforNumPy.test_var.<locals>.<lambda>  rG  rZ   rH  )rT   r  r  r  r  r  rJ  s   `      rW   test_varTestParforNumPy.test_var  s    	IINN1IIb1v.QJ

9 

9 

9 i%++emmQPS2T1WXZ[\i%++emmQPS2T1WXZ[\ 9I0##I8rZ   c                   ^  S nSn[         R                  R                  U5      n[         R                  R                  SUS4S9nUSU-  -   nT R	                  X5        T R	                  X5        T R	                  X5        [
        R                  " [
        R                  SS5      4nT R                  [        X5      S	5        T R                  [        X5      S	5        U 4S
 jnT R                  X5        T R                  X5        g )Nc                 "    U R                  5       $ r\   )stdr>  s    rW   r  +TestParforNumPy.test_std.<locals>.test_impl  rQ  rZ   r@  r  r  rA  rR  r   r  r
  c                  &   > T R                  S5      $ r8  rD  r^   s   rW   rE  *TestParforNumPy.test_std.<locals>.<lambda>  rG  rZ   )r   r  r  rI  r   r   r  r  r   r   r   r   )rT   r  r  r  r  r  argtyrJ  s   `       rW   test_stdTestParforNumPy.test_std  s    	IINN1IIb1v.QJ

9 

9 

9 U]]As35i7;i7; 9I0##I8rZ   c                 `    S nU R                  [        U[        R                  45      S5        g)zt
Test function with only a random call to make sure a random function
like ranf is actually translated to a parfor.
c                 F    [         R                  R                  X 45      nU$ r\   )r   r  r  r  s     rW   r  5TestParforNumPy.test_random_parfor.<locals>.test_impl  s    		v&AHrZ   r   Nr  r*  s     rW   test_random_parfor"TestParforNumPy.test_random_parfor  s&    
	 	i%++A1ErZ   c                     S nSnU R                  U[        R                  " U5      45      nUR                  U5      nU" U5      n[        R
                  R                  XESS9  U R                  [        U[        R                  45      S5        g )Nc                    [         R                  R                  X 4S9n[         R                  R                  X 5      n[         R                  R	                  SSX 45      n[         R                  R                  SX 45      n[         R                  R                  SSX 4S9n[         R                  R                  SSSX 45      n[         R                  " X-   U-   U-   U-   U-   5      $ NrA          ro  r   r  )highrB  r
  )	r   r  standard_normalr   normal	chisquarerI  
triangularr  r  r  r  r  r  EFs          rW   r  /TestParforNumPy.test_randoms.<locals>.test_impl  s    		))v)6A		%A		  cA62A		##C!0A		!!!!1&!9A		$$Q1qf5A66!#a%'!)A+&&rZ   r  g?)rtolr   )r   r   r   r   r   r   assert_allcloser   r   r   r  rT   r  r  r   r   	py_outputs         rW   test_randomsTestParforNumPy.test_randoms  sx    	' &&y5<<?2DE**1-aL	


""=$"Gi%++A1ErZ   c                    S nSnU R                  U[        R                  " U5      45      nUR                  U5      nU" U5      nU R	                  XE5        U R	                  [        U[        R                  45      S5        g )Nc                    [         R                  R                  X 4S9n[         R                  R                  X 5      n[         R                  R	                  SSX 45      n[         R                  R                  SX 45      n[         R                  R                  SSX 4S9n[         R                  R                  SSSX 45      ngrg  )r   r  rj  r   rk  rl  rI  rm  rn  s          rW   r  4TestParforNumPy.test_dead_randoms.<locals>.test_impl  s    		))v)6A		%A		  cA62A		##C!0A		!!!!1&!9A		$$Q1qf5ArZ   r  r   )r   r   r   r   r   r   r   r  rt  s         rW   test_dead_randoms!TestParforNumPy.test_dead_randoms  so    	 &&y5<<?2DE**1-aL	2i%++A1ErZ   c           	        ^  S nS nSn[         R                  R                  U5      n[         R                  R                  SUS9R	                  [         R
                  5      n[         R                  R                  X345      n[         R                  " [         R                  [         R                  /5      nT R                  X5        T R                  X5        T R                  X5        T R                  X5        T R                  X$5        T R                  X%5        T R                  X&5        T R                  X'5        SnX4 H  n	T R                  U	[        R                  S S  45      n
T R                  [        5       nU
R                  [         R                  " / [         R                  S95        S S S 5        T R                  U[!        WR"                  5      5        M     U 4S jnT R%                  X5        T R'                  X5        T R%                  X,5        T R'                  X,5        g ! , (       d  f       N= f)	Nc                 "    U R                  5       $ r\   r  r>  s    rW   r  ,TestParforNumPy.test_min.<locals>.test_impl1'  rQ  rZ   c                 .    [         R                  " U 5      $ r\   )r   r  r>  s    rW   r  ,TestParforNumPy.test_min.<locals>.test_impl2*      66!9rZ      r  rA  zDzero-size array to reduction operation minimum which has no identityr>  c                  &   > T R                  S5      $ r8  rD  r^   s   rW   rE  *TestParforNumPy.test_min.<locals>.<lambda>E  rG  rZ   r   r  r  rI  astypeint32r  infr   r   r   r  r  r   r   r   r'  r  r   r   rT   r  r  r  r  r  r  r  r  r   pcfuncerJ  s   `            rW   test_minTestParforNumPy.test_min&  s   		 IINN1IIbq)00:IINNA6"HHbffbff%&

:!

:!

:!

:!

:!

:!

:!

:!/,D**4%++a.1BCF"":.!""288Bbhh#?@ /MM#s1;;/0	 - 9J1##J9J1##J9 /.s   3H00
H>	c           	        ^  S nS nSn[         R                  R                  U5      n[         R                  R                  SUS9R	                  [         R
                  5      n[         R                  R                  X345      n[         R                  " [         R                  * [         R                  * /5      nT R                  X5        T R                  X5        T R                  X5        T R                  X5        T R                  X$5        T R                  X%5        T R                  X&5        T R                  X'5        SnX4 H  n	T R                  U	[        R                  S S  45      n
T R                  [        5       nU
R                  [         R                  " / [         R                  S95        S S S 5        T R                  U[!        WR"                  5      5        M     U 4S jnT R%                  X5        T R'                  X5        T R%                  X,5        T R'                  X,5        g ! , (       d  f       N= f)	Nc                 "    U R                  5       $ r\   )r   r>  s    rW   r  ,TestParforNumPy.test_max.<locals>.test_impl1L  rQ  rZ   c                 .    [         R                  " U 5      $ r\   )r   r   r>  s    rW   r  ,TestParforNumPy.test_max.<locals>.test_impl2O  r  rZ   r  r  rA  zDzero-size array to reduction operation maximum which has no identityr>  c                  &   > T R                  S5      $ r8  rD  r^   s   rW   rE  *TestParforNumPy.test_max.<locals>.<lambda>j  rG  rZ   r  r  s   `            rW   test_maxTestParforNumPy.test_maxK  s   		 IINN1IIbq)00:IINNA6"HHrvvgw'(

:!

:!

:!

:!

:!

:!

:!

:!/,D**4%++a.1BCF"":.!""288Bbhh#?@ /MM#s1;;/0	 - 9J1##J9J1##J9 /.s   3H22
I 	c           	      ^  ^  S nS nSn[         R                  " / SQ5      n[         R                  R                  SUS9R	                  [         R
                  5      n[         R                  R                  X345      n[         R                  " SS[         R                  S	S
/5      nT R                  X5        T R                  X5        T R                  X5        T R                  X5        T R                  X$5        T R                  X%5        T R                  X&5        T R                  X'5        SnX4 H  n	T R                  U	[        R                  S S  45      n
T R                  [        5       nU
R                  [         R                  " / [         R                  S95        S S S 5        T R                  U[!        WR"                  5      5        M     U 4S jnT R%                  X5        T R'                  X5        T R%                  X,5        T R'                  X,5        g ! , (       d  f       N= f)Nc                 "    U R                  5       $ r\   )r  r>  s    rW   r  /TestParforNumPy.test_argmax.<locals>.test_impl1q      88:rZ   c                 .    [         R                  " U 5      $ r\   )r   r  r>  s    rW   r  /TestParforNumPy.test_argmax.<locals>.test_impl2t  r  rZ   r  )ro  rh  r         @r  r  rA  ro  rh  r  r  z*attempt to get argmax of an empty sequencer>  c                  &   > T R                  S5      $ r8  rD  r^   s   rW   rE  -TestParforNumPy.test_argmax.<locals>.<lambda>  rG  rZ   r   r  r  rI  r  r  r  nanr   r   r   r  r  r   r   r   r'  r  r   r   r  s   `            rW   test_argmaxTestParforNumPy.test_argmaxp     		  HH)*IIbq)00:IINNA6"HHb"bffb"-.

:!

:!

:!

:!

:!

:!

:!

:! ;,D**4%++a.1BCF"":.!""288Bbhh#?@ /MM#s1;;/0	 - 9J1##J9J1##J9 /.   /3H
H,	c           	      ^  ^  S nS nSn[         R                  " / SQ5      n[         R                  R                  SUS9R	                  [         R
                  5      n[         R                  R                  X345      n[         R                  " SS[         R                  SS	/5      nT R                  X5        T R                  X5        T R                  X5        T R                  X5        T R                  X$5        T R                  X%5        T R                  X&5        T R                  X'5        S
nX4 H  n	T R                  U	[        R                  S S  45      n
T R                  [        5       nU
R                  [         R                  " / [         R                  S95        S S S 5        T R                  U[!        WR"                  5      5        M     U 4S jnT R%                  X5        T R'                  X5        T R%                  X,5        T R'                  X,5        g ! , (       d  f       N= f)Nc                 "    U R                  5       $ r\   )r  r>  s    rW   r  /TestParforNumPy.test_argmin.<locals>.test_impl1  r  rZ   c                 .    [         R                  " U 5      $ r\   )r   r  r>  s    rW   r  /TestParforNumPy.test_argmin.<locals>.test_impl2  r  rZ   r  )ro  rh  r  rh  r  r  rA  ro  rh  r  z*attempt to get argmin of an empty sequencer>  c                  &   > T R                  S5      $ r8  rD  r^   s   rW   rE  -TestParforNumPy.test_argmin.<locals>.<lambda>  rG  rZ   r  r  s   `            rW   test_argminTestParforNumPy.test_argmin  r  r  c                     S n[         R                  " S5      nU R                  X5        [        R                  " [        R
                  SS5      4nU R                  [        X5      S5        g )Nc                 (    U R                  S5        U $ N      @fillr   s    rW   r  4TestParforNumPy.test_ndarray_fill.<locals>.test_impl      FF3KHrZ   r  r   r  r   zerosr   r   r  r  r   r   rT   r  r   r]  s       rW   test_ndarray_fill!TestParforNumPy.test_ndarray_fill  sP    	 HHRL

9 U]]As35i7;rZ   c                     S n[         R                  " S5      nU R                  X5        [        R                  " [        R
                  SS5      4nU R                  [        X5      S5        g )Nc                 (    U R                  S5        U $ r  r  r  s    rW   r  6TestParforNumPy.test_ndarray_fill2d.<locals>.test_impl  r  rZ   r
  r
  r
  r  r   r  r  s       rW   test_ndarray_fill2d#TestParforNumPy.test_ndarray_fill2d  sP    	 HHUO

9 U]]As35i7;rZ   c                 b    S n[         R                  " / SQ5      nSnU R                  XU5        g )Nc                     [         R                  " XS4[         R                  S9nU SU nUR                  n U S-  nUR	                  SS5      nX4-  nXRS S 2S S 2S4'   U$ Nr   r>  r   rJ   r   r  r  rB  r  r   r   result_matrixsub_azresult_datas         rW   r  <TestParforNumPy.test_reshape_with_neg_one.<locals>.test_impl  sb    HHaAYbjjAMaFE

AAAb!$A)K#.!Aa%   rZ   ro  r  r  r        @      @r  g       @g      "@      $@g      &@r  r  r   r  r   rT   r  r   r   s       rW   test_reshape_with_neg_one)TestParforNumPy.test_reshape_with_neg_one  /    	! HH 4 5

9#rZ   c                 b    S n[         R                  " / SQ5      nSnU R                  XU5        g )Nc                     [         R                  " XS4[         R                  S9nU SU nUR                  n U S-  nUR	                  SS5      nX4-  nXRS S 2S S 2S4'   U$ )Nr   r>  r   ir  r  s         rW   r  >TestParforNumPy.test_reshape_with_large_neg.<locals>.test_impl  sb    HHaAYbjjAMaFE

AAAeQ'A)K#.!Aa%   rZ   r  r  r  r  s       rW   test_reshape_with_large_neg+TestParforNumPy.test_reshape_with_large_neg  r  rZ   c                 &   U R                  [        R                  5       n[        SS9S 5       n[        R
                  " / SQ5      nSnU" X45        S S S 5        SnU R                  U[        WR                  5      5        g ! , (       d  f       N6= f)NTr   c                     [         R                  " XS4[         R                  S9nU SU nUR                  n U S-  nUR	                  SS5      nX4-  nXRS S 2S S 2S4'   U$ r  r  )r   r   rmr  r  r  s         rW   r  ETestParforNumPy.test_reshape_with_too_many_neg_one.<locals>.test_impl  s`    XXqQirzz:!AJJEMM"b)#i'1Qq5		rZ   r  r  z7The reshape API may only include one negative argument.)	r  r   UnsupportedRewriteErrorr   r   r  r   r'  r  )rT   raisedr  r   r   r  s         rW   "test_reshape_with_too_many_neg_one2TestParforNumPy.test_reshape_with_too_many_neg_one  s    v==>&4  !  8 9AAaO ?" Ic3v//01% ?>s   2B
Bc                 T    S nU R                  U[        R                  " S5      SS9  g )Nc                     [         R                  " U 5      [         R                  " U 5      -   [         R                  " U 5      -   [         R                  " U 5      -   [         R
                  " U 5      -   $ r\   )r   r  prodr  r   rO  r  s    rW   r  0TestParforNumPy.test_0d_array.<locals>.test_impl  sD    66!9rwwqz)BFF1I5q	ABFF1IMMrZ      Fr   )r   r   r  r*  s     rW   test_0d_arrayTestParforNumPy.test_0d_array  s"    	N

9bhhqkE
BrZ   c           	          S n[         R                  " S5      S-  nU R                  X5        U R                  [	        U[
        R                  S S S2   45      S5        g )Nc                 h    [         R                  " U R                  S-  U R                  S-  -   5      $ r  )r   r  realimag)r  s    rW   r  6TestParforNumPy.test_real_imag_attr.<locals>.test_impl  s&    66!&&A+!344rZ   r   y      ?      ?r   )r   r  r   r   r   r   rA  )rT   r  r  s      rW   test_real_imag_attr#TestParforNumPy.test_real_imag_attr	  sP    	5 IIaLF#

9 i%2B2B3Q32G1IJANrZ   r   N)r   rO   r   r   rl  r;   r  r  r  r!  r-  r8  rK  rU  r^  rc  rv  r{  r  r  r  r  r  r  r  r  r  r  r  r   r   rZ   rW   r  r  y  s    1$ $	GF. . 
/9 9$9&FF$F"#:J#:J":H":H<<$$$$2,C
OrZ   r  c                   ^    \ rS rSrSr\R                  " \(       + S5      \S 5       5       r	Sr
g)TestParforsUnsupportedi  z$Tests for unsupported use of parforszOnly impacts 32 bit hardwarec                 r   U R                  [        R                  5       n[        SS9S 5       n[        R
                  " SSS5      R                  SS5      n[        R
                  " SSS5      nU" X45        S	S	S	5        S
nU R                  U[        WR                  5      5        g	! , (       d  f       N6= f)z]
This test is in place until issues with the 'parallel'
target on 32 bit hardware are fixed.
Tr   c                 .    [         R                  " X5      $ r\   r  r  s     rW   ddotHTestParforsUnsupported.test_unsupported_combination_raises.<locals>.ddot  s    vva|#rZ   r   r   ri  r
  r  NzCThe 'parallel' target is not currently supported on 32 bit hardware)
r  r   UnsupportedParforsErrorr   r   r  r  r   r'  r  )rT   r  r  r  r  r  s         rW   #test_unsupported_combination_raises:TestParforsUnsupported.test_unsupported_combination_raises  s     v==>&4 $ !$ Aq"%--a4AAq"%AJ ?c3v//01 ?>s   AB((
B6r   N)r   rO   r   r   rl  unittestskipIfr:   r;   r  r   r   rZ   rW   r  r    s.    .__Z!?@2  A2rZ   r  c                      \ 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 5       rS rS r\S 5       r\S 5       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, r0S- r1S. r2S/ r3S0 r4S1 r5S2 r6S3 r7S4 r8S5 r9S6 r:S7 r;S8 r<S9 r=S: r>S; r?S< r@S= rAS> rBS? rCS@ rDSA rESB rFSC rGSD rHSE rISF rJSG rKSH rLSI rMSJ rNSK rOSL rPSM rQ\R\SSN 5       5       rTSOrUgP)QTestParforsi)  z5Tests cpython, reduction and various parfors featuresc                 8   ^  S nT R                  UU 4S j5        g )Nc                     X-  U-   $ r\   r   )r   r   r  s      rW   r  ,TestParfors.test_arraymap.<locals>.test_impl.  s    519rZ   c                  &   > T R                  S5      $ Nr  rD  r^   s   rW   rE  +TestParfors.test_arraymap.<locals>.<lambda>1  s    t/I/I!/LrZ   )r   r*  s   ` rW   test_arraymapTestParfors.test_arraymap-  s    	 	I'LMrZ   c                 d    S nU R                  U5        U R                  [        US5      S5        g )Nc                      [         R                  " S5      n [         R                  " S5      n[         R                  " X-   5      $ )Nr   r     )r   r  r  r  r  r  s     rW   r  0TestParfors.test_0d_broadcast.<locals>.test_impl4  s-    A!A66!%= rZ   r   r   r   r   r   r*  s     rW   test_0d_broadcastTestParfors.test_0d_broadcast3  ,    	! 	

9i4a8rZ   c                 d    S nU R                  U5        U R                  [        US5      S5        g )Nc                      [         R                  " S5      n [         R                  " S5      n[         R                  " X-   5      $ Nr  )r   r  r  r  r  s     rW   r  -TestParfors.test_2d_parfor.<locals>.test_impl<  s.    !A"A66!%= rZ   r   r   r  r*  s     rW   test_2d_parforTestParfors.test_2d_parfor;  r  rZ   c                 f   ^ ^ S mUU 4S jnS nT R                  X!5        T R                  X!5        g )Nc               3   n   #    [         R                  " S5      n [         R                  " S5      nX4v   g 7fr  r   r  r  r  s     rW   case1)TestParfors.test_nd_parfor.<locals>.case1D  s(     !A"A&Ls   35c                  D   > [        T " 5       TR                  S5      5      $ r  )r
   r#  )r  rT   s   rW   rE  ,TestParfors.test_nd_parfor.<locals>.<lambda>I  s    5$*D*DQ*GHrZ   c                 2    [         R                  " X-   5      $ r\   r  r  s     rW   r  -TestParfors.test_nd_parfor.<locals>.test_implK  s    66!%= rZ   )r   r   )rT   rJ  r  r  s   `  @rW   test_nd_parforTestParfors.test_nd_parforC  s3    	
 I	! 	I0##I8rZ   c                 D   ^ SSK Jm  U4S jnSnU R                  X5        g )Nr   )r  c                    > T" U 5      nUS   $ r  r   )r  r  r  s     rW   r  9TestParfors.test_np_func_direct_import.<locals>.test_implS  s    QAQ4KrZ   o   )r  r  r   )rT   r  r  r  s      @rW   test_np_func_direct_import&TestParfors.test_np_func_direct_importQ  s    	 

9 rZ   c                    S nU R                  USS5        U R                  [        5       n[        SS9" U5      nU" SS5        S S S 5        SnU R	                  U[        WR                  5      5        g ! , (       d  f       N6= f)Nc                     [         R                  " U 5      n[         R                  " U5      n[         R                  " X#-   5      $ r\   r  )rS  r  r  r  s       rW   r  2TestParfors.test_size_assertion.<locals>.test_implZ  s,    
A
A66!%= rZ   r  Tr   	   zSizes of A, B do not match)r   r  r  r   r   r'  r  )rT   r  r!  r   r  s        rW   test_size_assertionTestParfors.test_size_assertionY  so    	!
 	

9b"%~.&$'	2E"aL / +c3v//01	 /.s   A55
Bc                     S nSn[         R                  R                  U5      n[         R                  " U5      nU R	                  XXB5        g )Nc                     [         R                  " S5       H6  n[        X2-  S-  US-   U-  S-  5       H  nSX'   X   S:  d  M  SX'   M     M8     U$ )Nr
  r   r   r   r   r  )r   is_positiver  r  r  s        rW   r  'TestParfors.test_cfg.<locals>.test_implh  sV    \\!_Q1a
4A%&KNtax)* 5 % rZ   r@  )r   r  randr  r   )rT   r  r  r   r3  s        rW   test_cfgTestParfors.test_cfgf  s;    	 IINN1hhqk

90rZ   c           	         S nSn[         R                  R                  U5      nU R                  X5        [         R                  R	                  SUS9R                  [         R                  5      nU R                  X5        S nU R                  5          U R                  U5        S S S 5        Sn[         R                  R	                  SUS9R                  [         R                  5      nS nU R                  X5        S nU R                  XR                  S	5      5        S
 nU R                  XR                  S	5      5        U R                  [        U[        R                  S S 2S S 24   45      S5        S nU R                  X5        U R                  [        U[        R                  S S  45      S5        g ! , (       d  f       GN= f)Nc                      Sn[        S X5      $ )Nr  c                     [        X5      $ r\   r  r   s     rW   rE  <TestParfors.test_reduce.<locals>.test_impl.<locals>.<lambda>y  s    c!irZ   r   )r  init_vals     rW   r  *TestParfors.test_reduce.<locals>.test_implw  s    H/==rZ   r  r  rA  c                  N    S n [        U [        R                  " / SQ5      S5      $ )Nc                     U S-  $ r  r   r  s    rW   rE  r;    s    !q&rZ   r   r
  r  r  r   r
  )r   r   r  )gs    rW   r  r=    s     A!RXXo6::rZ      c                 8    [         R                  " X S:     5      $ r  r  r>  s    rW   r  r=    s    66!qD'?"rZ   c                 N    U S S 2S4   n[         R                  " XS:  S4   5      $ )Nr   r  r   r  r  r  s     rW   r  r=    s(    !A#A66!qDF)$$rZ   )   r  c                 R    U S S 2S4   n[         R                  " XS:  SS24   5      $ )Nr   r  r   r
  r  rE  s     rW   r  r=    s,    !A#A66!qD1H+&&rZ   r
  c                 6    [         R                  " U 5      nX-
  $ r\   )r   amin)r  min_vals     rW   r  r=    s    ggajG;rZ   )r   r  r  r   rI  r  r  assertTypingErrorr  r   r   r   r  rT   r  r  r  s       rW   test_reduceTestParfors.test_reducev  sb   	> IINN1

9 IIbq)00:

9 	; ##%JJy! & IIbq)00:	#

9 	% 	

9ii01	' 	

9ii01i%--!2D1FGK	 	

9 i%--2B1DEqI? &%s   F==
Gc                     S nSnU R                  [        5       nU R                  US5      nS S S 5        U R                  U[	        WR
                  5      5        g ! , (       d  f       N4= f)Nc                  Z    Sn [        S5       H  n[        R                  " U 5      n M     U $ r  )r   cmathrq  accr  s     rW   r  9TestParfors.test_use_of_reduction_var1.<locals>.test_impl  s'    CAYjjo JrZ   CUse of reduction variable acc in an unsupported reduction function.r   r  r   r   r   r'  r  rT   r  r  r  r  s        rW   test_use_of_reduction_var1&TestParfors.test_use_of_reduction_var1  sV    	 Uz*a**9b9F +c3q{{+, +*   A
A*c                     S nSnU R                  [        R                  5       nU R                  US5      nS S S 5        U R	                  U[        WR                  5      5        g ! , (       d  f       N4= f)Nc                  8    Sn [        S5       H  nU S-  n M
     U $ Nr@  r
  r   rR  s     rW   r  9TestParfors.test_unsupported_floordiv1.<locals>.test_impl  s#    CAY	 JrZ   zParallel floordiv reductions are not supported. If all divisors are integers then a floordiv reduction can in some cases be parallelized as a multiply reduction followed by a floordiv of the resulting product.r   )r  r   NumbaValueErrorr   r   r'  r  rW  s        rW   test_unsupported_floordiv1&TestParfors.test_unsupported_floordiv1  s]    	(
 v556!**9b9F 7c3q{{+, 76s   A&&
A4c                     S nSnU R                  [        5       nU R                  US5      nS S S 5        U R                  U[	        WR
                  5      5        g ! , (       d  f       N4= f)Nc                  <    Sn [        S5       H
  nXS-   -  n M     U $ r]  r^  rR  s     rW   r  4TestParfors.test_unsupported_xor1.<locals>.test_impl  s%    CAY1u JrZ   rU  r   rV  rW  s        rW   test_unsupported_xor1!TestParfors.test_unsupported_xor1  sV    	 Uz*a**9b9F +c3q{{+, +*rZ  c                     S nSnU R                  X5        U R                  [        U[        R                  45      S5        g )Nc                 N    [         R                  " U 5      nUR                  5       $ r\   r  r  s     rW   r  8TestParfors.test_parfor_array_access1.<locals>.test_impl  s    
A557NrZ   r  r   )r   r   r  r   r  rT   r  r  s      rW   test_parfor_array_access1%TestParfors.test_parfor_array_access1  s7    	 

9 Y>BrZ   c                     S nSnU R                  X5        U R                  [        U[        R                  45      S5        g )Nc                     [         R                  " U 5      nSnSn [        R                  " [	        U5      5       H
  nX!U   -  nM     [        R                  " [	        U5      5       H  nX :X  d  M
  XU   -  n M     X -   $ r  )r   r  r   r   r   r  r  rS  r  s       rW   r  8TestParfors.test_parfor_array_access2.<locals>.test_impl  sm    
AAA\\#a&)qT	 * \\#a&)61IA * 5LrZ   r  r   r   r   r  r   r  rk  s      rW   test_parfor_array_access2%TestParfors.test_parfor_array_access2  s9    	 

9 4YNPQRrZ   c                     S nSnU R                  [        R                  5       nU R                  X5        S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                     [         R                  " U [         R                  5      nSn[        R                  " [        U5      5       H  nX!U   -  nUS:X  d  M  UnM     g Nr   r
  )r   r  r  r   r   r   rp  s       rW   r  8TestParfors.test_parfor_array_access3.<locals>.test_impl  sI    288$AA\\#a&)qT	a4A *rZ   r  z Overwrite of parallel loop index)r  r   r  r   r   r'  r  )rT   r  r  r!  s       rW   test_parfor_array_access3%TestParfors.test_parfor_array_access3  sX    	 v==>&JJy$ ?8#f>N>N:OP ?>s   A%%
A3c           	         S nSnSn[         R                  R                  X#45      n[         R                  R                  U5      nU R                  XU5        [	        U[
        R                  " [
        R                  SS5      [
        R                  " [
        R                  SS5      45      u  pgU R                  [        UR                  5      S:H  =(       a    SUR                  ;   5        UR                  S   nSn	S n
UR                   H<  n[        U[        R                  R                  R                   5      (       d  M8  S	n	Un
M>     U R                  U	5        SnU
R"                  R%                  5        H  nUR                   H  n[        U[&        R(                  5      (       d  M$  [        UR*                  [&        R,                  5      (       d  MO  UR*                  R.                  S
:X  d  Mk  S	nU R                  U
R0                  UR*                  R2                  ;   5        M     M     U R                  U5        g )Nc                 .    [         R                  " X5      $ r\   r  )r  r   s     rW   r  8TestParfors.test_parfor_array_access4.<locals>.test_impl  r  rZ   r  r  r
  r  r   r   FTr  )r   r  r  r   r  r   r  r  r^  r   r  r  r   r   r  r  r  r  r  r   r  r  r  rc  r  rg  )rT   r  r  dr  r   r  r  r  parfor_foundr  r  build_tuple_foundbls                 rW   test_parfor_array_access4%TestParfors.test_parfor_array_access4  s   	  IINNA6"IINN1

9#,EMM1c:EMM1c:<= 	GNN+q0HQ'..5HIq!JJD$ 4 4 ; ;<<# 
 	%!""))+BtRYY//&tzz277;; JJMM]:(,%OOF$4$4

8H8H$HI   , 	)*rZ   c                 X    S n[         R                  " S5      nU R                  X5        g )Nc                     [         R                  " [        U 5      5       H   nU R                  R	                  S5      X'   M"     U S   $ Nr   r  )r   r   r   r?  r   )r   r  s     rW   r  5TestParfors.test_parfor_dtype_type.<locals>.test_impl&  s5    \\#a&)ww||A *Q4KrZ   r  r  )rT   r  r   s      rW   test_parfor_dtype_type"TestParfors.test_parfor_dtype_type$  s"    	
 GGBK

9 rZ   c                     S nSnU R                  X5        U R                  [        U[        R                  45      S5        g )Nc                     [         R                  " U S45      nSn[        R                  " U 5       H  nX!US S 24   R	                  5       -  nM     U$ )Nr  r   )r   r  r   r   r  )r  r  r  r  s       rW   r  8TestParfors.test_parfor_array_access5.<locals>.test_impl0  sE    AAA\\!_qsVZZ\! %HrZ   r  r   rr  rk  s      rW   test_parfor_array_access5%TestParfors.test_parfor_array_access5.  s9    	 

9 4YNPQRrZ   c                 X    S n[         R                  " S5      nU R                  X5        g )Nc                 F    [        S5       H  nSU S   -  U S'   M     U S   $ )Nr  r
  r   r^  )outr  s     rW   r  8TestParfors.test_parfor_hoist_setitem.<locals>.test_impl>  s*    BZSVA  q6MrZ   r   r  )rT   r  r  s      rW   test_parfor_hoist_setitem%TestParfors.test_parfor_hoist_setitem;  s"    	
 ggaj

9"rZ   c                    S nSnSnU R                  XU5        U R                  [        U[        R                  [        R                  45      S5        U R                  [        U[        R                  [        R                  45      S5        g )Nc                     [         R                  " U5      n[         R                  " X45      n[         R                  " U 5      n[        S5       H  nU* [         R                  " X25      -  nM     W$ r  )r   r  r  r  )r  r  r  r  r  r  r  s          rW   r  8TestParfors.test_parfor_generate_fuse.<locals>.test_implI  sT    
AA
A1XR"&&,&  HrZ   r  r  r  )r   r   r  r   r  r   )rT   r  r  r~  s       rW   test_parfor_generate_fuse%TestParfors.test_parfor_generate_fuseF  sk    	 

9#))ejj%**5MNPQRi%**ejj1IJANrZ   c                     S n[         R                  " S[         R                  5      n[         R                  " S[         R                  5      nSUS'   U R                  XU5        g )Nc                 .    [         R                  " X5      $ r\   )r   bitwise_andrE  s     rW   r  .TestParfors.test_ufunc_expr.<locals>.test_implZ  s    >>!''rZ   r  r   r   )r   r  uint8r   )rT   r  r  r  s       rW   test_ufunc_exprTestParfors.test_ufunc_exprX  sH    	( GGArxx GGArxx !

9#rZ   c                 `    S nU R                  [        U[        R                  45      S5        g )Nc                 P    [        U 45      n[        U 5       H
  nUS-   X'   M     U$ )Nr  )unsafe_emptyr  r  r  r  s      rW   r  ;TestParfors.test_find_callname_intrinsic.<locals>.test_implc  s,    aT"A1X3w HrZ   r   )r   r  r   r  r*  s     rW   test_find_callname_intrinsic(TestParfors.test_find_callname_intrinsicb  s'    	 	))ejj]CQGrZ   c                 .    S nU R                  US5        g )Nc                 f    Sn[        U 5       H  nUS-  nM
     [        U 5       H  nUS-  nM
     U$ r	  r^  r  rS  r  s      rW   r  7TestParfors.test_reduction_var_reuse.<locals>.test_implo  s>    CAYq  AYq  JrZ   rF  r)  r*  s     rW   test_reduction_var_reuse$TestParfors.test_reduction_var_reusem  s    	 	

9b!rZ   c                     S nU R                  U[        R                  " S5      [        R                  " S5      R                  S5      5        g )Nc                 h    Sn[        U R                  S   5       H  nX   (       d  M  US-  nM     U$ Nr   r   r   r  )r  condr  r  s       rW   r  8TestParfors.test_non_identity_initial.<locals>.test_impl|  s5    AAGGAJ'77FA ( HrZ   r  boolr   r   r  r  r*  s     rW   test_non_identity_initial%TestParfors.test_non_identity_initialz  s4    	 	

9bggbk2772;+=+=f+EFrZ   c                     S nU R                  U[        R                  " S5      [        R                  " S5      R                  S5      5        g )Nc                     SnSn[        U R                  S   5       H  nX   (       a  US-  nUS-  nM  US-  nM     X#-   $ )Nr   r  r   r
  r  )r  r  r  r  r  s        rW   r  9TestParfors.test_if_not_else_reduction.<locals>.test_impl  sL    AAAGGAJ'7FAFAFA ( 5LrZ   r  r  r  r*  s     rW   test_if_not_else_reduction&TestParfors.test_if_not_else_reduction  s4    		 	

9bggbk2772;+=+=f+EFrZ   c                 .    S nU R                  US5        g )Nc                 8   SnUS   US   -  n[         R                  " U[         R                  5      n[         R                  " U5      R	                  U5      n[
        R                  " U 5       H  nX4-  nM	     [
        R                  " U 5       H  nX4-  nM	     U$ N   r   r   r   r   r  int_r  r  r   r   r  shprB  result1tmpr  s         rW   r  ?TestParfors.test_two_d_array_reduction_reuse.<locals>.test_impl  s    Cq6CF?DhhsBGG,G))D/))#.C\\!_ % \\!_ % NrZ   r@  r)  r*  s     rW    test_two_d_array_reduction_reuse,TestParfors.test_two_d_array_reduction_reuse  s    	 	

9c"rZ   c                 .    S nU R                  US5        g )Nc                     [         R                  " S[         R                  5      n[        R                  " U 5       H,  nU[         R
                  " U/[         R                  5      -  nM.     U$ r8  )r   r  r  r   r   r  )r  resultr  s      rW   r  9TestParfors.test_one_d_array_reduction.<locals>.test_impl  sJ    XXa)F\\!_"((A300 % MrZ   r@  r)  r*  s     rW   test_one_d_array_reduction&TestParfors.test_one_d_array_reduction  s    	 	

9c"rZ   c                 .    S nU R                  US5        g )Nc                     SnUS   US   -  n[         R                  " U[         R                  5      n[         R                  " U5      R	                  U5      n[
        R                  " U 5       H  nX4-  nM	     U$ r  r  r  s         rW   r  9TestParfors.test_two_d_array_reduction.<locals>.test_impl  sd    Cq6CF?DhhsBGG,G))D/))#.C\\!_ % NrZ   r@  r)  r*  s     rW   test_two_d_array_reduction&TestParfors.test_two_d_array_reduction  s    		 	

9c"rZ   c                 .    S nU R                  US5        g )Nc                     Sn[         R                  " U[         R                  5      n[         R                  " / SQ5      R	                  U5      n[
        R                  " U 5       H  nX#-  nM	     U$ )Nr  )ro  r  r  r  r  r  )r   r  r'  r  r  r   r   r  r  r  r  r  s        rW   r  JTestParfors.test_two_d_array_reduction_with_float_sizes.<locals>.test_impl  sU    ChhsBJJ/G((9:BB3GC\\!_ % NrZ   r@  r)  r*  s     rW   +test_two_d_array_reduction_with_float_sizes7TestParfors.test_two_d_array_reduction_with_float_sizes  s    	 	

9c"rZ   c                 .    S nU R                  US5        g )Nc                     SnS[         R                  " U[         R                  5      -  nS[         R                  " U5      -  n[        R
                  " U 5       H  nX#-  nM	     U$ )Nr  r
  )r   r  r  	ones_liker   r   r  s        rW   r  >TestParfors.test_two_d_array_reduction_prod.<locals>.test_impl  sS    C"''#rww//Gbll7++C\\!_ % NrZ   r@  r)  r*  s     rW   test_two_d_array_reduction_prod+TestParfors.test_two_d_array_reduction_prod  s    	 	

9c"rZ   c                 .    S nU R                  US5        g )Nc                     Sn[         R                  " U[         R                  5      n[        R                  " U 5       H+  nU[         R
                  " U[         R                  5      -  nM-     U$ )N)r  r
  r  )r   r  r  r   r   r  )r  r  r  r  s       rW   r  ;TestParfors.test_three_d_array_reduction.<locals>.test_impl  sM    ChhsBGG,G\\!_277300 % NrZ   r@  r)  r*  s     rW   test_three_d_array_reduction(TestParfors.test_three_d_array_reduction  s    	 	

9c"rZ   c                 \    S nSn[         R                  " U5      nU R                  X5        g )Nc                 (    U R                  5       S-   $ r8  )argsortr>  s    rW   r  >TestParfors.test_preparfor_canonicalize_kws.<locals>.test_impl  s    99;?"rZ   r  r   r  r   rL  s       rW   test_preparfor_canonicalize_kws+TestParfors.test_preparfor_canonicalize_kws  s'    	# IIaL

9 rZ   c                     S n[         R                  " S[         R                  " S5      5      nU R                  U[        R
                  " U5      45      nU R                  UR                  U5      U" U5      5        g )Nc                     U R                   $ r\   r>  r>  s    rW   r  8TestParfors.test_preparfor_datetime64.<locals>.test_impl  s    77NrZ   r   zdatetime64[ns])r   r  r?  r   r   r   r   r   )rT   r  r  r   s       rW   test_preparfor_datetime64%TestParfors.test_preparfor_datetime64  s_    	 HHQ!123&&y5<<?2DE++A.	!=rZ   c                 h    S nU R                  U[        R                  R                  S5      5        g )Nc                     U R                   S   nSn[        U5       H+  n1 SknUR                  U5        SnU H  nXV-  nM	     X%-  nM-     U$ )Nr   >   r   r
  r  )r  r   r  )r  r  rS  r  Rr  r   s          rW   r  ITestParfors.test_no_hoisting_with_member_function_call.<locals>.test_impl  sV    
ACAYaAHC 
  JrZ   r  )r   r   r  r  r*  s     rW   *test_no_hoisting_with_member_function_call6TestParfors.test_no_hoisting_with_member_function_call  s$    
	 	

9biinnS12rZ   c                 ,    S nU R                  U5        g)zissue3671: X != 0 becomes an arrayexpr with operator.ne.
That is turned into a parfor by devectorizing.  Make sure
the return type of the devectorized operator.ne
on integer types works properly.
c                  R    [         R                  " S[         R                  S9n U S:g  $ )Nr  r>  r   )r   r  r  r  s    rW   r  8TestParfors.test_array_compare_scalar.<locals>.test_impl  s    277+A6MrZ   Nr)  r*  s     rW   test_array_compare_scalar%TestParfors.test_array_compare_scalar  s    	 	

9rZ   c                 X    S n[         R                  " S5      nU R                  XSSS9  g )Nc                 `    [        U 5      nU SU nU(       a  U SUS-   nUR                  5       $ rw  )r   r  )r   halfrB  parrs       rW   r  ?TestParfors.test_array_analysis_optional_def.<locals>.test_impl  s4    q6DQt9D47|88:rZ   ri  TFr  r  rT   r  r   s      rW    test_array_analysis_optional_def,TestParfors.test_array_analysis_optional_def  s(    	 GGBK

9
>rZ   c                 ^   S n[         R                  " S[        S9n[         R                  " S[        S9nU R                  XU5        U R	                  [        U[        R                  " [        R                  SS5      [        R                  " [        R                  SS5      45      S5        g )Nc                 
   [         R                  " [        U 5      [         R                  S9n[        U5      n[        R
                  " U5       H	  nX   X$'   M     [        R
                  " U5       H  nX$   X   -   X$'   M     U$ r%  )r   r  r   r  r   r   )r   r   datarB  r  s        rW   r  7TestParfors.test_prange_side_effects.<locals>.test_impl  sf    88CF"**5Dt9D\\$'$ (\\$''AD. (KrZ   r@  r>  r   r  )	r   r  floatr   r   r   r   r  r  )rT   r  r   r  s       rW   test_prange_side_effects$TestParfors.test_prange_side_effects  s    	 IIgU+IIgU+

9#i%*[[3%G%*[[3%G%IJKL	NrZ   c                 X    S n[         R                  " S5      nU R                  X5        g )Nc                     SnSn[         R                  " [        U 5      5       H  nX==   US   US   -   U-   -  ss'   M     U $ )Nr  r  r   r   )r   r   r   r   atupr   r  s       rW   r  *TestParfors.test_tuple1.<locals>.test_impl0  sF    DA\\#a&)Q$q')A-- *HrZ   r  r  r  s      rW   test_tuple1TestParfors.test_tuple1/  "    	 IIbM

9 rZ   c                 X    S n[         R                  " S5      nU R                  X5        g )Nc                     U R                   nSn[        R                  " [        U 5      5       H  nX==   US   U-   -  ss'   M     U $ )Nr  r   )r  r   r   r   r  s       rW   r  *TestParfors.test_tuple2.<locals>.test_impl;  s@    77DA\\#a&)Q!# *HrZ   r  r  r  s      rW   test_tuple2TestParfors.test_tuple2:  r  rZ   c                 X    S n[         R                  " S5      nU R                  X5        g )Nc                     [         R                  " S5      S4nSn[        R                  " [	        U 5      5       H  nX==   US   S   US   -   U-   -  ss'   M      U $ )Nr  r  r  r   r   r   )r   r  r   r   r   r  s       rW   r  *TestParfors.test_tuple3.<locals>.test_implF  sW    IIbM1%DA\\#a&)Q
T!W,q00 *HrZ   r  r  r  s      rW   test_tuple3TestParfors.test_tuple3E  r  rZ   c                 X    S n[         R                  " S5      nU R                  X5        g )Nc                     [        SSS9nSn[        R                  " [        U 5      5       H)  nX==   UR                  UR
                  -   U-   -  ss'   M+     U $ Nr  r  r   r  )r   r   r   r   r   r   )r   antupr   r  s       rW   r  /TestParfors.test_namedtuple1.<locals>.test_implQ  sM    "!4EA\\#a&)ekk1A55 *HrZ   r  r  r  s      rW   test_namedtuple1TestParfors.test_namedtuple1P  r  rZ   c                 x   ^ [        SS5      mU4S jn[        R                  " S5      nU R                  X5        g )NTestNamedTuple2r   c                    > T" SSS9nSn[         R                  " [        U 5      5       H)  nX==   UR                  UR                  -   U-   -  ss'   M+     U $ r"  )r   r   r   r   r   )r   r#  r   r  r(  s       rW   r  /TestParfors.test_namedtuple2.<locals>.test_impl]  sN    #!15EA\\#a&)ekk1A55 *HrZ   r  )r   r   r  r   )rT   r  r   r(  s      @rW   test_namedtuple2TestParfors.test_namedtuple2[  s1    $%68JK	 IIbM

9 rZ   c                     [        SS/5      nS nS nU" [        R                  " S5      S9nU R                  X$U/S9  g )NTestNamedTuple3r  c                 "    SU R                   S S & g )Nr   r  r  s    rW   r  /TestParfors.test_namedtuple3.<locals>.test_impll  s    ACCFrZ   c                 l    [         R                  R                  U R                  UR                  5        g r\   )r   r   r   r  r   s     rW   r  .TestParfors.test_namedtuple3.<locals>.comparero  s    JJ**1334rZ   r  r0  r  )r   r   r  r   )rT   r.  r  r  r   s        rW   test_namedtuple3TestParfors.test_namedtuple3g  sB     %>		5 bhhrl+

9XJ
?rZ   c                 ^   S n[         R                  " S5      S-   n[         R                  " S5      S-   nU R                  XU5        U R                  [	        U[
        R                  " [
        R                  SS5      [
        R                  " [
        R                  SS5      45      S5        g )Nc                     X-  nU$ r\   r   r   s     rW   r  1TestParfors.test_inplace_binop.<locals>.test_implv  s    FAHrZ   r  r@  r   r  )r   r  r   r   r   r   r  r  rT   r  r  r  s       rW   test_inplace_binopTestParfors.test_inplace_binopu  s    	 IIbMBIIbMC

9#i%*[[3%G%*[[3%G%IJKL	NrZ   c                 \    S n[         R                  " SS/5      nU R                  X5        g )Nc                     [        U 5      nX4n[        R                  " SU-   S-   [        R                  S9nUSS S 24   n[	        U 5       H
  u  pVXTXU4'   M     U$ )Nr'  r>  r   r   r   r  uint64r  r   r  array_shapeindicesk_listr  rA  s          rW   r  0TestParfors.test_tuple_concat.<locals>.test_impl  s[    AA$Khh{ 2T 9"))LGQT]F!! qt %MrZ   r   r  r  s      rW   test_tuple_concatTestParfors.test_tuple_concat  s'    	 HHaV

9 rZ   c                 \    S n[         R                  " SS/5      nU R                  X5        g )Nc                     [        U 5      nX4n[        R                  " SU-   S-   S S [        R                  S9nUSS S 24   n[	        U 5       H
  u  pVXTXU4'   M     U$ )Nr'  rJ   r>  r   r>  r@  s          rW   r  CTestParfors.test_tuple_concat_with_reverse_slice.<locals>.test_impl  se    AA$Khh{ 2T 93B?%'YY0GQT]F!! qt %MrZ   r   r  r  s      rW   $test_tuple_concat_with_reverse_slice0TestParfors.test_tuple_concat_with_reverse_slice  s'    		 HHaV

9 rZ   c                 X    S n[         R                  " S5      nU R                  X5        g )Nc                 6    U 4X 4-   nUS   R                  5       $ r  r  )r   Ss     rW   r  6TestParfors.test_array_tuple_concat.<locals>.test_impl  s    vAQ488:rZ   r  r  r  r  s      rW   test_array_tuple_concat#TestParfors.test_array_tuple_concat  s"    	 GGEN

9 rZ   c                 X    S n[         R                  " S5      nU R                  X5        g )Nc                     U S-  $ )Nr  r   r  s    rW   r  3TestParfors.test_high_dimension1.<locals>.test_impl  s    s7NrZ   )r
  r
  r
  r
  r
     r  r  s      rW   test_high_dimension1 TestParfors.test_high_dimension1  s"    	GG'(

9 rZ   c                 \    S nSnU R                  U[        R                  " U5      U5        g )Nc                 H    [         R                  " U5       H  nSX'   M	     U $ r8  r   pndindexr   szr  s      rW   r  -TestParfors.test_tuple_arg.<locals>.test_impl  !    ^^B' (HrZ   r  r   )r   r   r  rT   r  r_  s      rW   test_tuple_argTestParfors.test_tuple_arg  s&    	 

9bhhrlB/rZ   c                 \    S nSnU R                  U[        R                  " U5      S5        g )Nc                 H    [         R                  " U5       H  nSX'   M	     U $ r8  r\  r^  s      rW   r  =TestParfors.test_tuple_arg_not_whole_array.<locals>.test_impl  ra  rZ   rb  r  r  r   r   r  rc  s      rW   test_tuple_arg_not_whole_array*TestParfors.test_tuple_arg_not_whole_array  s&    	 

9bhhrlG4rZ   c                 Z    S nSnU R                  U[        R                  " U5      5        g )Nc                 L    Sn[         R                  " U5       H  nSX'   M	     U $ )Nrb  r   r\  r^  s      rW   r  6TestParfors.test_tuple_for_pndindex.<locals>.test_impl  s&    B^^B' (HrZ   rb  rj  rc  s      rW   test_tuple_for_pndindex#TestParfors.test_tuple_for_pndindex  s$    	
 

9bhhrl+rZ   c                 \    S nSnU R                  U[        R                  " U5      S5        g )Nc                 P    US4n[         R                  " U5       H  nSX'   M	     U $ r  r\  )r   firstr_  r  s       rW   r  5TestParfors.test_tuple_arg_literal.<locals>.test_impl  s*    B^^B' (HrZ   rb  r  rj  rc  s      rW   test_tuple_arg_literal"TestParfors.test_tuple_arg_literal  s&    	
 

9bhhrlB/rZ   c                    ^ ^^^^ S mS mS mT" T" 5       T5      mUUUU U4S jn[         [        SS94 H  nU" U5        M     g )Nc                 H    [         R                  " U5       H  nSX'   M	     U $ r8  r\  r^  s      rW   r  ?TestParfors.test_tuple_of_literal_nonliteral.<locals>.test_impl  ra  rZ   c                     U" U S5      $ )Nri  r   )r   r<  s     rW   r]  :TestParfors.test_tuple_of_literal_nonliteral.<locals>.call  s    a>!rZ   c                  .    [         R                  " S5      $ )NrY  r   r  r   rZ   rW   rE  >TestParfors.test_tuple_of_literal_nonliteral.<locals>.<lambda>  s    BHHX.rZ   c                 l   > U " T5      n[        T5      nU" T" 5       U5      nTR                  TU5        g r\   )r   assertPreciseEqual)	decf1f2gotr]  expected	get_inputrT   r  s	       rW   r   ;TestParfors.test_tuple_of_literal_nonliteral.<locals>.check  s3    YBdBY["%C##Hc2rZ   Tr   r   )rT   r   r~  r]  r  r  r  s   `  @@@@rW    test_tuple_of_literal_nonliteral,TestParfors.test_tuple_of_literal_nonliteral  sI    	
	" /		Y/	3 	3 d+,A!H -rZ   c                 \    S nSnU R                  U[        R                  " U5      U5        g )Nc                 H    [         R                  " U5       H  nSX'   M	     U $ r8  r\  r^  s      rW   r  0TestParfors.test_tuple_arg_1d.<locals>.test_impl  ra  rZ   r  rj  rc  s      rW   test_tuple_arg_1dTestParfors.test_tuple_arg_1d  s&    	 

9bhhrlB/rZ   c                 Z    S nSnU R                  U[        R                  " U5      5        g )Nc                 L    Sn[         R                  " U5       H  nSX'   M	     U $ Nr  r   r\  r^  s      rW   r  8TestParfors.test_tuple_arg_1d_literal.<locals>.test_impl  s&    B^^B' (HrZ   r  rj  rc  s      rW   test_tuple_arg_1d_literal%TestParfors.test_tuple_arg_1d_literal  s$    	
 

9bhhrl+rZ   c                 X    S nU R                  U[        R                  " S5      S5        g )Nc                 H    [         R                  " U5       H  nSX'   M	     U $ r8  r\  r^  s      rW   r  4TestParfors.test_int_arg_pndindex.<locals>.test_impl  ra  rZ   rY  r  rj  r*  s     rW   test_int_arg_pndindex!TestParfors.test_int_arg_pndindex  s"    	 	

9bhhx0!4rZ   c                 
  ^ [         S 5       mU4S jnSn[        R                  " X"45      n[        R                  S S 2S S S24   [
        R                  4nU R                  [        X5      S5        U R                  XU5        g )Nc                 h    [        X!-   S-   S-  S-   US-
  S5       H  nXS-   U4   S-   XU4'   M     g Nr   r
  r  )ur  evenrB  r  s        rW   issue7854_proc=TestParfors.test_prange_unknown_call1.<locals>.issue7854_proc  sC    DHqLA-14!8Q?E1H+/Q$ @rZ   c                    > [         R                  " SUS-
  5       H  nT" XSU5        M     [         R                  " SUS-
  5       H  nT" XSU5        M     U $ r  r   r   )r  rB  r  r  s      rW   r  8TestParfors.test_prange_unknown_call1.<locals>.test_impl
  sR    \\!TAX.qQ- /\\!TAX.qQ- /HrZ   r  r   r
  )
rA   r   r  r   r  r   r  r   r   r   )rT   r  rB  r  cptypesr  s        @rW   test_prange_unknown_call1%TestParfors.test_prange_unknown_call1  ss    		* 
	*	 HHd\"==CaC(%++6i91=

9&rZ   c                     S nSn[         R                  " X"45      n[        R                  S S 2S S S24   [        R
                  4nU R                  [        X5      S5        U R                  XU5        g )Nc                 D   [         R                  " SUS-
  5       H3  n[        US-   S-  S-   US-
  S5       H  nXS-   U4   S-   XU4'   M     M5     [         R                  " SUS-
  5       H0  n[        US-  S-   US-
  S5       H  nXS-   U4   S-   XU4'   M     M2     U $ r  r2  )r  rB  r  r  s       rW   r  6TestParfors.test_prange_index_calc1.<locals>.test_impl  s    \\!TAX.A{Qq!<AAqkAoAdG = / \\!TAX.q1uqy$(A6AAqkAoAdG 7 / HrZ   r  r   r
  	r   r  r   r  r   r  r   r   r   )rT   r  rB  r  r  s        rW   test_prange_index_calc1#TestParfors.test_prange_index_calc1  s`    	 HHd\"==CaC(%++6i91=

9&rZ   c                 J   S nSn[         R                  " X"45      n[         R                  " X"45      n[        R                  S S 2S S S24   [        R                  S S 2S S S24   [        R
                  4nU R                  [        X5      S5        U R                  XXB5        g )Nc                     [         R                  " U5       H"  n[        U5       H  nXU4   S-   XU4'   M     M$     [         R                  " U5       H  n[        U5       H	  nSXU4'   M     M     U S   US   -   $ )Nr   r  rR  r2  )r   r   rB  r  r  s        rW   r  9TestParfors.test_prange_reverse_order1.<locals>.test_impl,  s{    \\$'tA1gkAdG % ( \\$'tAAdG % ( T7QtW$$rZ   r  r   r
  r  rT   r  rB  r   r   r  s         rW   test_prange_reverse_order1&TestParfors.test_prange_reverse_order1)  s    	% HHd\"HHd\"==CaC(%--3Q3*?Mi91=

9)rZ   c                     S nSn[         R                  " U5      n[        R                  S S  [        R
                  4nU R                  [        X5      S5        U R                  XU5        g )Nc                     Sn[         R                  " U5       H  nX0U'   M	     [         R                  " U5       H
  nX S   -  nM     U$ )Nr   r   r  )r   rB  r   r  s       rW   r  @TestParfors.test_prange_parfor_index_then_not.<locals>.test_impl?  sD    A\\$'! (\\$'qT	 (HrZ   r  r
  r  )rT   r  rB  r   r  s        rW   !test_prange_parfor_index_then_not-TestParfors.test_prange_parfor_index_then_not<  sU    	 HHTN==#U[[1i91=

9&rZ   c                 J   S nSn[         R                  " U5      n[        U5      n[        R                  S S  [
        R                  R                  [
        R                  U5      [
        R                  4nU R                  [        X5      S5        U R                  XXB5        g )Nc                     Sn[         R                  " U5       H  nXAU   -   X'   M     [         R                  " U5       H  nX0U   US   -   -  nM     U$ r  r  )r   tuprB  rS  r  s        rW   r  JTestParfors.test_prange_parfor_index_const_tuple_fusion.<locals>.test_implP  sS    C\\$'q6z (\\$'tc!f}$ (JrZ   r  r   )r   r  r   r   r  r   
containersUniTupler  r   r   r   r  s         rW   +test_prange_parfor_index_const_tuple_fusion7TestParfors.test_prange_parfor_index_const_tuple_fusionM  s}    	 HHTN!H==###,,U]]DA:: 	i91=

9)rZ   c                 *   S nSn[         R                  " U5      n[         R                  " U5      n[        R                  S S  [        R                  S S  [        R
                  4nU R                  [        X5      S5        U R                  XXB5        g )Nc                     [         R                  " U5       H
  nU S   X'   M     [         R                  " U5       H  nX0U'   M	     US==   U S   -  ss'   U$ )Nr   r   r  )r   r   rB  r  s       rW   r  ITestParfors.test_prange_non_parfor_index_then_opposite.<locals>.test_impld  sR    \\$'t (\\$'! ( aDAaDLDHrZ   r  r
  r  r  s         rW   *test_prange_non_parfor_index_then_opposite6TestParfors.test_prange_non_parfor_index_then_oppositea  sm    	 HHTNHHTN==#U]]1%5u{{Ci91=

9)rZ   c                     SS jn[         R                  " S5      nU R                  XS [         R                  R                  S /S9  U R                  UR                  5       S5        g )Nc                 :    [        S5       H  nUc  M  SX'   M     g )Nr   rh  r^  )arrpredr  s      rW   r  3TestParfors.test_prange_optional.<locals>.test_implu  s    AY# CF rZ   r  c                 
    X:H  $ r\   r   r   r  s     rW   rE  2TestParfors.test_prange_optional.<locals>.<lambda>}  s    AFrZ   r  r  r\   )r   r  r   r   r   r   r  rT   r  r  s      rW   test_prange_optional TestParfors.test_prange_optionalt  sX    	!
 ggbk

94')zz'E'E':'< 	 	= 	D)rZ   c                     S nU R                  [        5       nU R                  U5        S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       N4= f)Nc                      Sn U S   $ )Ng333333?g?r   r   r  s    rW   r  8TestParfors.test_untraced_value_tuple.<locals>.test_impl  s    AQ4KrZ   r  r  r   s      rW   test_untraced_value_tuple%TestParfors.test_untraced_value_tuple  sM    	 ~.&JJy! /4c&:J:J6KL /.r$  c                     S nU R                  [        5       nU R                  U5        S S S 5        U R                  S[	        WR
                  5      5        g ! , (       d  f       N4= f)Nc                      Sn U S   S   $ )N)r  r   r   r  s    rW   r  BTestParfors.test_recursive_untraced_value_tuple.<locals>.test_impl  s    AQ47NrZ   r  r  r   s      rW   #test_recursive_untraced_value_tuple/TestParfors.test_recursive_untraced_value_tuple  sM    	 ~.&JJy! /4c&:J:J6KL /.r$  c                     S n[         R                  " [         R                  SS5      4nU R                  [	        X5      S5        [
        R                  " S[
        R                  S9nU R                  X5        g )Nc                    Sn[        U 5      n[        R                  " U[        R                  5      n[	        U5       H  nX   US   -  X4'   M     [        U5      n[        R                  " U[        R                  5      n[	        U5       H  nX7   US   -
  Xg'   M     Sn[        U5      n	[	        U	5       H
  n
XU
   -  nM     XS   -   $ )Nr  r   r   rh  r   r   r  r  r   )r  r   n1arr2r  n2arr3r  totaln3r   s              rW   r  9TestParfors.test_untraced_value_parfor.<locals>.test_impl  s    ASB88B

+DBZ&1Q4-  TB88B

+DBZ'AaD.  ETBBZa   Q4<rZ   r   r  r  r>  )r   r  r  r   r   r   r  r   )rT   r  r   r  s       rW   test_untraced_value_parfor&TestParfors.test_untraced_value_parfor  sW    	   {{5;;3/2i5q9ii"((+

9"rZ   c                 V    S nU R                  U[        R                  " S5      5        g )Nc                 t    Sn[        U R                  S   5       H  nU(       a  U  SXS S 24'   US-  nM     U $ r  )r  r  )r   rb  r  s      rW   r  ;TestParfors.test_setitem_2d_one_replaced.<locals>.test_impl  s?    E1771:&(
 ' HrZ   )r  r   rj  r*  s     rW   test_setitem_2d_one_replaced(TestParfors.test_setitem_2d_one_replaced  s     	 	

9bhhv./rZ   c                     S n[         R                  " S5      nU R                  XSS5        U R                  XSS5        U R                  XSS5        g )Nc                     [         R                  " U R                  5      nU(       a  UR                  [         R                  5      $ U(       a  X3   nOX3S-
     nX@R                  -  $ r8  )r   r  rB  r  r  )r  flag1flag2invr6  s        rW   r  7TestParfors.test_1array_control_flow.<locals>.test_impl  sK    ))CHH%Czz"**--h'l>!rZ   r@  TFr  r  s      rW   test_1array_control_flow$TestParfors.test_1array_control_flow  sF    	" iin

94/

94.

95%0rZ   c                     S n[         R                  " S5      nU R                  XSS5        U R                  XSS5        g )Nc                     [         R                  " U R                  5      n[         R                  " XR                  U-   5      nU(       a  X3   nXT-  $ X3S-
     nXT-  $ r8  r   r  rB  )r  r  flaginv1inv2r6  s         rW   r  9TestParfors.test_2array_1_control_flow.<locals>.test_impl  sS    99SXX&D99Q1-Dj : !8n:rZ   r@  r  TFr  r  s      rW   test_2array_1_control_flow&TestParfors.test_2array_1_control_flow  s6    	 iin

92t,

92u-rZ   c                     S n[         R                  " S5      nU R                  XSS5        U R                  XSS5        g )Nc                     [         R                  " U R                  5      n[         R                  " XR                  U-   5      nU(       a  X3   nXC   nXV-  $ X3S-
     nXCS-
     nXV-  $ r8  r  )r  r  r  r  r  ret1ret2s          rW   r  9TestParfors.test_2array_2_control_flow.<locals>.test_impl  se    99SXX&D99Q1-Dzz ; 1H~1H~;rZ   r@  r  TFr  r  s      rW   test_2array_2_control_flow&TestParfors.test_2array_2_control_flow  s6    		 iin

92t,

92u-rZ   c                     S nU R                  US5        U R                  [        U[        R                  45      S5        g )Nc                 H   [         R                  " U [         R                  S9n[         R                  " U [         R                  S9n[        U 5       H!  n[	        U5       H  nX#==   S-  ss'   M     M#     [        U 5       H  nUS:X  a  M  X#   X#S-
     -
  X'   M     USS  $ )Nr>  r   r   )r   r  r  r   r  )r  rcr  r  s        rW   r  -TestParfors.test_issue8515.<locals>.test_impl  s    "''*A"''*AAYqADAID "  AY6taAh  QR5LrZ   rW  r
  )r   r   r   r   r  r*  s     rW   test_issue8515TestParfors.test_issue8515  s4    	 	

9b!i%++A1ErZ   c                 0    S nU R                  USS5        g )Nc                 ,   SnSn[         R                  " X"45      n[        U5       Hi  n[        U5       HW  n[         R                  " U5      nUS   n[         R                  " U5      n	[	        X5       H  n
SX'   M	     U	S   nX-   XEU4'   MY     Mk     U$ )Nr7  r  r   r   )r   r  r  r  r   )i1i2r  rO  r   r  r   r  r  p2r  r  s               rW   r  -TestParfors.test_issue9029.<locals>.test_impl	  s    AA!A 1XqAWWQZFq	A!B#B^ ! ,1AUAcF "  HrZ   r   r  r)  r*  s     rW   test_issue9029TestParfors.test_issue9029  s    	, 	

9a#rZ   c                     S nU R                  USS5        U R                  [        U[        R                  [        R                  45      S5        g )Nc                     [         R                  " S5      n[        R                  " U5      n[         R                  " S5      n[	        [        X5      5      nX#-   U-   $ Nr@  )r   r  r  ceilintr   )r   r   r  r  r  s        rW   r  :TestParfors.test_fusion_no_side_effects.<locals>.test_impl	  sB    A		!AACIA519rZ   g@g333333@r   )r   r   r   r   r  r*  s     rW   test_fusion_no_side_effects'TestParfors.test_fusion_no_side_effects	  s>    	 	

9c3'i%--1OPRSTrZ   c                 p    [        SS9S 5       nU R                  U" S5      UR                  S5      5        g )NTr   c                 H    Sn[        S5        [        U 5       H  nUnM     U$ r  r   r   )r   r  r  s      rW   def_in_loopCTestParfors.test_issue9256_lower_sroa_conflict.<locals>.def_in_loop%	  s'    AAAY HrZ   r  r   r   py_func)rT   r"  s     rW   "test_issue9256_lower_sroa_conflict.TestParfors.test_issue9256_lower_sroa_conflict$	  s:    	t		 
	 	R+*=*=b*ABrZ   c                     S nU" S5      nU R                  U[        SS9" U5      " S5      5        U R                  U[        SS9" U5      " S5      5        g )Nc                 j    U n[        S5        [        U 5       H  nU(       d  M  U S-   nM     UWS:  4$ Nr   r  r   r!  )r   r  _ir~  s       rW   r"  LTestParfors.test_issue9256_lower_sroa_conflict_variant1.<locals>.def_in_loop0	  s:    AAQi1AA   a!e8OrZ   r  Fr   Tr   r   rT   r"  r  s      rW   +test_issue9256_lower_sroa_conflict_variant17TestParfors.test_issue9256_lower_sroa_conflict_variant1/	  sP    	 q>4#7#DQ#GH4#6{#CA#FGrZ   c                     S nU" S5      nU R                  U[        SS9" U5      " S5      5        U R                  U[        SS9" U5      " S5      5        g )Nc                     U n[        S5        [        U 5       H#  nU(       d  M  [        U 5       H  nU S-   nM
     M%     UWS:  4$ r*  )r   r   r  )r   r  r+  _jr~  s        rW   r"  LTestParfors.test_issue9256_lower_sroa_conflict_variant2.<locals>.def_in_loop=	  sH    AAQi1#AhE '   a!e8OrZ   r  Fr   Tr-  r.  s      rW   +test_issue9256_lower_sroa_conflict_variant27TestParfors.test_issue9256_lower_sroa_conflict_variant2<	  sP    	 q>4#7#DQ#GH4#6{#CA#FGrZ   c                     [         R                  SS/n0 [        R                  ESSS.En [        R
                  " X[        R                  SS9  g ! [        R                   a(  nSUR                   3nU R                  US9   S nAg S nAff = f)	Nz-mz"numba.tests.parfor_iss9490_usecase1)PYTHONHASHSEEDNUMBA_NUM_THREADSzutf-8)envstderrencodingzsubprocess failed with output:
)r  )
sys
executableosenvironsubpcheck_outputSTDOUTCalledProcessErroroutputfail)rT   cmdenvsr  r  s        rW   "test_issue9490_non_det_ssa_problem.TestParfors.test_issue9490_non_det_ssa_problemJ	  s     NN0


jj
 " "%
	c%)[['.0 && 	4QXXJ?CII#I	s   $A B%BBr   N)Vr   rO   r   r   rl  r  r  r  r"  r(  r.  r6  rM  rX  ra  rf  rl  rs  ry  r;   r  r  r  r=   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r+  r4  r:  rE  rJ  rR  rX  rd  rk  rp  rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  r/  r5  r<   r@   rJ  r   r   rZ   rW   r   r   )  s   @N999!21 .J`--"
-	CS(Q $+ $+L!S # # O O"$	H"GG#"	####
#!>3

?N$	!	!	!	!
!@
N!! !!05,000,5'*'$*&'"*(*&
*MM#001".."F($6U	CHH " # rZ   r   c                   &    \ rS rSrS rS rS rSrg)TestParforsLeaksie	  c                 \    U R                   " U/UQ76 u  pEU R                  " XU/UQ70 UD6  g r\   r   r   s         rW   r   TestParforsLeaks.checkg	  3    ((7$7$$VFLTLVLrZ   c                     S n[         R                  " S5      R                  [         R                  5      nU R	                  X5        g )Nc                 "    U R                  5       $ r\   rN  )r  s    rW   r  2TestParforsLeaks.test_reduction.<locals>.test_implm	  s    779rZ   r  r   r  r  r  r   r  s      rW   test_reductionTestParforsLeaks.test_reductionk	  s1    	 iim""2::.

9"rZ   c                     S n[         R                  " S5      R                  [         R                  5      nU R	                  X5        g )Nc                 r    SnSn[        U R                  5       H  nXU   -  nUSX   S-   -  -  nM     X-  $ )Nrh  ro  r   )r   rB  )r  r   r   r  s       rW   r  @TestParforsLeaks.test_multiple_reduction_vars.<locals>.test_implu	  sH    AACHH%VR36A:&& & 5LrZ   r  rT  r  s      rW   test_multiple_reduction_vars-TestParforsLeaks.test_multiple_reduction_varss	  s1    	 iim""2::.

9"rZ   r   N)r   rO   r   r   r   rU  rZ  r   r   rZ   rW   rM  rM  e	  s    M#
#rZ   rM  c                       \ rS rSrS rS rS rS rS rS r	S r
\S	 5       r\S
 5       r\S 5       rS rS rS rS rS r\S 5       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!g) TestParforsSlicei	  c                 V    S nU R                  U[        R                  " S5      5        g )Nc                 D    U R                   u  nU SUS-
   U SUS-
   -   nU$ Nr   r
  r   r  r   r  r   s      rW   r  6TestParforsSlice.test_parfor_slice1.<locals>.test_impl	  s0    77DQ!AaC1Qqs8#AHrZ   r  r   r   r  r*  s     rW   test_parfor_slice1#TestParforsSlice.test_parfor_slice1	  s    	
 	

9bggbk*rZ   c                 T   S nU R                  U[        R                  " S5      S5        U R                  [        5       n[        SS9" U5      " [        R                  " S5      S5        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                 >    U R                   u  nU SUS-
   U SU -   nU$ r`  ra  r   rS  r  r   s       rW   r  6TestParforsSlice.test_parfor_slice2.<locals>.test_impl	  s,    77DQ!AaC1Qq6!AHrZ   r  r-  Tr   do not match	r   r   r  r  r  r   r   r'  r  r   s      rW   test_parfor_slice2#TestParforsSlice.test_parfor_slice2	  st    	 	

9bggbk1-~.&$	*2772;r: /nc&*:*:&;< /.s    +B
B'c                 V    S nU R                  U[        R                  " S5      5        g )Nc                 \    U R                   u  pU SUS-
  2SUS-
  24   U SU2SU24   -   nU$ r  ra  ri  s       rW   r  6TestParforsSlice.test_parfor_slice3.<locals>.test_impl	  sD    GGEQ!AaC%!A#+1Q3qs7+AHrZ   r  r  rd  r*  s     rW   test_parfor_slice3#TestParforsSlice.test_parfor_slice3	      	
 	

9bggen-rZ   c                 V    S nU R                  U[        R                  " S5      5        g )Nc                 V    U R                   u  pU S S 2SUS-
  24   U S S 2SU24   -   nU$ r  ra  ri  s       rW   r  6TestParforsSlice.test_parfor_slice4.<locals>.test_impl	  s8    GGEQ!AacE'
Qq1uX%AHrZ   rr  rd  r*  s     rW   test_parfor_slice4#TestParforsSlice.test_parfor_slice4	  ru  rZ   c                 V    S nU R                  U[        R                  " S5      5        g )Nc                 V    U R                   u  pU SUS-
  2S S 24   U SU2S S 24   -   nU$ r  ra  ri  s       rW   r  6TestParforsSlice.test_parfor_slice5.<locals>.test_impl	  s8    GGEQ!AaC%'
Qqs1uX%AHrZ   rr  rd  r*  s     rW   test_parfor_slice5#TestParforsSlice.test_parfor_slice5	  ru  rZ   c                 V    S nU R                  U[        R                  " S5      5        g )Nc                 L    U R                  5       nU SS S 24   US S 2S4   -   nU$ r8  	transposer   r   r  s      rW   r  6TestParforsSlice.test_parfor_slice6.<locals>.test_impl	  s+    A!A#1Q3AHrZ   rr  rd  r*  s     rW   test_parfor_slice6#TestParforsSlice.test_parfor_slice6	  ru  rZ   c                 P   S nU R                  U[        R                  " S5      5        U R                  [        5       n[        SS9" U5      " [        R                  " S5      5        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                 L    U R                  5       nU SS S 24   USS S 24   -   nU$ r8  r  r  s      rW   r  6TestParforsSlice.test_parfor_slice7.<locals>.test_impl	  s+    A!A#1Q3AHrZ   rQ  Tr   r  rk  rl  r   s      rW   test_parfor_slice7#TestParforsSlice.test_parfor_slice7	  sp    	 	

9bggen-~.&$	*2775>: /nc&*:*:&;< /.s   *B
B%c                 t    S nU R                  U[        R                  " S5      R                  S5      5        g )Nc                 j    U R                   u  pU R                  5       nU SU2SU24   USU2SU24'   U$ r8  r  r  ri  s       rW   r  6TestParforsSlice.test_parfor_slice8.<locals>.test_impl	  sB    GGEQA1Q3qs7Aac!A#gJHrZ   r-  rQ  r   r   r  r  r*  s     rW   test_parfor_slice8#TestParforsSlice.test_parfor_slice8	  *    	 	

9biil2259:rZ   c                 t    S nU R                  U[        R                  " S5      R                  S5      5        g )Nc                 j    U R                   u  pU R                  5       nU S S 2SU24   USU2SU24'   U$ r8  r  ri  s       rW   r  6TestParforsSlice.test_parfor_slice9.<locals>.test_impl	  s>    GGEQA1QqS5Aac!A#gJHrZ   r  r  r  r*  s     rW   test_parfor_slice9#TestParforsSlice.test_parfor_slice9	  s*    	 	

9biim33E:;rZ   c                 t    S nU R                  U[        R                  " S5      R                  S5      5        g )Nc                 b    U R                   u  pU R                  5       nU SSU24   USSU24'   U$ r  r  ri  s       rW   r  7TestParforsSlice.test_parfor_slice10.<locals>.test_impl	  s:    GGEQA1Q3xAa!eHHrZ   r-  rQ  r  r*  s     rW   test_parfor_slice10$TestParforsSlice.test_parfor_slice10	  r  rZ   c                 t    S nU R                  U[        R                  " S5      R                  S5      5        g )Nc                 p    U R                   u  pnU R                  5       nU S S 2SSU24   US S 2SSU24'   U$ r  r  r   )r   rS  r  r  r   s        rW   r  7TestParforsSlice.test_parfor_slice11.<locals>.test_impl	  s@    ggGQA1Qqs7Aa!A#gJHrZ      )r  r  r  r  r*  s     rW   test_parfor_slice11$TestParforsSlice.test_parfor_slice11	  s*    	 	

9biim33G<=rZ   c                 t    S nU R                  U[        R                  " S5      R                  S5      5        g )Nc                 b    U R                   u  pU R                  5       nU SS S24   USSS24'   U$ )Nr   r   rJ   r  ri  s       rW   r  7TestParforsSlice.test_parfor_slice12.<locals>.test_impl	  s:    GGEQA!CRC%Aa"fIHrZ   r  r  r  r*  s     rW   test_parfor_slice12$TestParforsSlice.test_parfor_slice12	  *    	 	

9biim33E:;rZ   c                 t    S nU R                  U[        R                  " S5      R                  S5      5        g )Nc                 n    U R                   u  pU R                  5       nSnU SU* US-
  24   USSU24'   U$ )NrJ   r   r   r  )r   rS  r  r   r  s        rW   r  7TestParforsSlice.test_parfor_slice13.<locals>.test_impl	  sE    GGEQAAA2ac6{Aa!eHHrZ   r  r  r  r*  s     rW   test_parfor_slice13$TestParforsSlice.test_parfor_slice13	  s*    	 	

9biim33E:;rZ   c                 t    S nU R                  U[        R                  " S5      R                  S5      5        g )Nc                 b    U R                   u  pU R                  5       nU SSS24   USS S24'   U$ )Nr   r  r   rJ   r  ri  s       rW   r  7TestParforsSlice.test_parfor_slice14.<locals>.test_impl 
  s:    GGEQA2a4yAaeHHrZ   r  r  r  r*  s     rW   test_parfor_slice14$TestParforsSlice.test_parfor_slice14	  r  rZ   c                 t    S nU R                  U[        R                  " S5      R                  S5      5        g )Nc                 j    U R                   u  pU R                  5       nU SSS24   USUS-
  * S 24'   U$ )Nr   r  r  r   r  ri  s       rW   r  7TestParforsSlice.test_parfor_slice15.<locals>.test_impl	
  s>    GGEQAQr!tV9Aa!A#iLHrZ   r  r  r  r*  s     rW   test_parfor_slice15$TestParforsSlice.test_parfor_slice15
  r  rZ   c                 "   S nU R                  U[        R                  " S5      [        R                  " S5      S5        [        R
                  SS [        R
                  SS [        R                  4nU R                  [        X5      S5        g)zThis test is disabled because if n is larger than the array size
then n and n-1 will both be the end of the array and thus the
slices will in fact be of different sizes and unable to fuse.
c                 \    U R                   UR                   :X  d   eSU SU& SUSUS-
  & X-  $ Nr  r   r   ra  )r   r   r  s      rW   r  7TestParforsSlice.test_parfor_slice16.<locals>.test_impl
  s9    77agg%&%AaFAa1J5LrZ   r     Nr
  )	r   r   r  r  r   r  r  r   r   rT   r  r   s      rW   test_parfor_slice16$TestParforsSlice.test_parfor_slice16
  sb    	 	

9bggbk288B<;a %--"2EKK@i6:rZ   c                 X    S nU R                  US[        R                  " S5      5        g )Nc                 R    [         R                  " U 5      n[        U5      nXU* S & U$ r\   r   r  r   )rS  r  r  r  s       rW   r  7TestParforsSlice.test_parfor_slice17.<locals>.test_impl"
  s(    AAAqbcFHrZ   r  rd  r*  s     rW   test_parfor_slice17$TestParforsSlice.test_parfor_slice17!
  s!    	 	

9b"''"+.rZ   c                 ,    S nU R                  U5        g )Nc                  p    [         R                  " S5      n [         R                  " SS5      U SS& U S   nU$ )Nr  r   r  r   r  r  )r   r  r  )r   r  s     rW   r  7TestParforsSlice.test_parfor_slice18.<locals>.test_impl,
  s2    AYYq!_AaF!AHrZ   r)  r*  s     rW   test_parfor_slice18$TestParforsSlice.test_parfor_slice18*
  s    	 	

9rZ   c                 V    S nU R                  U[        R                  " S5      5        g )Nc                 "    U S S=== S-  sss& U $ r  r   r  s    rW   r  7TestParforsSlice.test_parfor_slice19.<locals>.test_impl6
  s    bqEQJEHrZ   r  rd  r*  s     rW   test_parfor_slice19$TestParforsSlice.test_parfor_slice194
      	 	

9bggbk*rZ   c                 *    S nU R                  USS9  g )Nc                  R    [         R                  " S5      n U SS  n[        U5      nU$ )Nr  r   )r   r  r   )r   r  r  s      rW   r  7TestParforsSlice.test_parfor_slice20.<locals>.test_impl>
  s(    A!"AAAHrZ   Fr  r)  r*  s     rW   test_parfor_slice20$TestParforsSlice.test_parfor_slice20<
  s    	 	

9u
5rZ   c                     S n[         R                  R                  S5      n[         R                  R                  S5      nU R                  XU5        g )Nc                     U R                  U R                  S5      n UR                  UR                  S5      nXS S2S S 24   :  $ )Nr   rJ   )r  rB  )x1x2s     rW   r  7TestParforsSlice.test_parfor_slice21.<locals>.test_implG
  s?    BGGQ'BBGGQ'BCRCF##rZ   r   r  )r   r  r5  r   rT   r  r  r  s       rW   test_parfor_slice21$TestParforsSlice.test_parfor_slice21F
  s;    	$
 YY^^AYY^^A

9"%rZ   c                     S n[         R                  " S5      n[         R                  " S5      nU R                  XU5        g )Nc                 l    [         R                  " S5      n[        S5       H  nX S S 2U4   -  nM     U$ r  )r   r  r   )r  r  r   r  s       rW   r  7TestParforsSlice.test_parfor_slice22.<locals>.test_implQ
  s1    AAY2Y HrZ   )r  r  r  )r   r  r  r   r  s       rW   test_parfor_slice22$TestParforsSlice.test_parfor_slice22P
  s2    	 XXfXXa[

9"%rZ   c                 V    S nU R                  U[        R                  " S5      5        g )Nc                     SU S S& U $ )Nr
  r   r   r  s    rW   r  7TestParforsSlice.test_parfor_slice23.<locals>.test_impl]
  s    AbqEHrZ   r  rd  r*  s     rW   test_parfor_slice23$TestParforsSlice.test_parfor_slice23[
  r  rZ   c                     S n[        SS5       H+  nU R                  US[        R                  " S5      U5        M-     g )Nc                 V    [         R                  " U 5      nX2S  nUS [        U5       nU$ r\   r  rS  r  r  r  r  s        rW   r  7TestParforsSlice.test_parfor_slice24.<locals>.test_impld
  s,    A"A'3q6
AHrZ   rW  r  r  r   r   r  rT   r  r  s      rW   test_parfor_slice24$TestParforsSlice.test_parfor_slice24c
  3    	 sBAJJy"bggbk15  rZ   c                     S n[        SS5       H+  nU R                  US[        R                  " S5      U5        M-     g )Nc                 X    [         R                  " U 5      nUS U nUS [        U5       nU$ r\   r  r  s        rW   r  7TestParforsSlice.test_parfor_slice25.<locals>.test_impln
  s.    A"1A'3q6
AHrZ   r  rW  r  r  r  s      rW   test_parfor_slice25$TestParforsSlice.test_parfor_slice25m
  r  rZ   c                 V    S nU R                  U[        R                  " S5      5        g )Nc                 X    U R                   u  nU R                  5       nU SS X!S-
  * S & U$ )Nr  r  r   r  rb  s      rW   r  7TestParforsSlice.test_parfor_slice26.<locals>.test_implx
  s2    77DQA2aA!fgJHrZ   r  r   r   r  r*  s     rW   test_parfor_slice26$TestParforsSlice.test_parfor_slice26w
  s    	 	

9biil+rZ   c                 V    S nU R                  U[        R                  " S5      5        g )Nc                 |    Sn[        U R                  S   5       H  nX   S:w  a  US-  nU(       d  M  U S U nM      gr  r  )r   n_valid_valsr  unuseds       rW   r  7TestParforsSlice.test_parfor_slice27.<locals>.test_impl
  sG    LAGGAJ'419 A%L<}-F ( rZ   r  r  r*  s     rW   test_parfor_slice27$TestParforsSlice.test_parfor_slice27
  s    
	 	

9biil+rZ   c           	      D  ^ [        SSS 5      [        SS S 5      [        S SS5      [        S S S 5      [        S S S5      4 H]  mU4S jnSnU R                  X5        [        R                  " US-  5      R	                  US45      nU4S	 jnU R                  X5        M_     g )
Nr   r  r
  rJ   r  c                    > [         R                  " U S-  5      R                  U S45      nSn[        R                  " U 5       H  nX!UT4   R                  5       -  nM     U$ Nr  r   )r   r  r  r   r   r  )r  r  r  r  tss       rW   r  HTestParforsSlice.test_parfor_array_access_lower_slice.<locals>.test_impl
  sV    IIa!e$,,aV4aA1b5'A )rZ   r  r  c                    > Sn[         R                  " U R                  S   5       H  nXUT4   R                  5       -  nM     U$ r  )r   r   r  r  )r  r  r  r  s      rW   r  r  
  s>    aggaj1A1b5'A 2rZ   )slicer   r   r  r  )rT   r  r  r  r  s       @rW   $test_parfor_array_access_lower_slice5TestParforsSlice.test_parfor_array_access_lower_slice
  s    At$eAtT&:E$2<NtT*E$b,ACB AJJy$		!a% ((!Q0A JJy$+CrZ   r   N)"r   rO   r   r   re  rm  rs  ry  r~  r  r  r=   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r   rZ   rW   r]  r]  	  s    +=....= ; ; < < ; ;><<<< ; ;/+6&	&+66,,"%rZ   r]  c                       \ rS rSrS rSrg)TestParforsOptionsi
  c                 
   S nU R                  U[        R                  " S5      5        [        R                  S S  4nU R                  [        X5      S5        U R                  [        XSS9S5        U R                  [        XSSS9S5        U R                  [        XSSSS	9S
5        U R                  [        XSSSSS9S5        U R                  [        XSSSSSS9S5        U R                  [        XSSSSSSS9S5        g )Nc                    U R                   S   n[        R                  " U5      n[        R                  " [	        U5       Vs/ s H  o3PM     sn5      nXU-  -   US U& [        U5       H  nX#   X   -  XC'   M     [        S US5      $ s  snf )Nr   c                 
    X-   $ r\   r   r  s     rW   rE  KTestParforsOptions.test_parfor_options.<locals>.test_impl.<locals>.<lambda>
  s    QSrZ   )r  r   r  r  r  r   r   )r   r  r   r  r  s        rW   r  9TestParforsOptions.test_parfor_options.<locals>.test_impl
  s    
A
AeAh0h1h01AAIAbqEAYtad{ .!Q//	 1s   B
r  r   F)fusionr  )r  comprehensionr   )r  r  setitemr  )r  r  r  r   r  )r  r  r  r   	reductionr
  )r  r  r  r   r  r  r   )r   r   r  r   r  r   r   r  s      rW   test_parfor_options&TestParforsOptions.test_parfor_options
  s   	0 	

9bggbk*a "i6:ieDaHie',./0	2 	ie',e=>?	A 	ie',eEKLM	O 	ie',eE#(*+,	. 	ie',eE#(789	;rZ   r   N)r   rO   r   r   r  r   r   rZ   rW   r  r  
  s     ;rZ   r  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestParforsBitMaski
  c                 X    S nU R                  U[        R                  " S5      S5        g )Nc                     X:  nSX'   U $ r  r   rb  s      rW   r  :TestParforsBitMask.test_parfor_bitmask1.<locals>.test_impl
  s    AADHrZ   r  r   r  r*  s     rW   test_parfor_bitmask1'TestParforsBitMask.test_parfor_bitmask1
  s!    	
 	

9biimQ/rZ   c                 d    S n[         R                  " S5      nUS:  nU R                  XU5        g )Nc                     SX'   U $ r  r   r   s     rW   r  :TestParforsBitMask.test_parfor_bitmask2.<locals>.test_impl
  s    ADHrZ   r  r   r  r  s       rW   test_parfor_bitmask2'TestParforsBitMask.test_parfor_bitmask2
  -    	 IIbME

9#rZ   c                 d    S n[         R                  " S5      nUS:  nU R                  XU5        g )Nc                     X   X'   U $ r\   r   r   s     rW   r  :TestParforsBitMask.test_parfor_bitmask3.<locals>.test_impl
  s    4ADHrZ   r  r   r  r  s       rW   test_parfor_bitmask3'TestParforsBitMask.test_parfor_bitmask3
  r+  rZ   c                 d    S n[         R                  " S5      nUS:  nU R                  XU5        g )Nc                     SU -  U   X'   U $ r  r   r   s     rW   r  :TestParforsBitMask.test_parfor_bitmask4.<locals>.test_impl
  s    E1:ADHrZ   r  r   r  r  s       rW   test_parfor_bitmask4'TestParforsBitMask.test_parfor_bitmask4
  r+  rZ   c                 d    S n[         R                  " S5      nUS:  nU R                  XU5        g )Nc                     X   X   -  X'   U $ r\   r   r   s     rW   r  :TestParforsBitMask.test_parfor_bitmask5.<locals>.test_impl
  s    4!$;ADHrZ   r  r   r  r  s       rW   test_parfor_bitmask5'TestParforsBitMask.test_parfor_bitmask5
  r+  rZ   c                 J   S n[         R                  " S5      nUS:  n[         R                  " [        U5      5      nU R	                  [
        5       nU R                  XX45        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                     X U'   U $ r\   r   r  s      rW   r  :TestParforsBitMask.test_parfor_bitmask6.<locals>.test_impl   s    aDHrZ   r  r   r  )
r   r  r  r  r  r  r   r   r'  r  )rT   r  r   r   r  r!  s         rW   test_parfor_bitmask6'TestParforsBitMask.test_parfor_bitmask6
  sy    	 IIbMEHHSV ~.&JJyQ* /4c&:J:J6KL /.s   B
B"r   N)r   rO   r   r   r$  r)  r/  r4  r9  r>  r   r   rZ   rW   r   r   
  s!    0$$$$MrZ   r   c                       \ 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 5       rS rS rS rS rS rS r\S 5       rS rS rS rS rS rS r Sr!g)TestParforsMisci  z7
Tests miscellaneous parts of ParallelAccelerator use.
c                 *   S n[        SSS9" U5      n[        R                  " SS9 n[        R                  " S5        [        R                  " SSS9  [        R                  " SS	[
        R                  R                  S
S9  U" 5         S S S 5        U R                  [        W5      S5        UR                  R                  5        Vs/ s H  nUR                  R                  PM     nnU R                  US/5        g ! , (       d  f       N{= fs  snf )Nc                      [         R                  " S5      n [        U R                  5       H  nX==   U-  ss'   M     U $ r  )r   r  r   rB  )r  r  s     rW   r   9TestParforsMisc.test_no_warn_if_cache_set.<locals>.pyfunc  s2    ''#,CCHH%! &JrZ   T)r   cacherecordalwaysignore	typeguard)actionmodulez.*TBB_INTERFACE_VERSION.*znumba\.np\.ufunc\.parallel.*)rK  messagecategoryrL  r   F)r   warningscatch_warningssimplefilterfilterwarningsr   r   NumbaWarningr   r   r   r  r  has_dynamic_globals)rT   r   r   raised_warningsr  rT  s         rW   test_no_warn_if_cache_set)TestParforsMisc.test_no_warn_if_cache_set  s    	 d$/7$$D1_!!(+##8+68 ##8,H-2\\-F-F+JL G 2 	_-q1 ,1??+A+A+CE+C4  $||??+C 	 E,ug6! 21Es   A"C?	 D?
Dc                    S nU R                  US5      n[        5        nUR                  5         S S S 5        WR                  5       R	                  5        H  nU R                  SU5        M     g ! , (       d  f       NF= f)Nc                      [         R                  " S5      n [         R                  " SS5      U SS& [        SU S   5        [        SU S   5        U $ )Nr  r   r  r   r  za[3]:r  )r   r  r  printr  s    rW   r   ITestParforsMisc.test_statement_reordering_respects_aliasing.<locals>.impl0  sE    AYYq!_AaF'1Q4 '1Q4 HrZ   r   z	a[3]: 2.0)r   r4   r   getvaluerN  r   )rT   r   r  stdoutlines        rW   +test_statement_reordering_respects_aliasing;TestParforsMisc.test_statement_reordering_respects_aliasing/  sg    	 $$T2.& OO%002D[$/ 3 s   A11
A?c                    S n[         R                  " [         R                  S/5      n[        SS9" U5      n[        R
                  R                  R                  n S[        R
                  R                  l        [         R                  R                  U" U5      U" U5      5        U[        R
                  R                  l        g ! U[        R
                  R                  l        f = f)Nc                 .    [         R                  " U 5      $ r\   )r   isinfr>  s    rW   r  ;TestParforsMisc.test_parfor_ufunc_typing.<locals>.test_impl>  s    88A;rZ   rh  Tr   )
r   r  r  r   r   r  r  sequential_parfor_loweringr   assert_array_equal)rT   r  r  r   old_seq_flags        rW   test_parfor_ufunc_typing(TestParforsMisc.test_parfor_ufunc_typing=  s    	 HHbffc]#d#I.}}++FF	K>BEMM  ;JJ)))A,aA ?KEMM  ;lEMM  ;s   AC	 	!C*c                 B    S nU R                  [        US5      S5        g )Nc                      Sn / SQn[         R                  R                  R                  5         Un[         R                  " S5       H
  nXU   -  n M     XS   -   $ )Nr   r@  r   r
  )r   r  r  init_pranger   )resr  dummyr  s       rW   r  6TestParforsMisc.test_init_block_dce.<locals>.test_implN  sP    CCMM  ,,.E\\!_1v %q>!rZ   r   r   )r   r  r*  s     rW   test_init_block_dce#TestParforsMisc.test_init_block_dceL  s!    	" 	,Y;Q?rZ   c                 ,    S nU R                  U5        g )Nc                  f    Sn [        S5       H  nU S-  n M
     [        R                  " U 45      nU$ )Nr   r  r   r  r   r  )rS  rK   r	  s      rW   r  BTestParforsMisc.test_alias_analysis_for_parfor1.<locals>.test_implZ  s5    C1Xq  88SF#DKrZ   r)  r*  s     rW   test_alias_analysis_for_parfor1/TestParforsMisc.test_alias_analysis_for_parfor1Y  s    	 	

9rZ   c                 $  ^^ Sm[        SSS9 " U4S jS[        5      5       m " U4S jS[        5      n[        SUS	9S
 5       nU R	                  [
        R                  R                  R                  5        U R                  [        R                  5       nU" 5         S S S 5        U R                  T[        WR                  5      5        U R	                  [
        R                  R                  R                  5        g ! , (       d  f       Ng= f)N
BROKEN_MSGTF)mutates_CFGanalysis_onlyc                   ,   > \ rS rSrSrS rU 4S jrSrg)VTestParforsMisc.test_no_state_change_in_gufunc_lowering_on_error.<locals>.BreakParforsik  break_parforsc                 0    [         R                  " U 5        g r\   )r1   r  r^   s    rW   r  _TestParforsMisc.test_no_state_change_in_gufunc_lowering_on_error.<locals>.BreakParfors.__init__o  s    %%d+rZ   c                 (  > UR                   R                  R                  5        Hi  nUR                   HV  n[	        U[
        R                  R                  R                  5      (       d  M8   " U4S jS[        5      nU" 5       Ul
        MX       g   g )Nc                   "   > \ rS rSrU 4S jrSrg)oTestParforsMisc.test_no_state_change_in_gufunc_lowering_on_error.<locals>.BreakParfors.run_pass.<locals>.Brokeni|  c                 0   > [         R                  " T5      er\   )r   LoweringError)rT   otherry  s     rW   
differencezTestParforsMisc.test_no_state_change_in_gufunc_lowering_on_error.<locals>.BreakParfors.run_pass.<locals>.Broken.difference~  s    *0*>*>z*J$JrZ   r   N)r   rO   r   r   r  r   ry  s   rW   Brokenr  |  s    !K !KrZ   r  T)r  r  r  r  r   r   r  r  r  r   races)rT   r  blkr  r  ry  s        rW   run_pass_TestParforsMisc.test_no_state_change_in_gufunc_lowering_on_error.<locals>.BreakParfors.run_passr  si     ==//668C #%dEMM,@,@,G,GHHK K
 *0DJ !)   9rZ   r   N)r   rO   r   r   _namer  r  r   r  s   rW   BreakParforsr}  k  s    #E,   rZ   r  c                   "   > \ rS rSrU 4S jrSrg)^TestParforsMisc.test_no_state_change_in_gufunc_lowering_on_error.<locals>.BreakParforsCompileri  c                    > [         R                  " U R                  5      nUR                  T[        5        UR                  5         U/$ r\   )r/   define_nopython_pipeliner  add_pass_afterr2   finalize)rT   pmr  s     rW   define_pipelinesoTestParforsMisc.test_no_state_change_in_gufunc_lowering_on_error.<locals>.BreakParforsCompiler.define_pipelines  s7    '@@L!!,?trZ   r   N)r   rO   r   r   r  r   )r  s   rW   BreakParforsCompilerr    s     rZ   r  )r   pipeline_classc                  8    Sn [        S5       H  nU S-  n M
     U $ r8  r^  )r   rK   s     rW   fooMTestParforsMisc.test_no_state_change_in_gufunc_lowering_on_error.<locals>.foo  s#    AAYQ HrZ   )r0   r1   r.   r   assertFalser   r  r  re  r  r   r  r   r'  r  )rT   r  r  r!  ry  r  s       @@rW   0test_no_state_change_in_gufunc_lowering_on_error@TestParforsMisc.test_no_state_change_in_gufunc_lowering_on_errord  s    
 "
	4u	=	 < 	  
>	 2	< 	 
t,@	A	 
B	 	--HHIv334E 5 	j#f&6&6"78 	--HHI 54s   D
Dc                   ^^	  " S S[         R                  5      nU" S5      m	[        U5      " [        R                  5         " S S[
        5      n[        R                  " U5      U	4S j5       n[        U5      S 5       n[        USS	S
0S9S 5       n[        S 5       m[        U4S j5       n[        R                  R                  R                  nU R                  U5         U" U" 5       5        U R                  [        R                  R                  R                  5        U[        R                  R                  l        g ! U[        R                  R                  l        f = f)Nc                       \ rS rSrSrg)2TestParforsMisc.test_issue_5098.<locals>.DummyTypei  r   Nr   rO   r   r   r   r   rZ   rW   	DummyTyper        rZ   r  my_dummyc                       \ rS rSrSrg).TestParforsMisc.test_issue_5098.<locals>.Dummyi  r   Nr  r   rZ   rW   Dummyr    r  rZ   r  c                    > T$ r\   r   )valr  
dummy_types     rW   typeof_Dummy5TestParforsMisc.test_issue_5098.<locals>.typeof_Dummy  s	    rZ   c                 H    [        UR                  R                  5       5      $ r\   )r"   contextget_dummy_value)typobjr  s      rW   unbox_index4TestParforsMisc.test_issue_5098.<locals>.unbox_index  s    qyy88:;;rZ   method1r   T)jit_optionsc                     S nU$ )Nc                     S n[        U5      n[        R                  " U[        R                  S9n[	        U5       H  nU" X   U5      XV'   M     [	        US-
  5       H  nXV==   U" X   U5      -  ss'   M     U$ )Nc                     U R                  5       n[        R                  U[        R                  " U 5      '   U" U5      $ r\   )r   r   r  rc  )r   fr  s      rW   bazPTestParforsMisc.test_issue_5098.<locals>._get_method1.<locals>._foo.<locals>.baz  s+    A%'VVAbhhqkNQ4KrZ   r>  r   r  )r  r  r   r  length
output_arrr  s          rW   _fooCTestParforsMisc.test_issue_5098.<locals>._get_method1.<locals>._foo  sr     
 SXXfBJJ?
A$'$5JM (
+AMS%66M ,!!rZ   r   )r  r  r   r  s       rW   _get_method15TestParforsMisc.test_issue_5098.<locals>._get_method1  s    " KrZ   c                 "    U R                  5       $ r\   r<  )r  s    rW   bar,TestParforsMisc.test_issue_5098.<locals>.bar  s    668OrZ   c                 \   > U R                  [        R                  " / SQ/ SQ/5      T5      $ )Nro  r  r  )r  r  r  )r  r   r  )r~  r  s    rW   test1.TestParforsMisc.test_issue_5098.<locals>.test1  s"    99RXX&HI3OOrZ   )r   Opaquer   r#   OpaqueModelobjectr    registerr!   r   r   r   r  r  re  r  )
rT   r  r  r  r  r  r  
save_stater  r  s
           @@rW   test_issue_5098TestParforsMisc.test_issue_5098  s=   	 	 z*
y!&"4"45	F 	 
		e	$	 
%	 
y		< 
	< 
IJt;L	M	 
N	  
	 
	 
	P 
	P ]]))DD
$	I%'NU]]11LLM ?IEMM  ;jEMM  ;s   &A E !E'c                 b   [        SS9S 5       n[        SS5         U R                  [        R                  5       nU" S5        S S S 5        S S S 5        [        WR                  5      nU R                  SU5        U R                  SU5        g ! , (       d  f       NP= f! , (       d  f       NY= f)	NTr   c                 @    SnSn[        S5       H
  nX!U    -  nM     U$ )N)r   r
  r  r  r   r  r^  )idxbig_tupr  r   s       rW   oversize_tupleMTestParforsMisc.test_oversized_tuple_as_arg_to_kernel.<locals>.oversize_tuple  s+    GABZS\!  HrZ   NUMBA_PARFOR_MAX_TUPLE_SIZE3r   zUse of a tuplezin a parallel region)r   r6   r  r   r  r'  r  r   )rT   r  r!  errstrs       rW   %test_oversized_tuple_as_arg_to_kernel5TestParforsMisc.test_oversized_tuple_as_arg_to_kernel  s    	t		 
	 !!>D""6#A#ABfq! C E V%%&&/,f5 CB EDs"    B 	BB 
B	B  
B.c                     S nSn[         R                  R                  SSUS9n[         R                  R                  SSUS9nU R                  XU5        g )Nc                    Sn[         R                  " U R                  X R                  S9nU R                  n[	        US   5       H7  n[	        US   5       H"  nXU4   XU4   -
  XU4   XU4   -   -  X5U4'   M$     M9     U$ Nr   r>  r   )r   fullr  r?  r   )img_nirimg_red	fillvalueout_imgdimsr  r   s          rW   	ndvi_njit1TestParforsMisc.test_issue5167.<locals>.ndvi_njit  s    IgggmmYmmLG==DDG_QA&-dmgdm&C&-dmgdm&C&EGqDM ) % NrZ   )r  r  ro  g     @)lowri  rB  )r   r  uniformr   )rT   r  
tile_shapearray1array2s        rW   test_issue5167TestParforsMisc.test_issue5167  sR    	 
""sz"J""sz"J

9f-rZ   c                    S n[         S 5       n[        R                  R                  SS9n[        SS9" U5      " UR                  5       US5      nU" UR                  5       US5      n[        R                  R                  XE5        g )Nc                 8   [         R                  " U R                  S   U R                  S   4[         R                  S9n[	        U R                  S   5       H>  n[        US-   U R                  S   5       H  nU" X   X   /UQ76 nXcXE4'   XcXT4'   M     M@     U$ r  )r   r  r  r'  r   r  )r   r  	dist_argsr  r  r  r~  s          rW   
reproducer2TestParforsMisc.test_issue5065.<locals>.reproducer  s    XXqwwqz1771:6bjjIFAGGAJ'q1uaggaj1AQT144)4A#$14L#$14L 2 (
 MrZ   c                     Sn[        U R                  S   5       H  nX U   X   -
  S-  -  nM     [        R                  " U5      $ )Nrh  r   r
  )r  r  r   rq  )r   r  r  r  s       rW   	euclidean1TestParforsMisc.test_issue5065.<locals>.euclidean  sC    F1771:&Q4!$;1,, '776?"rZ   )r   r
  rA  Tr   r   )r   r   r  r   r   rs  )rT   r  r  r   r  r  s         rW   test_issue5065TestParforsMisc.test_issue5065  sx    	 
	# 
	# II&)D!*-affh	"Eaffh	"5


""31rZ   c                     S n[         R                  " S5      [         R                  " S5      4nU R                  X5        g )Nc                 x    S/[        U 5      -  n[        [        U 5      5       H  n[        X   5      X'   M     U$ r  )r   r   )myarrayr  r  s      rW   test_numba_parallel;TestParforsMisc.test_issue5001.<locals>.test_numba_parallel  s7    S3w<'FCL)
O	 *MrZ   r@  2   )r   r  r   )rT   r  r  s      rW   test_issue5001TestParforsMisc.test_issue5001  s0    	 88C=".

&0rZ   c                 \   ^ [         S 5       m[        SS9U4S j5       nU" S/4S-  5        g )Nc                     g r\   r   )gridss    rW   r  +TestParforsMisc.test_issue3169.<locals>.foo      rZ   Tr   c                 :   > [        S5       H  nT" U 5        M     g r8  r^  )r  r   r  s     rW   r  +TestParforsMisc.test_issue3169.<locals>.bar"  s    AYE
 rZ   r   r
  r  )rT   r  r  s     @rW   test_issue3169TestParforsMisc.test_issue3169  s?    		 
	 
t		 
	
 	aSFQJrZ   c                 x   ^ [        SS5      nU4S jn[        SS9S 5       mU" SSS9nU R                  X#5        g )	Nmytyper   c                 P   > [        S5       H  nT" X5        M     U R                  $ r  )r   r   )mydatar   inners     rW   outer-TestParforsMisc.test_issue4846.<locals>.outer/  s"    AYa  88OrZ   T)nogilc                 8    XR                   4nXR                  4ng r\   r   )r   r  r  rA  s       rW   r  -TestParforsMisc.test_issue4846.<locals>.inner4  s    HHAHHArZ   r   r   )r   r   r   )rT   r  r  r  r  s       @rW   test_issue4846TestParforsMisc.test_issue4846*  sI     Hj1	
 
D		 
	 #%

5!rZ   c                 ,    S nU R                  U5        g )Nc                  R    Sn Sn[        [        U 5      5       H
  nXU   -  nM     U$ )Nr@  r   r   r   )r   r   r  s      rW   test1b.TestParforsMisc.test_issue3748.<locals>.test1b?  s.    AACF^qT	 $HrZ   r)  )rT   r  s     rW   test_issue3748TestParforsMisc.test_issue3748=  s    	 	

6rZ   c                 d    S nSn[         R                  " U[        S9nU R                  XU5        g )Nc                 t    [        U S   5       H%  n[        U S   5       H  nUS-  U-   X   U'   M     M'     U$ )Nr   r   g      @r^  )rB  r  r   r  s       rW   parallel_test5TestParforsMisc.test_issue5277.<locals>.parallel_testJ  s@    DG_QA !C!CF1I ) % JrZ   rY  r>  )r   r  r  r   )rT   r!  rB  r  s       rW   test_issue5277TestParforsMisc.test_issue5277H  s,    	 hht3'

=,rZ   c                     [        SS9S 5       n[        R                  " S5      nSn[        R                  " S5      nU R                  U" X#U5      UR	                  X#U5      5        g )NTr   c                 r    [        S5       H  n[        S5       H	  nSX#U4'   M     M     U(       a  US-  nU$ r8  r   r  )r  methodr  r  r  s        rW   r  5TestParforsMisc.test_issue5570_ssa_races.<locals>.fooV  s<    AYqA !C1I "  qJrZ   )r   r   9   r  )r   r   r  r  r%  )rT   r  r  r(  r  s        rW   test_issue5570_ssa_races(TestParforsMisc.test_issue5570_ssa_racesU  sa    	t		 
	 hhuohhvS!KKS)	
rZ   c                     [        SS9S 5       n[        R                  R                  S5        [        R                  R                  S5      nU R	                  U" U5      UR                  U5      5        g )NTr   c                 n    U n[        SS5       H  nXS S 2S S 24   nM     [        R                  " W5      $ )Nr   r  )r  r   r   )r   packager  z_stacks       rW   find_maxima_3D_jitDTestParforsMisc.test_issue6095_numpy_max.<locals>.find_maxima_3D_jiti  s3    Gq"!A+. &66'?"rZ   r   )r  r  r  )r   r   r  r  r  r%  )rT   r1  r   s      rW   test_issue6095_numpy_max(TestParforsMisc.test_issue6095_numpy_maxh  sc    	t		# 
	# 			qyy-t$&&t,	
rZ   c                     S nSnSn[         R                  " X#4[         R                  S9n[         R                  " X#4[         R                  S9nU R                  XU5        g )Nc                     U R                   nUS   n[        U5       H  nXS S 24   XS S 24'   XS4==   S-  ss'   M!     U$ r  )r  r   )gggg_nextgsr~  i_ggs        rW   r  3TestParforsMisc.test_issue5942_1.<locals>.test_implz  sM    B1Aq	$&QwKa a A%  " NrZ   r  r
  r>  )r   r  r  r   )rT   r  r~  r   r7  r8  s         rW   test_issue5942_1 TestParforsMisc.test_issue5942_1w  sM    	 ((A62884((A62884

9'*rZ   c                 6    S nSnSnU R                  XU5        g )Nc                     [         R                  " X4[         R                  S9n[         R                  " X4[         R                  S9n[        U 5       H6  n[	        U5       H  nXBXE4'   M
     X$S S 24   X4S S 24'   X4S4==   S-  ss'   M8     U$ )Nr>  r   r   )r   r  r  r   r  )r~  r   r7  r8  r:  r  s         rW   r  3TestParforsMisc.test_issue5942_2.<locals>.test_impl  s~    hhvrxx8Bhhvrxx8Gq	qA"&twK "$&QwKa a A% 	 " NrZ   r  r
  r)  )rT   r  r~  r   s       rW   test_issue5942_2 TestParforsMisc.test_issue5942_2  s!    
	 

9#rZ   c                     [        SS9S 5       n[        R                  " / SQ/ SQ/5      nU R                  U" U5      UR	                  U5      5        g )NTr   c                    [        U R                  S   5       H  n[        R                  n[        R                  " / SQ[        R
                  S9nS HY  n[        R                  R                  XS S 24   U-   5      nXR:  d  M2  Un[        R                  " XDU/[        R
                  S9nM[     XS S 24==   U-  ss'   M     U $ )Nr   )r   r   r   r>  )r   r   rJ   )r   r  r   r  r  r'  r  norm)r
  r   r  trr  dist_ts         rW   r  )TestParforsMisc.test_issue6102.<locals>.f  s    QWWQZ(vvXXirzz:#AYY^^A!eHqL9F}%XXqQirzzB	 $
 a%B ) HrZ   )rh  rh  rh  )rh  rh  ro  )r   r   r  r  r%  )rT   r  r
  s      rW   test_issue6102TestParforsMisc.test_issue6102  sL     
t	
	 

	 HHlL12!aiil3rZ   c                 ,    S nU R                  U5        g )Nc                      Sn [         R                  " U 45      n[         R                  " U S-
  45      n[        [	        U5      5       H   n[         R
                  " XUS-    5      X#'   M"     U$ r  )r   r  r  r   r   r  )r  na_maskr  r  s       rW   r  1TestParforsMisc.test_issue6774.<locals>.test_impl  s[    AggqdmGXXq1uh'FCK(FF7QU#34	 )MrZ   r)  r*  s     rW   test_issue6774TestParforsMisc.test_issue6774  s    	 	

9rZ   c                 ,    S nU R                  U5        g )Nc                  F    [         R                  " [        [        45      n U $ r\   )r   r  _GLOBAL_INT_FOR_TESTING1_GLOBAL_INT_FOR_TESTING2)bufs    rW   r  9TestParforsMisc.test_issue4963_globals.<locals>.test_impl  s    ((46NOPCJrZ   r)  r*  s     rW   test_issue4963_globals&TestParforsMisc.test_issue4963_globals  s    	 	

9rZ   c                 @   ^^ SmSmUU4S jnU R                  U5        g )Nr   r   c                  8   > [         R                  " TT45      n U $ r\   r~  )rU  _FREEVAR_INT_FOR_TESTING1_FREEVAR_INT_FOR_TESTING2s    rW   r  :TestParforsMisc.test_issue4963_freevars.<locals>.test_impl  s    ((57PQRCJrZ   r)  )rT   r  r[  r\  s     @@rW   test_issue4963_freevars'TestParforsMisc.test_issue4963_freevars  s"    $&!$%!	 	

9rZ   c                    ^ SSK JnJnJn  [        R
                  S 5       m[        R
                  " SSS9U4S j5       nUR                  U" U" X3U" U5      /5      5      U" U5      45        g )Nr   )ListTypeTupler  c                     g r\   r   r  s    rW   _sink>TestParforsMisc.test_issue_9182_recursion_error.<locals>._sink  r  rZ   FT)rE  r   c                    > [        [        U5      5       Hc  nU  HZ  nUS   nUS   nUS:X  a  US   nO)[        U5      S:X  a
  US   US   pvO[        U5      S:X  a   US:X  d  MJ  T" W5        T" W5        M\     Me     g )Nr   r
  r   r  r  )	clausesnodespiterclauseclause_typeclause_variablesclause_var_1clause_var_2rd  s	           rW   _ground_node_ruleJTestParforsMisc.test_issue_9182_recursion_error.<locals>._ground_node_rule  s    
  E
+%F"()K'-ay$"a''7':-.!3,Q/,Q/ '3
 -.!3"a'l+l+! & ,rZ   )numba.typesra  rb  r  r   r   compile)rT   ra  rb  r  ro  rd  s        @rW   test_issue_9182_recursion_error/TestParforsMisc.test_issue_9182_recursion_error  sp    55		 
	 
%$	/	, 
0	,. 	!!HTN;<=	
rZ   c                 l    [        SS9S 5       nU R                  U" 5       UR                  5       5        g )NTr   c                      Sn [        S5       H,  n[        S5       H  n[        S5       H  nU S-  n M
     M     M.     U $ r  r'  )rS  r  r  r  s       rW   r  8TestParforsMisc.test_lookup_cycle_detection.<locals>.foo  sC     CAYqA"1Xq & "  JrZ   r$  )rT   r  s     rW   test_lookup_cycle_detection+TestParforsMisc.test_lookup_cycle_detection  s5     
t		 
	 	.rZ   c                     S nSn[         R                  " SS9" U5      n[         R                  " SS9" U5      nU R                  U" U5      U" U5      5        g )Nc                     Sn[         R                  " U 5       HB  n[         R                  " U5      nUS0n[        S5       H  nXC==   S-  ss'   M     XU   -  nMD     U$ )Nr   rh  r   r   )r   r   r  r  )	num_nodesr  
inode_uintinodeprK   s         rW   
issue_9678=TestParforsMisc.test_issue_9678_build_map.<locals>.issue_9678  s\    C#ll95
J/CLqAHMH "x 6 JrZ   r  Fr   T)r   jitr   )rT   r  r|  issue_9678_serialissue_9678_parallels        rW   test_issue_9678_build_map)TestParforsMisc.test_issue_9678_build_map  sT    	 	!IIu5jA#ii6zB*95,Y7	9rZ   r   N)"r   rO   r   r   rl  rV  r_  rh  rp  rv  r  r  r  r  r  r  r
  r=   r  r  r#  r+  r3  r<  rA  r>   rI  rO  rW  r^  rs  rx  r  r   r   rZ   rW   rA  rA    s    780K@	:Jx3Ij6$."22	1 " "$	-
&
+&$& 4 4&
%
N/ 9rZ   rA  c                   l    \ rS rSrS rS rS r   SS jrS rS r	S	 r
S
 rS rS rS rS rS rSrg)TestParforsDiagnosticsi  c                 \    U R                   " U/UQ76 u  pEU R                  " XU/UQ70 UD6  g r\   r   r   s         rW   r   TestParforsDiagnostics.check  rP  rZ   c                 j    U R                  U5      nU R                  U5      nU R                  X45        g r\   )_fusion_equivalentr   )rT   r  r  r   r   s        rW   assert_fusion_equivalence0TestParforsDiagnostics.assert_fusion_equivalence  s0    ##C(##H-rZ   c                     [        [        5      n[        UR                  5       5      n[	        UR                  5       5       H  nX    Vs/ s H  oUU-
  PM	     snX$U-
  '   M!     U$ s  snf r\   )r   r   r  keyssorted)rT   thingnewmin_keyr   r   s         rW   r  )TestParforsDiagnostics._fusion_equivalent   s\     $ejjl#

%A5:X>XGX>CG &
  ?s   A'Nc                 J   Ub  U R                  X!R                  5       5        Ub  U R                  X1R                  5        Ub  U R                  UUR                  5        UbK  UR
                  R                  5       nU H+  nU H  n	U	S   U:X  d  M    M     SU< SU< 3n
[        U
5      e   Ub+  UR                  5       nU R                  U[        U5      5        [        5          [        SS5       H  nUR                  U5        M     S S S 5        g ! , (       d  f       g = f)Nr   zReplacement for z was not found. Had r   r   )r   count_parforsr  fusion_infonested_fusion_infor  r  r  hoisted_allocationsr   r4   r  dump)rT   r  parfors_countr  r  r  r  replr   replacedr  hoisted_allocss               rW   assert_diagnostics)TestParforsDiagnostics.assert_diagnostics.  s    $],E,E,GH"**;8O8OP)**+=+6+I+IK#++224D! $H{a' !% IJ4PC(-- " *(<<>N0#n2EF 1a[  # ! s   &%D
D"c                     S nU R                  U5        U R                  US5      nUR                  S   nU R                  USSSS/0S9  g )	Nc                  f    Sn [         R                  " U 5      n[         R                  " U 5      nX-   $ Nr  r  r  r   r   s      rW   r  9TestParforsDiagnostics.test_array_expr.<locals>.test_implL  s(    A
AA5LrZ   r   parfor_diagnosticsr   r  r  r   )r  r  r   r   r  r  rT   r  r   r  s       rW   test_array_expr&TestParforsDiagnostics.test_array_exprK  sX    	 	

9&&y"5oo&:;1/01a&k 	  	;rZ   c                     S nU R                  U5        U R                  US5      nUR                  S   nU R                  USS9  g )Nc                  h    Sn [         R                  " U 5      n[        U 5       H
  nUS-  X'   M     U$ r  r   r  r   )r  r   r  s      rW   r  5TestParforsDiagnostics.test_prange.<locals>.test_implY  s2    AAAY2v HrZ   r   r  r   r  r  r  s       rW   test_prange"TestParforsDiagnostics.test_prangeX  sI    	 	

9&&y"5oo&:;1=rZ   c                     S nU R                  U5        U R                  US5      nUR                  S   nU R                  [	        S UR
                   5       5      5        g)zEmake sure original user variable name is used in fusion info
        c                     Sn [         R                  " U 5      n[         R                  " U5      n[         R                  " X"-  5      nSn[	        U S-
  5       H'  n[	        U S-
  5       H  nXCU   X6S-      -   -  nM     M)     U$ )Nr  r   r
  r   )r   r  sincosr   )r  r   r   r   rS  r  r  s          rW   r  ;TestParforsDiagnostics.test_user_varname.<locals>.test_implh  sv    A
Aq	AquACAE]AAQ4!E(?*C ' # JrZ   r   r  c              3   @   #    U  H  nS UR                   ;   v   M     g7f)zslice(0, n, 1)N)rM  )r  r
  s     rW   r  ;TestParforsDiagnostics.test_user_varname.<locals>.<genexpr>y  s     R7Q! AII-7Qs   N)r   r   r  r^  anyfusion_reportsr  s       rW   test_user_varname(TestParforsDiagnostics.test_user_varnamee  sY    		 	

9&&y"5oo&:; 	R{7Q7QRR	TrZ   c                     S nU R                  U5        U R                  US5      nUR                  S   nU R                  USSS/0S9  g )Nc                      Sn [         R                  " X 45      n[        U 5       H!  n[        U 5       H  nUS-  U-   XU4'   M     M#     U$ r  r  )r  r   r  r  s       rW   r  <TestParforsDiagnostics.test_nested_prange.<locals>.test_impl|  sM    A! AAYA"fqjAdG #  HrZ   r   r  r
  r   )r  r  r  r  s       rW   test_nested_prange)TestParforsDiagnostics.test_nested_prange{  sV    	 	

9&&y"5oo&:;145s8 	  	=rZ   c                     S nU R                  U5        U R                  US5      nUR                  S   nU R                  USSS/0S/S9  g )	Nc                  b    Sn [         R                  " U 5      n[         R                  " U5      nU$ r  )r   r  r  r  s      rW   r  CTestParforsDiagnostics.test_function_replacement.<locals>.test_impl  s&    A
A		!AHrZ   r   r  r   r
  r  )r  r  )r  r  r  r  r  s       rW   test_function_replacement0TestParforsDiagnostics.test_function_replacement  s]    	 	

9&&y"5oo&:;1-.H0C/E 	  	GrZ   c                     S nU R                  U5        U R                  US5      nUR                  S   nU R                  USS9  g )Nc                  r    Sn [         R                  " U S-   5      nSn[        U 5       H
  nX!U   -  nM     U$ r  r   r  r   r  r   rS  r  s       rW   r  8TestParforsDiagnostics.test_reduction.<locals>.test_impl  s;    AAACAYt JrZ   r   r  r
  r  r  r  s       rW   rU  %TestParforsDiagnostics.test_reduction  I    	 	

9&&y"5oo&:;1=rZ   c                     S nU R                  U5        U R                  US5      nUR                  S   nU R                  USS9  g )Nc                  r    Sn [         R                  " U S-   5      nSn[        U 5       H
  nX!U   -
  nM     U$ r  r  r  s       rW   r  >TestParforsDiagnostics.test_reduction_binop.<locals>.test_impl  s;    AAACAYaDj JrZ   r   r  r
  r  r  r  s       rW   test_reduction_binop+TestParforsDiagnostics.test_reduction_binop  r  rZ   c                     S nU R                  U5        U R                  US5      nUR                  S   nU R                  USS9  g )Nc                  @    Sn [         R                  " U 5      nSUS S & U$ )Nr  r  r  )r  r   s     rW   r  6TestParforsDiagnostics.test_setitem.<locals>.test_impl  s"    A
AAaDHrZ   r   r  r   r  r  r  s       rW   test_setitem#TestParforsDiagnostics.test_setitem  sI    	 	

9&&y"5oo&:;1=rZ   c                     S nU R                  U5        U R                  US5      nUR                  S   nU R                  USS9  g )Nc                      Sn SnSn[        U 5       H7  n[        R                  " U45      n[        U5       H  nX4U'   M	     X$S   -  nM9     U$ )Nr  r   r   rJ   )r   r   r  r  )r  rS  rS  r  tempr  s         rW   r  BTestParforsDiagnostics.test_allocation_hoisting.<locals>.test_impl  sU    AACAYxx~qAG "Bx	 
 JrZ   r   r  r   )r  r  r  s       rW   test_allocation_hoisting/TestParforsDiagnostics.test_allocation_hoisting  sI    		 	

9&&y"5oo&:;CrZ   r   )NNNNN)r   rO   r   r   r   r  r  r  r  r  r  r  r  rU  r  r  r  r   r   rZ   rW   r  r    sS    M
 =A@DBF$:;>T,=G>>
>DrZ   r  c                        \ rS rSrS rS rSrg)TestPrangeBasei  c                    UR                   n[        UR                  5      nUcW  SUR                  ;   d   e[        UR                   Vs/ s H  nUS:w  a  UOSPM     sn5      n[	        UR
                  5      nGOEUR                  R                  S5      n/ n[        R                  " U5       HN  n	U	R                  S:X  d  M  [        U	R                  5      U:X  d  M0  UR                  U	R                  S-   5        MP     UR                  S5        [        U5      n[        U5      S-
  n
[        R                   S;   a	  SU
S-  -   n
O.[        R                   S;   a  O[#        [        R                   5      e[%        UR
                  5      n[        U5      [        U5      ::  d   eU H  nX   nXU'   M     [	        U5      nUR'                  UUS9n[(        R*                  " U[-        5       5      nU$ s  snf )zw
This function does the actual code augmentation to enable the explicit
testing of `prange` calls in place of `range`.
r  r   LOAD_GLOBALr   ))r  r  )r  r  )r  r  ))r  r  )co_codeco_names)__code__r   r  r   bytesr  r  disBytecodeopnamerB   r   r   offsetr   rC   	PYVERSIONNotImplementedError	bytearrayreplacepytypesFunctionTypeglobals)rT   r   patch_instancepyfunc_codeprange_namesr   new_code	range_idxrange_locationsinstr
prange_idxr  r  prange_codepfuncs                  rW   generate_prange_func#TestPrangeBase.generate_prange_func  s   
 ooK001! k22222 +6+?+?"A+?a ()G|!"A+?"A BL[001H $,,227;I Ok2<<=0+EII6)C'..u||a/?@ 3
 ) .L\*Q.J"==*/2
J.)%//:: !4!45H~&#o*>>>>#%( * $ XH "))(3? * A $$[')<O"As   
G2c                 t   UR                  SS5      nUR                  SS5      nUR                  SS5      nU R                  X5      n[        U Vs/ s H  n[        R                  " U5      PM     sn5      n	U R                  X5      n
[        R                  " SS9 n[        R                  " S5        U R                  Xy5      nSSS5        U(       a  U R                  Xy5        U(       a  U R                  Xy5      n[        S	U040 UD6nU R                  " XW/UQ70 UD6  W$ s  snf ! , (       d  f       Nj= f)
a	  
The `prange` tester
This is a hack. It basically switches out range calls for prange.
It does this by copying the live code object of a function
containing 'range' then copying the .co_names and mutating it so
that 'range' is replaced with 'prange'. It then creates a new code
object containing the mutation and instantiates a function to contain
it. At this point three results are created:
1. The result of calling the original python function.
2. The result of calling a njit compiled version of the original
    python function.
3. The result of calling a njit(parallel=True) version of the mutated
   function containing `prange`.
The three results are then compared and the `prange` based function's
llvm_ir is inspected to ensure the scheduler code is present.

Arguments:
 pyfunc - the python function to test
 args - data arguments to pass to the pyfunc under test

Keyword Arguments:
 patch_instance - iterable containing which instances of `range` to
                  replace. If not present all instance of `range` are
                  replaced.
 scheduler_type - 'signed', 'unsigned' or None, default is None.
                   Supply in cases where the presence of a specific
                   scheduler is to be asserted.
 check_fastmath - if True then a check will be performed to ensure the
                  IR contains instructions labelled with 'fast'
 check_fastmath_result - if True then a check will be performed to
                         ensure the result of running with fastmath
                         on matches that of the pyfunc
 Remaining kwargs are passed to np.testing.assert_almost_equal


Example:
    def foo():
        acc = 0
        for x in range(5):
            for y in range(10):
                acc +=1
        return acc

    # calling as
    prange_tester(foo)
    # will test code equivalent to
    # def foo():
    #     acc = 0
    #     for x in prange(5): # <- changed
    #         for y in prange(10): # <- changed
    #             acc +=1
    #     return acc

    # calling as
    prange_tester(foo, patch_instance=[1])
    # will test code equivalent to
    # def foo():
    #     acc = 0
    #     for x in range(5): # <- outer loop (0) unchanged
    #         for y in prange(10): # <- inner loop (1) changed
    #             acc +=1
    #     return acc

r  Nr   Fcheck_fastmath_resultTrF  rH  r   )r   r  r   r   r   r   rO  rP  rQ  r   rj  r   r;  r   )rT   r   r   r   r  r   r  r  r   r   r   rU  r   
fastcpfuncs                 rW   prange_testerTestPrangeBase.prange_tester
  s   B  $4d;$4e< &

+BE J))&A d3dU\\!_d34!!&. $$D1_!!(+**56F 2
   , !77CJ+Z8CFCF$$VFLTLVL' 4 21s    D$(D))
D7r   N)r   rO   r   r   r  r	  r   r   rZ   rW   r  r    s    4l\rZ   r  c                      \ 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\R(                  " S5      S 5       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)g')(TestPrangeBasicii  zTests Prange c                 ,    S nU R                  USSS9  g )Nc                  h    Sn [         R                  " U 5      n[        U 5       H
  nSU-  X'   M     U$ )Nr  r  r   r  r  r  s      rW   r  0TestPrangeBasic.test_prange01.<locals>.test_impln  s2    AA1XQw HrZ   r   Tr   r   r	  r*  s     rW   test_prange01TestPrangeBasic.test_prange01m  #    	 	9Z*. 	 	0rZ   c                 ,    S nU R                  USSS9  g )Nc                  v    Sn [         R                  " U S-
  5      n[        SU 5       H  nSU-  XS-
  '   M     U$ )Nr  r   r  r	  r  s      rW   r  0TestPrangeBasic.test_prange02.<locals>.test_implx  s<    AQA1a[7a% !HrZ   r   Tr		  r
	  r*  s     rW   test_prange02TestPrangeBasic.test_prange02w  r	  rZ   c                 ,    S nU R                  USSS9  g )Nc                  8    Sn [        S5       H  nU S-  n M
     U $ Nr  r
  r  r  r  s     rW   r  0TestPrangeBasic.test_prange03.<locals>.test_impl  #    A2YQ HrZ   r   Tr		  r
	  r*  s     rW   test_prange03TestPrangeBasic.test_prange03  #    	
 	9Z*. 	 	0rZ   c                 ,    S nU R                  USSS9  g )Nc                  8    Sn [        S5       H  nU S-  n M
     U $ )Nr  r  r
  r  r	  s     rW   r  3TestPrangeBasic.test_prange03mul.<locals>.test_impl  s#    A2YQ HrZ   r   Tr		  r
	  r*  s     rW   test_prange03mul TestPrangeBasic.test_prange03mul  r	  rZ   c                 ,    S nU R                  USSS9  g )Nc                  8    Sn [        S5       H  nU S-  n M
     U $ )Nr@  r  r
  r  r	  s     rW   r  3TestPrangeBasic.test_prange03sub.<locals>.test_impl  s#    A2YQ HrZ   r   Tr		  r
	  r*  s     rW   test_prange03sub TestPrangeBasic.test_prange03sub  r	  rZ   c                 ,    S nU R                  USSS9  g )Nc                  8    Sn [        S5       H  nU S-  n M
     U $ r	  r  r	  s     rW   r  3TestPrangeBasic.test_prange03div.<locals>.test_impl  r	  rZ   r   Tr		  r
	  r*  s     rW   test_prange03div TestPrangeBasic.test_prange03div  r	  rZ   c                 ,    S nU R                  USSS9  g )Nc                  |    Sn Sn[         R                  " S5      n[        S5       H  nX0:X  a  XU'   M  SX#'   M     U$ )Nr
  r  r  r   r   r  r  r   r   r  r  s       rW   r  0TestPrangeBasic.test_prange04.<locals>.test_impl  sA    AAA1X6aDAD	 
 HrZ   r   Tr		  r
	  r*  s     rW   test_prange04TestPrangeBasic.test_prange04  s#    		 	9Z*. 	 	0rZ   c                 ,    S nU R                  USSS9  g )Nc                      Sn [         R                  " U [         R                  S9nSn[        SU S-
  S5       H
  nX!U   -  nM     U$ Nr  r>  r   r   r   r  r  r  r  r  r  r  s       rW   r  0TestPrangeBasic.test_prange05.<locals>.test_impl  sG    A2::.AA1a!eQ'qT	 (HrZ   r   Tr		  r
	  r*  s     rW   test_prange05TestPrangeBasic.test_prange05  #    	 	9Z*. 	 	0rZ   c                 ,    S nU R                  USSS9  g )Nc                      Sn [         R                  " U [         R                  S9nSn[        SSS5       H
  nX!U   -  nM     U$ r4	  r5	  r6	  s       rW   r  0TestPrangeBasic.test_prange06.<locals>.test_impl  sB    A2::.AA1a^qT	 $HrZ   r   Tr		  r
	  r*  s     rW   test_prange06TestPrangeBasic.test_prange06  r:	  rZ   c                 ,    S nU R                  USSS9  g )Nc                      Sn [         R                  " U [         R                  S9nSn[        U S5       H
  nX!U   -  nM     U$ r4	  r5	  r6	  s       rW   r  0TestPrangeBasic.test_prange07.<locals>.test_impl  s@    A2::.AA1a[qT	 !HrZ   r   Tr		  r
	  r*  s     rW   test_prange07TestPrangeBasic.test_prange07  r:	  rZ   c                 ,    S nU R                  USSS9  g )Nc                      Sn [         R                  " U 5      nSn[        [        U5      5       H%  n[        [        U5      5       H
  nX!U   -  nM     M'     U$ r  r   r  r  r   r  r  rS  r  r  s        rW   r  0TestPrangeBasic.test_prange08.<locals>.test_impl  sO    AAC3q6]s1vAQ4KC ' # JrZ   r   Tr		  r
	  r*  s     rW   test_prange08TestPrangeBasic.test_prange08  #    	 	9Z*. 	 	0rZ   c                 ,    S nU R                  USSS9  g )Nc                      Sn [         R                  " U 5      nSn[        S5       H  n[        S5       H
  nX!U   -  nM     M     U$ r  r   r  r  rH	  s        rW   r  2TestPrangeBasic.test_prange08_1.<locals>.test_impl  sG    AAC1XqAQ4KC "  JrZ   r   Tr		  r
	  r*  s     rW   test_prange08_1TestPrangeBasic.test_prange08_1  rL	  rZ   c                 0    S nU R                  US/SSS9  g )Nc                  `    Sn Sn[        U 5       H  n[        U 5       H  nUS-  nM
     M     U$ Nr  r   r   r  )r  rS  r  r  s       rW   r  0TestPrangeBasic.test_prange09.<locals>.test_impl  s8    AC1XqA1HC "  JrZ   r   r   Tr  r   r   r
	  r*  s     rW   test_prange09TestPrangeBasic.test_prange09  s(    	 	9aS*4*. 	 	0rZ   c                 0    S nU R                  US/SSS9  g )Nc                  l    Sn Sn[        U 5       H   nSn[        U 5       H  nUS-  nM
     X-  nM"     U$ rU	  r  )r  acc2r  acc1r  s        rW   r  0TestPrangeBasic.test_prange10.<locals>.test_impl  sD    AD1XqAAID "	 
 KrZ   r   r   TrW	  r
	  r*  s     rW   test_prange10TestPrangeBasic.test_prange10  s(    	 	9aS*4*. 	 	0rZ   z1list append is not thread-safe yet (#2391, #2408)c                 ,    S nU R                  USSS9  g )Nc                  p    Sn [        U 5       Vs/ s H  n[        R                  " U5      PM     sn$ s  snf )Nr  )r  r   r  )r  r  s     rW   r  0TestPrangeBasic.test_prange11.<locals>.test_impl
  s+    A',Qx0x!BFF1Ix000s    3r   Tr		  r
	  r*  s     rW   test_prange11TestPrangeBasic.test_prange11  s#    	1 	9Z*. 	 	0rZ   c                 ,    S nU R                  USSS9  g )Nc                      Sn Sn[         R                  " U5      n[        [        U5      * 5       H
  nXU   -  n M     U $ r  rG	  )rS  r  r  r  s       rW   r  0TestPrangeBasic.test_prange12.<locals>.test_impl  s=    CA
ACF7^t $JrZ   r   Tr		  r
	  r*  s     rW   test_prange12TestPrangeBasic.test_prange12  s#    	 	9Z*. 	 	0rZ   c                 V    S nU R                  U[        R                  " S5      SSS9  g )Nc                 8    Sn[        U 5       H  nUS-  nM
     U$ r  r  r  s      rW   r  0TestPrangeBasic.test_prange13.<locals>.test_impl  s#    C1Xq JrZ   r  r   Tr		  )r	  r   r  r*  s     rW   test_prange13TestPrangeBasic.test_prange13  s-    	
 	9bhhqk**. 	 	0rZ   c                 h    S nU R                  U[        R                  R                  S5      SSS9  g )Nc                 T    Sn[        [        U 5      5       H  nXU   S-  -  nM     U$ )Nr  r
  r  r   )r  r  r  s      rW   r  0TestPrangeBasic.test_prange14.<locals>.test_impl%  s-    A3q6]qT!V #HrZ   r  r   Tr		  )r	  r   r  r  r*  s     rW   test_prange14TestPrangeBasic.test_prange14$  s3    	 	9biinnQ&7*4*. 	 	0rZ   c                 .    S nU R                  USSSS9  g )Nc                 h    Sn[        U 5       H   n[        R                  " S5      nXS   -  nM"     U$ )Nr   rL  rR  )r  r   r  )r  rS  r  r   s       rW   r  0TestPrangeBasic.test_prange15.<locals>.test_impl4  s4    C1XGGFOw  JrZ   r  r   Tr		  r
	  r*  s     rW   test_prange15TestPrangeBasic.test_prange151  s%    	 	9d:*. 	 	0rZ   c                 .    S nU R                  USSSS9  g )Nc                 <    Sn[        U * U 5       H  nUS-  nM
     U$ rw  r  r  rS  r  s      rW   r  0TestPrangeBasic.test_prange16.<locals>.test_impl?  s'    CA2q\q "JrZ   r  r   Tr		  r
	  r*  s     rW   test_prange16TestPrangeBasic.test_prange16>  s%    	
 	9d8*. 	 	0rZ   c                 .    S nU R                  USSSS9  g )Nc                 l    Sn[         R                  " U 5      n[        U * U 5       H
  nXU   -  nM     U$ r  rO	  r  rS  r  r  s       rW   r  0TestPrangeBasic.test_prange17.<locals>.test_implH  s6    C
AA2q\t "JrZ   r-  r   Tr		  r
	  r*  s     rW   test_prange17TestPrangeBasic.test_prange17G  %    	 	9a*. 	 	0rZ   c                 .    S nU R                  USSSS9  g )Nc                     Sn[         R                  " U 5      n[        U * S5       H$  nXU   -  n[        SU 5       H
  nXU   -  nM     M&     U$ )Nr   r   rO	  )r  rS  r  r  r  s        rW   r  0TestPrangeBasic.test_prange18.<locals>.test_implR  sS    C
AA2q\tr1AQ4KC & " JrZ   r-  r   Tr		  r
	  r*  s     rW   test_prange18TestPrangeBasic.test_prange18Q  %    	 	9a*. 	 	0rZ   c                 .    S nU R                  USSSS9  g )Nc                     SnU S-   n[         R                  " X45      n[        U * U 5       H  n[        U* U5       H  nXXE4   -  nM     M!     U$ r  rO	  )r  rS  Mr  r  r  s         rW   r  0TestPrangeBasic.test_prange19.<locals>.test_impl^  sW    CAAAA2q\r1AQT7NC & " JrZ   r-  r   Tr		  r
	  r*  s     rW   test_prange19TestPrangeBasic.test_prange19]  r	  rZ   c                 .    S nU R                  USSSS9  g )Nc                 j    Sn[         R                  " U 5      n[        SU 5       H
  nXU   -  nM     U$ )Nr   rJ   rO	  r	  s       rW   r  0TestPrangeBasic.test_prange20.<locals>.test_implj  s4    C
A2q\t "JrZ   r-  r   Tr		  r
	  r*  s     rW   test_prange20TestPrangeBasic.test_prange20i  r	  rZ   c                 .    S nU R                  USSSS9  g )Nc                 :    Sn[        SS5       H  nUS-  nM
     U$ )Nr   r  rJ   r  r  r}	  s      rW   r  0TestPrangeBasic.test_prange21.<locals>.test_implt  s%    C2r]q #JrZ   r-  r   Tr		  r
	  r*  s     rW   test_prange21TestPrangeBasic.test_prange21s  s%    	
 	9a*. 	 	0rZ   c                 .    S nU R                  USSSS9  g )Nc                      Sn Sn[         R                  " S5      n[        SS5       H  nX0:X  a  XU'   M  US:  a  SX#'   M  SX#'   M      U$ )	Nr   r  r  r  r
  r   rJ   r  r-	  r.	  s       rW   r  0TestPrangeBasic.test_prange22.<locals>.test_impl}  sQ    AAA2q\6aDUADAD " HrZ   r   Tr   r   r  r
	  r*  s     rW   test_prange22TestPrangeBasic.test_prange22|  s&    	 	9X*.d 	 	LrZ   c                 f    S n[         R                  " S5      S S S2   nU R                  XSSSS9  g )Nc                 D    [        [        U 5      5       H  nXU'   M	     U $ r\   rr	  r  r  s     rW   r  0TestPrangeBasic.test_prange23.<locals>.test_impl  s     3q6]! #HrZ       r
  r   Tr	  r   r  r	  rT   r  r  s      rW   test_prange23TestPrangeBasic.test_prange23  s<    	 HHRL19
*.d 	 	LrZ   c                 f    S n[         R                  " S5      S S S2   nU R                  XSSSS9  g )Nc                 H    [        [        U 5      * S5       H  nXU'   M	     U $ r  rr	  r	  s     rW   r  0TestPrangeBasic.test_prange24.<locals>.test_impl  s%    CF7A&! 'HrZ   r	  r
  r   Tr	  r	  r	  s      rW   test_prange24TestPrangeBasic.test_prange24  s<    	 HHRL19*.d 	 	LrZ   c           	          S n[         R                  " S5      nU R                  XS/SSSS9  U R                  U[        R
                  " U5      45      nUR                  S   nUR                  5       nU R                  [        U5      S5        g )	Nc                     [        U 5      n[        U5       Vs/ s H  n[        R                  " U 5      PM     nn[        U5       H	  nX-   X4'   M     U$ s  snf r\   )r   r  r   
zeros_like)r  r  rK   rU  r  s        rW   r  0TestPrangeBasic.test_prange25.<locals>.test_impl  sM    AA-21X6X2==#XC61X J 7s    Ar  r   r   T)r  r   r   r  r  r   )
r   r  r	  r   r   r   r  r  r   r   )rT   r  r  r   r  r  s         rW   test_prange25TestPrangeBasic.test_prange25  s    	 GGEN9!*4T15 	 	7 &&y5<<?2DEoo&:;$88:^,a0rZ   c                 f    S n[         R                  " S5      S S S2   nU R                  XSSSS9  g )Nc                 T    U S S S2   n[        [        U5      5       H  nX!U'   M	     U $ r  rr	  )r  r  r  s      rW   r  0TestPrangeBasic.test_prange26.<locals>.test_impl  s-    #A#A3q6]! #HrZ   r	  r
  r   Tr	  r	  r	  s      rW   test_prange26TestPrangeBasic.test_prange26  s<    	
 HHRL19
*.d 	 	LrZ   c           
          S nU R                  U[        R                  " S5      [        R                  " / SQ5      SS/SSS9  g )	Nc                     [        US   S-
  5       H3  n[        S5       H!  n[        R                  " XS-
  US-    5      nM#     M5     gr	  )r  r   abs)r   r   r  r  r   r  s         rW   r  0TestPrangeBasic.test_prange27.<locals>.test_impl  sE    1Q46]qAq1QqSz*A " # rZ   ri  )
r  r  r  r  r  r  r  r  r  r  r   r   r   TrW	  )r	  r   r  asarrayr*  s     rW   test_prange27TestPrangeBasic.test_prange27  sD    	 	999R=::&;<+,#*4*. 	 	0rZ   c           	          S n[         R                  " SS/SS/SS/SS/SS/SS//5      n[         R                  " SS/SS/SS/SS	/S	S
//5      nU R                  XUSSSS9  g )Nc                     [         R                  " [        U5      5      n[        S[        U5      5       H*  nXS4   nXS4   nX   nX   nXg-
  nUS   US   -   n	XU'   M,     U$ r  )r   r  r   r  )
r   r  r  r  i0r  Pt1Pt2r  vl2s
             rW   r  0TestPrangeBasic.test_prange28.<locals>.test_impl  ss    ((3q6"CQA'AvYAvYeeIdQqTkC ( JrZ         ro  rh  r   r   r
  r  r  r   r   Tr	  )r   r  r	  r9  s       rW   test_prange28TestPrangeBasic.test_prange28  s    
	 HHsCjRjRjCjRjRj" # HHq!f!f!f!f!f	  	9:*.d 	 	LrZ   c                 R    S nU R                  US5        U R                  US5        g )Nc                 x    SnU (       a  [        S5       H  nUS-  nM
     U$ [        S5       H  nUS-  nM
     U$ )Nr   r   r  r  )r  r  r  s      rW   r  0TestPrangeBasic.test_prange29.<locals>.test_impl  sF    FqAaKF "
 M qAaKF "MrZ   TFr
	  r*  s     rW   test_prange29TestPrangeBasic.test_prange29  s)    	 	9d+9e,rZ   c                     S n[         R                  " [         R                  " SSS5      5      n[         R                  " / SQ5      nU R                  XUS5        g )Nc                 
   UR                   S   n[        U 5      n[        R                  " X44[        R                  S9n[        U 5      U-   S-
  U-  n[        U5       H!  nXv-  nUS-   U-  n	XU	 US S  -  US S 2X24'   M#     U$ r  )r  r   r   r  r  r  )
r   par
numthreadsn_parn_xr  chunklenr  r1  r2  s
             rW   r  0TestPrangeBasic.test_prange30.<locals>.test_impl  s    IIaLEa&CXXul"**=FA+a/J>H:&A)()A(>q%*}% '
 MrZ   r   r  ro  r  r
  )r   r  r  r	  )rT   r  r   r	  s       rW   test_prange30TestPrangeBasic.test_prange30  sD    	 HHRYYq!S)*hh'9a0rZ   r   N)*r   rO   r   r   rl  r	  r	  r	  r	  r$	  r)	  r0	  r8	  r>	  rC	  rJ	  rQ	  rX	  r_	  r  skiprd	  ri	  rn	  rt	  ry	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r   r   rZ   rW   r	  r	  i  s    0000000	0	0	0
0
000 ]]FG0 H0	000
000
0
000L LL1"L0"L<-1rZ   r	  c                     X4$ r\   r   r   s     rW   test_call_hoisting_outcallr	    s	    6MrZ   c                       \ rS rSrSrS rS rS rS r\	S 5       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 5       r!Sr"g) TestPrangeSpecifici  z3Tests specific features/problems found under prangec                 .    S nU R                  US5        g )Nc                 R    Sn[        U 5       H  nUS-  nUS:  d  M  US-  nM     U$ Nr   r   r  r  r  r  r  s      rW   r  RTestPrangeSpecific.test_prange_two_instances_same_reduction_var.<locals>.test_impl  5    A1XQr6FA  HrZ   r-  r
	  r*  s     rW   ,test_prange_two_instances_same_reduction_var?TestPrangeSpecific.test_prange_two_instances_same_reduction_var  s    	 	9a(rZ   c                     S nU R                  [        R                  5       nU R                  US5        S S S 5        SnU R	                  U[        WR                  5      5        g ! , (       d  f       N6= f)Nc                 R    Sn[        U 5       H  nUS-  nUS:  d  M  US-  nM     U$ r	  r  r	  s      rW   r  KTestPrangeSpecific.test_prange_conflicting_reduction_ops.<locals>.test_impl#  r	  rZ   r-  zBReduction variable c has multiple conflicting reduction operators.)r  r   UnsupportedErrorr	  r   r'  r  rT   r  r!  r  s       rW   %test_prange_conflicting_reduction_ops8TestPrangeSpecific.test_prange_conflicting_reduction_ops"  s]    	 v6676y!, 8c3v//01	 87   A&&
A4c                 ,    S nU R                  U5        g )Nc                      S=p[        S5       H7  nUS:X  a  U S-  n M  [        R                  " S5      nUS   (       d  M2  US-  nM9     X4$ )Nr   r   r
  rL  rR  rt  )r  r  r   r   s       rW   r  LTestPrangeSpecific.test_prange_two_conditional_reductions.<locals>.test_impl3  sP    IA1X6FA(AwwQ  4KrZ   r
	  r*  s     rW   &test_prange_two_conditional_reductions9TestPrangeSpecific.test_prange_two_conditional_reductions1  s    		 	9%rZ   c                 ,    S nU R                  U5        g )Nc                  l    Sn [        S5       H"  n[        S5       H  nUS:X  d  M  U S-  n M     M$     U $ r  r  )r  r   r  s      rW   r  CTestPrangeSpecific.test_prange_nested_reduction1.<locals>.test_impl@  s:    A1XqAAvQ "  HrZ   r
	  r*  s     rW   test_prange_nested_reduction10TestPrangeSpecific.test_prange_nested_reduction1?  s    	 	9%rZ   c                    S nU R                  [        5       nU" 5         S S S 5        U R                  US 5      nU R                  US5      nU R	                  US5      nU R                  [        5       nUR                  5         S S S 5        UR                  5       nU R                  US   [        R                  5        g ! , (       d  f       N= f! , (       d  f       NS= f)Nc                  h    Sn [         R                  " U 5      n[        U 5       H
  nSU-  X'   M     U$ )Nr	  r   r	  r  s      rW   r  <TestPrangeSpecific.test_check_error_model.<locals>.test_implK  s2    AA1X1u HrZ   r   r   )	r  ZeroDivisionErrorr  r   r   r   r   r   r  )rT   r  r!  r  pcrespfcresr  s          rW   test_check_error_model)TestPrangeSpecific.test_check_error_modelI  s    	 01VK 2 )))T:%%eR0//r: 01V 2 ##%BFF+ 21 21s   C4C
C
C c                    S n[         R                  " S5      R                  SS5      nU R                  XSSSS9  U R	                  US 5      n[        [        R                  " U5      /5      nU R                  X45      nU R                  U5      nUR                  5        HM  u  pxUR                  5        H4  n	SU	;   d  M  Xy;   d  M  U R                  U	R                  S	5      S
5          MK     MO     g )Nc                 N    [        [        U 5      5       H  nX   nSUS S & M     U $ r8  rr	  )r  r  r  s      rW   r  ?TestPrangeSpecific.test_check_alias_analysis.<locals>.test_impld  s+    3q6]D! # HrZ   r	  r  r  r   Tr	  definenoaliasr
  )r   r  r  r	  r  r   r   r   r   rA  rg  rN  r   rb  )
rT   r  r  r  r   r  rh  r   r  r^  s
             rW   test_check_alias_analysis,TestPrangeSpecific.test_check_alias_analysisb  s    	
 HHRL  A&9
*.d 	 	L)))T:U\\!_%&--e9!!$'IIKDAt#	 $$TZZ	%:A> '  rZ   c                     S nU R                  [        R                  5       nU R                  US5        S S S 5        SnU R	                  U[        WR                  5      5        g ! , (       d  f       N6= f)Nc                 <    Sn[        SU S5       H  nUS-  nM
     U$ rw  r  r}	  s      rW   r  JTestPrangeSpecific.test_prange_raises_invalid_step_size.<locals>.test_impl{  s'    C1a^q $JrZ   r  z4Only constant step size of 1 is supported for prange)r  r   r  r	  r   r'  r  r	  s       rW   $test_prange_raises_invalid_step_size7TestPrangeSpecific.test_prange_raises_invalid_step_sizez  s[    	 v==>&y$/ ?Dc3v//01 ?>r	  c           	      x   S nU R                  USSS9  U R                  US 5      nU R                  US5      nU R                  U5      nSnSn[        R
                  " XeU4-  5      n[        R
                  " SU< S	U< S
U< 35      nSn	UR                  " 5        H  u  pXR                  R                  5       ;   d  M$  UR                  5       n[        U5       HE  u  pUR                  U5      (       d  M  U R                  UR                  XS-      5      5        Sn	  M     M     U R                  U	S5        g )Nc                  @    Sn Sn[        U 5       H
  nXS-  -  nM     U$ )Nr  r   r  r  r  s      rW   r  FTestPrangeSpecific.test_prange_fastmath_check_works.<locals>.test_impl  s*    AA1XW HrZ   r   Tr		  r   z%[A-Z_0-9]?(.[0-9]+)+[.]?[i]?z)\s+%s = fmul fast double %s, 5.000000e-01z\s+z = fadd fast double z, Fr   z'fast instruction pattern was not found.)r	  r  r   rA  rO  rr  rg  r  r  rN  r  rd  r^  )rT   r  r  r  r   _id
recipr_strreciprocal_inst	fadd_instfoundr&  kernelrQ  r  r   s                  rW    test_prange_fastmath_check_works3TestPrangeSpecific.test_prange_fastmath_check_works  s    	 	9Z*. 	 	0)))T:--eR8  &-A
**Z*%<=JJ"%sC 1 2	
 HHJLD||0022!,,.%h/DA&,,Q//	Q(HI $	 0	 ' 	HIrZ   c                 .    S nU R                  US5        g )Nc                     [         R                  " X 45      nUS   n[        U 5       H
  nUS-   X#'   M     UR                  5       $ r  r   r  r  r  )r  r   r   r  s       rW   r  8TestPrangeSpecific.test_parfor_alias1.<locals>.test_impl  s?    ! A!A1X1u 557NrZ   r  r
	  r*  s     rW   test_parfor_alias1%TestPrangeSpecific.test_parfor_alias1  s    	 	9a(rZ   c                 .    S nU R                  US5        g )Nc                     [         R                  " X 45      n[        U 5       H  nX   n[        U 5       H	  nX$-   X4'   M     M!     UR                  5       $ r\   r
  )r  r   r  r   r  s        rW   r  8TestPrangeSpecific.test_parfor_alias2.<locals>.test_impl  sK    ! A1X$aQx!u    557NrZ   r  r
	  r*  s     rW   test_parfor_alias2%TestPrangeSpecific.test_parfor_alias2  s    	 	9a(rZ   c                 .    S nU R                  US5        g )Nc                     [         R                  " X U 45      n[        U 5       H8  nX   n[        U 5       H"  nX4   n[        U 5       H  nX$-   U-   XV'   M     M$     M:     UR                  5       $ r\   r
  )r  r   r  r   r  r  r   s          rW   r  8TestPrangeSpecific.test_parfor_alias3.<locals>.test_impl  sf    !#A1X$aQx!DqA!$ "    557NrZ   r  r
	  r*  s     rW   test_parfor_alias3%TestPrangeSpecific.test_parfor_alias3  s    	 	9a(rZ   c                     S nU R                  USS5      nUS   nSnU R                  U[        UR                  5      5        g )Nc                 .    [        U5       H  nU nM     W$ r\   r  )r   r  r  r   s       rW   r  8TestPrangeSpecific.test_parfor_race_1.<locals>.test_impl  s    1X HrZ   r  ri  r   zVariable k used in parallel loop may be written to simultaneously by multiple workers and may result in non-deterministic or unintended results.)r	  r   r'  rM  )rT   r  rU  warning_objexpected_msgs        rW   test_parfor_race_1%TestPrangeSpecific.test_parfor_race_1  sJ    	 ,,YB?%a(F 	lC(;(;$<=rZ   c                 ,    S nU R                  U5        g)aY  issue 3686: if a prange has something inside it that causes
a nested parfor to be generated and both the inner and outer
parfor use the same call variable defined outside the parfors
then ensure that when that call variable is pushed into the
parfor that the call variable isn't duplicated with the same
name resulting in a redundant type lock.
c                     Sn [         R                  n[        S5       H,  nU" S5      nX" [         R                  " S5      5      S   -  n M.     [        S5       H,  nU" S5      nX" [         R                  " S5      5      S   -  n M.     U $ )Nr   r   ro  r
  )r   negativer  r  )r  r  r  this_matterss       rW   r  GTestPrangeSpecific.test_nested_parfor_push_call_vars.<locals>.test_impl  s}    AA1X uQrxx|_Q''  1X uQrxx|_Q''  HrZ   Nr
	  r*  s     rW   !test_nested_parfor_push_call_vars4TestPrangeSpecific.test_nested_parfor_push_call_vars  s    
	 	9%rZ   c                     S nSn[         R                  " X"U45      n[         R                  " U[         R                  S9nU R                  XUS/S9  g)zissue4903: a global is copied next to a parfor so that
it can be inlined into the parfor and thus not have to be
passed to the parfor (i.e., an unsupported function type).
This global needs to be renamed in the block into which
it is copied.
c                 l   [         R                  " [        U5      5      n[         R                  " [        U5      5      n[        S5       He  nX   n[        U5       H   nU[         R                  " XU4   5      -  nM"     [        U5       H   nU[         R                  " XU4   5      -  nM"     Mg     X#4$ r8  )r   r  r   r  rr  )zztclhlcr  ntr  s          rW   r  ATestPrangeSpecific.test_copy_global_for_parfor.<locals>.test_impl  s    #b'"B#b'"B1XUrA"&&qD**B #rA"&&qD**B #	  6MrZ   r
  r>  r   r  N)r   r  r  r	  )rT   r  rS  r<
  r=
  s        rW   test_copy_global_for_parfor.TestPrangeSpecific.test_copy_global_for_parfor  sK    		 WWaAYWWQbgg&9"aSArZ   c                 .    S nU R                  US5        g )Nc                 r    Sn[         R                  n[        S5       H  nU" S5      nX" U 5      -  nM     U$ )Nr   r   ro  )r   r5
  r  )r  r  r  r  r6
  s        rW   r  GTestPrangeSpecific.test_multiple_call_getattr_object.<locals>.test_impl  s;    AA1X vQqT	  HrZ   ro  r
	  r*  s     rW   !test_multiple_call_getattr_object4TestPrangeSpecific.test_multiple_call_getattr_object  s    	 	9c*rZ   c                 f   S n[         R                  " SS[        4S[        4/S9n[         R                  " SS[        4S[        4/S9n[         R                  " SS[        4S[        4/S9nUR	                  [         R
                  5      nUR	                  [         R
                  5      nUR	                  [         R
                  5      n[        U" U5      5      n[        [        U5      " U5      5      n	[        USS9n
[        U
" U5      5      nU R                  X5        U R                  X5        g )Nc                 Z    [        [        U 5      5       H  nSU R                  U'   M     U $ r  )r  r   r   )r  r  s     rW   r  HTestPrangeSpecific.test_argument_alias_recarray_field.<locals>.test_impl  s&    3q6]A #HrZ   r  r   r  r>  Tr   )	r   r  r  r  viewrecarrayr   r   r   )rT   r  X1X2X3rp  rq  v3
python_resnjit_respa_funcpa_ress               rW   "test_argument_alias_recarray_field5TestPrangeSpecific.test_argument_alias_recarray_field  s    	 XXb#uSz <=XXb#uSz <=XXb#uSz <=WWR[[!WWR[[!WWR[[! )B-(
Y+,y40gbk".,rZ   c                    ^ [         S 5       mU4S jnU" S5      n[        U5      " S5      n[        USS9nU" S5      nU R                  X#5        U R                  X%5        g)zissue3699: test that mutable variable to call in loop
is not hoisted.  The call in test_impl forces a manual
check here rather than using prange_tester.
c                 B    U S   nU S   S-   nU R                  U5        U$ )zvIf the variable X is hoisted in the test_impl prange
then subsequent list_check calls would return increasing
values.
rJ   r   )r   )r  r6  r   s      rW   
list_check>TestPrangeSpecific.test_mutable_list_param.<locals>.list_check'  s*     B%C"	AHHQKJrZ   c                 B   > [        U 5       H  nS/nT" U5      nM     W$ r  r^  )r  r  r  r   r[
  s       rW   r  =TestPrangeSpecific.test_mutable_list_param.<locals>.test_impl1  s(    AYEqM  HrZ   r  Tr   Nr   r   )rT   r  rS
  rT
  rU
  rV
  r[
  s         @rW   test_mutable_list_param*TestPrangeSpecific.test_mutable_list_param"  sf    
 
	 
		
 r]
	?2&y40.,rZ   c                     S n[         R                  " / SQ[        S9[         R                  " SS/[        S9/nU R                  X5        g )Nc           	          [         R                  " [        [        U 5      5       Vs/ s H  n[        X   5      PM     sn5      $ s  snf r\   )r   r  r  r   )r   r  s     rW   r  DTestPrangeSpecific.test_list_comprehension_prange.<locals>.test_impl?  s1    88c!f>1SY>??>s   A)r   r
  r  r>  r   r
  )r   r  r  r	  r  s      rW   test_list_comprehension_prange1TestPrangeSpecific.test_list_comprehension_prange=  s:    	@XXgS)"((Aa5*DE9(rZ   c                 v    S n[         R                  " S[         R                  S9nU R                  XSS5        g )Nc                     [         R                  " U R                  5      n[        U R                  S   5       H#  nX   S   S-  nUS:X  a  SnUS:X  a  SnWXf/X4'   M%     U$ )Nr   g     o@)r   r  r  r  )imager   r   r  r  r
  hs          rW   r  >TestPrangeSpecific.test_ssa_false_reduction.<locals>.test_implJ  se    HHU[[)E5;;q>*HQK%'6A6Aq9 + LrZ   rQ  r>  r   )r   r  r  r	  )rT   r  ri
  s      rW   test_ssa_false_reduction+TestPrangeSpecific.test_ssa_false_reductionD  s/    		 rxx09Q2rZ   c                 ,    S nU R                  U5        g )Nc                      Sn [         R                  " U [         R                  S9n[        S5       H  nS/nSUS'   US   X'   M     U$ )Nr   r>  r   r   )r   r  r  r  )r  r   r   r  s       rW   r  @TestPrangeSpecific.test_list_setitem_hoisting.<locals>.test_impl[  sK    A"((+A1XC!t  HrZ   r
	  r*  s     rW   test_list_setitem_hoisting-TestPrangeSpecific.test_list_setitem_hoistingX  s    	 	9%rZ   c                     S n[         R                  S-   nU R                  U[        U5       Vs/ s H4  n[        R
                  " [        R                  [        R                  S9PM6     snS/S9  g s  snf )Nc                 v   [        [        U 5      5       Vs/ s HJ  n[        R                  " [        R
                  [        R                  S9[        R                  " S5      4PML     nn[        [        U 5      5       H)  nX   n[        R                  " S5      nX5S'   X   U4X#'   M+     US   S   S   $ s  snf Nkey_type
value_typer   r   )	r  r   r   r  r   r  r  r   r  inputsrK   outputsr  r  r  s         rW   r  9TestPrangeSpecific.test_tuple_hoisting.<locals>.test_implh  s    jopstzp{j|}j|ef

EKKEMMRTVT\T\]^T_`j|G}3v;'IhhqkA$i-
	 (
 1:a=## ~s   AB6r   rv
  rB
  	r   r:  r	  r  r   r  r   r  r  rT   r  r  r  s       rW   test_tuple_hoisting&TestPrangeSpecific.test_tuple_hoistingf  o    	$ $$q(9kpqrks&tksfgtzz5;;SXS`S`'aks&t  GH  FI  	J&t   ;A3
c                     S n[         R                  S-   nU R                  U[        U5       Vs/ s H4  n[        R
                  " [        R                  [        R                  S9PM6     snS/S9  g s  snf )Nc                    [        [        U 5      5       Vs/ s HJ  n[        R                  " [        R
                  [        R                  S9[        R                  " S5      4PML     nn[        [        U 5      5       H1  nX   n[        R                  " S5      nX5S'   [        X   U5      X#'   M3     US   S   S   $ s  snf ru
  )
r  r   r   r  r   r  r  r   r  r	  ry
  s         rW   r  8TestPrangeSpecific.test_call_hoisting.<locals>.test_implv  s    jopstzp{j|}j|ef

EKKEMMRTVT\T\]^T_`j|G}3v;'IhhqkA7	3G
	 (
 1:a=## ~s   AB>r   rv
  rB
  r}
  r~
  s       rW   test_call_hoisting%TestPrangeSpecific.test_call_hoistingt  r
  r
  c                     [         R                  " S[         R                  4/5      nS nS nU R                  U[         R                  " SUS9U/S9  g )NrO  c                 6    [        S5       H
  nSX   S'   M     g )Nr   rO  r  )statesr  s     rW   r  ?TestPrangeSpecific.test_record_array_setitem.<locals>.test_impl  s    1X#$	%  rZ   c                 ,    U S   S   US   S   :X  d   eg )Nr   rO  r   r   s     rW   r  >TestPrangeSpecific.test_record_array_setitem.<locals>.comparer  s     Q4;!A$u+-.-rZ   r   )r  r?  r  )r   r?  r  r	  r  )rT   state_dtyper  r  s       rW   test_record_array_setitem,TestPrangeSpecific.test_record_array_setitem  sP    hh 123	%	/ 	988!;?/7j 	 	:rZ   c                     [         R                  " S[         R                  4/5      nS n[         R                  " SUS9nS nU R	                  UUU/S9  g )Nr   c                 l    U R                   n[        U R                   5       H  nSU-   U S   U'   M     U $ )Nr  r   )rB  r  )r
  r  r  s      rW   r  KTestPrangeSpecific.test_record_array_setitem_yield_array.<locals>.test_impl  s4    A6;;'!"QsA (MrZ   r  r>  c                 B    [         R                  R                  X5        g r\   r  r   s     rW   r  JTestPrangeSpecific.test_record_array_setitem_yield_array.<locals>.comparer  r  rZ   r  )r   r?  r  r  r	  )rT   r
  r  r
  r  s        rW   %test_record_array_setitem_yield_array8TestPrangeSpecific.test_record_array_setitem_yield_array  sV    hhbgg/0	 "K0	* 	9!/7j 	 	:rZ   c                 0    S nU R                  USS5        g )Nc                     [         R                  " U 45      nUS:X  a#  [        U 5       H  nX#==   S-  ss'   M     US   $ [        U 5       H  nX#==   S-  ss'   M     US   $ )Nr   r
  r   r	  )rB  caser  r  s       rW   r  4TestPrangeSpecific.test_issue7501.<locals>.test_impl  sc    XXtg&FqytAINI %
 !9 tAINI %!9rZ   r  r   r
	  r*  s     rW   test_issue7501!TestPrangeSpecific.test_issue7501  s    	 	9a+rZ   c                 n    S nSn[         R                  R                  U5      nU R                  X5        g )Nc                    Sn[         R                  " / SQ5      nUR                  S   nU R                  S   nSn[        U5       H  nX   nXr-
  S-  * SUS-  -  -  n[         R                  " U5      n	XY[         R
                  " X-  5      -
  [         R
                  " [         R                  " [         R                  " X-
  5      5      5      -   -  nM     U$ )Nrn  )r	  r  r  r   r
  )r   r  r  r  r  rp  r  rr  )
r  r   pointsr  r  expsr  r  r~  rS  s
             rW   r  6TestPrangeSpecific.test_kde_example.<locals>.test_impl  s    AXX./FQA
AD1XDzAo%!ad(3FF1IBFF15M)BFF266"&&-3H,III	 
 KrZ   r  )r   r  r  r	  )rT   r  r  r  s       rW   test_kde_example#TestPrangeSpecific.test_kde_example  s.    	 IINN19(rZ   c                 X    S n[         R                  " S5      nU R                  X5        g )Nc                     [         R                  " U 5      n[         R                  " U 5      n[        [	        U 5      5       H  nUR                  5       X'   M     U$ r\   )r   r	  r  r  r   r  )r   r  r  r  s       rW   r  4TestPrangeSpecific.test_issue7578.<locals>.test_impl  sC    a A&&)C3q6]wwy # HrZ   r  )r   r  r	  r  s      rW   test_issue7578!TestPrangeSpecific.test_issue7578  s$    	 IIcN9(rZ   r   N)#r   rO   r   r   rl  r	  r	  r	  r	  r=   r
  r

  r
  r
  r 
  r%
  r*
  r1
  r8
  rC
  rH
  rW
  r`
  re
  rl
  rq
  r
  r
  r
  r
  r
  r
  r9   r
  r   r   rZ   rW   r	  r	    s    >	)2&& , ,00
2"JH))
)
>&*B.	+-,-6)3(&JJ::$,)& ) )rZ   r	  c                   ^    \ 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g)TestParforChunksizingi  z2
Tests chunksize handling in ParallelAccelerator.
Fc                     [        S5        g r  r   r^   s    rW   setUpTestParforChunksizing.setUp  
    q!rZ   c                     [        S5        g r  r
  r^   s    rW   tearDownTestParforChunksizing.tearDown  r
  rZ   c                     U R                  [        5       S5        [        S5        U R                  [        5       S5        [        S5        U R                  [        5       S5        g Nr   r  )r   r   r   r^   s    rW   $test_python_parallel_chunksize_basic:TestParforChunksizing.test_python_parallel_chunksize_basic  sN    /115q!/115q!/115rZ   c                     U R                  [        5       S5        [        S5         U R                  [        5       S5        S S S 5        U R                  [        5       S5        g ! , (       d  f       N)= fr
  )r   r   r   r^   s    rW   test_python_with_chunksize0TestParforChunksizing.test_python_with_chunksize  sT    /115"35q9 #/115 #"s   A$$
A2c                     [         S 5       n[         S 5       nU R                  U" 5       S5        U" S5        U R                  U" 5       S5        U" S5        U R                  U" 5       S5        g )Nc                      [        5       $ r\   )r   r   rZ   rW   get_csHTestParforChunksizing.test_njit_parallel_chunksize_basic.<locals>.get_cs  s    )++rZ   c                     [        U 5      $ r\   r
  r  s    rW   set_csHTestParforChunksizing.test_njit_parallel_chunksize_basic.<locals>.set_cs  s    )!,,rZ   r   r  r_
  )rT   r
  r
  s      rW   "test_njit_parallel_chunksize_basic8TestParforChunksizing.test_njit_parallel_chunksize_basic  sn    		, 
	, 
	- 
	- 	1%q	1%q	1%rZ   c                     [         S 5       nU" S5      u  p#nU R                  US5        U R                  US5        U R                  US5        g )Nc                     [        5       n[        S5         [        5       nS S S 5        [        5       nUWU4$ ! , (       d  f       N= f)Nr  )r   r   )r   cs1cs2cs3s       rW   r  ATestParforChunksizing.test_njit_with_chunksize.<locals>.test_impl  s<    (*C#A&,. '(*CS=  '&s	   8
Ar  r   r_
  )rT   r  r
  r
  r
  s        rW   test_njit_with_chunksize.TestParforChunksizing.test_njit_with_chunksize  sS    		! 
	! "!#a a a rZ   c                    [        SS9S 5       nS Hs  n[        S5       Ha  nU" US-   U5      u  pEU R                  [        R                  " US:H  5      5        U R                  [        R                  " US:H  5      5        Mc     Mu     g	)
zTest that all the iterations get run if you set the
chunksize.  Also check that the chunksize that each
worker thread sees has been reset to 0. Tr   c                 6   [         R                  " U5      n[         R                  " US5      n[        R                  " U 5         [        R
                  " U5       H  n[        R                  " 5       X4'   SX$'   M      S S S 5        X#4$ ! , (       d  f       X#4$ = f)Nir  )r   r  r  r   r   r   r   )csr  rm  inner_csr  s        rW   r  LTestParforChunksizing.test_all_iterations_reset_chunksize.<locals>.test_impl  sw    ((1+Cwwq#H))"-aA"'">">"@HKCF ) . = 	 .- = s   9B
B)i  i  i  i  rW  r   r  r   N)r   r  r^  r   all)rT   r  r  r  rm  r
  s         rW   #test_all_iterations_reset_chunksize9TestParforChunksizing.test_all_iterations_reset_chunksize  sy    
 
t		! 
	! 'A2Y )!A#q 1sby 12x1} 56  'rZ   c                     U R                  [        5       n[        S 5       nU" 5         S S S 5        SnU R                  U[	        WR
                  5      5        g ! , (       d  f       N6= f)Nc                      [        S5        g )NrJ   r
  r   rZ   rW   neg_testMTestParforChunksizing.test_njit_parallel_chunksize_negative.<locals>.neg_test(  s
    &r*rZ   /chunksize must be greater than or equal to zero)r  r   r   r   r'  r  )rT   r  r
  r  s       rW   %test_njit_parallel_chunksize_negative;TestParforChunksizing.test_njit_parallel_chunksize_negative%  sZ    z*f+ + J + @c3v//01 +*s   A
A(c                     U R                  [        5       n[        S5        S S S 5        SnU R                  U[	        WR
                  5      5        g ! , (       d  f       N6= f)NrJ   r
  )r  r   r   r   r'  r  rT   r  r  s      rW   'test_python_parallel_chunksize_negative=TestParforChunksizing.test_python_parallel_chunksize_negative1  sI    z*f"2& + @c3v//01	 +*   A
A c                     U R                  [        R                  5       n[        S 5       nU" 5         S S S 5        SnU R	                  U[        WR                  5      5        g ! , (       d  f       N6= f)Nc                      [        S5        g )Ninvalid_typer
  r   rZ   rW   r   MTestParforChunksizing.test_njit_parallel_chunksize_invalid_type.<locals>.impl;  s
    &~6rZ   )The parallel chunksize must be an integer)r  r   TypingErrorr   r   r'  r  )rT   r  r   r  s       rW   )test_njit_parallel_chunksize_invalid_type?TestParforChunksizing.test_njit_parallel_chunksize_invalid_type9  s_    v112f7 7 F 3 :c3v//01 32s   A$$
A2c                     U R                  [        5       n[        S5        S S S 5        SnU R                  U[	        WR
                  5      5        g ! , (       d  f       N6= f)Nr
  r
  )r  	TypeErrorr   r   r'  r  r
  s      rW   +test_python_parallel_chunksize_invalid_typeATestParforChunksizing.test_python_parallel_chunksize_invalid_typeD  sH    y)V">2 * :c3v//01	 *)r
  r   N)r   rO   r   r   rl  r   r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r   r   rZ   rW   r
  r
    sF     """66& ! 70
22	22rZ   r
  c                       \ rS rSrSrS r\\R                  S 5       5       r	\\R                  " SS0S9S 5       5       r
\\R                  " SS0S9S	 5       5       rS
rg)TestParforsVectorizeriL  Fc           
         UR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUUS	.n	/ n
U	R                  5        H  u  pU
R                  [        X5      5        M!     U
S
      U
S      [	        U Vs/ s H  n[
        R                  " U5      PM     sn5      nU R                  US 5      nUS:X  a  U R                  X5      nOU R                  X5      nU R                  U5      nU(       a  [        R                  " S5      nUR                  UR                  R                  5       5      nU R!                  [#        U5      S5        U R%                  US
   U5        U R'                  U0 5        UsS S S 5        sS S S 5        $ s  snf ! , (       d  f       O= fS S S 5        g ! , (       d  f       g = f)Nr   Fcpu_namezskylake-avx512
assertionsTcpu_featuresz-prefer-256-bit)NUMBA_CPU_NAMENUMBA_CPU_FEATURESr   r   z%call\s+\w+\*\s+@do_scheduling_(\w+)\()r   rg  r   r6   r   r   r   r  r   r   rJ  rO  rr  findallr  r  r   r   r   assertNotEqual)rT   r   schedule_typer   r   r   r
  r
  r
  env_opts	overridesr   r  r   r   pfunc_vectorizabler  asmschedtymatchess                       rW   get_gufunc_asm$TestParforsVectorizer.get_gufunc_asmS  s   ::j%0::j*:;ZZd3
 zz.2CD&.*6 	NN$DA067 % q\9Q<$7$Qa$78C!%!:!:4!F4556HN,,-?E &&t,C**%MN!//$,,*C*C*EF''Ga8  ];##C,% (<\\7 (<\\\s7   G
F, F'8CF,	G'F,,
F:	6G
Gc                 J   S n[         R                  " S5      nU R                  USUSS9nU R                  USUSS9nUR                  5        HK  nU R	                  SU;   5        U R	                  SU;   =(       d    S	U;   5        U R	                  S
U;   5        MM     UR                  5        Hs  nU R	                  SU;  5        U R	                  SU;  5        U R	                  SU;   =(       a    S	U;  5        U R	                  SU;   5        U R	                  S
U;  5        Mu     g)This checks that if fastmath is set and the underlying hardware
is suitable, and the function supplied is amenable to fastmath based
vectorization, that the vectorizer actually runs.
c                 v    [        U 5      nSn[        U5       H  nU[        R                  " U5      -  nM     U$ r  r   r  r   rq  )r  r  rS  r  s       rW   will_vectorizeJTestParforsVectorizer.test_vectorizer_fastmath_asm.<locals>.will_vectorize  s5    AAC1Xrwwqz! JrZ   r  r   Tr   Fvaddpdvsqrtpd__svml_sqrtzmmvsqrtsdvaddsdN)r   r  r
  r  r^  )rT   r  r   fast_asmslow_asmr  s         rW   test_vectorizer_fastmath_asm2TestParforsVectorizer.test_vectorizer_fastmath_asmx  s   	 hhrl&&~z304 ' 6&&~z305 ' 7"A OOHM*OOIN@mq.@AOOEQJ' # "AOOHA-.OOIQ./OOINE}A/EFOOHM*OOEN+ #rZ   NUMBA_BOUNDSCHECK0)envvarsc                 &   S nS n[         R                  " S5      nU R                  [        R                  5        U R                  USUSS9nU R                  USUSS9nUR                  5        H?  nU R                  SU;  5        U R                  S	U;   5        U R                  S
U;  5        MA     UR                  5        HK  nU R                  SU;   =(       d    SU;   5        U R                  SU;   5        U R                  S
U;   5        MM     g)r   c                 x    [        U 5      n[        U* S5       H  n[        R                  " X   5      X'   M     U $ r  r  r  r  r  s      rW   will_not_vectorizeTTestParforsVectorizer.test_unsigned_refusal_to_vectorize.<locals>.will_not_vectorize  s3    AAA2q\wwqt} "HrZ   c                 t    [        U 5      n[        U5       H  n[        R                  " X   5      X'   M     U $ r\   r  r  s      rW   r  PTestParforsVectorizer.test_unsigned_refusal_to_vectorize.<locals>.will_vectorize  s/    AA1Xwwqt} HrZ   r  r   Tr  r   r  r
  r	  r  vmovupdN)r   r  r  r   BOUNDSCHECKr
  r  r^  )rT   r  r  r   	novec_asmvec_asmr  s          rW   "test_unsigned_refusal_to_vectorize8TestParforsVectorizer.test_unsigned_refusal_to_vectorize  s   		 hhrl 	++,''(:Hc15 ( 7	 %%nj#15 & 7 !!#AOOIQ./OOIN+OOEN+ $ !A OOIN@mq.@AOOIN+OOEQJ' "rZ   c                 6   S nS nU R                  [        R                  5        U R                  USSS9nU R                  USSS9nS nUR	                  5        H  u  pgU" U5      n  O   UR	                  5        H  u  pgU" U5      n	  O   SS	KJn
  U R                  [        W5      [        W	5      5        [        X5       HT  u  pX:X  a  M  U
" S
 X5      nUR                  5       nU H(  nUS   S:X  d  M  U R                  XS   US    S5        M*     MV     g)zThis checks vectorization for signed vs unsigned variants of a
trivial accumulator, the only meaningful difference should be the
presence of signed vs. unsigned unpack instructions (for the
induction var).
c                  >    Sn Sn[        U * S5       H  nX-  nM	     U$ )N   rh  r   r  r  s      rW   signed_variantMTestParforsVectorizer.test_signed_vs_unsigned_vec_asm.<locals>.signed_variant  s*    AAA2q\ "HrZ   c                  :    Sn Sn[        U 5       H  nX-  nM	     U$ )Nr"  rh  r  r  s      rW   unsigned_variantOTestParforsVectorizer.test_signed_vs_unsigned_vec_asm.<locals>.unsigned_variant  s&    AA1X HrZ   r   Tr  r   c                 V   / nU R                  5        H  nUR                  5       nUS:w  d  M  UR                  S5      (       a  M3  UR                  S5      (       a  MK  UR                  S5      (       a  Mc  SU;   a  Mk  UR                  [        R
                  " SSU5      5        M     U$ )N rI   rK   "r:  z[	])rN  strip
startswithr   rO  sub)r
  rS  r   spds       rW   strip_instrsKTestParforsVectorizer.test_signed_vs_unsigned_vec_asm.<locals>.strip_instrs  s    C^^%ggi "9cnnS&9&9(+s(;(;(+s(;(;(?3(F

266&"c#:; & JrZ   r   )SequenceMatcherc                     U S:H  $ )N	r   r  s    rW   rE  GTestParforsVectorizer.test_signed_vs_unsigned_vec_asm.<locals>.<lambda>  s    drZ   insertr  rJ   r  N)r  r   r  r
  rg  difflibr1  r   r   r   get_opcodes)rT   r#  r&  
signed_asmunsigned_asmr/  r   r  signed_instrunsigned_instrsmr   r   r  r`  rc  s                   rW   test_signed_vs_unsigned_vec_asm5TestParforsVectorizer.test_signed_vs_unsigned_vec_asm  s+   		 	++,((59 ) ;
**+;Z59 + ;	 $$&DA'?L ' !&&(DA)!_N ) 	2 	\*C,?@5DAv*A1mmoB!u(((b6"R&)93?  6rZ   r   N)r   rO   r   r   r   r
  r7   r3   run_test_in_subprocessr  r  r=  r   r   rZ   rW   r
  r
  L  s    
 "#J $$%, % %,N $$.A3-GH)( I )(V  $$.A3-GH=@ I =@rZ   r
  c                   *    \ rS rSrSrS rS rS rSrg) TestParforReductionSetNumThreadsi  zCTest execution correctness on reductions with set_num_threads.
    c                    ^^ [         R                  nSU-  mUS-
  m[        SS9UU4S j5       nUR                  T5      nU" T5      nU R	                  X45        g )Nr
  r   Tr   c                    > Sn[        U 5        [        T5       H$  nSUT-  -   n[        U5        [        5       nX-  nM&     U$ r  r   r   r   nthreadsrS  r  
local_maskgntr	  masks        rW   udt6TestParforReductionSetNumThreads.test_add.<locals>.udt  I    CH%AYT\

+%'
	 
 JrZ   r   r:  r   r%  r  rT   r  rJ  expectr  r	  rI  s        @@rW   test_add)TestParforReductionSetNumThreads.test_add  ^    $$E1u	t		 
	 T"$i,rZ   c                    ^^ [        S[        R                  5      nSU-  mUS-
  m[        SS9UU4S j5       nUR	                  T5      nU" T5      nU R                  X45        g )Nr  r
  r   Tr   c                    > Sn[        U 5        [        T5       H$  nSUT-  -   n[        U5        [        5       nX-  nM&     U$ r8  rD  rE  s        rW   rJ  6TestParforReductionSetNumThreads.test_mul.<locals>.udt1  rL  rZ   )r  r   r:  r   r%  r  rN  s        @@rW   test_mul)TestParforReductionSetNumThreads.test_mul*  sg     6++,E1u	t		 
	 T"$i,rZ   c                    ^^ [         R                  nSU-  mUS-
  m[        SS9UU4S j5       nUR                  T5      nU" T5      nU R	                  X45        g )Nr
  r   Tr   c                    > Sn[        U 5        [        T5       H+  nSUT-  -   n[        U5        [        5       n[        X5      nM-     U$ r8  )r   r   r   r   rE  s        rW   rJ  6TestParforReductionSetNumThreads.test_max.<locals>.udtE  sK    CH%AYT\

+%'#m	 
 JrZ   rM  rN  s        @@rW   r  )TestParforReductionSetNumThreads.test_max@  rR  rZ   r   N)	r   rO   r   r   rl  rP  rV  r  r   r   rZ   rW   rA  rA    s    -(-,-rZ   rA  c                   B    \ rS rSr\R
                  " 5       S 5       rSrg)TestDiagnosticEnvVariU  c                     S[         R                  S'   [        5        n[        SS9S 5       nU" 5         S S S 5        WR	                  5       nU R                  SU5        g ! , (       d  f       N1= f)N4NUMBA_PARALLEL_DIAGNOSTICSTr   c                  |    Sn [         R                  " U [         R                  S9n[        U 5       H  nSX'   M	     U$ )Nr@  r>  r   )r   r  r  r   )r  r   r  s      rW   r   <TestDiagnosticEnvVar.test_diagnostics_env_var1.<locals>.impl[  s5    HHa

3AAD #rZ   zParallel Accelerator Optimizing)r@  rA  r4   r   r\  r   )rT   r]  r   
the_outputs       rW   test_diagnostics_env_var1.TestDiagnosticEnvVar.test_diagnostics_env_var1W  sb    14

/0&4  ! F  __&
7D s   A  
A.r   N)r   rO   r   r   r3   r?  rd  r   r   rZ   rW   r]  r]  U  s    $$&E 'ErZ   r]  __main__r\   )r  r@  rO  r  r   r   r>  
subprocessr   r  rO  	functoolsr   r  r   numpy.randomr   r  collectionsr   r   r   	itertoolsr	   r
   rB  numba.parfors.parforr   r   r   r   r   r   r   r   r   
numba.corer   r   r   r   r   r   r   r   numba.typedr   r   numba.extendingr   r   r    r!   r"   r#   numba.core.registryr$   numba.core.annotationsr%   numba.core.ir_utilsr&   r'   r(   r)   r*   r+   r,   numba.np.unsafe.ndarrayr-   r  numba.core.compilerr.   r/   numba.core.compiler_machineryr0   r1   numba.core.typed_passesr2   numba.tests.supportr3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   numba.core.extendingrA   numba.core.bytecoderB   rC   rQ  r  rE   r  r   x86_onlyrS  rT  r   r   r   r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rM  r]  r  r   rA  r  r  r	  r	  r	  r
  r
  rA  r]  r   mainr   rZ   rW   <module>r|     s    	 	 
   
        /  "  = = =Q Q Q "F F * 3; ; ; C B E 2@ @ @ @ 2 4    : : :z ??8++-5GGY  ,.@A	 ^h ^ ^B	 ?B	A$"D
 D	
!6 
! h@o h@ h@V 'Ko 'K 'KT VOo VO VOr2X 2, x/ x xv! # # #4 f% f% f%R	 "; "; ";J :M :M :Mz B9o B9 B9J zD_ zD zDzT_ Tn a1n a1 a1H   {) {) {)z w2H w2 w2t 	A@N A@ 
 A@H ?-x ?- ?-D E8 E E$ zMMO rZ   