Ë
    èÿæip¦  ã                   ó`  — d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZmZmZmZmZmZmZmZ d dlmZmZmZmZ d dlmZmZ d dlmZmZm Z  d d	l!m"Z" d d
l#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- d dl.m/Z/m0Z0m1Z1m2Z2 d dl3m4Z4m Z m5Z5 d dl6m7Z7 d dl8Z8eZ9 e7dejt                  fdejt                  fg«       G d„ de;«      «       Z<dZ=dZ> G d„ de«      Z? e5dd¬«       G d„ de4«      «       Z@ G d„ de«      ZA G d„ de«      ZB G d„ d e«      ZC G d!„ d"e«      ZDeEd#k(  r e8jŒ                  «        yy)$é    N)Ú
namedtuple)ÚStringIO)ÚnjitÚtypeofÚprange)ÚtypesÚtypingÚirÚbytecodeÚpostprocÚcpuÚregistryÚutils)ÚTestCaseÚtagÚskip_parfors_unsupportedÚskip_unless_scipy)ÚEquivSetÚArrayAnalysis)ÚCompilerÚFlagsÚPassManager)Úremove_dead)
ÚExtractByteCodeÚTranslateByteCodeÚ	FixupArgsÚIRProcessingÚDeadBranchPruneÚRewriteSemanticConstantsÚGenericRewritesÚWithLiftingÚ
PreserveIRÚInlineClosureLikes)ÚNopythonTypeInferenceÚAnnotateTypesÚNopythonRewritesÚIRLegalization)ÚFunctionPassr   Úregister_pass)ÚjitclassÚLÚTc                   ó   — e Zd Zd„ Zy)ÚExampleClass3700c                 ó&   — || _         |dz   | _        y ©Né   )r+   r,   )ÚselfÚns     út/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_array_analysis.pyÚ__init__zExampleClass3700.__init__+   s   € ØˆŒØ�Q‘ˆ�ó    N)Ú__name__Ú
__module__Ú__qualname__r5   © r6   r4   r.   r.   )   s   „ ór6   r.   )g333333ó?©é   é   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚTestEquivSetz'
    Test array_analysis.EquivSet.
    c                 ó  — t        «       }|j                  dd«       | j                  |j                  dd«      «       | j                  |j                  dd«      «       |j                  dd«       | j                  |j                  dd«      «       | j	                  |j                  dd«      «       |j                  dd«       | j                  |j                  dddd«      «       | j	                  |j                  dd«      «       y ©NÚaÚbÚcÚdÚe)r   Úinsert_equivÚ
assertTrueÚis_equivÚassertFalse)r2   Ús1s     r4   Útest_insert_equivzTestEquivSet.test_insert_equiv:   sÅ   € Ü‹ZˆØ
�‰˜˜SÔ!Ø�‰˜Ÿ™ C¨Ó-Ô.Ø�‰˜Ÿ™ C¨Ó-Ô.Ø
�‰˜˜SÔ!Ø�‰˜Ÿ™ C¨Ó-Ô.Ø×Ñ˜Ÿ™ S¨#Ó.Ô/Ø
�‰˜˜SÔ!Ø�‰˜Ÿ™ C¨¨c°3Ó7Ô8Ø×Ñ˜Ÿ™ S¨#Ó.Õ/r6   c                 óH  — t        «       }t        «       }|j                  |«      }| j                  |j                  «       «       |j	                  dd«       |j                  |«      }| j                  |j                  «       «       |j	                  dd«       |j                  |«      }| j                  |j                  «       «       |j	                  dd«       |j                  |«      }| j                  |j                  «       «       |j	                  dd«       |j	                  dd«       |j                  |«      }| j                  |j                  dd«      «       | j                  |j                  dd«      «       | j                  |j                  dd«      «       y rA   )r   Ú	intersectrH   Úis_emptyrG   rI   rJ   )r2   rK   Ús2Úrs       r4   Útest_intersectzTestEquivSet.test_intersectF   s-  € Ü‹ZˆÜ‹ZˆØ�L‰L˜ÓˆØ�‰˜Ÿ
™
›Ô%Ø
�‰˜˜SÔ!Ø�L‰L˜ÓˆØ�‰˜Ÿ
™
›Ô%Ø
�‰˜˜SÔ!Ø�L‰L˜ÓˆØ�‰˜Ÿ
™
›Ô%Ø
�‰˜˜SÔ!Ø�L‰L˜ÓˆØ�‰˜Ÿ
™
›Ô%Ø
�‰˜˜SÔ!Ø
�‰˜˜SÔ!Ø�L‰L˜ÓˆØ�‰˜Ÿ
™
 3¨Ó,Ô-Ø×Ñ˜Ÿ™ C¨Ó-Ô.Ø×Ñ˜Ÿ™ C¨Ó-Õ.r6   N)r7   r8   r9   Ú__doc__rL   rR   r:   r6   r4   r?   r?   5   s   „ ñò
0ó/r6   r?   FT)Úanalysis_onlyÚmutates_CFGc                   ó   — e Zd ZdZd„ Zd„ Zy)ÚArrayAnalysisPassÚarray_analysis_passc                 ó.   — t        j                  | «       y ©N)r(   r5   )r2   s    r4   r5   zArrayAnalysisPass.__init__`   s   € Ü×Ñ˜dÕ#r6   c                 ó  — t        |j                  |j                  |j                  |j                  «      |_        |j
                  j                  |j                  j                  «       t        j                  |j                  «      }|j                  «        |j                  j                  |j                  j                  «       «       |j                  r3t        |j                  «      dkD  r|j                  |j                  «       y)Nr1   F)r   Ú	typingctxÚfunc_irÚtypemapÚ	calltypesÚarray_analysisÚrunÚblocksr   ÚPostProcessorÚfunc_ir_copiesÚappendÚcopyÚtest_idempotenceÚlen)r2   ÚstateÚ	post_procs      r4   Úrun_passzArrayAnalysisPass.run_passc   s·   € Ü,¨U¯_©_¸e¿m¹mØ-2¯]©]¸E¿O¹Oó MˆÔà×Ñ× Ñ  §¡×!5Ñ!5Ô6Ü×*Ñ*¨5¯=©=Ó9ˆ	Ø�‰ŒØ×Ñ×#Ñ# E§M¡M×$6Ñ$6Ó$8Ô9Ø×!Ò!¤c¨%×*>Ñ*>Ó&?À!Ò&CØ×"Ñ" 5×#7Ñ#7Ô8Ør6   N)r7   r8   r9   Ú_namer5   rk   r:   r6   r4   rW   rW   \   s   „ à!€Eò$ó	r6   rW   c                   ó*   — e Zd Ze	 	 dd„«       Zdd„Zy)ÚArrayAnalysisTesterNc           	      ó¼   — |€i }|s
t        «       }d|_        |€t        j                  j                  }|€t        j                  j
                  } | |||||||«      S ©NT)r   Únrtr   Ú
cpu_targetÚtyping_contextÚtarget_context)ÚclsÚargsÚreturn_typeÚflagsÚlocalsÚlibraryrs   rt   s           r4   Úmk_pipelinezArrayAnalysisTester.mk_pipelineq   si   € ð ˆ>ØˆFÙÜ“GˆEØˆŒ	ØÐ!Ü%×0Ñ0×?Ñ?ˆNØÐ!Ü&×1Ñ1×@Ñ@ˆNÙ�> >°7¸DÀ+Ø˜&ó"ð 	"r6   c                 ó(  — t         j                  j                  |«      | j                  _        t        «       j                  | j                  «       d| j                  _        d| j                  _        | j                  }g |_	        ||_
        d}t        |«      }|j                  t        d«       |j                  t        d«       |j                  t        d«       |j                   j"                  sB|j                  t$        d«       |j                  t&        d«       |j                  t(        d	«       |j                  t*        d
«       |j                  t,        d«       |j                   j"                  s|j                  t.        d«       |j                  t0        d«       |r|j                  t0        d«       |j                  t2        d«       |j                  t4        d«       |j7                  «        |j9                  |«       |j:                  S )z4
        Populate and run compiler pipeline
        r:   NÚarray_analysis_testingzanalyzing bytecodezfix up argszprocessing IRznopython rewriteszrewrite semantic constantszdead branch pruningz(inline calls to locally defined closuresznopython frontendzarray analysiszidempotence array analysisz$ensure IR is legal prior to loweringzannotate types)r   ÚFunctionIdentityÚfrom_functionri   Úfunc_idr   rk   ÚliftedÚlifted_fromrd   rg   r   Úadd_passr   r   r   rx   Úno_rewritesr    r   r   r#   r$   r&   rW   r'   r%   Úfinalizera   r`   )r2   Úfuncrg   ri   ÚnameÚpms         r4   Úcompile_to_irz!ArrayAnalysisTester.compile_to_ir€   s„  € ô &×6Ñ6×DÑDÀTÓJˆ�
‰
ÔÜÓ×"Ñ" 4§:¡:Ô.àˆ�
‰
ÔØ!%ˆ�
‰
ÔØ—
‘
ˆØ!ˆÔØ!1ˆÔà'ˆÜ˜ÓˆØ
�‰Ô%Ð';Ô<Ø
�‰”I˜}Ô-Ø
�‰”L /Ô2à�{‰{×&Ò&Ø�K‰KœÐ)<Ô=Ø�K‰KÔ0Ð2NÔOØ�K‰KœÐ)>Ô?Ø
�‰Ô&Ø>ô	@ð 	�‰Ô)Ð+>Ô?à�{‰{×&Ò&Ø�K‰KÔ(Ð*=Ô>ð 	�‰Ô%Ð'7Ô8Ùà�K‰KÔ)Ð+GÔHà
�‰”NÐ$JÔKØ
�‰”MÐ#3Ô4ð 	�‰ŒØ
�‰ˆuŒØ×#Ñ#Ð#r6   )NNNNNNrZ   )r7   r8   r9   Úclassmethodr{   r‰   r:   r6   r4   rn   rn   o   s   „ àØDHØFJò"ó ð"ô+$r6   rn   c                   ór   — e Zd Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zy)ÚTestArrayAnalysisc                 ó  — g }|D ]^  }t        |j                  |j                  |«       t        «       }|j	                  |¬«       |j                  |j                  «       «       Œ` | j                  t        t        |«      «      dk(  «       y )N)Úfiler1   )
r   rb   Ú	arg_namesr   Údumpre   ÚgetvaluerH   rh   Úset)r2   Úir_listÚoutputsr]   Úoutputs        r4   Ú
compare_irzTestArrayAnalysis.compare_ir°   sk   € ØˆÛˆGÜ˜Ÿ™¨×(9Ñ(9¸7ÔCÜ“ZˆFØ�L‰L˜fˆLÔ%Ø�N‰N˜6Ÿ?™?Ó,Õ-ð	 ð
 	�‰œœC ›LÓ)¨QÑ.Õ/r6   Nc                 ób  — |€g }|€g }t         j                  |«      }|r| j                  nd„ }|j                  ||«      }|r|D ]  }	 |	|j                  d   «       Œ |€+| j                  | j                  |j                  «      «       y|D ]  }	 |	|j                  |j                  «       Œ! y)z<
        Compile the given function and get its IR.
        Nc                  ó   — y)Nr:   r:   )Úxs    r4   Ú<lambda>z5TestArrayAnalysis._compile_and_test.<locals>.<lambda>Â   s   € Àrr6   r   )	rn   r{   r–   r‰   Ú
equiv_setsrH   Ú_has_no_assertcallr]   r^   )
r2   ÚfnÚarg_tysÚassertsÚequivsÚ
idempotentÚtest_pipelinerg   Úanalysisr†   s
             r4   Ú_compile_and_testz#TestArrayAnalysis._compile_and_test¹   s­   € ð ˆ?ØˆGØˆ>ØˆFÜ+×7Ñ7¸Ó@ˆÙ.8˜4Ÿ?š?¹kÐØ ×.Ñ.¨rÐ3CÓDˆÙÛ�á�X×(Ñ(¨Ñ+Õ,ð ð ˆ?Ø�O‰O˜D×3Ñ3°H×4DÑ4DÓEÕFã�Ù�X×%Ñ% x×'7Ñ'7Õ8ñ  r6   c                 óÊ  — dj                  dj                  |«      «      }|j                  j                  «       D ]¦  \  }}|j	                  d¬«      D ]Œ  }|j                  |j                  j                  «      }t        |t        j                  «      sŒC|j                  dk(  sŒS||j                  d   j                     }	|	j                  j                  |«      sŒ‹  y Œ¨ y)	NzSizes of {} do not matchz, Úcall©ÚopÚassert_equivr   TF)ÚformatÚjoinrb   ÚitemsÚ
find_exprsÚget_definitionr†   r‡   Ú
isinstancer
   ÚGlobalrv   Úliteral_valueÚ
startswith)
r2   r]   r^   rv   ÚmsgÚlabelÚblockÚexprr�   Útyps
             r4   Ú_has_assertcallz!TestArrayAnalysis._has_assertcallÎ   s²   € Ø(×/Ñ/°·	±	¸$³Ó@ˆØ#ŸN™N×0Ñ0Ö2‰LˆE�5Ø×(Ñ(¨FÐ(Ö3�Ø×+Ñ+¨D¯I©I¯N©NÓ;�Ü˜b¤"§)¡)Õ,°·±¸NÓ1JØ! $§)¡)¨A¡,×"3Ñ"3Ñ4�CØ×(Ñ(×3Ñ3°CÕ8Ú#ñ 4ð 3ð r6   c                 ó¦  — |j                   j                  «       D ]´  \  }}|j                  d¬«      D ]š  }|j                  dk(  sŒ|j	                  |j
                  d¬«      }|j	                  |d¬«      }t        |t        j                  «      r|j                  n|}t        |t        j                  «      r|j                  n|}||k(  sŒ™  y Œ¶ y)NÚgetattrr§   ÚshapeT)Úlhs_onlyF)
rb   r¬   r­   Úattrr®   Úvaluer¯   r
   ÚVarr‡   )r2   r]   r™   r´   rµ   r¶   ÚyÚzs           r4   Ú_has_shapecallz TestArrayAnalysis._has_shapecallÙ   s®   € Ø#ŸN™N×0Ñ0Ö2‰LˆE�5Ø×(Ñ(¨IÐ(Ö6�Ø—9‘9 Ó'Ø×.Ñ.¨t¯z©zÀDÐ.ÓI�AØ×.Ñ.¨q¸4Ð.Ó@�AÜ",¨Q´·±Ô"7˜Ÿš¸Q�AÜ",¨Q´·±Ô"7˜Ÿš¸Q�AØ˜A“vÚ#ñ 7ð 3ð r6   c                 ó  — |j                   j                  «       D ]n  \  }}|j                  d¬«      D ]T  }|j                  |j                  j
                  «      }t        |t        j                  «      sŒC|j
                  dk(  sŒS  y Œp y)Nr¦   r§   r©   FT)	rb   r¬   r­   r®   r†   r‡   r¯   r
   r°   )r2   r]   r´   rµ   r¶   r�   s         r4   rœ   z$TestArrayAnalysis._has_no_assertcallå   sn   € Ø#ŸN™N×0Ñ0Ö2‰LˆE�5Ø×(Ñ(¨FÐ(Ö3�Ø×+Ñ+¨D¯I©I¯N©NÓ;�Ü˜b¤"§)¡)Õ,°·±¸NÓ1JÚ ñ 4ð 3ð
 r6   c                 ó   ‡ ‡— ˆˆ fd„S )Nc                 óH   •— ‰j                  ‰j                  | |‰«      «      S rZ   )rH   r¸   ©r]   r^   rv   r2   s     €€r4   rš   z/TestArrayAnalysis.with_assert.<locals>.<lambda>î   s    ø€ ¨¯©Ø× Ñ  ¨'°4Ó8ô):r6   r:   ©r2   rv   s   ``r4   Úwith_assertzTestArrayAnalysis.with_assertí   ó   ù€ ô:ð 	:r6   c                 ó   ‡ ‡— ˆˆ fd„S )Nc                 óH   •— ‰j                  ‰j                  | |‰«      «      S rZ   )rJ   r¸   rÆ   s     €€r4   rš   z2TestArrayAnalysis.without_assert.<locals>.<lambda>ò   s"   ø€ ¨×(8Ñ(8Ø× Ñ  ¨'°4Ó8ô):r6   r:   rÇ   s   ``r4   Úwithout_assertz TestArrayAnalysis.without_assertñ   rÉ   r6   c                 ó   ‡ ‡‡— ˆfd„Šˆˆ fd„S )Nc                 ó|   •— t        ‰«      }t        |dz
  «      D ]  }| j                  ‰|   ‰|dz
     «      rŒ y y©Nr1   FT©rh   ÚrangerI   ©Ú	equiv_setr3   Úirv   s      €r4   Úcheckz+TestArrayAnalysis.with_equiv.<locals>.checkö   sB   ø€ Ü�D“	ˆAÜ˜1˜q™5–\�Ø ×)Ñ)¨$¨q©'°4¸¸A¹±;Õ?Ù ð "ð r6   c                 ó2   •— ‰j                   ‰| «      «      S rZ   ©rH   ©rÓ   rÕ   r2   s    €€r4   rš   z.TestArrayAnalysis.with_equiv.<locals>.<lambda>ü   ó   ø€  §¡±°yÓ1AÔ!Br6   r:   ©r2   rv   rÕ   s   ``@r4   Ú
with_equivzTestArrayAnalysis.with_equivõ   ó   ú€ ô	ô CÐBr6   c                 ó   ‡ ‡‡— ˆfd„Šˆˆ fd„S )Nc                 ó|   •— t        ‰«      }t        |dz
  «      D ]  }| j                  ‰|   ‰|dz
     «      sŒ y yrÏ   rÐ   rÒ   s      €r4   rÕ   z.TestArrayAnalysis.without_equiv.<locals>.checkÿ   sB   ø€ Ü�D“	ˆAÜ˜1˜q™5–\�Ø×%Ñ% d¨1¡g¨t°A¸±E©{Õ;Ù ð "ð r6   c                 ó2   •— ‰j                   ‰| «      «      S rZ   r×   rØ   s    €€r4   rš   z1TestArrayAnalysis.without_equiv.<locals>.<lambda>  rÙ   r6   r:   rÚ   s   ``@r4   Úwithout_equivzTestArrayAnalysis.without_equivþ   rÜ   r6   c                 ó   ‡ ‡— ˆ ˆfd„S )Nc                 óF   •— ‰j                  ‰j                  | ‰«      «      S rZ   )rH   rÂ   ©r]   Úsr2   r™   s     €€r4   rš   z2TestArrayAnalysis.with_shapecall.<locals>.<lambda>  s   ø€  $§/¡/°$×2EÑ2EÀgÈqÓ2QÔ"Rr6   r:   ©r2   r™   s   ``r4   Úwith_shapecallz TestArrayAnalysis.with_shapecall  s	   ù€ ÜRÐRr6   c                 ó   ‡ ‡— ˆ ˆfd„S )Nc                 óF   •— ‰j                  ‰j                  | ‰«      «      S rZ   )rJ   rÂ   rã   s     €€r4   rš   z5TestArrayAnalysis.without_shapecall.<locals>.<lambda>  s   ø€  $×"2Ñ"2°4×3FÑ3FÀwÐPQÓ3RÔ"Sr6   r:   rå   s   ``r4   Úwithout_shapecallz#TestArrayAnalysis.without_shapecall
  s	   ù€ ÜSÐSr6   c           
      ól  ‡— d„ }| j                  |d| j                  dd«      | j                  dd«      | j                  dd«      g¬	«       d
„ }| j                  |t        j                  fd ¬«       d„ }| j                  |t        j                  t        j                  f| j	                  dd«      g¬«       d„ }| j                  |t        j                  fd ¬«       d„ }| j                  |t        j                  fd ¬«       d„ }| j                  |t        j                  fd ¬«       d„ }| j                  |t        j                  t        j                  f| j	                  dd«      | j                  dd«      g¬«       d„ }| j                  |t        j                  t        j                  f| j	                  dd«      | j                  dd«      g¬«       d„ }	| j                  |	t        j                  t        j                  f| j	                  dd«      | j	                  dd«      g¬«       d„ }
| j                  |
t        j                  f| j	                  dd«      g¬«       d„ }| j                  |t        j                  t        j                  f| j	                  dd«      | j                  dd«      g¬«       d„ }| j                  |d| j                  dd«      g¬	«       d„ }| j                  |d| j                  ddd«      g¬	«       d„ }t        j                  t        j                  d d«      }| j                  |t        j                  ||f«      fd ¬«       d!„ }| j                  |t        j                  f| j                  dd«      g¬	«       t        d"ddg«      Šˆfd#„}| j                  |t        j                  f| j                  d$d%«      g¬	«       d&„ }| j                  |t        j                  t        j                  d d«      fd ¬«       d'„ }| j                  |t        j                  t        j                  d(d«      fd ¬«       d)„ }| j                  |t        j                  t        j                  t        j                  fd ¬«       d*„ }| j                  |t        j                  t        j                  fd ¬«       d+„ }| j                  |t        j                  t        j                  d d«      t        j                  t        j                  d d«      fd ¬«       | j                  |t        j                  t        j                  d(d«      t        j                  t        j                  d(d«      fd ¬«       | j                  t        «      5 }| j                  |t        j                  t        j                  d d«      t        j                  t        j                  d(d«      fd ¬«       d d d «       d,}| j                  |t        j                  «      «       y # 1 sw Y   Œ1xY w)-Nc                  óŽ   — t        j                  d«      } t        j                  d«      }d}d}t        j                  ||f«      }y ©Nr   r1   ©ÚnpÚzeros)rB   rC   Úmr3   rD   s        r4   Útest_0z1TestArrayAnalysis.test_base_cases.<locals>.test_0  s;   € Ü—‘˜“ˆAÜ—‘˜“ˆAØˆAØˆAÜ—‘˜!˜Q˜Ó ˆAØr6   r:   rB   )r   rC   ©r1   rD   ©r   r1   ©r    c                 ó`   — t        j                  | «      }t        j                  | «      }||z   S rZ   rí   ©r3   rB   rC   s      r4   Útest_1z1TestArrayAnalysis.test_base_cases.<locals>.test_1  ó%   € Ü—‘˜“ˆAÜ—‘˜“ˆAØ�q‘5ˆLr6   )rŸ   c                 ó`   — t        j                  |«      }t        j                  | «      }||z   S rZ   rí   ©rð   r3   rB   rC   s       r4   Útest_2z1TestArrayAnalysis.test_base_cases.<locals>.test_2   rø   r6   c                 ó6   — t        j                  | «      }|| z   S rZ   rí   ©r3   rB   s     r4   Útest_3z1TestArrayAnalysis.test_base_cases.<locals>.test_3'  s   € Ü—‘˜“ˆAØ�q‘5ˆLr6   c                 óJ   — t        j                  | «      }|dz   }|dz   }||z   S ©Nr1   é   rí   ©r3   rB   rC   rD   s       r4   Útest_4z1TestArrayAnalysis.test_base_cases.<locals>.test_4,  s*   € Ü—‘˜“ˆAØ�A‘ˆAØ�A‘ˆAØ�q‘5ˆLr6   c                 ól   — t        j                  | | f«      }| }t        j                  || f«      }||z   S rZ   rí   )r3   rB   rð   rC   s       r4   Útest_5z1TestArrayAnalysis.test_base_cases.<locals>.test_53  s4   € Ü—‘˜!˜Q˜Ó ˆAØˆAÜ—‘˜!˜Q˜Ó ˆAØ�q‘5ˆLr6   c                 ót   — t        j                  |«      }t        j                  | «      }||z   }||z
  }||z   S rZ   rí   )rð   r3   rB   rC   rE   rF   s         r4   Útest_6z1TestArrayAnalysis.test_base_cases.<locals>.test_6:  s7   € Ü—‘˜“ˆAÜ—‘˜“ˆAØ�A‘ˆAØ�A‘ˆAØ�q‘5ˆLr6   rE   rF   c                 óˆ   — t        j                  |«      }t        j                  | «      }| dk(  r
||z   }||z   S ||z
  }||z   S ©Né
   rí   ©rð   r3   rB   rC   rE   s        r4   Útest_7z1TestArrayAnalysis.test_base_cases.<locals>.test_7D  óK   € Ü—‘˜“ˆAÜ—‘˜“ˆAØ�BŠwØ˜‘E�ð �q‘5ˆLð ˜‘E�Ø�q‘5ˆLr6   c                 óˆ   — t        j                  |«      }t        j                  | «      }| dk(  r
||z   }||z   S ||z   }||z   S r	  rí   r  s        r4   Útest_8z1TestArrayAnalysis.test_base_cases.<locals>.test_8P  r  r6   c                 ó´   — t        j                  | «      }d}| dk  r;| dz  } t        j                  | «      }|t        j                  ||z   «      z  }| dk  rŒ;|S ©Nr   r  r1   ©rî   ÚonesÚsum)rð   ÚArä   ÚBs       r4   Útest_9z1TestArrayAnalysis.test_base_cases.<locals>.test_9\  sW   € Ü—‘˜“
ˆAØˆAØ�a’%Ø�Q‘�Ü—G‘G˜A“J�Ø”R—V‘V˜A ™E“]Ñ"�ð �a“%ð ˆHr6   r  r  c                 ó2  — | dz
  }|dz   }|dz   }t        j                  |«      }t        j                  |«      }t        j                  |«      }t        j                  | «      }t        j                  ||z   «      }	t        j                  ||z   «      }
|	|
z   S r0   ©rî   rï   r  )rð   r3   ÚpÚqrQ   r  r  ÚCÚDrä   Úts              r4   Útest_10z2TestArrayAnalysis.test_base_cases.<locals>.test_10g  s|   € Ø�A‘ˆAØ�A‘ˆAØ�A‘ˆAÜ—‘˜“ˆAÜ—‘˜“ˆAÜ—‘˜“ˆAÜ—‘˜“ˆAÜ—‘�q˜1‘u“ˆAÜ—‘�q˜1‘u“ˆAØ�q‘5ˆLr6   r  r  c                  ó    — t        j                  d«      } t        j                  d«      }| dd  }|d d }t        |«      }t        |«      }||k(  S )Né   r1   éÿÿÿÿ©rî   r  rh   ©rB   rC   rD   rE   rF   Úfs         r4   Útest_11z2TestArrayAnalysis.test_base_cases.<locals>.test_11v  sM   € Ü—‘˜“
ˆAÜ—‘˜“
ˆAØ�!�"�ˆAØ�#�2�ˆAÜ�A“ˆAÜ�A“ˆAØ˜‘6ˆMr6   r%  c                  ó  — t        j                  d«      j                  d«      } t        j                  d«      j                  d«      }| dd …d d …f   }|d d…d d …f   }|j                  d   }|j                  d   }t	        |«      }||k(  S )Né   )r!  r!  r1   r"  r   )rî   r  Úreshaper»   rh   )rB   rC   rD   rE   rF   r%  Úgs          r4   Útest_12z2TestArrayAnalysis.test_base_cases.<locals>.test_12�  s~   € Ü—‘˜“×#Ñ# EÓ*ˆAÜ—‘˜“×#Ñ# EÓ*ˆAØ�!‘"’Q�$‘ˆAØ�#�2�#’a�%‘ˆAØ—‘˜‘
ˆAØ—‘˜‘
ˆAÜ�A“ˆAØ˜‘6ˆMr6   r*  c                 ó   — | }|d   S ©Nr   r:   )r,   ÚT2s     r4   Útest_tup_argz7TestArrayAnalysis.test_base_cases.<locals>.test_tup_arg�  s   € ØˆBØ�a‘5ˆLr6   r1   c                 óx   — t        j                  | «      }|f}t        j                  t        |d   «      «      }|S r-  r#  )rð   r  ÚSr  s       r4   Útest_arr_in_tupz:TestArrayAnalysis.test_base_cases.<locals>.test_arr_in_tup•  s1   € Ü—‘˜“
ˆAØ�ˆAÜ—‘œ˜A˜a™D›	Ó"ˆAØˆHr6   r,   c                 ó    •—  ‰| | «      }|d   S r-  r:   )r3   rQ   r,   s     €r4   Útest_namedtuplez:TestArrayAnalysis.test_base_cases.<locals>.test_namedtupleŸ  s   ø€ Ù�!�Q“ˆAØ�Q‘4ˆKr6   rQ   ©r3   r3   c                 óH   — t        j                  | «      }t        |d   «      S r-  )rî   Úwhererh   )r  rD   s     r4   Útest_np_where_tup_returnzCTestArrayAnalysis.test_base_cases.<locals>.test_np_where_tup_return¦  s   € Ü—‘˜“ˆAÜ�q˜‘t“9Ðr6   c                 óX   — | j                   \  }}t        j                  ||f«      }| |z   S rZ   )r»   rî   r  )r  rð   r3   r  s       r4   Ú
test_shapez5TestArrayAnalysis.test_base_cases.<locals>.test_shape­  s)   € Ø—W‘W‰FˆQ�Ü—‘˜˜A˜“ˆAØ�q‘5ˆLr6   r  c                 ó^  — t        j                  | «      }t        j                  |«      }t        j                  |«      }| |k(  rt        j                  ||z   «      }nd}||k7  rd}nt        j                  ||z   «      }d}| |k(  r ||k(  rt        j                  ||z   |z   «      }||z   |z   S r-  r  )	Úlrð   r3   r  r  r  rQ   rä   r  s	            r4   Ú	test_condz4TestArrayAnalysis.test_base_cases.<locals>.test_cond´  sš   € Ü—‘˜“
ˆAÜ—‘˜“
ˆAÜ—‘˜“
ˆAØ�AŠvÜ—F‘F˜1˜q™5“M‘à�Ø�AŠvØ‘ä—F‘F˜1˜q™5“M�ØˆAØ�AŠvØ˜’6ÜŸ™˜q 1™u q™yÓ)�AØ�q‘5˜1‘9Ðr6   c                 ó”   — | |k(  sJ ‚t        j                  | «      }t        j                  |«      }t        j                  ||z   «      S rZ   r  )rð   r3   r  r  s       r4   Útest_assert_1z8TestArrayAnalysis.test_base_cases.<locals>.test_assert_1È  s9   € Ø˜’6ˆN�6Ü—‘˜“
ˆAÜ—‘˜“
ˆAÜ—6‘6˜!˜a™%“=Ð r6   c                 óh   — | j                   |j                   k(  sJ ‚t        j                  | |z   «      S rZ   )r»   rî   r  )r  r  s     r4   Útest_assert_2z8TestArrayAnalysis.test_base_cases.<locals>.test_assert_2Ð  s*   € Ø—7‘7˜aŸg™gÒ%Ð&Ð%Ü—6‘6˜!˜a™%“=Ð r6   zDimension mismatch)r¤   rÛ   r   ÚintprÈ   rÌ   ÚArrayÚTupler   ÚassertRaisesÚAssertionErrorÚassertInÚstrÚ	exception)r2   rñ   r÷   rû   rþ   r  r  r  r  r  r  r  r&  r+  r/  Úint_arr_typr2  r4  r8  r:  r=  r?  rA  Úraisesr³   r,   s                            @r4   Útest_base_casesz!TestArrayAnalysis.test_base_cases  s§  ø€ ò	ð 	×Ñ˜v rØ'+§¡°s¸DÓ'AØ'+§¡°s¸DÓ'AØ'+§¡°s¸FÓ'Cð'Eð 	ô 	Fò
	ð 	×Ñ˜v¬¯
©
 }¸dÐÔCò	ð 	×Ñ˜v¬¯
©
´E·J±JÐ'?Ø(,×(8Ñ(8¸¸cÓ(BÐ'Cð 	ô 	Eò	ð 	×Ñ˜v¬¯
©
 }¸dÐÔCò	ð
 	×Ñ˜v¬¯
©
 }¸dÐÔCò	ð
 	×Ñ˜v¬¯
©
 }¸dÐÔCò	ð 	×Ñ˜v¬¯
©
´E·J±JÐ'?Ø(,×(8Ñ(8¸¸cÓ(BØ(,×(;Ñ(;¸CÀÓ(Eð(Gð 	ô 	Hò	ð 	×Ñ˜v¬¯
©
´E·J±JÐ'?Ø(,×(8Ñ(8¸¸cÓ(BØ(,×(;Ñ(;¸CÀÓ(Eð(Gð 	ô 	Hò	ð 	×Ñ˜v¬¯
©
´E·J±JÐ'?Ø(,×(8Ñ(8¸¸cÓ(BØ(,×(8Ñ(8¸¸cÓ(Bð(Dð 	ô 	Eò	ð 	×Ñ˜v¬¯
©
 }Ø(,×(8Ñ(8¸¸cÓ(BÐ'Cð 	ô 	Eò
	ð 	×Ñ˜w¬¯©´E·J±JÐ(@Ø(,×(8Ñ(8¸¸cÓ(BØ(,×(;Ñ(;¸CÀÓ(Eð(Gð 	ô 	Hò	ð 	×Ñ˜w¨Ø'+§¡°s¸CÓ'@Ð&Að 	ô 	Cò	ð 	×Ñ˜w¨Ø'+§¡°s¸CÀÓ'EÐ&Fð 	ô 	Hò	ô —k‘k¤%§*¡*¨a°Ó5ˆØ×Ñ˜|Ü�[‰[˜+ {Ð3Ó4Ð6Àð 	ô 	Fò	ð 	×Ñ˜´·±°Ø'+§¡°s¸CÓ'@Ð&Að 	ô 	Cô �s˜S ˜IÓ&ˆô	ð 	×Ñ˜´·±°Ø(,¯©¸¸ZÓ(HÐ'Ið 	ô 	Lò	ð 	×ÑÐ7Ü�[‰[œŸ™ Q¨Ó,Ð.¸ð 	ô 	>ò	ð 	×Ñ˜z¬E¯K©K¼¿
¹
ÀAÀsÓ,KÐ+MØ'+ð 	ô 	-ò	ð" 	×Ñ˜y¬5¯:©:´u·z±zÄ5Ç:Á:Ð*NØ'+ð 	ô 	-ò	!ð
 	×Ñ˜}¬u¯z©z¼5¿:¹:Ð.FØ'+ð 	ô 	-ò	!ð 	×Ñ˜}¬u¯{©{¼5¿:¹:ÀqÈ#Ó/NÜ/4¯{©{¼5¿:¹:ÀqÈ#Ó/Nð/Qà'+ð 	ô 	-ð 	×Ñ˜}¬u¯{©{¼5¿:¹:ÀqÈ#Ó/NÜ/4¯{©{¼5¿:¹:ÀqÈ#Ó/Nð/Qà'+ð 	ô 	-ð ×Ñœ~Ô.°&Ø×"Ñ" =´5·;±;¼u¿z¹zÈ1ÈcÓ3RÜ38·;±;¼u¿z¹zÈ1ÈcÓ3Rð3Uà+/ð #ô 1÷ /ð #ˆØ�‰�cœ3˜v×/Ñ/Ó0Õ1÷ /Ð.ús   ÖAX*Ø*X3c           	      ó  ‡‡— ddl m} |d„ «       Šˆfd„}| j                  |t        j                  f| j                  dd«      g| j                  dd«      g¬«       ˆfd„}| j                  |t        j                  f| j                  dd«      g¬	«        |d
¬«      d„ «       Šˆfd„}| j                  |t        j                  f| j                  ddd«      | j                  dd«      g| j                  dd«      g¬«       y )Nr   )Ústencilc                 ó6   — d| d   | d   z   | d   z   | d   z   z  S )Ng      Ð?ró   )r1   r   )r   r"  )r"  r   r:   ©rB   s    r4   Úkernel_1z4TestArrayAnalysis.test_stencilcall.<locals>.kernel_1å  s+   € à˜1˜S™6 A c¡F™?¨Q¨t©WÑ4°q¸±wÑ>Ñ?Ð?r6   c                 óL   •— t        j                  | | f«      } ‰|«      }||z   S rZ   ©rî   r  ©r3   rB   rC   rQ  s      €r4   r÷   z2TestArrayAnalysis.test_stencilcall.<locals>.test_1é  s&   ø€ Ü—‘˜˜1˜“ˆAÙ˜“ˆAØ�q‘5ˆLr6   rB   rC   ©r    rŸ   c                 ó„   •— t        j                  | | f«      }t        j                  | dz   | dz   f«      } ‰||¬«       |S )Nr1   )ÚoutrS  rT  s      €r4   rû   z2TestArrayAnalysis.test_stencilcall.<locals>.test_2ò  s=   ø€ Ü—‘˜˜1˜“ˆAÜ—‘˜˜1™˜Q˜q™S˜	Ó"ˆAÙ�Q˜AÕØˆHr6   rô   )rD   )Ústandard_indexingc                 ó$   — | d   |d   z   |d   z   S )N)r   r1   r   )r   r"  r   r   r:   )rB   rC   rD   s      r4   Úkernel_2z4TestArrayAnalysis.test_stencilcall.<locals>.kernel_2û  s   € à�U‘8˜a ™iÑ'¨!¨A©$Ñ.Ð.r6   c                 óÞ   •— t        j                  d«      j                  ddd«      }t        j                  d«      j                  | dd«      }t        j                  d«      } ‰|||«      }|S )Né@   r=   é   r  r1   )rî   Úaranger)  rï   )r3   rB   rC   ÚuÚvrZ  s        €r4   rþ   z2TestArrayAnalysis.test_stencilcall.<locals>.test_3ÿ  s[   ø€ Ü—	‘	˜"“×%Ñ% a¨¨!Ó,ˆAÜ—	‘	˜"“×%Ñ% a¨¨!Ó,ˆAÜ—‘˜“ˆAÙ˜˜A˜qÓ!ˆAØˆHr6   r`  r_  )	Únumba.stencils.stencilrN  r¤   r   rB  rÛ   rÌ   rà   rÈ   )r2   rN  r÷   rû   rþ   rQ  rZ  s        @@r4   Útest_stencilcallz"TestArrayAnalysis.test_stencilcallã  s  ù€ Ý2Ø	ñ	@ó 
ð	@ô	ð
 	×Ñ˜v¬¯
©
 }Ø'+§¡°s¸CÓ'@Ð&AØ(,×(;Ñ(;¸CÀÓ(EÐ'Fð 	ô 	Hô	ð 	×Ñ˜v¬¯
©
 }Ø'+×'9Ñ'9¸#¸sÓ'CÐ&Dð 	ô 	Fñ 
 6Ô	*ñ	/ó 
+ð	/ô	ð 	×Ñ˜v¬¯
©
 }Ø'+§¡°s¸CÀÓ'EØ'+×'9Ñ'9¸#¸sÓ'Cð'Eà(,×(8Ñ(8¸¸cÓ(BÐ'Cð 	õ 	Er6   c                 ó  — d„ }| j                  |t        j                  t        j                  f| j                  dd«      | j	                  dd«      gd¬«       d„ }| j                  |t        j                  f| j	                  dd«      | j	                  dd	«      gd¬«       d
„ }| j                  |t        j                  f| j	                  dd«      gd¬«       d„ }| j                  |t        j                  f| j	                  dd«      gd¬«       d„ }| j                  |t        j                  t        j                  f| j	                  dd«      | j                  dd«      | j                  dd«      gd¬«       d„ }| j                  |t        j                  f| j	                  dd«      gd¬«       d„ }| j                  |t        j                  f| j                  dd«      gd¬«       d„ }| j                  |t        j                  f| j	                  dd«      gd¬«       d„ }	| j                  |	t        j                  f| j                  dd«      | j                  dd«      | j                  dd«      | j                  dd«      gd¬«       y )Nc                 óà   — t        j                  | «      }t        j                  |«      }t        j                  ||z   «      }|d| dz
   }|d|dz
   }t        j                  ||z   «      }||z   S r0   r  )rð   r3   r  r  rä   r  r  r  s           r4   r÷   z,TestArrayAnalysis.test_slice.<locals>.test_1  se   € Ü—‘˜“ˆAÜ—‘˜“ˆAÜ—‘�q˜1‘u“ˆAØ�!�A�a‘C�ˆAØ�!�A�a‘C�ˆAÜ—‘�q˜1‘u“ˆAØ�q‘5ˆLr6   r  r  r  r  F)rŸ   r¡   c                 óp   — t        j                  | «      }|d| dz
   }|d| dz
   }|d| dz
   }||z   }||z   S )Nr   r<   r1   r  rí   )rð   r  r  r  r  ÚEs         r4   rû   z,TestArrayAnalysis.test_slice.<locals>.test_2  sN   € Ü—‘˜“ˆAØ�!�A�a‘C�ˆAØ�!�A�a‘C�ˆAØ�!�A�a‘C�ˆAØ�A‘ˆAØ�q‘5ˆLr6   rf  c                 ó‚   — t        j                  | | f«      }|d| dz
  …d| dz
  …f   }|d| dz
  …d| dz
  …f   }||z   }|S r  rí   ©rð   r  r  r  rf  s        r4   rþ   z,TestArrayAnalysis.test_slice.<locals>.test_3&  s[   € Ü—‘˜!˜A˜“ˆAØ�!�A�a‘C�%˜˜!˜A™#˜�+‘ˆAØ�!�A�a‘C�%˜˜!˜A™#˜�+‘ˆAØ�A‘ˆAØˆHr6   c                 óv   — t        j                  | | f«      }|d| dz
  …d d …f   }|d| dz
  …d d …f   }||z   }|S r  rí   rh  s        r4   r  z,TestArrayAnalysis.test_slice.<locals>.test_40  sK   € Ü—‘˜!˜A˜“ˆAØ�!�A�a‘C�%š�'‘
ˆAØ�!�A�a‘C�%š�'‘
ˆAØ�A‘ˆAØˆHr6   c                 óÆ   — t        j                  | «      }t        j                  | «      }|d| dz
   |d| dz
   t        j                  |«      }|d| dz
   }||d|dz
   ||z   S )Nr1   r   r  rí   )rð   r3   r  r  r  r  s         r4   r  z,TestArrayAnalysis.test_slice.<locals>.test_5:  sk   € Ü—‘˜“ˆAÜ—‘˜“ˆAØ˜˜1˜Q™3�xˆAˆa��!‘ˆHÜ—‘˜“ˆAØ�!�A�a‘C�ˆAØˆAˆa��!‘ˆHð �q‘5ˆLr6   c                 óv   — t        j                  | | f«      }|d| dz
  …d d…f   }|d| dz
  …d d…f   }||z   }|S )Nr   r  r"  r1   rí   rh  s        r4   r  z,TestArrayAnalysis.test_slice.<locals>.test_6J  sS   € Ü—‘˜!˜A˜“ˆAØ�!�A�a‘C�%˜˜˜�)‘ˆAØ�!�A�a‘C�%˜˜˜�)‘ˆAØ�A‘ˆAØˆHr6   c                 óv   — t        j                  | | f«      }|d| dz
  …dd…f   }|d| dz
  …dd…f   }||z   }|S )Nr   r  éýÿÿÿr"  r1   éüÿÿÿéþÿÿÿrí   rh  s        r4   r  z,TestArrayAnalysis.test_slice.<locals>.test_7T  sS   € Ü—‘˜!˜A˜“ˆAØ�!�A�a‘C�%˜˜2˜�+‘ˆAØ�!�A�a‘C�%˜˜2˜�+‘ˆAØ�A‘ˆAØˆHr6   c                 óp   — t        j                  | | f«      }|d | dz
  …dd …f   }|dd…d d …f   }||z   }|S )Nr  r   r1   r"  rí   rh  s        r4   r  z,TestArrayAnalysis.test_slice.<locals>.test_8^  sI   € Ü—‘˜!˜A˜“ˆAØ�$�1�Q‘3�$�q‘r�'‘
ˆAØ�!�B�$’q�&‘	ˆAØ�A‘ˆAØˆHr6   c                 ór   — t        j                  | «      }|d d }|dd  }|d dd…   }||z   }|}|dz  }|||fS )Nr   r1   r"  rí   )rð   r  r  r  r  rf  ÚFs          r4   r  z,TestArrayAnalysis.test_slice.<locals>.test_9h  sX   € ô —‘˜!“ˆAØ�"�1�ˆAØ�!�"�ˆAØ�&�2�b�&‘	ˆAØ�A‘ˆAØˆAØ�‰FˆAØ�a˜�7ˆNr6   rð   rr  )r    r¡   )r¤   r   rB  rÈ   rÌ   rà   rÛ   )
r2   r÷   rû   rþ   r  r  r  r  r  r  s
             r4   Ú
test_slicezTestArrayAnalysis.test_slice  s”  € ò	ð 	×Ñ˜v¬¯
©
´5·:±:Ð'?Ø(,×(8Ñ(8¸¸cÓ(BØ(,×(;Ñ(;¸CÀÓ(Eð(Gà*/ð 	ô 	1ò
	ð 	×Ñ˜v¬¯
©
 }Ø(,×(;Ñ(;¸CÀÓ(EØ(,×(;Ñ(;¸CÀÓ(Eð(Gà*/ð 	ô 	1ò
	ð 	×Ñ˜v¬¯
©
 }Ø(,×(;Ñ(;¸CÀÓ(EÐ'FØ*/ð 	ô 	1ò	ð 	×Ñ˜v¬¯
©
 }Ø(,×(;Ñ(;¸CÀÓ(EÐ'FØ*/ð 	ô 	1ò		ð 	×Ñ˜v¬¯
©
´5·:±:Ð'>Ø(,×(;Ñ(;¸CÀÓ(EØ(,×(8Ñ(8¸¸cÓ(BØ(,×(8Ñ(8¸¸cÓ(Bð(Dð +0ð	 	ô 	1ò	ð 	×Ñ˜v¬¯
©
 }Ø(,×(;Ñ(;¸CÀÓ(EÐ'FØ*/ð 	ô 	1ò	ð 	×Ñ˜v¬¯
©
 }Ø(,×(8Ñ(8¸¸cÓ(BÐ'CØ*/ð 	ô 	1ò	ð 	×Ñ˜v¬¯
©
 }Ø(,×(;Ñ(;¸CÀÓ(EÐ'FØ*/ð 	ô 	1ò
	ð 	×Ñ˜v¬¯
©
 }Ø'+×'9Ñ'9¸#¸sÓ'CØ'+§¡°s¸CÓ'@Ø'+§¡°s¸CÓ'@Ø'+§¡°s¸CÓ'@ð'Cð +0ð 	õ 	1r6   c                 óž  — d„ }| j                  |t        j                  f| j                  dd«      | j                  dd«      | j                  dd«      g¬«       d„ }| j                  |t        j                  f| j	                  dd«      g| j                  d«      g¬	«       d
„ }| j                  |t        j                  f| j                  dd«      | j                  dd«      | j                  dd«      g¬«       d„ }| j                  |t        j                  f| j                  dd«      | j                  dd«      | j                  dd«      g¬«       d„ }| j                  |t        j                  f| j                  dd«      | j                  dd«      | j                  dd«      | j	                  dd«      g¬«       d„ }| j                  |t        j                  f| j                  dd«      g¬«       d„ }| j                  |t        j                  f| j                  dd«      | j                  dd«      g| j                  d«      | j                  d«      g¬	«       d„ }| j                  |t        j                  t        j                  dd«      f| j                  ddddd«      g| j                  d«      | j                  d«      g¬	«       d„ }	| j                  |	t        j                  f| j                  dd«      g| j                  d«      g¬	«       d„ }
| j                  |
t        j                  t        j                  f| j                  dd«      | j                  dd«      | j                  dd«      g¬«       d„ }| j                  |t        j                  t        j                  t        j                  f| j                  dd«      | j                  dd«      | j                  dd«      | j                  dd«      | j                  dd«      | j                  dd«      | j                  d d«      g¬«       d!„ }| j                  |t        j                  t        j                  f| j                  dd«      | j                  dd«      | j                  dd«      g¬«       d"„ }t        d#«      d$z   }dgt        t        d«      |«      D �cg c]  }t        |«      d%z   ‘Œ c}z   }dgt        t        d«      |«      D �cg c]  }t        |«      d&z   ‘Œ c}z   }|t        t        d«      |«      D �cg c]  }t        |«      d&z   ‘Œ c}z  }| j                  |t        j                  f | j                  |Ž  | j                  |Ž g¬«       d'„ }| j                  |t        j                  t        j                  f| j                  dd(«      | j                  d)d*«      g| j                  d«      | j                  d«      | j                  d)«      | j                  d+«      g¬	«       d,„ }| j                  |d-| j                  d+d.«      | j                  d/d0«      | j                  d1d2«      | j                  d3d4«      | j                  d5d6«      | j                  d7d8«      | j                  d9d:«      g¬«       d;„ }| j                  |t        j                  t        j                  f| j                  d<d«      | j                  dd=«      | j                  dd>d?«      | j                  d@dA«      | j                  dBdCdD«      g¬«       dE„ }| j                  |t        j                  t        j                  f| j                  ddF«      | j                  ddG«      g¬«       dH„ }| j                  |t        j                  t        j                  t        j                  f| j	                  ddI«      | j                  ddJ«      | j                  ddI«      | j                  d@dK«      | j                  dBdL«      | j                  dCdL«      g| j                  d<dM«      g¬	«       dN„ }| j                  |t        j                  t        j                  f| j                  ddd«      gd ¬	«       dO„ }| j                  |d-| j                  dd«      gd ¬	«       y c c}w c c}w c c}w )PNc                 óŒ   — t        j                  | «      }t        j                  | | f«      }t        j                  | | f¬«      }y ©N)r»   rí   r  s       r4   Ú
test_zerosz6TestArrayAnalysis.test_numpy_calls.<locals>.test_zeros|  ó3   € Ü—‘˜“ˆAÜ—‘˜!˜Q˜Ó ˆAÜ—‘  1˜vÔ&‰Ar6   rB   r3   rC   r5  rD   rô   c                 ó`   — t        j                  d«      }t        j                  d«      }||z   S r   )rî   Úarrayr  rö   s      r4   Útest_0d_arrayz9TestArrayAnalysis.test_numpy_calls.<locals>.test_0d_array…  s%   € Ü—‘˜“ˆAÜ—‘˜“
ˆAØ�q‘5ˆLr6   rU  c                 óŒ   — t        j                  | «      }t        j                  | | f«      }t        j                  | | f¬«      }y rv  rS  r  s       r4   Ú	test_onesz5TestArrayAnalysis.test_numpy_calls.<locals>.test_ones�  s2   € Ü—‘˜“
ˆAÜ—‘˜˜A˜“ˆAÜ—‘˜q !˜fÔ%‰Ar6   c                 óŒ   — t        j                  | «      }t        j                  | | f«      }t        j                  | | f¬«      }y rv  )rî   Úemptyr  s       r4   Ú
test_emptyz6TestArrayAnalysis.test_numpy_calls.<locals>.test_empty–  rx  r6   c                 ó¼   — t        j                  | «      }t        j                  | ¬«      }t        j                  | | ¬«      }t        j                  | | dz   ¬«      }y )N)ÚN)r‚  ÚMr1   )rî   Úeye©r3   rB   rC   rD   rE   s        r4   Útest_eyez4TestArrayAnalysis.test_numpy_calls.<locals>.test_eyeŸ  s@   € Ü—‘�q“	ˆAÜ—‘˜”ˆAÜ—‘˜˜aÔ ˆAÜ—‘˜˜a !™eÔ$‰Ar6   rE   c                 ó.   — t        j                  | «      }y rZ   )rî   Úidentityrý   s     r4   Útest_identityz9TestArrayAnalysis.test_numpy_calls.<locals>.test_identityª  s   € Ü—‘˜A“‰Ar6   c                 ó°   — t        j                  | «      }t        j                  |«      }t        j                  |«      }t        j                  |d¬«      }y )Nr1   )Úk)rî   rˆ  Údiagr…  s        r4   Ú	test_diagz5TestArrayAnalysis.test_numpy_calls.<locals>.test_diag¯  s8   € Ü—‘˜A“ˆAÜ—‘˜“
ˆAÜ—‘˜“
ˆAÜ—‘˜˜Q”‰Ar6   )r3   c                 óØ   — t        j                  | «      }t        j                  | «      }t        j                  | «      }t        j                  | d«      }t        j
                  | «      }y r0   )rî   Ú
empty_likeÚ
zeros_likeÚ	ones_likeÚ	full_likeÚasfortranarrayr$  s         r4   Útest_array_likez;TestArrayAnalysis.test_numpy_calls.<locals>.test_array_likeº  sK   € Ü—‘˜aÓ ˆAÜ—‘˜aÓ ˆAÜ—‘˜Q“ˆAÜ—‘˜Q Ó"ˆAÜ×!Ñ! !Ó$‰Ar6   r  r  rF   r%  c                 óš   — t        j                  | | z  «      }|j                  | | f«      }|j                  «       |j                  «       z   S rZ   )rî   r  r)  r  rö   s      r4   Útest_reshapez8TestArrayAnalysis.test_numpy_calls.<locals>.test_reshapeÇ  s<   € Ü—‘˜˜A™“ˆAØ—	‘	˜1˜a˜&Ó!ˆAØ—5‘5“7˜QŸU™U›WÑ$Ð$r6   c                 ój   — t        j                  | |f«      }|j                  }|j                  «       }y rZ   ©rî   r  r,   Ú	transpose©rð   r3   rB   rC   rD   s        r4   Útest_transposez:TestArrayAnalysis.test_numpy_calls.<locals>.test_transposeÐ  s'   € Ü—‘˜˜A˜“ˆAØ—‘ˆAØ—‘“‰Ar6   )rð   r3   )r3   rð   c                 óü   — t        j                  | ||f«      }|j                  }|j                  «       }|j                  ddd«      }|j                  d«      }|j                  ddd«      }|j                  d«      }	y )Nr  r   r1   )r  r   r1   )r   r  r1   r˜  )
rð   r3   r‹  rB   rC   rD   rE   ÚdtrF   Úets
             r4   Útest_transpose_3dz=TestArrayAnalysis.test_numpy_calls.<locals>.test_transpose_3dÜ  sj   € Ü—‘˜˜A˜q˜	Ó"ˆAØ—‘ˆAØ—‘“ˆAØ—‘˜A˜a Ó"ˆAØ—‘˜WÓ%ˆBØ—‘˜A˜a Ó"ˆAØ—‘˜WÓ%‰Br6   )rð   r3   r‹  )r‹  r3   rð   )r‹  rð   r3   r�  )rð   r‹  r3   rž  c                 ób   — t        j                  | |f«      }|j                  }|j                  }y rZ   )rî   r  ÚrealÚimagrš  s        r4   Útest_real_imag_attrz?TestArrayAnalysis.test_numpy_calls.<locals>.test_real_imag_attrï  s%   € Ü—‘˜˜A˜“ˆAØ—‘ˆAØ—‘‰Ar6   c                 ó€  — t         j                  j                  | «      }t         j                  j                  | | «      }t         j                  j                  | «      }t         j                  j                  | | «      }t         j                  j	                  | «      }t         j                  j	                  | | f«      }t         j                  j	                  | | f¬«      }t         j                  j                  | «      }t         j                  j                  | | f«      }	t         j                  j                  | | f¬«      }
t         j                  j                  | «      }t         j                  j                  | | f«      }t         j                  j                  | | f¬«      }t         j                  j                  | «      }t         j                  j                  | | f«      }t         j                  j                  | | f¬«      }t         j                  j                  | «      }t         j                  j                  | | f«      }t         j                  j                  | | f¬«      }t         j                  j                  d| «      }t         j                  j                  d| | f«      }t         j                  j                  d| | f¬«      }t         j                  j                  d| «      }t         j                  j                  d| | f«      }t         j                  j                  d| | f¬«      }t         j                  j                  d| «      }t         j                  j                  d| | f«      }t         j                  j                  d| | f¬«      }t         j                  j                  d| «      }t         j                  j                  d| | f«      }t         j                  j                  d| | f¬«      }t         j                  j                  d| «      } t         j                  j                  d| | f«      }!t         j                  j                  d| | f¬«      }"t         j                  j                  d| «      }#t         j                  j                  d| | f«      }$t         j                  j                  d| | f¬«      }%t         j                  j                  d| «      }&t         j                  j                  d| | f«      }'t         j                  j                  d| | f¬«      }(t         j                  j                  dd| «      })t         j                  j                  dd| | f«      }*t         j                  j                  dd| | f¬«      }+t         j                  j!                  dd| «      },t         j                  j!                  dd| | f«      }-t         j                  j!                  dd| | f¬«      }.t         j                  j#                  dd| «      }/t         j                  j#                  dd| | f«      }0t         j                  j#                  dd| | f¬«      }1t         j                  j%                  dd| «      }2t         j                  j%                  dd| | f«      }3t         j                  j%                  dd| | f¬«      }4t         j                  j'                  dd| «      }5t         j                  j'                  dd| | f«      }6t         j                  j'                  dd| | f¬«      }7t         j                  j)                  dd| «      }8t         j                  j)                  dd| | f«      }9t         j                  j)                  dd| | f¬«      }:t         j                  j+                  dd| «      };t         j                  j+                  dd| | f«      }<t         j                  j+                  dd| | f¬«      }=t         j                  j-                  dd| «      }>t         j                  j-                  dd| | f«      }?t         j                  j-                  dd| | f¬«      }@t         j                  j/                  dd| «      }At         j                  j/                  dd| | f«      }Bt         j                  j/                  dd| | f¬«      }Ct         j                  j1                  ddd| «      }Dt         j                  j1                  ddd| | f«      }Et         j                  j1                  ddd| | f¬«      }Fy )N)Úsizer
  gš™™™™™¹?r   r1   rm  )rî   ÚrandomÚrandÚrandnÚranfÚrandom_sampleÚsampleÚstandard_normalÚ	chisquareÚweibullÚpowerÚ	geometricÚexponentialÚpoissonÚrayleighÚnormalÚuniformÚbetaÚbinomialr%  ÚgammaÚ	lognormalÚlaplaceÚrandintÚ
triangular)Gr3   Úa0Úa1Úb0Úb1Úc0Úc1Úc2Úd0Úd1Úd2Úe0Úe1Úe2Úf0Úf1Úf2Úg0Úg1Úg2Úh0Úh1Úh2Úi0Úi1Úi2Új0Új1Új2Úk0Úk1Úk2Úl0Úl1Úl2Úm0Úm1Úm2Ún0Ún1Ún2Úo0Úo1Úo2Úp0Úp1Úp2Úq0Úq1Úq2Úr0Úr1Úr2Ús0rK   rP   Út0Út1Út2Úu0Úu1Úu2Úv0Úv1Úv2Úw0Úw1Úw2Úx0Úx1Úx2sG                                                                          r4   Útest_randomz7TestArrayAnalysis.test_numpy_calls.<locals>.test_randomú  sí  € Ü—‘—‘ Ó"ˆBÜ—‘—‘  1Ó%ˆBÜ—‘—‘ Ó#ˆBÜ—‘—‘  AÓ&ˆBÜ—‘—‘ Ó"ˆBÜ—‘—‘  A Ó'ˆBÜ—‘—‘ a¨ V�Ó,ˆBÜ—‘×(Ñ(¨Ó+ˆBÜ—‘×(Ñ(¨!¨Q¨Ó0ˆBÜ—‘×(Ñ(¨q°!¨fÐ(Ó5ˆBÜ—‘×!Ñ! !Ó$ˆBÜ—‘×!Ñ! 1 a &Ó)ˆBÜ—‘×!Ñ!¨¨1 vÐ!Ó.ˆBÜ—‘×!Ñ! !Ó$ˆBÜ—‘×!Ñ! 1 a &Ó)ˆBÜ—‘×!Ñ!¨¨1 vÐ!Ó.ˆBÜ—‘×*Ñ*¨1Ó-ˆBÜ—‘×*Ñ*¨A¨q¨6Ó2ˆBÜ—‘×*Ñ*°°A°Ð*Ó7ˆBÜ—‘×$Ñ$ R¨Ó+ˆBÜ—‘×$Ñ$ R¨!¨Q¨Ó0ˆBÜ—‘×$Ñ$ R¨q°!¨fÐ$Ó5ˆBÜ—‘×"Ñ" 2 qÓ)ˆBÜ—‘×"Ñ" 2¨¨1 vÓ.ˆBÜ—‘×"Ñ" 2¨Q°¨FÐ"Ó3ˆBÜ—‘—‘  QÓ'ˆBÜ—‘—‘  a¨ VÓ,ˆBÜ—‘—‘ ¨1¨a¨&�Ó1ˆBÜ—‘×$Ñ$ S¨!Ó,ˆBÜ—‘×$Ñ$ S¨1¨a¨&Ó1ˆBÜ—‘×$Ñ$ S°°1¨vÐ$Ó6ˆBÜ—‘×&Ñ& r¨1Ó-ˆBÜ—‘×&Ñ& r¨A¨q¨6Ó2ˆBÜ—‘×&Ñ& r°°A°Ð&Ó7ˆBÜ—‘×"Ñ" 2 qÓ)ˆBÜ—‘×"Ñ" 2¨¨1 vÓ.ˆBÜ—‘×"Ñ" 2¨Q°¨FÐ"Ó3ˆBÜ—‘×#Ñ# B¨Ó*ˆBÜ—‘×#Ñ# B¨¨A¨Ó/ˆBÜ—‘×#Ñ# B¨a°¨VÐ#Ó4ˆBÜ—‘×!Ñ! ! Q¨Ó*ˆBÜ—‘×!Ñ! ! Q¨¨A¨Ó/ˆBÜ—‘×!Ñ! ! Q¨a°¨VÐ!Ó4ˆBÜ—‘×"Ñ" 1 a¨Ó+ˆBÜ—‘×"Ñ" 1 a¨!¨Q¨Ó0ˆBÜ—‘×"Ñ" 1 a¨q°!¨fÐ"Ó5ˆBÜ—‘—‘  Q¨Ó*ˆBÜ—‘—‘  Q¨¨A¨Ó/ˆBÜ—‘—‘  Q¨a°¨V�Ó4ˆBÜ—‘×#Ñ# A q¨!Ó,ˆBÜ—‘×#Ñ# A q¨1¨a¨&Ó1ˆBÜ—‘×#Ñ# A q°°1¨vÐ#Ó6ˆBÜ—‘—‘˜S ! QÓ'ˆBÜ—‘—‘˜S ! a¨ VÓ,ˆBÜ—‘—‘˜S !¨1¨a¨&�Ó1ˆBÜ—‘—‘  a¨Ó+ˆBÜ—‘—‘  a¨!¨Q¨Ó0ˆBÜ—‘—‘  a¨q°!¨f�Ó5ˆBÜ—‘×$Ñ$ Q¨¨1Ó-ˆBÜ—‘×$Ñ$ Q¨¨A¨q¨6Ó2ˆBÜ—‘×$Ñ$ Q¨°°A°Ð$Ó7ˆBÜ—‘×"Ñ" 1 a¨Ó+ˆBÜ—‘×"Ñ" 1 a¨!¨Q¨Ó0ˆBÜ—‘×"Ñ" 1 a¨q°!¨fÐ"Ó5ˆBÜ—‘×"Ñ" 1 b¨!Ó,ˆBÜ—‘×"Ñ" 1 b¨1¨a¨&Ó1ˆBÜ—‘×"Ñ" 1 b°°1¨vÐ"Ó6ˆBÜ—‘×%Ñ% b¨!¨R°Ó3ˆBÜ—‘×%Ñ% b¨!¨R°!°Q°Ó8ˆBÜ—‘×%Ñ% b¨!¨R°q¸!°fÐ%Ó=‰Br6   r™   r1   Ú0Ú1c                 ó(  — t        j                  | «      }t        j                  |«      }t        j                  ||f«      }t        j                  d|f«      }t        j                  d|f«      }t        j                  ||f«      }t        j                  | df«      }t        j                  | df«      }	t        j                  ||	fd¬«      }
t        j                  | |f«      }t        j                  | |f«      }t        j                  ||f«      }y )Nr  r<   r1   ©Úaxis)rî   r  Úconcatenate)rð   r3   rB   rC   rD   rE   rF   r%  rÔ   Újr‹  r<  Úor  s                 r4   Útest_concatenatez<TestArrayAnalysis.test_numpy_calls.<locals>.test_concatenateJ  sÎ   € Ü—‘˜“
ˆAÜ—‘˜“
ˆAÜ—‘  1˜vÓ&ˆAÜ—‘˜˜A˜“ˆAÜ—‘˜˜A˜“ˆAÜ—‘  1˜vÓ&ˆAô —‘˜˜A˜“ˆAÜ—‘˜˜A˜“ˆAÜ—‘  1˜v¨AÔ.ˆAÜ—‘˜˜A˜“ˆAÜ—‘˜˜A˜“ˆAÜ—‘  1˜vÓ&‰Ar6   )r!  r3   r‹  )rð   r!  r  c                  óÄ  — t        j                  d«      } t        j                  d«      }t        j                  d«      }t        j                  | | f«      }t        j                  ||f«      }t        j                  | | f«      }t        j                  ||f«      }t        j                  | | f«      }t        j                  ||f«      }t        j                  ||f«      }	y )N)r  ©r  r<   )r  r<   r=   )rî   r  ÚvstackÚhstackÚdstack)
r‹  r<  r	  r  r  rQ   rä   r  r_  r`  s
             r4   Útest_vsd_stackz:TestArrayAnalysis.test_numpy_calls.<locals>.test_vsd_stacke  s¨   € Ü—‘˜“ˆAÜ—‘˜“ˆAÜ—‘˜	Ó"ˆAÜ—	‘	˜1˜a˜&Ó!ˆAÜ—	‘	˜1˜a˜&Ó!ˆAÜ—	‘	˜1˜a˜&Ó!ˆAÜ—	‘	˜1˜a˜&Ó!ˆAÜ—	‘	˜1˜a˜&Ó!ˆAÜ—	‘	˜1˜a˜&Ó!ˆAÜ—	‘	˜1˜a˜&Ó!‰Ar6   r:   )r  r  r  )r=   r<   rQ   )r=   rä   )r  é   r  )r1   r  r  r_  )r  r<   r  r`  )r  r<   r]  c                 óØ  — t        j                  | «      }t        j                  |«      }t        j                  ||f«      }t        j                  | |f«      }t        j                  | |f«      }t        j                  ||f«      }t        j                  ||fd¬«      }t        j                  ||fd¬«      }	t        j                  ||fd¬«      }
t        j                  ||fd¬«      }y )Nr   r  r1   r  r"  )rî   r  Ústack)rð   r3   rB   rC   rD   rE   rF   r%  r*  ÚhrÔ   r  s               r4   Ú
test_stackz6TestArrayAnalysis.test_numpy_calls.<locals>.test_stack{  s²   € Ü—‘˜“
ˆAÜ—‘˜“
ˆAÜ—‘˜!˜Q˜Ó ˆAÜ—‘˜˜A˜“ˆAÜ—‘˜˜A˜“ˆAÜ—‘˜!˜Q˜Ó ˆAÜ—‘˜!˜Q˜ aÔ(ˆAÜ—‘˜!˜Q˜ aÔ(ˆAÜ—‘˜!˜Q˜ aÔ(ˆAÜ—‘˜!˜Q˜ bÔ)‰Ar6   rð   )r  rð   r*  )r  rð   r3   r  )rð   r  r3   rÔ   r  )rð   r3   r  c                 ó^   — t        j                  | |«      }t        j                  | |d«      }y r	  )rî   Úlinspacerú   s       r4   Útest_linspacez9TestArrayAnalysis.test_numpy_calls.<locals>.test_linspace’  s$   € Ü—‘˜A˜qÓ!ˆAÜ—‘˜A˜q "Ó%‰Ar6   )é2   )r
  c                 óä  — t        j                  t        j                  d«      t        j                  d«      «      }t        j                  t        j                  d«      t        j                  d«      «      }t        j                  t        j                  d«      t        j                  d«      «      }t        j                  t        j                  d«      t        j                  d«      «      }t        j                  t        j                  ||f«      t        j                  ||f«      «      }t        j                  t        j                  ||f«      t        j                  | | f«      «      }y )Nr1   r  r  )r1   r  r;   )rî   Údotr  )	r<  rð   r3   rB   rC   rF   r  rÔ   r  s	            r4   Útest_dotz4TestArrayAnalysis.test_numpy_calls.<locals>.test_dot›  sÖ   € Ü—‘”r—w‘w˜q“z¤2§7¡7¨1£:Ó.ˆAÜ—‘”r—w‘w˜q“z¤2§7¡7¨6£?Ó3ˆAô —‘”r—w‘w˜v“¬¯©°«Ó4ˆAô —‘”r—w‘w˜v“¬¯©°«Ó8ˆAÜ—‘”r—w‘w  1˜v“¬¯©°°A°«Ó8ˆAÜ—‘”r—w‘w  1˜v“¬¯©°°A°«Ó8‰Ar6   rò   )r<   )r  r=   )rð   rð   r<  c                 ó¤   — t        j                  | |f«      }t        j                  |«      }||z   }t        j                  d|f«      }||z   |z
  }y r0   rS  )rð   r3   rB   rC   rD   rE   rF   s          r4   Útest_broadcastz:TestArrayAnalysis.test_numpy_calls.<locals>.test_broadcast²  sG   € Ü—‘˜˜A˜“ˆAÜ—‘˜“
ˆAØ�A‘ˆAÜ—‘˜˜A˜“ˆAØ�A‘˜‘	‰Ar6   c                  óh   — t        j                  t        «      } t        j                  t        «      }y rZ   )rî   r  ÚGVAL2)rB   rC   s     r4   Útest_global_tuplez=TestArrayAnalysis.test_numpy_calls.<locals>.test_global_tuple½  s   € Ü—‘œ“ˆAÜ—‘œ“‰Ar6   )r¤   r   rB  rÛ   rà   ré   ræ   rC  ÚordrÑ   ÚchrÚfloat64rÈ   )r2   rw  r{  r}  r€  r†  r‰  r�  r”  r–  r›  rŸ  r£  r  Úlastr™   Úvars1dÚvars2dr
  r  r  r  r  r  r!  s                            r4   Útest_numpy_callsz"TestArrayAnalysis.test_numpy_callsz  s@  € ò	'ð 	×Ñ˜z¬E¯J©J¨=Ø'+§¡°s¸CÓ'@Ø'+§¡°s¸JÓ'GØ'+§¡°s¸CÓ'@ð'Bð 	ô 	Cò
	ð 	×Ñ˜}¬u¯z©z¨mØ'+×'9Ñ'9¸#¸sÓ'CÐ&DØ(,×(>Ñ(>¸sÓ(CÐ'Dð 	ô 	Fò	&ð 	×Ñ˜y¬5¯:©:¨-Ø'+§¡°s¸CÓ'@Ø'+§¡°s¸JÓ'GØ'+§¡°s¸CÓ'@ð'Bð 	ô 	Cò
	'ð 	×Ñ˜z¬E¯J©J¨=Ø'+§¡°s¸CÓ'@Ø'+§¡°s¸JÓ'GØ'+§¡°s¸CÓ'@ð'Bð 	ô 	Cò
	%ð
 	×Ñ˜x¬%¯*©*¨Ø'+§¡°s¸JÓ'GØ'+§¡°s¸JÓ'GØ'+§¡°s¸CÓ'@Ø'+×'9Ñ'9¸#¸sÓ'Cð'Eð 	ô 	Fò	à×Ñ˜}¬u¯z©z¨mØ'+§¡°s¸JÓ'GÐ&Hð 	ô 	Jò	 ð
 	×Ñ˜y¬5¯:©:¨-Ø'+§¡°s¸FÓ'CØ'+§¡°s¸JÓ'Gð'Ià(,×(;Ñ(;¸CÓ(@Ø(,×(>Ñ(>¸sÓ(Cð(Eð 	ô 	Fò	%ð 	×Ñ˜´·±¼U¿Z¹ZÈÈCÓ1PÐ0Rà#'§?¡?°3¸¸SÀ#ÀsÓ#Kð'Mà(,×(;Ñ(;¸CÓ(@Ø(,×(>Ñ(>¸sÓ(Cð(Eð 	ô 	Fò	%ð 	×Ñ˜|¬e¯j©j¨]Ø'+§¡°s¸JÓ'GÐ&HØ(,×(>Ñ(>¸sÓ(CÐ'Dð 	ô 	Fò
	ð 	×Ñ˜~´·
±
¼E¿J¹JÐ/GØ'+§¡°s¸JÓ'GØ'+§¡°s¸JÓ'GØ'+§¡°s¸JÓ'Gð'Ið 	ô 	Jò	&ð 	×ÑÐ0´5·:±:¼u¿z¹zÌ5Ï:É:Ð2VØ'+§¡°s¸OÓ'LØ'+§¡°s¸OÓ'LØ'+§¡°s¸OÓ'LØ'+§¡°s¸OÓ'LØ'+§¡°t¸_Ó'MØ'+§¡°s¸OÓ'LØ'+§¡°t¸_Ó'Mð'Oð 	ô 	Pò	ð
 	×ÑÐ2´U·Z±ZÄÇÁÐ4LØ'+§¡°s¸JÓ'GØ'+§¡°s¸JÓ'GØ'+§¡°s¸JÓ'Gð')ð 	ô 	*òF	>ôP �3‹x˜!‰|ˆØ�´5¼¸S»À4Ô3HÓIÑ3H¨aœS ›V c›\Ð3HÑIÑIˆØ�´u¼SÀ»XÀtÔ7LÓ MÑ7L°!¤ Q£¨#£Ð7LÑ MÑMˆØ¬¬s°3«x¸Ô)>Ó?Ñ)> A”3�q“6˜C“<Ð)>Ñ?Ñ?ˆØ×Ñ˜{¬U¯Z©Z¨MØ'6 t§¡¸Ð'?Ø'6 t§¡¸Ð'?ð'Að 	ô 	Bò	'ð$ 	×ÑÐ/´%·*±*¼e¿j¹jÐ1IØ'+§¡°s¸HÓ'Eà'+§¡°s¸HÓ'Eð'Gð )-×(;Ñ(;¸CÓ(@Ø(,×(>Ñ(>¸sÓ(CØ(,×(>Ñ(>¸sÓ(CØ(,×(;Ñ(;¸CÓ(@ð(Bð	 	ô 	Cò
	"ð 	×Ñ˜~¨rØ'+§¡°s¸FÓ'CØ'+§¡°s¸FÓ'CØ'+§¡°s¸DÓ'AØ'+§¡°s¸FÓ'CØ'+§¡°s¸IÓ'FØ'+§¡°s¸IÓ'FØ'+§¡°s¸IÓ'Fð')ð 	ô 	*ò
	*ð 	×Ñ˜z¬E¯J©J¼¿
¹
Ð+CØ(,¯©¸¸SÓ(AØ(,¯©¸¸XÓ(FØ(,¯©Ø$'¨¨mó)=à�O‰OØ$'¨ó8à�O‰OØ$'¨¨mó=ð(
ð 	ô 		ò	&ð
 	×Ñ˜}¬u¯}©}¼e¿m¹mÐ.LØ'+§¡°s¸EÓ'BØ'+§¡°s¸EÓ'Bð'Dð 	ô 	Eò	9ð 	×Ñ˜x¬%¯*©*´e·j±jÄ%Ç*Á*Ð)MØ'+×'9Ñ'9¸#¸tÓ'DØ'+§¡°s¸DÓ'AØ'+§¡°s¸DÓ'AØ'+§¡°s¸FÓ'CØ'+§¡°s¸JÓ'GØ'+§¡°s¸JÓ'Gð')ð )-×(8Ñ(8¸¸cÓ(BÐ'Cð 	ô 	Eò	ð 	×Ñ˜~´·
±
¼E¿J¹JÐ/GØ'+§¡°s¸CÀÓ'EÐ&FØ'+ð 	ô 	-ò
	ð 	×ÑÐ0°"Ø'+§¡°s¸CÓ'@Ð&AØ'+ð 	õ 	-ùò} JùÚ MùÚ?s   Óc Ó>cÔ0c
)NNT)r7   r8   r9   r–   r¤   r¸   rÂ   rœ   rÈ   rÌ   rÛ   rà   ræ   ré   rL  rb  rs  r   r(  r:   r6   r4   rŒ   rŒ   ®   sh   „ ò0ó9ò*	ò
òò:ò:òCòCòSòTòS2òl'EòRl1ð\ ñH-ó ñH-r6   rŒ   c                   ót   — e Zd ZdZdZed„ «       Zed„ «       Zed„ «       Zed„ «       Z	ed„ «       Z
ed„ «       Zy	)
Ú!TestArrayAnalysisParallelRequiredzkThis is to just split out tests that need the parallel backend and
    therefore serialised execution.
    Fc                 ó�   ‡— t         d„ «       Šˆfd„}	  t        |d¬«      d«       y # t        $ r | j                  d«       Y y w xY w)Nc                 ó
   — || fS rZ   r:   )r™   rÀ   s     r4   Úswapz9TestArrayAnalysisParallelRequired.test_misc.<locals>.swapÐ  s   € à�a�&ˆLr6   c                 óª   •— t        j                  | «      }t        j                  | «      }t        | «      D ]  } ‰||   ||   «      \  ||<   ||<   Œ y rZ   )rî   r  rÑ   )rð   rB   rC   rÔ   r-  s       €r4   Útest_bug2537zATestArrayAnalysisParallelRequired.test_misc.<locals>.test_bug2537Ô  sK   ø€ Ü—‘˜“
ˆAÜ—‘˜“
ˆAÜ˜1–X�Ù! ! A¡$¨¨!©Ó-‘
��!‘�a˜’dñ r6   T©Úparallelr
  ztest_bug2537 raised IndexError!)r   Ú
IndexErrorÚfail)r2   r/  r-  s     @r4   Ú	test_miscz+TestArrayAnalysisParallelRequired.test_miscÍ  sN   ø€ ô 
ñ	ó 
ð	ô	.ð	9Ø-ŒD�¨Ô-¨bÕ1øÜò 	9Ø�I‰IÐ7Ö8ð	9ús   ”( ¨AÁAc                 óˆ   ‡— t        ddg«      } |d«      Šˆfd„}| j                   t        |d¬«      «        |«       «       y )NÚRowr  r<   c                  ó2   •— ‰} | j                   }|dk(  rd}|S )Nr  r<   )r  )ÚrrÚresÚrows     €r4   Ú	test_implzKTestArrayAnalysisParallelRequired.test_global_namedtuple.<locals>.test_implä  s"   ø€ ØˆBØ—$‘$ˆCØ�aŠxØ�ØˆJr6   Tr0  )r   ÚassertEqualr   )r2   r6  r;  r:  s      @r4   Útest_global_namedtuplez8TestArrayAnalysisParallelRequired.test_global_namedtupleß  s@   ø€ ä˜  Ó&ˆÙ�!‹fˆô	ð 	×ÑÐ7œ˜i°$Ô7Ó9¹9»;ÕGr6   c                 óö   — d„ }d}t        |«      }t        j                  |j                  «      }t        j                  |j                  «      }| j	                   t        |d¬«      ||«       |||«      «       y )Nc                 ó`   — t        | j                  «      D ]  }|||<   Œ	 |j                  «       S rZ   )r   r,   r  )Út_objÚXrÔ   s      r4   r;  zLTestArrayAnalysisParallelRequired.test_array_T_issue_3700.<locals>.test_implð  s(   € Ü˜EŸG™G–_�Ø��!’ð %à—5‘5“7ˆNr6   r!  Tr0  )r.   rî   rï   r,   r<  r   )r2   r;  r3   r@  ÚX1ÚX2s         r4   Útest_array_T_issue_3700z9TestArrayAnalysisParallelRequired.test_array_T_issue_3700í  sg   € ò	ð
 ˆÜ  Ó#ˆÜ�X‰X�e—g‘gÓˆÜ�X‰X�e—g‘gÓˆØ×ÑØ*ŒD� TÔ*¨5°"Ó5±yÀÈÓ7Kõ	Mr6   c                 ó  — d„ }| j                   t        |d¬«      «        |«       «       d„ }t        j                  d«      }t	        d «      }t        j
                  j                   t        |d¬«      ||«       |||«      «       y )Nc                  ó   — t        d d «      } yrp   )ÚslicerP  s    r4   Ú
test_impl1zQTestArrayAnalysisParallelRequired.test_slice_shape_issue_3380.<locals>.test_impl1ÿ  s   € Ü�d˜DÓ!ˆAØr6   Tr0  c                 ó   — |}| |   S rZ   r:   )r  rB   rC   s      r4   Ú
test_impl2zQTestArrayAnalysisParallelRequired.test_slice_shape_issue_3380.<locals>.test_impl2  s   € ØˆAØ�Q‘4ˆKr6   r
  )r<  r   rî   r^  rG  ÚtestingÚassert_array_equal)r2   rH  rJ  r  rB   s        r4   Útest_slice_shape_issue_3380z=TestArrayAnalysisParallelRequired.test_slice_shape_issue_3380ü  st   € ò	ð 	×ÑÐ8œ˜j°4Ô8Ó:¹J»LÔIò	ô �I‰I�b‹MˆÜ�$‹KˆÜ
�
‰
×%Ñ%Ø+ŒD� dÔ+¨A¨qÓ1±:¸aÀÓ3Cõ	Er6   c                 ó¼   — t        d¬«      d„ «       }t        j                  d«      }t        j                  j	                   ||«      |j                  |«      «       y )NTr0  c                 óð   — | j                   d   }t        j                  |«      }t        |«      D ]C  }t        j                  | t        j
                  d«      t        j
                  d«       «      ||<   ŒE |S rì   )r»   rî   rï   r   r  Úint32)Údatar‚  ÚsumsrÔ   s       r4   r;  zPTestArrayAnalysisParallelRequired.test_slice_dtype_issue_5056.<locals>.test_impl  sX   € à—
‘
˜1‘ˆAÜ—8‘8˜A“;ˆDÜ˜A–Y�ÜŸ&™& ¤b§h¡h¨q£k´"·(±(¸1³+Ð!>Ó?��Q’ð àˆKr6   g      $@)r   rî   r^  rK  rL  Úpy_func)r2   r;  rQ  s      r4   Útest_slice_dtype_issue_5056z=TestArrayAnalysisParallelRequired.test_slice_dtype_issue_5056  sM   € ô 
�tÔ	ñ	ó 
ð	ô �y‰y˜‹~ˆÜ
�
‰
×%Ñ%¡i°£o°y×7HÑ7HÈÓ7NÕOr6   c                 óX   — d„ }| j                   t        |d¬«      «        |«       «       y)zimake sure a global tuple with non-integer values does not cause errors
        (test for #6726).
        c                  ó   — t         d   } | S r-  )ÚGVAL)rE   s    r4   r;  zFTestArrayAnalysisParallelRequired.test_global_tuple.<locals>.test_impl#  s   € Ü�Q‘ˆAØˆHr6   Tr0  N)r<  r   )r2   r;  s     r4   r!  z3TestArrayAnalysisParallelRequired.test_global_tuple  s(   € ò	ð 	×ÑÐ7œ˜i°$Ô7Ó9¹9»;ÕGr6   N)r7   r8   r9   rS   Ú_numba_parallel_test_Úskip_unsupportedr4  r=  rD  rM  rT  r!  r:   r6   r4   r*  r*  Æ  s�   „ ñð "Ðàñ9ó ð9ð" ñHó ðHð ñMó ðMð ñEó ðEð" ñPó ðPð ñ	Hó ñ	Hr6   r*  c                   ó"   — e Zd Zd„ Zed„ «       Zy)ÚTestArrayAnalysisInterfacec                 óx  — i }t        t        «      D ]'  }|j                  d«      sŒt        t        |«      ||<   Œ) d„ }t	        j
                  |«      }|j                  «       D ]H  \  }}t	        j
                  |«      }| j                  ||¬«      5  | j                  ||«       d d d «       ŒJ y # 1 sw Y   ŒUxY w)NÚ_analyze_op_call_c                  ó   — y rZ   r:   )r2   ÚscoperÓ   Úlocrv   Úkwss         r4   Ú
iface_stubzMTestArrayAnalysisInterface.test_analyze_op_call_interface.<locals>.iface_stub2  s   € Ør6   )ÚfnameÚsig)	Údirr   r²   rº   r   Úpysignaturer¬   ÚsubTestr<  )r2   Úaocrc  rb  Úexpectedr‹  r`  Úgots           r4   Útest_analyze_op_call_interfacez9TestArrayAnalysisInterface.test_analyze_op_call_interface+  s�   € àˆÜœÖ'ˆEØ×ÑÐ 3Õ4Ü$¤]°EÓ:��E’
ð (ò	ä×$Ñ$ ZÓ0ˆØ—I‘I–K‰DˆAˆqÜ×#Ñ# AÓ&ˆCØ—‘ A¨3�Õ/Ø× Ñ   hÔ/÷ 0Ð/ñ  ç/Ð/ús   ÂB0Â0B9	c                 óÒ  ‡ ‡‡	‡
‡— ddl m} ddlm} |j                  |   Š	ddiŠ
ˆˆ ˆ
fd„Šˆ	ˆfd„}	 ||j                  |<   t
        j                  Šˆfd„}  t        d¬	«      |«      d
«      }‰
d   }‰ j                  |d«       ‰	|j                  |<     t        d¬	«      |«      d
«      }‰ j                  ||«       ‰ j                  |‰
d   «       y # ‰	|j                  |<   w xY w)Nr   )ÚParfor)r`   Úcounterc                 óª  •— | j                   }|j                  d   j                  d«      D ]L  }|j                  |j                  «      }t        |dd «      ‰u sŒ.t        |j                  d   dd «      dk(  sŒL n y |j                  |«      }| j                  d   }‰j                  |j                  d|j                  «      «       ‰dxx   dz  cc<   y )Nr   r¦   r¾   r‡   r3   rn  r1   )r]   rb   r­   r®   r†   rº   rv   Úget_assigneer›   rH   rI   r‡   )	r`   r]   r¦   ÚcalleeÚ
variable_AÚesr  r2   Úshareds	         €€€r4   ÚtestcodezKTestArrayAnalysisInterface.test_array_analysis_extensions.<locals>.testcodeE  s½   ø€ à$×,Ñ,ˆGØŸ™ qÑ)×4Ñ4°VÖ<�Ø ×/Ñ/°·	±	Ó:�Ü˜6 7¨DÓ1°UÒ:Ü˜tŸy™y¨™|¨V°TÓ:¸cÓAÙð	 =ð à ×-Ñ-¨dÓ3ˆJà×*Ñ*¨1Ñ-ˆBØ�O‰O˜BŸK™K¨¨Z¯_©_Ó=Ô>Ø�9Ó Ñ"Ôr6   c                 ó*   •—  ‰|«        ‰| |||«      S )z7Recursive array analysis for parfor nodes.
            r:   )ÚparforrÓ   r^   r`   Úorig_parforru  s       €€r4   Ú
new_parforzMTestArrayAnalysisInterface.test_array_analysis_extensions.<locals>.new_parforV  s#   ø€ ñ �^Ô$áØ˜	 7¨Nóð r6   c                 óŽ   •—  ‰| «      }t        | «      D ]*  }t        j                  |«      }|j                  «       ||<   Œ, |dz   S r0   )r   rî   r^  r  )r3   r  rÔ   r1  r  s       €r4   r%  zDTestArrayAnalysisInterface.test_array_analysis_extensions.<locals>.fd  sA   ø€ Ù˜!“H�Ü ž�AÜŸ	™	 !›�AØŸ5™5›7�A�a’Dð #ð ˜1‘u�r6   Tr0  r
  )Únumba.parfors.parforrm  Únumba.parforsr`   Úarray_analysis_extensionsrî   r  r   ÚassertGreaterÚassertPreciseEqualr<  )r2   rm  r`   ry  r%  rj  Úexecuted_countri  r  rx  rt  ru  s   `       @@@@r4   Útest_array_analysis_extensionsz9TestArrayAnalysisInterface.test_array_analysis_extensions:  sñ   ü€ õ 	0Ý0à$×>Ñ>¸vÑFˆà˜Q�ˆö	#õ"	ð	Kà?IˆN×4Ñ4°VÑ<ä—H‘HˆEôð )Ð%”$ Ô% aÓ(¨Ó,ˆCØ# IÑ.ˆNØ×Ñ˜~¨qÔ1ð @KˆN×4Ñ4°VÑ<ð *Ð&”4 Ô& qÓ)¨"Ó-ˆØ×Ñ  XÔ.à×Ñ˜¨°	Ñ):Õ;øð @KˆN×4Ñ4°VÒ<ús   ³AC ÃC&N)r7   r8   r9   rk  rY  r�  r:   r6   r4   r[  r[  *  s   „ ò0ð ñ;<ó ñ;<r6   r[  Ú__main__)GÚ	itertoolsÚnumpyrî   ÚsysÚcollectionsr   Úior   Únumbar   r   r   Ú
numba.corer   r	   r
   r   r   r   r   r   Únumba.tests.supportr   r   r   r   Únumba.parfors.array_analysisr   r   Únumba.core.compilerr   r   r   Únumba.core.ir_utilsr   Únumba.core.untyped_passesr   r   r   r   r   r   r    r!   r"   r#   Únumba.core.typed_passesr$   r%   r&   r'   Únumba.core.compiler_machineryr(   r)   Únumba.experimentalr*   ÚunittestrY  rP  Úobjectr.   rW  r   r?   rW   rn   rŒ   r*  r[  r7   Úmainr:   r6   r4   Ú<module>r•     s<  ðÛ ã Û 
Ý "Ý ç &Ñ &÷	÷ 	ó 	÷4ó 4ç @ß <Ñ <Ý +÷J÷ J÷ J÷
Bó B÷ SÑ RÝ 'Û ð ,Ð ñ 
ˆC�—‘Ð  U§[¡[Ð1Ð
2Ó3ô�vó ó 4ðð €Ø€ô$/�8ô $/ñN ˜U°Ô5ô˜ó ó 6ðô$<$˜(ô <$ô~U-˜ô U-ôpaH¨ô aHôHL< ô L<ð^ ˆzÒØ€H‡M�M…Oð r6   