§
    ƒÛg6l ã                   óˆ  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZ	d dl
Z
d dlmZ d dlZd dlmZ d dlZd dlmZmZ d dlZd dlmZmZ d dlZd dl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'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- d dl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 d d	l5m6Z6 d d
l7m8Z8 d dl9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@ d dlAmBZC d dlDmEZE d dlFmGZGmHZHmIZImJZJ d dlKmLZLmMZM d dlNmOZO d dlPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z] d dl^m_Z_ d dlDm`Z` d dl$maZa d dlbZbd dlcZceW G d„ deQ¦  «        ¦   «         Zd ecje         ejf        ¦   «         dvd¦  «        ZgdZhdZi edd¦  «        Zjd„ Zke] G d„ deQ¦  «        ¦   «         Zld „ Zmd!„ Znd"„ Zod#„ Zpd$„ Zqd%„ Zrd&„ Zsd'„ Ztd(„ Zud)„ Zvd*„ ZwdTd+„Zxd,„ Zy G d-„ d.ez¦  «        Z{eW G d/„ d0el¦  «        ¦   «         Z|eW G d1„ d2el¦  «        ¦   «         Z}eW G d3„ d4el¦  «        ¦   «         Z~ G d5„ d6eQ¦  «        ZeW G d7„ d8el¦  «        ¦   «         Z€eW G d9„ d:eSel¦  «        ¦   «         Z�eW G d;„ d<el¦  «        ¦   «         Z‚eW G d=„ d>el¦  «        ¦   «         ZƒeW G d?„ d@el¦  «        ¦   «         Z„eW G dA„ dBel¦  «        ¦   «         Z…eW G dC„ dDel¦  «        ¦   «         Z† G dE„ dFel¦  «        Z‡eW G dG„ dHe‡¦  «        ¦   «         ZˆeW G dI„ dJe‡¦  «        ¦   «         Z‰eW G dK„ dLeQ¦  «        ¦   «         ZŠeWeg G dM„ dNe‡¦  «        ¦   «         ¦   «         Z‹eW G dO„ dPeQ¦  «        ¦   «         ZŒeW G dQ„ dReQ¦  «        ¦   «         Z�eŽdSk    r ecj�        ¦   «          dS dS )Ué    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ÚtypingÚerrorsÚirÚrewritesÚtyped_passesÚinline_closurecallÚconfigÚcompilerÚcpu)Ú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)ÚByteCodeIter)Úcompile_isolatedÚFlagsÚ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)Úregister_jitable)Ú_fix_LOAD_GLOBAL_arg)Úutilsc                   ó–   — e Zd ZdZ ej        ¦   «         dk    rdndZ	 d„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestParforsRunnerFÚaarch64i  i  c                 óÚ   — | j         }|                      ¦   «                              d¦  «        d                              d¦  «        d         }|                      ||| j        ¬¦  «         d S )Nú.éÿÿÿÿÚ_)Útest_moduleÚ
test_classÚtimeout)Ú
__module__ÚidÚsplitÚsubprocess_test_runnerÚ_TIMEOUT)ÚselfÚthemodÚtest_clazz_names      úN/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_parfors.pyÚrunnerzTestParforsRunner.runnerP   sk   € Ø”ˆØŸ'š'™)œ)Ÿ/š/¨#Ñ.Ô.¨rÔ2×8Ò8¸Ñ=Ô=¸bÔAˆà×#Ò#°Ø/>Ø,0¬Mð 	$ñ 	;ô 	;ð 	;ð 	;ð 	;ó    c                 ó.   — |                       ¦   «          d S ©N©rX   ©rT   s    rW   Útest_TestParforBasicz&TestParforsRunner.test_TestParforBasicX   ó   € Ø�Š‰ŒˆˆˆrY   c                 ó.   — |                       ¦   «          d S r[   r\   r]   s    rW   Útest_TestParforNumericalMiscz.TestParforsRunner.test_TestParforNumericalMisc[   r_   rY   c                 ó.   — |                       ¦   «          d S r[   r\   r]   s    rW   Útest_TestParforNumPyz&TestParforsRunner.test_TestParforNumPy^   r_   rY   c                 ó.   — |                       ¦   «          d S r[   r\   r]   s    rW   Útest_TestParforsz"TestParforsRunner.test_TestParforsa   r_   rY   c                 ó.   — |                       ¦   «          d S r[   r\   r]   s    rW   Útest_TestParforsBitMaskz)TestParforsRunner.test_TestParforsBitMaskd   r_   rY   c                 ó.   — |                       ¦   «          d S r[   r\   r]   s    rW   Útest_TestParforsDiagnosticsz-TestParforsRunner.test_TestParforsDiagnosticsg   r_   rY   c                 ó.   — |                       ¦   «          d S r[   r\   r]   s    rW   Útest_TestParforsLeaksz'TestParforsRunner.test_TestParforsLeaksj   r_   rY   c                 ó.   — |                       ¦   «          d S r[   r\   r]   s    rW   Útest_TestParforsMiscz&TestParforsRunner.test_TestParforsMiscm   r_   rY   c                 ó.   — |                       ¦   «          d S r[   r\   r]   s    rW   Útest_TestParforsOptionsz)TestParforsRunner.test_TestParforsOptionsp   r_   rY   c                 ó.   — |                       ¦   «          d S r[   r\   r]   s    rW   Útest_TestParforsSlicez'TestParforsRunner.test_TestParforsSlices   r_   rY   c                 ó.   — |                       ¦   «          d S r[   r\   r]   s    rW   Útest_TestParforsVectorizerz,TestParforsRunner.test_TestParforsVectorizerv   r_   rY   c                 ó.   — |                       ¦   «          d S r[   r\   r]   s    rW   Útest_TestPrangeBasicz&TestParforsRunner.test_TestPrangeBasicy   r_   rY   c                 ó.   — |                       ¦   «          d S r[   r\   r]   s    rW   Útest_TestPrangeSpecificz)TestParforsRunner.test_TestPrangeSpecific|   r_   rY   N)Ú__name__rO   Ú__qualname__Ú_numba_parallel_test_ÚplatformÚmachinerS   rX   r^   ra   rc   re   rg   ri   rk   rm   ro   rq   rs   ru   rw   © rY   rW   rF   rF   B   s  € € € € € ð "Ðð (�xÔ'Ñ)Ô)¨YÒ6Ð6ˆtˆt¸D€Hðð
;ð ;ð ;ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð ð rY   rF   )Úi386Úx86_64zx86 only testé   é   ÚTestNamedTuple©Úpart0Úpart1c                 ó   — dS )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	   € ð 	€DrY   c                   ó–   ‡ — e Zd ZdZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zdd„Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚTestParforsBasezµ
    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                 ó°  •— t          ¦   «         | _        d| j        _        t          ¦   «         | _        t	          j        d¦  «        | j        _        d| j        _        t          ¦   «         | _        t	          j        d¦  «        | j        _        d| j        _        t	          j        d¦  «        | j        _	         t          t          | ¦  «        j        |Ž  d S )NT)r/   ÚcflagsÚnrtÚpflagsr   ÚParallelOptionsÚauto_parallelÚfast_pflagsÚFastMathOptionsÚfastmathÚsuperrŒ   Ú__init__)rT   ÚargsÚ	__class__s     €rW   r—   zTestParforsBase.__init__›   s§   ø€ å‘g”gˆŒØˆŒŒõ ‘g”gˆŒÝ$'Ô$7¸Ñ$=Ô$=ˆŒÔ!ØˆŒŒõ !™7œ7ˆÔÝ),Ô)<¸TÑ)BÔ)BˆÔÔ&Ø#ˆÔÔÝ$'Ô$7¸Ñ$=Ô$=ˆÔÔ!Ø-��o˜tÑ$Ô$Ô-¨tÐ4Ð4Ð4Ð4rY   c                 ó&   — t          |||¬¦  «        S ©N)Úflags)r.   )rT   ÚfuncÚsigrœ   s       rW   Ú_compile_thiszTestParforsBase._compile_this¬   s   € Ý  c°Ð7Ñ7Ô7Ð7rY   c                 ó<   — |                       ||| j        ¬¦  «        S r›   )rŸ   r�   ©rT   r�   rž   s      rW   Úcompile_parallelz TestParforsBase.compile_parallel¯   ó   € Ø×!Ò! $¨°4´;Ð!Ñ?Ô?Ð?rY   c                 ó<   — |                       ||| j        ¬¦  «        S r›   )rŸ   r“   r¡   s      rW   Úcompile_parallel_fastmathz)TestParforsBase.compile_parallel_fastmath²   s    € Ø×!Ò! $¨°4Ô3CÐ!ÑDÔDÐDrY   c                 ó<   — |                       ||| j        ¬¦  «        S r›   )rŸ   rŽ   r¡   s      rW   Úcompile_njitzTestParforsBase.compile_njitµ   r£   rY   c                 ó”   — t          d„ |D ¦   «         ¦  «        }|                      ||¦  «        }|                      ||¦  «        }||fS )Nc                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r}   ©Únumbar   ©Ú.0Úxs     rW   ú
<listcomp>z/TestParforsBase.compile_all.<locals>.<listcomp>¹   ó    € Ð3Ð3Ð3¨•U”\ !‘_”_Ð3Ð3Ð3rY   )Útupler¢   r§   )rT   Úpyfuncr˜   Úkwargsrž   ÚcpfuncÚcfuncs          rW   Úcompile_allzTestParforsBase.compile_all¸   sV   € ÝÐ3Ð3¨dÐ3Ñ3Ô3Ñ4Ô4ˆð ×&Ò& v¨sÑ3Ô3ˆð ×!Ò! &¨#Ñ.Ô.ˆà�fˆ}ÐrY   c                 ó   — |                      dd¦  «        }|                      dd¦  «        }|                      dd¦  «        }|                      dd¦  «        }	|                      dd¦  «        }
d„ } ||Ž } ||Ž } ||Ž } |j        |Ž } ||Ž } |j        |Ž }|
€at          j        j        ||fi |¤Ž t          j        j        ||fi |¤Ž |                      t          |¦  «        t          |¦  «        ¦  «         nPt          |¦  «        t          |
¦  «        k    sJ ‚t          ||||
¦  «        D ]\  }}}} |||fi |¤Ž  |||fi |¤Ž Œ|	r|  	                    ||¦  «         |�' |j         ||Ž Ž }t          j        j        ||fi |¤Ž dS dS )	a-  
        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                  óê  — | st          ¦   «         S g }| D �]O}t          |t          j        ¦  «        r)|                     |                     d¦  «        ¦  «         ŒFt          |t          j        ¦  «        r(|                     |                     ¦   «         ¦  «         Œˆt          |t          j        ¦  «        r|                     |¦  «         Œ¸|€|                     |¦  «         ŒÐt          |t           ¦  «        r)|                     t          j	        |¦  «        ¦  «         �Œt          |t          ¦  «        r|                     |d d …         ¦  «         �ŒBt          d¦  «        ‚t          |¦  «        S )NÚkz%Unsupported argument type encountered)r±   Ú
isinstanceÚnpÚndarrayÚappendÚcopyÚnumberÚnumbersÚNumberÚdeepcopyÚlistÚ
ValueError)r˜   Únew_argsr®   s      rW   Ú	copy_argsz:TestParforsBase.check_parfors_vs_others.<locals>.copy_argsè   sP  € Øð Ý‘w”w�ØˆHØð Nñ N�Ý˜a¥¤Ñ,Ô,ð NØ—O’O A§F¢F¨3¡K¤KÑ0Ô0Ð0Ð0Ý ¥2¤9Ñ-Ô-ð NØ—O’O A§F¢F¡H¤HÑ-Ô-Ð-Ð-Ý ¥7¤>Ñ2Ô2ð 	NØ—O’O AÑ&Ô&Ð&Ð&Ø�YØ—O’O AÑ&Ô&Ð&Ð&Ý ¥5Ñ)Ô)ð NØ—O’O¥D¤M°!Ñ$4Ô$4Ñ5Ô5Ð5Ñ5Ý ¥4Ñ(Ô(ð NØ—O’O A a a a¤DÑ)Ô)Ð)Ñ)å$Ð%LÑMÔMÐMÝ˜‘?”?Ð"rY   )
Ú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_othersz'TestParforsBase.check_parfors_vs_othersÃ   s3  € ð>  ŸšÐ$4°dÑ;Ô;ˆØŸšÐ$4°dÑ;Ô;ˆØŸšÐ$4°dÑ;Ô;ˆØ!Ÿ:š:Ð&8¸$Ñ?Ô?ÐØ"(§*¢*Ð-AÀ4Ñ"HÔ"HÐð	#ð 	#ð 	#ð, �)˜TÐ"ˆØ�f˜gÐ&ˆð �I˜tÐ$ˆ	Ø'�eÔ'¨Ð3ˆð  �i Ð&ˆØ*˜Ô*¨KÐ8ˆà"Ð*ÝŒJÔ*¨;¸ÐNÐNÀvÐNÐNÐNÝŒJÔ*¨=¸+ÐPÐPÈÐPÐPÐPØ×Ò�T +Ñ.Ô.µ°]Ñ0CÔ0CÑDÔDÐDÐDå�w‘<”<¥3Ð'>Ñ#?Ô#?Ò?Ð?Ð?Ð?Ý69Ø˜ KÐ1Hñ7Jô 7Jð 4ð 4Ñ2��w 	¨7à�˜ Ð1Ð1¨&Ð1Ð1Ð1Ø�˜	 5Ð3Ð3¨FÐ3Ð3Ð3Ð3àð 	:Ø×!Ò! &¨.Ñ9Ô9Ð9ð Ð%Ø%? ^Ô%?ÀÀÈDÐAQÐ%RÐ"ÝŒJÔ*Ð+AÀ;ð 5ð 5Ø-3ð5ð 5ð 5ð 5ð 5ð &Ð%rY   c                 óN   —  | j         |g|¢R Ž \  }} | j        |||g|¢R i |¤Ž dS )z‹Checks 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   ÚcheckzTestParforsBase.check  sO   € ð )˜Ô(¨Ð7°$Ð7Ð7Ð7‰ˆˆvØ$ˆÔ$ V¨U°FÐL¸TÐLÐLÐLÀVÐLÐLÐLÐLÐLrY   c           	      óÜ   —  |¦   «         D ]`}|                       t          t          t          |¦  «        ¦  «        ¦  «        5   | j        |g|¢R i |¤Ž ddd¦  «         n# 1 swxY w Y   ŒadS )zHRun self.check(impl, ...) on array data generated from arg_gen.
        N)ÚsubTestrÈ   Úmapr   rä   )rT   ÚimplÚarg_genr³   r˜   s        rW   Úcheck_variantszTestParforsBase.check_variants#  s¿   € ð �G‘I”Ið 	2ð 	2ˆDØ—’�d¥3¥v¨tÑ#4Ô#4Ñ5Ô5Ñ6Ô6ð 2ð 2Ø�”
˜4Ð1 $Ð1Ð1Ð1¨&Ð1Ð1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2øð	2ð 	2s   ÁA Á A$	Á'A$	c           	      óF  —  |¦   «         D ]•}|                       t          t          t          |¦  «        ¦  «        ¦  «        5  t	          t          t          |¦  «        ¦  «        }|                      t          ||¦  «        d¦  «         ddd¦  «         n# 1 swxY w Y   Œ–dS )zXRun 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_variantsz&TestParforsBase.count_parfors_variants*  sé   € ð �G‘I”Ið 	Gð 	GˆDØ—’�d¥3¥v¨tÑ#4Ô#4Ñ5Ô5Ñ6Ô6ð Gð GÝ�s¥6¨4Ñ0Ô0Ñ1Ô1�à×'Ò'­°T¸6Ñ(BÔ(BÀAÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gøð	Gð 	Gs   ÁABÂB	ÂB	c                 óª   — d}|�!|dv r	|d|z   z  }nd}t          ||z  ¦  «        ‚|                      ||j                             ¦   «         ¦  «         d S )Nz@do_scheduling)ÚsignedÚunsignedrK   z$Unknown scheduler_type specified: %s)rÉ   ÚassertInÚlibraryÚget_llvm_str)rT   Úcresr¸   Úscheduler_strÚmsgs        rW   r»   z TestParforsBase.check_scheduling4  sj   € à(ˆØÐ%ØÐ!7Ð7Ð7Ø  ~Ñ!5Ñ5��à<�Ý   ~Ñ!5Ñ6Ô6Ð6à�Š�m T¤\×%>Ò%>Ñ%@Ô%@ÑAÔAÐAÐAÐArY   c                 ót   ‡‡— ˆfd„}t           |¦   «         ¦  «        Šˆfd„t          |¦  «        D ¦   «         S )zFMake *ct* sample 1D arrays of length *n* using np.linspace().
        c               3   óœ   •K  — t          j        dd‰ ¦  «        V — t          j        dd‰ ¦  «        V — t          j        dd‰ ¦  «        V — d S ©Nr   rì   é   ©rÀ   Úlinspace©Úns   €rW   Úgenz)TestParforsBase.gen_linspace.<locals>.genC  s[   øè è € Ý”+˜a  AÑ&Ô&Ð&Ð&Ð&Ý”+˜a  AÑ&Ô&Ð&Ð&Ð&Ý”+˜a  AÑ&Ô&Ð&Ð&Ð&Ð&Ð&rY   c                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS r}   )Únext)r­   ÚiÚsrcs     €rW   r¯   z0TestParforsBase.gen_linspace.<locals>.<listcomp>I  s   ø€ Ð-Ð-Ð-˜a•�S‘	”	Ð-Ð-Ð-rY   )r	   Úrange)rT   r  Úctr  r  s    `  @rW   Úgen_linspacezTestParforsBase.gen_linspace@  sP   øø€ ð	'ð 	'ð 	'ð 	'ð 	'õ
 �C�C‘E”E‰lŒlˆØ-Ð-Ð-Ð-¥5¨¡9¤9Ð-Ñ-Ô-Ð-rY   c              #   ó  K  — |                       d|¬¦  «        V — d„ |                       d|¬¦  «        D ¦   «         }|V — d„ |D ¦   «         V — d„ |                       d|¬¦  «        D ¦   «         }|V — d	„ |D ¦   «         V — d
S )z?Make 1D, 2D, 3D variants of the data in C and F orders
        é
   )r  c                 ó8   — g | ]}|                      d ¦  «        ‘ŒS )©rý   é   ©Úreshaper¬   s     rW   r¯   z9TestParforsBase.gen_linspace_variants.<locals>.<listcomp>R  s4   € ð >ð >ð >Øð —)’)˜FÑ#Ô#ð >ð >ð >rY   é   )r  r  c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r}   ©rÀ   Úasfortranarrayr¬   s     rW   r¯   z9TestParforsBase.gen_linspace_variants.<locals>.<listcomp>V  ó#   € Ð4Ð4Ð4¨�rÔ  Ñ#Ô#Ð4Ð4Ð4rY   c                 ó8   — g | ]}|                      d ¦  «        ‘ŒS ))rý   r  é   r  r¬   s     rW   r¯   z9TestParforsBase.gen_linspace_variants.<locals>.<listcomp>Y  s:   € ð Bð Bð BØð —)’)˜IÑ&Ô&ð Bð Bð BrY   é   c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r}   r  r¬   s     rW   r¯   z9TestParforsBase.gen_linspace_variants.<locals>.<listcomp>]  r  rY   N)r	  )rT   r  Úarr2dsÚarr3dss       rW   Úgen_linspace_variantsz%TestParforsBase.gen_linspace_variantsK  sÚ   è è € ð ×Ò  rÐÑ*Ô*Ð*Ð*Ð*ð>ð >Ø×,Ò,¨u¸Ð,Ñ<Ô<ð>ñ >ô >ˆàˆˆˆà4Ð4¨VÐ4Ñ4Ô4Ð4Ð4Ð4ðBð BØ×,Ò,¨y¸RÐ,Ñ@Ô@ðBñ Bô Bˆàˆˆˆà4Ð4¨VÐ4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4rY   Nc                 óX   ‡— ˆfd„|D ¦   «         }|�|D ]}|t          |¦  «        v sJ ‚Œ|S )z. helper function to filter out modules by namec                 ó&   •— g | ]}‰|j         v ¯|‘ŒS r}   ©Úname)r­   r®   Úmagicstrs     €rW   r¯   z/TestParforsBase._filter_mod.<locals>.<listcomp>a  s%   ø€ Ð5Ð5Ð5�a (¨a¬fÐ"4Ð"4�Ð"4Ð"4Ð"4rY   )Ústr)rT   Úmodr!  ÚcheckstrÚfiltr®   s     `   rW   Ú_filter_modzTestParforsBase._filter_mod_  sP   ø€ à5Ð5Ð5Ð5˜3Ð5Ñ5Ô5ˆØÐØð *ð *�Ø¥3 q¡6¤6Ð)Ð)Ð)Ð)Ð)ØˆrY   c                 ó|   — d„ |j         j        j        j        j        D ¦   «         }|                      |||¬¦  «        S )z gets the gufunc LLVM Modulesc                 ó   — g | ]}|‘ŒS r}   r}   r¬   s     rW   r¯   z7TestParforsBase._get_gufunc_modules.<locals>.<listcomp>i  s   € ÐJÐJÐJ˜!�AÐJÐJÐJrY   )r$  )rõ   Ú_codegenÚ_engineÚ_eeÚ_modulesr&  )rT   r÷   r!  r$  r,  s        rW   Ú_get_gufunc_modulesz#TestParforsBase._get_gufunc_modulesg  s>   € àJÐJ˜tœ|Ô4Ô<Ô@ÔIÐJÑJÔJˆØ×Ò ¨(¸XÐÑFÔFÐFrY   c                 ó‚   — d}|                       ||¦  «        }t          ¦   «         }|D ]} ||¦  «        ||j        <   Œ|S )z$ helper for gufunc IR/asm generationÚ__numba_parfor_gufunc)r-  Údictr   )rT   r÷   Úfnr!  Úgufunc_modsr®   r#  s          rW   Ú_get_gufunc_infoz TestParforsBase._get_gufunc_infol  sP   € ð +ˆØ×.Ò.¨t°XÑ>Ô>ˆÝ‰FŒFˆØð 	"ð 	"ˆCØ˜"˜S™'œ'ˆAˆcŒh‰KˆKØˆrY   c                 ó8   — |                       |t          ¦  «        S )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, ...)`
        )r3  r"  )rT   r÷   s     rW   Ú_get_gufunc_irzTestParforsBase._get_gufunc_irv  s   € ð ×$Ò$ T­3Ñ/Ô/Ð/rY   c                 ó\   ‡— |j         j        j        Šˆfd„}|                      ||¦  «        S )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                 óH   •— t          ‰                     | ¦  «        ¦  «        S r[   )r"  Úemit_assembly)r#  Útms    €rW   Úemit_asmz1TestParforsBase._get_gufunc_asm.<locals>.emit_asm‰  s   ø€ Ý�r×'Ò'¨Ñ,Ô,Ñ-Ô-Ð-rY   )rõ   r)  Ú_tmr3  )rT   r÷   r:  r9  s      @rW   Ú_get_gufunc_asmzTestParforsBase._get_gufunc_asm€  sA   ø€ ð Œ\Ô"Ô&ˆð	.ð 	.ð 	.ð 	.ð 	.à×$Ò$ T¨8Ñ4Ô4Ð4rY   c                 óÎ   ‡ — ‰                       ||¦  «        }‰                      |¦  «        }d„ }ˆ fd„}|                     ¦   «         D ]\  }} ||¦  «        }	 ||	¦  «         ŒdS )a�  
        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                 óŠ   —  | j         ¦   «         }g }|D ].}t          j        d|¦  «        }|�|                     |¦  «         Œ/|S )Nz\bfast\b)Ú
splitlinesÚreÚsearchrÂ   )r   ÚsplittedÚ	fast_instr®   Úms        rW   Ú_get_fast_instructionsz?TestParforsBase.assert_fastmath.<locals>._get_fast_instructionsœ  sT   € Ø$�r”}‘”ˆHØˆIØð (ð (�Ý”I˜k¨1Ñ-Ô-�Ø�=Ø×$Ò$ QÑ'Ô'Ð'øØÐrY   c                 ór   •— d}| D ]0}d}|D ]}|dz   }||v r|dz  }Œ‰                      |dk    ¦  «         Œ1d S )N)ÚfaddÚfsubÚfmulÚfdivÚfremÚfcmpÚcallr   z fastrì   )Ú
assertTrue)ÚinstrsÚopsÚinstÚcountÚopÚmatchrT   s         €rW   Ú_assert_fastz5TestParforsBase.assert_fastmath.<locals>._assert_fast¥  sj   ø€ ØJˆCØð +ð +�Ø�Øð #ð #�BØ ™L�EØ �}�}Ø ™
˜øØ—’ ¨¢	Ñ*Ô*Ð*Ð*ð+ð +rY   N)r¥   r5  Úitems)
rT   r²   rž   r÷   Ú_irrE  rU  r   ÚguirrQ  s
   `         rW   Úassert_fastmathzTestParforsBase.assert_fastmath�  sŸ   ø€ ð ×-Ò-¨f°cÑ:Ô:ˆØ×!Ò! $Ñ'Ô'ˆð	ð 	ð 	ð	+ð 	+ð 	+ð 	+ð 	+ð Ÿ)š)™+œ+ð 	ð 	‰JˆD�$Ø)Ð)¨$Ñ/Ô/ˆDØˆL˜ÑÔÐÐð	ð 	rY   r[   )rx   rO   ry   Ú__doc__rz   r—   rŸ   r¢   r¥   r§   r¶   rà   rä   rê   rð   r»   r	  r  r&  r-  r3  r5  r<  rY  Ú__classcell__)r™   s   @rW   rŒ   rŒ   ‘   s|  ø€ € € € € ðð ð "Ðð5ð 5ð 5ð 5ð 5ð"8ð 8ð 8ð@ð @ð @ðEð Eð Eð@ð @ð @ð	ð 	ð 	ðX5ð X5ð X5ðtMð Mð Mð2ð 2ð 2ðGð Gð Gð
Bð 
Bð 
Bð	.ð 	.ð 	.ð5ð 5ð 5ð(ð ð ð ðGð Gð Gð Gð
ð ð ð0ð 0ð 0ð5ð 5ð 5ð$ð $ð $ð $ð $ð $ð $rY   rŒ   c                 ó  — t          j        | |z  ¦  «        }d|z  |z  }|t          j        |¦  «        z  }||z   |z  |z   |z  }||z
  }	dd|z  z   }
dd|	z  z   }|t          j        | |z  ¦  «        z  }||z  }| |
z  |z
  }||z
  | z   }|S )Nç      à?ç      ð?)rÀ   ÚlogÚsqrtÚexp)ÚsptpriceÚstrikeÚrateÚ
volatilityÚtimevÚlogtermÚpowtermÚdenÚd1Úd2ÚNofXd1ÚNofXd2ÚfutureValueÚc1rM  Úputs                   rW   Úblackscholes_implrq  ´  s»   € åŒf�X Ñ&Ñ'Ô'€GØ�JÑ Ñ+€GØ
•r”w˜u‘~”~Ñ
%€CØ�7‰N˜eÑ# wÑ
.°#Ñ	5€BØ	ˆc‰€BØ�9˜r‘>Ñ!€FØ�9˜r‘>Ñ!€FØ�2œ6 D &¨5¡.Ñ1Ô1Ñ1€KØ	�vÑ	€BØ�fÑ˜rÑ!€DØ
�Ñ
˜xÑ
'€CØ€JrY   c                 óÄ   — t          |¦  «        D ]O}|t          j        ddt          j        |  t          j        ||¦  «        z  ¦  «        z   z  dz
  | z  |¦  «        z  }ŒP|S ©Nr^  )r  rÀ   Údotra  )ÚYÚXÚwÚ
iterationsr  s        rW   Úlr_implry  Ä  sg   € å�:ÑÔð Nð NˆØ	�RŒV�c˜S¥2¤6¨1¨"­r¬v°a¸©|¬|Ñ*;Ñ#<Ô#<Ñ<Ñ=ÀÑCÀqÑHÈ1ÑMÔMÑMˆˆØ€HrY   c                 ód  ‡ ‡‡‡‡‡	— |Š‰ j         \  }Št          |¦  «        D ]�}t          j        ˆ ˆˆfd„t          |¦  «        D ¦   «         ¦  «        Št          j        ˆfd„t          |¦  «        D ¦   «         ¦  «        Š	t          j        ˆ ˆˆ	fd„t          ‰¦  «        D ¦   «         ¦  «        ŠŒŽ‰S )Nc                 óL   •‡— g | ]Šˆˆˆfd „t          ‰¦  «        D ¦   «         ‘Œ S )c                 ó�   •— g | ]B}t          j        t          j        ‰‰d d …f         ‰|d d …f         z
  dz  ¦  «        ¦  «        ‘ŒCS ©Nrý   )Úmathr`  rÀ   Úsum)r­   ÚjÚAÚ	centroidsr  s     €€€rW   r¯   z2example_kmeans_test.<locals>.<listcomp>.<listcomp>Ï  s_   ø€ ð ;ð ;ð ;Ø$%õ œ)¥B¤F¨A¨a°°°¨c¬F°9¸Q¸q¸q¸q¸S´>Ñ,AÀAÑ+EÑ$FÔ$FÑGÔGð ;ð ;ð ;rY   ©r  )r­   r  r�  r‚  Ú	numCenters    @€€€rW   r¯   z'example_kmeans_test.<locals>.<listcomp>Ï  sc   øø€ ð Nð Nð NØ?@ð;ð ;ð ;ð ;ð ;ð ;Ý).¨yÑ)9Ô)9ð;ñ ;ô ;ð Nð Nð NrY   c                 óL   •— g | ] }‰|d d …f                               ¦   «         ‘Œ!S r[   ©Úargmin)r­   r  Údists     €rW   r¯   z'example_kmeans_test.<locals>.<listcomp>Ñ  s1   ø€ Ð@Ð@Ð@°!˜4  ! ! ! œ9×+Ò+Ñ-Ô-Ð@Ð@Ð@rY   c                 óL   •‡— g | ]Šˆˆˆfd „t          ‰¦  «        D ¦   «         ‘Œ S )c                 ó‚   •— g | ];}t          j        ‰‰‰k    |f         ¦  «        t          j        ‰‰k    ¦  «        z  ‘Œ<S r}   ©rÀ   r  )r­   r€  r�  r  Úlabelss     €€€rW   r¯   z2example_kmeans_test.<locals>.<listcomp>.<listcomp>Ó  sR   ø€ ð 4ð 4ð 4Ø%&õ  "œv a¨°ª	°1¨¤oÑ6Ô6µr´v¸fÀaºiÑ7HÔ7HÑHð 4ð 4ð 4rY   rƒ  )r­   r  r�  ÚDrŒ  s    @€€€rW   r¯   z'example_kmeans_test.<locals>.<listcomp>Ó  sa   øø€ ð Oð Oð OØ89ð4ð 4ð 4ð 4ð 4ð 4Ý*/°©(¬(ð4ñ 4ô 4ð Oð Oð OrY   )Úshaper  rÀ   Úarray)
r�  r„  ÚnumIterÚinit_centroidsÚNÚlr�  r‚  rˆ  rŒ  s
   ``    @@@@rW   Úexample_kmeans_testr”  Ê  s	  øøøøøø€ Ø€IØŒ7�D€A€qå�7‰^Œ^ð Pð PˆÝŒxð Nð Nð Nð Nð Nð NÝDIÈ!ÁHÄHðNñ Nô Nñ Oô Oˆå”Ð@Ð@Ð@Ð@µu¸Q±x´xÐ@Ñ@Ô@ÑAÔAˆå”Hð Oð Oð Oð Oð Oð OÝ=BÀ9Ñ=MÔ=MðOñ Oô Oñ Pô Pˆ	ˆ	ð ÐrY   c                 óÔ  — t          j        ¦   «         }t          j        |d¦  «        }t	          j        | ¦  «        }|rt          j        |¦  «        }nt          j        d¦  «        }t          ||||¦  «        }t          j	        ||¦  «        5  | 
                    ¦   «          | 
                    ¦   «          t          j        |j        j        |d¬¦  «        }|                     ¦   «          t           j                             d|j        ¦  «         t'          j        |j        j        |j        j        |j        j        |j        j        d ¦  «        \  |j        _        |j        _        |j        _        }	t7          j        |j        j        |j        j        |j        j        dd |j        j        |j        j        t:          j        ¬¦  «         t>          j         j!         "                    ¦   «         }
t>          j         j!         #                    |j        j        |j        j        |j        j        |j        j        |j        j        ||
j$        ¬¦  «        }|                     ¦   «          t           j                             d|j        ¦  «         t	          j%        ¦   «         }t>          j         j!         &                    |j        j        |j        j        |j        j        |j        j        |j        j        |j        j        |||j        j'        |
¬	¦
  «
        }|                     ¦   «          t>          j         j!         (                    |j        j        |j        j        |j        j        |j        j        |j        j        |j        j        |||j        j'        |
¬	¦
  «
        }|                     ¦   «          t>          j         j!         )                    |j        j        |j        j        |j        j        |j        j        |j        j        |j        j        |||j        j'        |
¬	¦
  «
        }|                     ¦   «          tU          |j+        ¦  «        |_,        d d d ¦  «         n# 1 swxY w Y   ||fS )
Nr   T)Útypedzbefore-inferencer}   )Úfunc_irÚtypemapÚ	calltypesÚliftedÚlifted_fromr˜   Úreturn_typeÚhtml_output)Úswappedzafter-inference)Údiagnostics)-r   ÚContextr   Ú
CPUContextr   Úrun_frontendr‘   ÚTestPipeliner#   Únested_contextÚrefreshr   ÚInlineClosureCallPassÚstater—  Úrunr   Úrewrite_registryÚapplyr   Útype_inference_stageÚ	typingctxÚ	targetctxr˜   r˜  rœ  r™  r$   ÚTypeAnnotationr   ÚHTMLr«   ÚparforsÚparforÚParforDiagnosticsÚPreParforPassÚreplaced_fnsr/   Ú
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Ý”˜y¨%Ñ0Ô0€IÝÔ# IÑ.Ô.€GØ
ð ,ÝÔ% cÑ*Ô*ˆˆåÔ% dÑ+Ô+ˆå	�i ¨D°'Ñ	:Ô	:€Bå	Ô	" 9¨iÑ	8Ô	8ð 3Að 3AØ×ÒÑÔÐØ×ÒÑÔÐå(Ô>¸r¼xÔ?OØ?FØEIðKñ Kô Kˆð 	�ŠÑÔÐåÔ!×'Ò'Ð(:¸B¼HÑEÔEÐEõ 	Ô)¨"¬(Ô*<ØŒHÔ ¤Ô 0°"´(´-Àñ	Gô 	Gñ 	FˆŒÔ˜"œ(Ô.°´Ô0BÀAõ 	Ô'Ø”HÔ$Ø”HÔ$Ø”hÔ(ØØØ””ØœÔ,Ýœð	%ñ 	%ô 	%ð 	%õ ”mÔ*×<Ò<Ñ>Ô>ˆåœÔ-×;Ò;ØŒHÔ˜bœhÔ.°´Ô0BØŒHÔ ¤Ô 2°GØÔ,ð <ñ .ô .ˆð 	×ÒÑÔÐåÔ!×'Ò'Ð(9¸2¼8ÑDÔDÐDå”Ñ Ô ˆÝ”mÔ*×5Ò5ØŒHÔ˜bœhÔ.°´Ô0BØŒHÔ  "¤(Ô"4°b´hÔ6HØ�U˜BœHÔ-¸;ð 6ñ Hô Hˆð 	�ŠÑÔÐÝ”mÔ*×;Ò;ØŒHÔ˜bœhÔ.°´Ô0BØŒHÔ  "¤(Ô"4°b´hÔ6HØ�U˜BœHÔ-¸;ð <ñ Hô Hˆð 	�ŠÑÔÐÝ”mÔ*×@Ò@ØŒHÔ˜bœhÔ.°´Ô0BØŒHÔ  "¤(Ô"4°b´hÔ6HØ�U˜BœHÔ-¸;ð Añ Hô Hˆð 	�ŠÑÔÐÝ0°´Ñ@Ô@ˆÔðg3Að 3Að 3Añ 3Aô 3Að 3Að 3Að 3Að 3Að 3Að 3Aøøøð 3Að 3Að 3Að 3Aðj �Bˆ;Ðs   ÂO QÑQÑ"Qc                 óð   — t          | |fi |¤Ž\  }}d}|j                             ¦   «         D ]H\  }}t          |j        ¦  «        D ].\  }}	t          |	t          j        j        j	        ¦  «        r|dz  }Œ/ŒI|S ©Nr   rì   )
rÃ  r¹  rV  Ú	enumerateÚbodyr¿   r«   r°  r±  ÚParfor)
r»  r˜   r¼  r½  r¿  Ú	ret_countÚlabelÚblockr  rQ  s
             rW   rî   rî     s‘   € Ý(¨°DÐ@Ð@¸CÐ@Ð@�K€GˆRØ€Iàœ×,Ò,Ñ.Ô.ð ð ‰ˆˆuÝ  ¤Ñ,Ô,ð 	ð 	‰GˆAˆtÝ˜$¥¤Ô 4Ô ;Ñ<Ô<ð Ø˜Q‘�	øð	ð ÐrY   c                 ób   — t          | |fi |¤Ž\  }}t          |j        |j        j        ¦  «        S r[   )rÃ  Ú_count_arrays_innerr¹  r§  r˜  ©r»  r˜   r¼  r½  r¿  s        rW   ÚcountArraysrÏ  &  s4   € Ý(¨°DÐ@Ð@¸CÐ@Ð@�K€GˆRÝ˜wœ~¨r¬xÔ/?Ñ@Ô@Ð@rY   c                 ó"  — t          | |fi |¤Ž\  }}|j        }d}|                     ¦   «         D ]_\  }}t          |j        ¦  «        D ]E\  }	}
t          |
t          j        j        j	        ¦  «        r|t          |
j        j        ¦  «        z  }ŒFŒ`|S ©Nr   )rÃ  r¹  rV  rÆ  rÇ  r¿   r«   r°  r±  rÈ  rÒ   Ú
init_block)r»  r˜   r¼  r½  r¿  r¹  rÉ  rÊ  rË  r  rQ  s              rW   Úget_init_block_sizerÓ  *  s    € Ý(¨°DÐ@Ð@¸CÐ@Ð@�K€GˆRØŒ^€Fà€IàŸš™œð 7ð 7‰ˆˆuÝ  ¤Ñ,Ô,ð 	7ð 	7‰GˆAˆtÝ˜$¥¤Ô 4Ô ;Ñ<Ô<ð 7Ø�S ¤Ô!5Ñ6Ô6Ñ6�	øð	7ð ÐrY   c                 ó,  — d}t          ¦   «         }|                      ¦   «         D ]Ü\  }}t          |j        ¦  «        D ]Â\  }}t	          |t
          j        j        j        ¦  «        r6|j	         
                    ¦   «         }|j        |d<   |t          ||¦  «        z  }t	          |t          j        ¦  «        rIt	          ||j        j                 t"          j        ¦  «        r|                     |j        j        ¦  «         ŒÃŒÝ|t)          |¦  «        z  }|S rÑ  )ÚsetrV  rÆ  rÇ  r¿   r«   r°  r±  rÈ  Ú	loop_bodyrÃ   rÒ  rÍ  r   ÚAssignÚtargetr   r   ÚArrayCompatibleÚaddrÒ   )	r¹  r˜  rÉ  Úarr_setrÊ  rË  r  rQ  Úparfor_blockss	            rW   rÍ  rÍ  7  s  € Ø€IÝ‰eŒe€GàŸš™œð 	.ð 	.‰ˆˆuÝ  ¤Ñ,Ô,ð 	.ð 	.‰GˆAˆtÝ˜$¥¤Ô 4Ô ;Ñ<Ô<ð IØ $¤× 3Ò 3Ñ 5Ô 5�Ø#'¤?�˜aÑ ØÕ0°ÀÑHÔHÑH�	Ý˜4¥¤Ñ+Ô+ð .Ý" 7¨4¬;Ô+;Ô#<Ý$)Ô$9ñ;ô ;ð.ð —’˜DœKÔ,Ñ-Ô-Ð-øð	.ð •�W‘”Ñ€IØÐrY   c                 óŠ   — t          | |fi |¤Ž\  }}d}|j                             ¦   «         D ]}|t          ||¦  «        z  }Œ|S rÑ  )rÃ  r¹  ÚvaluesÚ_count_array_allocs_inner)r»  r˜   r¼  r½  r¿  rÉ  rË  s          rW   ÚcountArrayAllocsrà  I  s\   € Ý(¨°DÐ@Ð@¸CÐ@Ð@�K€GˆRØ€Ià”×&Ò&Ñ(Ô(ð ?ð ?ˆØÕ.¨w¸Ñ>Ô>Ñ>ˆ	ˆ	àÐrY   c                 ó  — d}|j         D ]ù}t          |t          j        j        j        ¦  «        rG|t          | |j        ¦  «        z  }|j         	                    ¦   «         D ]}|t          | |¦  «        z  }Œt          |t          j        ¦  «        rrt          |j        t          j        ¦  «        rS|j        j        dk    rCt          t           | |j        ¦  «        dk    st          t           | |j        ¦  «        dk    r|dz  }Œú|S )Nr   rM  )ÚemptyÚnumpy)r,   znumba.np.unsafe.ndarrayrì   )rÇ  r¿   r«   r°  r±  rÈ  rß  rÒ  rÖ  rÞ  r   r×  ÚvalueÚExprrS  r&   r%   )r—  rË  rÉ  rQ  r‰   s        rW   rß  rß  R  s  € Ø€IØ”
ð ð ˆÝ�d�EœMÔ0Ô7Ñ8Ô8ð 	CØÕ2°7¸D¼OÑLÔLÑLˆIØ”^×*Ò*Ñ,Ô,ð Cð C�ØÕ6°wÀÑBÔBÑB�	�	å�t�RœYÑ'Ô'ð 	­J°t´zÅ2Ä7Ñ,KÔ,Kð 	Ø”J”M VÒ+Ð+Ý�=¨'°4´:Ñ>Ô>ÐBTÒTÐTÝ�¨°´Ñ<Ô<ØDòEð Eà˜‰NˆIøàÐrY   c                 ód   — t          | |fi |¤Ž\  }}t          ||j        |j        j        ¦  «        S r[   )rÃ  Ú&_count_non_parfor_array_accesses_innerr¹  r§  r˜  rÎ  s        rW   ÚcountNonParforArrayAccessesrè  c  s@   € Ý(¨°DÐ@Ð@¸CÐ@Ð@�K€GˆRÝ1°'¸7¼>Ø24´(Ô2BñDô Dð DrY   c           	      ó¾  — d}|€t          ¦   «         }|                     ¦   «         D �]´\  }}|j        D �]¥}t          |t          j        j        j        ¦  «        rX|                     |j	        j
        ¦  «         |j                             ¦   «         }|j        |d<   |t          | |||¦  «        z  }Œt          |¦  «        rSt          ||j        j        j
                 t"          j        ¦  «        r$t'          | t)          |¦  «        |¦  «        s|dz  }Œát+          |¦  «        rOt          ||j        j
                 t"          j        ¦  «        r%t'          | t)          |¦  «        |¦  «        s|dz  }�Œ?t          |t.          j        ¦  «        rLt          |j        t.          j        ¦  «        r-|j        j
        |v r|                     |j        j
        ¦  «         �Œ§�Œ¶|S rÅ  )rÕ  rV  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ç  h  sê  € Ø€IØÐÝ™œˆàŸš™œð 5ñ 5‰ˆˆuØ”Jð 	5ñ 	5ˆDÝ˜$¥¤Ô 4Ô ;Ñ<Ô<ð 5Ø×"Ò" 4¤>Ô#6Ñ7Ô7Ð7Ø $¤× 3Ò 3Ñ 5Ô 5�Ø#'¤?�˜aÑ ØÕCØ˜-¨°.ñBô Bñ B�	�	õ ˜TÑ"Ô"ð 5¥z°'¸$¼*Ô:JÔ:OÔ2PÝÔ-ñ(/ô (/ð 5Ý7DØÕ6°tÑ<Ô<¸nñ8Nô 8Nð5ð ˜Q‘�	�	õ ˜TÑ"Ô"ð 	5¥z°'¸$¼+Ô:JÔ2KÝÔ)ñ(+ô (+ð 	5Ý3@ØÕ2°4Ñ8Ô8¸.ñ4Jô 4Jð	5ð ˜Q‘�	‘	õ ˜T¥2¤9Ñ-Ô-ð 5Ý˜TœZ­¬Ñ0Ô0ð5à”*”/ ^Ð3Ð3Ø×"Ò" 4¤;Ô#3Ñ4Ô4Ð4ùñ1	5ð4 ÐrY   c                 óú   — |j         |v rdS t          t          | |¦  «        }t          |t          j        ¦  «        r?|j        dk    r4t          d„ |j        D ¦   «         ¦  «        }t          ||z  ¦  «        dk    S dS )NTÚbuild_tuplec              3   ó$   K  — | ]}|j         V — Œd S r[   r  )r­   Úvs     rW   ú	<genexpr>z _uses_indices.<locals>.<genexpr>�  s$   è è € Ð5Ð5 !�q”vÐ5Ð5Ð5Ð5Ð5Ð5rY   r   F)
r   r&   r(   r¿   r   rå  rS  rÕ  rV  rÒ   )rí  ÚindexÚ	index_setÚind_defÚvarnamess        rW   rë  rë  Š  s€   € Ø„z�YÐÐØˆtå•N D¨%Ñ0Ô0€GÝ�'�2œ7Ñ#Ô#ð .¨¬
°mÒ(CÐ(CÝÐ5Ð5 w¤}Ð5Ñ5Ô5Ñ5Ô5ˆÝ�8˜iÑ'Ñ(Ô(¨AÒ-Ð-àˆ5rY   c                   ó   — e Zd Zd„ ZdS )r£  c                 óö   — t          j        ¦   «         | _        || j        _        || j        _        || j        _        || j        _        d | j        _        d | j        _        d | j        _	        i | j        _
        d S r[   )r   Ú	StateDictr§  r¬  r­  r˜   r—  r˜  rœ  r™  r¶  )rT   r¬  r­  r˜   r½  s        rW   r—   zTestPipeline.__init__—  sg   € ÝÔ'Ñ)Ô)ˆŒ
Ø(ˆŒ
ÔØ(ˆŒ
ÔØˆŒ
ŒØ$ˆŒ
ÔØ!ˆŒ
ÔØ!%ˆŒ
ÔØ#ˆŒ
ÔØ ˆŒ
ÔÐÐrY   N)rx   rO   ry   r—   r}   rY   rW   r£  r£  –  s#   € € € € € ð	!ð 	!ð 	!ð 	!ð 	!rY   r£  c                   ó$  — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z d„ Z!dS )ÚTestParforBasiczZSmoke tests for the parfors transforms. These tests check the most basic
    functionalityc                 óà   — t          j        | g|¢R Ž  t          j        t          j        d¦  «        d¦  «        }t          j        d¦  «        t          j        d¦  «        ||j        g| _        d S )Nç      (@©r  r  ç      @ç      @)rŒ   r—   rÀ   r  ÚarangeÚTÚsimple_args)rT   r˜   rD  s      rW   r—   zTestParforBasic.__init__¨  s]   € ÝÔ  Ð-¨Ð-Ð-Ð-Ð-åŒJ•r”y ‘~”~ vÑ.Ô.ˆÝœI b™MœM­2¬9°R©=¬=¸!¸Q¼SÐAˆÔÐÐrY   c                 óê   — d„ }|                       t          ¦  «        5 }|                      |¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt	          |j        ¦  «        ¦  «         d S )Nc                  ó*   — t          j        d¦  «        S )Nr}   ©rÀ   Úonesr}   rY   rW   Ú	test_implz0TestParforBasic.test_simple01.<locals>.test_impl¯  s   € Ý”7˜2‘;”;ÐrY   ú'@do_scheduling' not found©ÚassertRaisesÚAssertionErrorrä   rô   r"  Ú	exception©rT   r
  Úraisess      rW   Útest_simple01zTestParforBasic.test_simple01®  s¯   € ð	ð 	ð 	à×Ò�~Ñ.Ô.ð 	"°&Ø�JŠJ�yÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"à�ŠÐ4µc¸&Ô:JÑ6KÔ6KÑLÔLÐLÐLÐLó   žA Á AÁAc                 ó6   — d„ }|                       |¦  «         d S )Nc                  ó*   — t          j        d¦  «        S )N©rì   r  r}   rY   rW   r
  z0TestParforBasic.test_simple02.<locals>.test_impl¶  s   € Ý”7˜4‘=”=Ð rY   ©rä   ©rT   r
  s     rW   Útest_simple02zTestParforBasic.test_simple02µ  s)   € ð	!ð 	!ð 	!à�
Š
�9ÑÔÐÐÐrY   c                 ó6   — d„ }|                       |¦  «         d S )Nc                  ó*   — t          j        d¦  «        S ©N©rì   rý   r  r}   rY   rW   r
  z0TestParforBasic.test_simple03.<locals>.test_impl»  ó   € Ý”7˜6‘?”?Ð"rY   r  r  s     rW   Útest_simple03zTestParforBasic.test_simple03º  ó)   € ð	#ð 	#ð 	#à�
Š
�9ÑÔÐÐÐrY   c                 ó6   — d„ }|                       |¦  «         d S )Nc                  ó*   — t          j        d¦  «        S ©Nrì   r  r}   rY   rW   r
  z0TestParforBasic.test_simple04.<locals>.test_implÀ  s   € Ý”7˜1‘:”:ÐrY   r  r  s     rW   Útest_simple04zTestParforBasic.test_simple04¿  s)   € ð	ð 	ð 	à�
Š
�9ÑÔÐÐÐrY   c                 ó6   — d„ }|                       |¦  «         d S )Nc                  óB   — t          j        dt           j        ¬¦  «        S )Nr  ©Údtype©rÀ   r	  Ú
complex128r}   rY   rW   r
  z0TestParforBasic.test_simple07.<locals>.test_implÅ  s   € Ý”7˜6­¬Ð7Ñ7Ô7Ð7rY   r  r  s     rW   Útest_simple07zTestParforBasic.test_simple07Ä  s)   € ð	8ð 	8ð 	8à�
Š
�9ÑÔÐÐÐrY   c                 ó6   — d„ }|                       |¦  «         d S )Nc                  óT   — t          j        d¦  «        t          j        d¦  «        z   S r  r  r}   rY   rW   r
  z0TestParforBasic.test_simple08.<locals>.test_implÊ  s   € Ý”7˜6‘?”?¥R¤W¨V¡_¤_Ñ4Ð4rY   r  r  s     rW   Útest_simple08zTestParforBasic.test_simple08É  s)   € ð	5ð 	5ð 	5à�
Š
�9ÑÔÐÐÐrY   c                 ó6   — d„ }|                       |¦  «         d S )Nc                  ó*   — t          j        d¦  «        S )N©rì   rì   r  r}   rY   rW   r
  z0TestParforBasic.test_simple09.<locals>.test_implÏ  r  rY   r  r  s     rW   Útest_simple09zTestParforBasic.test_simple09Î  r   rY   c                 ó6   — d„ }|                       |¦  «         d S )Nc                  ó*   — t          j        d¦  «        S )N©r   r   r  r}   rY   rW   r
  z0TestParforBasic.test_simple10.<locals>.test_implÔ  r  rY   r  r  s     rW   Útest_simple10zTestParforBasic.test_simple10Ó  r   rY   c                 ó6   — d„ }|                       |¦  «         d S )Nc                  ó0   — t          j        d¦  «        dz   S ©N©r  r  r^  r  r}   rY   rW   r
  z0TestParforBasic.test_simple11.<locals>.test_implÙ  s   € Ý”7˜8Ñ$Ô$ rÑ)Ð)rY   r  r  s     rW   Útest_simple11zTestParforBasic.test_simple11Ø  s)   € ð	*ð 	*ð 	*à�
Š
�9ÑÔÐÐÐrY   c                 ó6   — d„ }|                       |¦  «         d S )Nc                  óT   — t          j        d¦  «        t          j        d¦  «        z   S r9  r)  r}   rY   rW   r
  z0TestParforBasic.test_simple12.<locals>.test_implÞ  s!   € Ý”7˜8Ñ$Ô$¥r¤}°RÑ'8Ô'8Ñ8Ð8rY   r  r  s     rW   Útest_simple12zTestParforBasic.test_simple12Ý  s)   € ð	9ð 	9ð 	9à�
Š
�9ÑÔÐÐÐrY   c                 óê   — d„ }|                       t          ¦  «        5 }|                      |¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt	          |j        ¦  «        ¦  «         d S )Nc                  ó*   — t          j        d¦  «        S rs  )rÀ   r*  r}   rY   rW   r
  z0TestParforBasic.test_simple13.<locals>.test_implã  s   € Ý”= Ñ$Ô$Ð$rY   r  r  r  s      rW   Útest_simple13zTestParforBasic.test_simple13â  s¯   € ð	%ð 	%ð 	%à×Ò�~Ñ.Ô.ð 	"°&Ø�JŠJ�yÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"à�ŠÐ4µc¸&Ô:JÑ6KÔ6KÑLÔLÐLÐLÐLr  c                 ó6   — d„ }|                       |¦  «         d S )Nc                  ó<   — t          j        d¦  «        dd d…         S )Nr:  r   é   r  r}   rY   rW   r
  z0TestParforBasic.test_simple14.<locals>.test_implê  s   € Ý”7˜8Ñ$Ô$ Q U¨ UÔ+Ð+rY   r  r  s     rW   Útest_simple14zTestParforBasic.test_simple14é  s)   € ð	,ð 	,ð 	,à�
Š
�9ÑÔÐÐÐrY   c                 ó2   — d„ } | j         |g| j        ¢R Ž  d S )Nc                 ó   — | | z   S r[   r}   ©Úv1Úv2Úm1Úm2s       rW   r
  z0TestParforBasic.test_simple15.<locals>.test_implï  ó   € Ø˜‘7ˆNrY   ©rä   r  r  s     rW   Útest_simple15zTestParforBasic.test_simple15î  ó4   € ð	ð 	ð 	àˆŒ
�9Ð0˜tÔ/Ð0Ð0Ð0Ð0Ð0Ð0rY   c                 ó2   — d„ } | j         |g| j        ¢R Ž  d S )Nc                 ó   — ||z   S r[   r}   rH  s       rW   r
  z0TestParforBasic.test_simple16.<locals>.test_implô  rM  rY   rN  r  s     rW   Útest_simple16zTestParforBasic.test_simple16ó  rP  rY   c                 ó2   — d„ } | j         |g| j        ¢R Ž  d S )Nc                 ó   — || z   S r[   r}   rH  s       rW   r
  z0TestParforBasic.test_simple17.<locals>.test_implù  rM  rY   rN  r  s     rW   Útest_simple17zTestParforBasic.test_simple17ø  rP  rY   c                 ó2   — d„ } | j         |g| j        ¢R Ž  d S )Nc                 ó\   — |j         t          j                             |¦  «        d         z   S r#  )r  rÀ   ÚlinalgÚsvdrH  s       rW   r
  z0TestParforBasic.test_simple18.<locals>.test_implÿ  s"   € Ø”4�"œ)Ÿ-š-¨Ñ+Ô+¨AÔ.Ñ.Ð.rY   rN  r  s     rW   Útest_simple18zTestParforBasic.test_simple18ý  s4   € ð	/ð 	/ð 	/àˆŒ
�9Ð0˜tÔ/Ð0Ð0Ð0Ð0Ð0Ð0rY   c                 ó2   — d„ } | j         |g| j        ¢R Ž  d S )Nc                 ó,   — t          j        ||¦  «        S r[   ©rÀ   rt  rH  s       rW   r
  z0TestParforBasic.test_simple19.<locals>.test_impl  ó   € Ý”6˜"˜b‘>”>Ð!rY   rN  r  s     rW   Útest_simple19zTestParforBasic.test_simple19  ó4   € ð	"ð 	"ð 	"àˆŒ
�9Ð0˜tÔ/Ð0Ð0Ð0Ð0Ð0Ð0rY   c                 óæ   — d„ }|                       t          ¦  «        5 } | j        |g| j        ¢R Ž  d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )Nc                 ó,   — t          j        ||¦  «        S r[   r^  rH  s       rW   r
  z0TestParforBasic.test_simple20.<locals>.test_impl  r_  rY   r  )r  r  rä   r  rô   r"  r  r  s      rW   Útest_simple20zTestParforBasic.test_simple20	  s¼   € ð	"ð 	"ð 	"ð ×Ò�~Ñ.Ô.ð 	5°&ØˆDŒJ�yÐ4 4Ô#3Ð4Ð4Ð4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5à�ŠÐ4µc¸&Ô:JÑ6KÔ6KÑLÔLÐLÐLÐLs   ž>¾AÁAc                 ó2   — d„ } | j         |g| j        ¢R Ž  d S )Nc                 ó,   — t          j        | | ¦  «        S r[   r^  rH  s       rW   r
  z0TestParforBasic.test_simple21.<locals>.test_impl  r_  rY   rN  r  s     rW   Útest_simple21zTestParforBasic.test_simple21  ra  rY   c                 ó2   — d„ } | j         |g| j        ¢R Ž  d S )Nc                 ó0   — t          j        | | z   ¦  «        S r[   r‹  rH  s       rW   r
  z0TestParforBasic.test_simple22.<locals>.test_impl  s   € Ý”6˜"˜r™'‘?”?Ð"rY   rN  r  s     rW   Útest_simple22zTestParforBasic.test_simple22  s4   € ð	#ð 	#ð 	#àˆŒ
�9Ð0˜tÔ/Ð0Ð0Ð0Ð0Ð0Ð0rY   c                 ó2   — d„ } | j         |g| j        ¢R Ž  d S )Nc                 ód   — d| z  }d| z  }dt          j        |dz  |dz  z   dk     ¦  «        z  dz  S )Nrý   r  rì   r  r‹  )rI  rJ  rK  rL  r®   Úys         rW   r
  z0TestParforBasic.test_simple23.<locals>.test_impl  s>   € Ø�B‘ˆAØ�B‘ˆAØ•r”v˜a ™d Q¨¡T™k¨AšoÑ.Ô.Ñ.°Ñ3Ð3rY   rN  r  s     rW   Útest_simple23zTestParforBasic.test_simple23  s6   € ð	4ð 	4ð 	4ð 	ˆŒ
�9Ð0˜tÔ/Ð0Ð0Ð0Ð0Ð0Ð0rY   c                 ó6   — d„ }|                       |¦  «         d S )Nc                  ó–   — d} t          j        | | f¦  «        }t          j        | ¦  «        }t          j        |d d …|f         ¦  «        S )NrD  )rÀ   r	  r  r  )r  r�  r‰   s      rW   r
  z0TestParforBasic.test_simple24.<locals>.test_impl%  s?   € ØˆAÝ”˜˜A˜‘”ˆAÝ”	˜!‘”ˆAÝ”6˜!˜A˜A˜A˜q˜Dœ'‘?”?Ð"rY   r  r  s     rW   Útest_simple24zTestParforBasic.test_simple24$  s+   € ð	#ð 	#ð 	#ð
 	�
Š
�9ÑÔÐÐÐrY   c                 ó2   — d„ } | j         |g| j        ¢R Ž  dS )zAsame as corresponding test_simple_<n> case but using operator.addc                 ó,   — t          j        | | ¦  «        S r[   ©ÚoperatorrÚ  rH  s       rW   r
  z:TestParforBasic.test_simple_operator_15.<locals>.test_impl/  ó   € Ý”<  BÑ'Ô'Ð'rY   NrN  r  s     rW   Útest_simple_operator_15z'TestParforBasic.test_simple_operator_15,  s6   € ð	(ð 	(ð 	(ð 	ˆŒ
�9Ð0˜tÔ/Ð0Ð0Ð0Ð0Ð0Ð0rY   c                 ó2   — d„ } | j         |g| j        ¢R Ž  d S )Nc                 ó,   — t          j        ||¦  «        S r[   rt  rH  s       rW   r
  z:TestParforBasic.test_simple_operator_16.<locals>.test_impl6  rv  rY   rN  r  s     rW   Útest_simple_operator_16z'TestParforBasic.test_simple_operator_164  ó6   € ð	(ð 	(ð 	(ð 	ˆŒ
�9Ð0˜tÔ/Ð0Ð0Ð0Ð0Ð0Ð0rY   c                 ó2   — d„ } | j         |g| j        ¢R Ž  d S )Nc                 ó,   — t          j        || ¦  «        S r[   rt  rH  s       rW   r
  z:TestParforBasic.test_simple_operator_17.<locals>.test_impl=  rv  rY   rN  r  s     rW   Útest_simple_operator_17z'TestParforBasic.test_simple_operator_17;  r{  rY   c                 ól   — d„ }d„ }t          j        d¦  «        }|                      |||g¬¦  «         d S )Nc                 ó   — | dz  } d| d d …<   d S )Nrì   r  r}   ©rˆ   s    rW   r
  z5TestParforBasic.test_inplace_alias.<locals>.test_implD  s   € Ø�‰FˆAØˆAˆaˆaˆa‰DˆDˆDrY   c                 óF   — t           j                             | |¦  «         d S r[   ©rÀ   rÎ   Úassert_equalr‡   s     rW   Úcomparerz4TestParforBasic.test_inplace_alias.<locals>.comparerH  ó    € ÝŒJ×#Ò# A qÑ)Ô)Ð)Ð)Ð)rY   rì   ©r¼   ©rÀ   r	  rä   )rT   r
  r…  r®   s       rW   Útest_inplace_aliasz"TestParforBasic.test_inplace_aliasB  sO   € ð	ð 	ð 	ð	*ð 	*ð 	*õ ŒG�A‰JŒJˆØ�
Š
�9˜a°X°Jˆ
Ñ?Ô?Ð?Ð?Ð?rY   N)"rx   rO   ry   rZ  r—   r  r  r  r$  r+  r.  r2  r6  r;  r>  rA  rE  rO  rS  rV  r>   r[  r=   r`  rd  rg  rj  rn  rq  r?   rw  rz  r~  r‰  r}   rY   rW   rý  rý  £  s  € € € € € ðð ðBð Bð BðMð Mð Mðð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð
Mð Mð Mðð ð ð
1ð 1ð 1ð
1ð 1ð 1ð
1ð 1ð 1ð
 ð1ð 1ñ „\ð1ð
 ð1ð 1ñ „Zð1ð
 ðMð Mñ „ZðMð ð1ð 1ñ „Zð1ð
1ð 1ð 1ð
1ð 1ð 1ðð ð ð ð1ð 1ñ „]ð1ð ð1ð 1ñ „]ð1ð ð1ð 1ñ „]ð1ð
@ð 
@ð 
@ð 
@ð 
@rY   rý  c                   ó:   — e Zd ZdZd„ Zd„ Zed„ ¦   «         Zd„ ZdS )ÚTestParforNumericalMiscz+ Miscellaneous 'classical' numerical tests c                 óø   — d„ }|                       |dd¬¦  «         |                      t          |t          j        f¦  «        d¦  «         |                      t          |t          j        f¦  «        d¦  «         d S )Nc                 óä   — dt           j                             | ¦  «        z  dz
  }dt           j                             | ¦  «        z  dz
  }dt          j        |dz  |dz  z   dk     ¦  «        z  | z  S )Nrý   rì   r  )rÀ   ÚrandomÚranfr  )r  r®   rm  s      rW   r
  z2TestParforNumericalMisc.test_pi.<locals>.test_implT  sf   € Ø•B”I—N’N 1Ñ%Ô%Ñ%¨Ñ)ˆAØ•B”I—N’N 1Ñ%Ô%Ñ%¨Ñ)ˆAØ•r”v˜a ™d Q¨¡T™k¨AšoÑ.Ô.Ñ.°Ñ2Ð2rY   i † rì   ©Údecimalr   )rä   rÐ   rî   r   Úint64rÏ  Úintpr  s     rW   Útest_pizTestParforNumericalMisc.test_piS  sy   € ð	3ð 	3ð 	3ð
 	�
Š
�9˜f¨aˆ
Ñ0Ô0Ð0Ø×Ò� iµ%´+°ÑAÔAÀ1ÑEÔEÐEØ×Ò� Yµ´°Ñ>Ô>ÀÑBÔBÐBÐBÐBrY   c                 óˆ   — t           j        d d …         fdz  }|                      t          t          |¦  «        d¦  «         d S ©Nr�   rì   )r«   Úfloat64rÐ   rî   rq  ©rT   r˜   s     rW   Útest_blackscholesz)TestParforNumericalMisc.test_blackscholes]  sA   € å”˜a˜a˜aÔ Ð# aÑ'ˆØ×Ò�Õ&7¸Ñ>Ô>ÀÑBÔBÐBÐBÐBrY   c                 ó>  — t           j        d d …         t           j        d d …d d …f         t           j        d d …         t           j        f}|                      t	          t
          |¦  «        d¦  «         |                      t          t
          |¦  «        d¦  «         d S ©Nrý   rì   )r«   r—  r’  rÐ   rî   ry  rà  r˜  s     rW   Útest_logistic_regressionz0TestParforNumericalMisc.test_logistic_regressionb  s…   € å”˜a˜a˜aÔ ¥%¤-°°°°!°!°!°Ô"4µe´mÀAÀAÀAÔ6FÝ”ðˆà×Ò�¥g¨tÑ4Ô4°aÑ8Ô8Ð8Ø×ÒÕ)­'°4Ñ8Ô8¸!Ñ<Ô<Ð<Ð<Ð<rY   c                 ó  — t           j                             d¦  «         d}d}d}t           j                             ||f¦  «        }t           j                             ||f¦  «        }|                      t
          ||d|d¬¦  «         t          j        t          j        dd¦  «        t          j	        t          j	        t          j        t          j        dd¦  «        f}|  
                    t          t
          |¦  «        d¦  «         d S )	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_kmeansz#TestParforNumericalMisc.test_kmeansi  sí   € Ý
Œ	�Š�qÑÔÐØˆØˆØˆÝŒI�NŠN˜A˜q˜6Ñ"Ô"ˆÝœŸš¨°!¨Ñ5Ô5ˆØ�
Š
Õ&¨¨7°A°~ØLMð 	ñ 	Oô 	Oð 	Oõ ”K¥¤¨q°#Ñ6Ô6½¼
ÅEÄJÝ”K¥¤¨q°#Ñ6Ô6ð8ˆà×ÒÝ'Õ(;¸XÑFÔFÈñ	Kô 	Kð 	Kð 	Kð 	KrY   N)	rx   rO   ry   rZ  r”  r™  r=   rœ  r¤  r}   rY   rW   r‹  r‹  O  sm   € € € € € à5Ð5ðCð Cð CðCð Cð Cð
 ð=ð =ñ „Zð=ðKð Kð Kð Kð KrY   r‹  c                   ó¬   — e Zd ZdZed„ ¦   «         Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestParforNumPyz'Tests NumPy functionality under parforsc                 óº   — d„ }t          j        ddd¦  «                             dd¦  «        }t          j        ddd¦  «        }|                      |||¦  «         d S )Nc                 ó,   — t          j        | |¦  «        S r[   r^  ©rˆ   ró  s     rW   r
  z-TestParforNumPy.test_mvdot.<locals>.test_impl€  ó   € Ý”6˜!˜Q‘<”<ÐrY   r   rì   rD  rý   r  )rÀ   rÿ   r  rä   )rT   r
  r�  ró  s       rW   Ú
test_mvdotzTestParforNumPy.test_mvdot~  se   € ð	 ð 	 ð 	 õ ŒK˜˜1˜bÑ!Ô!×)Ò)¨!¨RÑ0Ô0ˆÝŒK˜˜1˜bÑ!Ô!ˆà�
Š
�9˜a Ñ#Ô#Ð#Ð#Ð#rY   c                 ó\  ‡— t           j        t           j        t           j        t           j        fD ]{Šˆfd„}|                      |d¦  «         |                      t          |t          j	        f¦  «        d¦  «         |                      t          |t          j        f¦  «        d¦  «         Œ|d S )Nc                 ót   •— t          j        | ¦  «        } ‰|¦  «        }|                     ¦   «         }||z   S r[   ©rÀ   r	  r  )r  r�  rŸ  ÚBrS  s       €rW   r
  zBTestParforNumPy.test_fuse_argmin_argmax_max_min.<locals>.test_implŠ  s3   ø€ Ý”G˜A‘J”J�Ø�B�q‘E”E�Ø—E’E‘G”G�Ø˜1‘u�rY   é   rì   r   )rÀ   r‡  ÚargmaxÚminÚmaxrä   rÐ   rî   r   r’  rÏ  r“  )rT   r
  rS  s     @rW   Útest_fuse_argmin_argmax_max_minz/TestParforNumPy.test_fuse_argmin_argmax_max_minˆ  s«   ø€ Ý”9�bœi­¬µ´Ð8ð 	Gð 	GˆBðð ð ð ð ð
 �JŠJ�y #Ñ&Ô&Ð&Ø×Ò�\¨)µe´k°_ÑEÔEÀqÑIÔIÐIØ×Ò�[¨µU´Z°MÑBÔBÀAÑFÔFÐFÐFð	Gð 	GrY   c                 ój   — d„ }|                       t          |t          j        f¦  «        d¦  «         d S )Nc                 ó0   — t          | ¦  «        }|d         S rÑ  r   ©r  r�  s     rW   r
  zDTestParforNumPy.test_np_random_func_direct_import.<locals>.test_impl”  s   € Ý�a‘”ˆAØ�Q”4ˆKrY   rì   ©rÐ   rî   r   r’  r  s     rW   Ú!test_np_random_func_direct_importz1TestParforNumPy.test_np_random_func_direct_import“  s=   € ð	ð 	ð 	ð 	×Ò� iµ%´+°ÑAÔAÀ1ÑEÔEÐEÐEÐErY   c                 óî   — d„ }d„ }d„ }dddt          dd¦  «        t          dd¦  «        fD ]G}|                      ||¦  «         |                      |d	|¦  «         |                      |d	|d	¦  «         ŒHd S )
Nc                 ó*   — t          j        | ¦  «        S r[   ©rÀ   r  r   s    rW   Ú
test_impl1z/TestParforNumPy.test_arange.<locals>.test_impl1›  ó   € Ý”9˜Q‘<”<ÐrY   c                 ó,   — t          j        | |¦  «        S r[   r¼  ©Úsr  s     rW   Ú
test_impl2z/TestParforNumPy.test_arange.<locals>.test_impl2ž  s   € Ý”9˜Q ‘?”?Ð"rY   c                 ó.   — t          j        | ||¦  «        S r[   r¼  ©rÁ  r  Úts      rW   Ú
test_impl3z/TestParforNumPy.test_arange.<locals>.test_impl3¡  s   € Ý”9˜Q  1Ñ%Ô%Ð%rY   é   é€   ç      >@r  r�   rý   ©Úcomplexrä   ©rT   r½  rÂ  rÆ  Úargs        rW   Útest_arangezTestParforNumPy.test_arange™  sª   € ð	 ð 	 ð 	 ð	#ð 	#ð 	#ð	&ð 	&ð 	&ð ˜˜T¥7¨1¨Q¡<¤<µ¸¸1±´Ð>ð 	.ð 	.ˆCØ�JŠJ�z 3Ñ'Ô'Ð'Ø�JŠJ�z 1 cÑ*Ô*Ð*Ø�JŠJ�z 1 c¨1Ñ-Ô-Ð-Ð-ð	.ð 	.rY   c                 ó¬   — d„ }d„ }d„ }dD ]G}|                       ||¦  «         |                       |d|¦  «         |                       |d|d¦  «         ŒHd S )Nc                 óB   — t          j        | t           j        ¬¦  «        S ©Nr'  ©rÀ   r  Úfloat32r   s    rW   r½  z5TestParforNumPy.test_arange_dtype.<locals>.test_impl1«  s   € Ý”9˜Q¥b¤jÐ1Ñ1Ô1Ð1rY   c                 óD   — t          j        | |t           j        ¬¦  «        S rÑ  rÒ  rÀ  s     rW   rÂ  z5TestParforNumPy.test_arange_dtype.<locals>.test_impl2®  s   € Ý”9˜Q ­¬Ð4Ñ4Ô4Ð4rY   c                 óF   — t          j        | ||t           j        ¬¦  «        S rÑ  rÒ  rÄ  s      rW   rÆ  z5TestParforNumPy.test_arange_dtype.<locals>.test_impl3±  s   € Ý”9˜Q  1­B¬JÐ7Ñ7Ô7Ð7rY   )rÇ  rÈ  rÉ  rý   r  rÌ  s        rW   Útest_arange_dtypez!TestParforNumPy.test_arange_dtype©  s�   € ð	2ð 	2ð 	2ð	5ð 	5ð 	5ð	8ð 	8ð 	8ð #ð 	.ð 	.ˆCØ�JŠJ�z 3Ñ'Ô'Ð'Ø�JŠJ�z 1 cÑ*Ô*Ð*Ø�JŠJ�z 1 c¨1Ñ-Ô-Ð-Ð-ð	.ð 	.rY   c                 ó¼   — d„ }d„ }dddt          dd¦  «        t          dd¦  «        fD ]1}|                      |d|¦  «         |                      |d|d	¦  «         Œ2d S )
Nc                 ó,   — t          j        | |¦  «        S r[   rþ   )ÚstartÚstops     rW   r½  z1TestParforNumPy.test_linspace.<locals>.test_impl1»  s   € Ý”;˜u dÑ+Ô+Ð+rY   c                 ó.   — t          j        | ||¦  «        S r[   rþ   )rÙ  rÚ  Únums      rW   rÂ  z1TestParforNumPy.test_linspace.<locals>.test_impl2¾  s   € Ý”;˜u d¨CÑ0Ô0Ð0rY   rÇ  rÈ  rÉ  r  r�   rý   é   rÊ  )rT   r½  rÂ  rÍ  s       rW   Útest_linspacezTestParforNumPy.test_linspace¹  s‡   € ð	,ð 	,ð 	,ð	1ð 	1ð 	1ð ˜˜T¥7¨1¨Q¡<¤<µ¸¸1±´Ð>ð 	/ð 	/ˆCØ�JŠJ�z 1 cÑ*Ô*Ð*Ø�JŠJ�z 1 c¨2Ñ.Ô.Ð.Ð.ð	/ð 	/rY   c           
      ó\  ‡ — d„ }d}t           j                             |¦  «        }t           j                             d|df¬¦  «        }‰                      ||¦  «         ‰                      ||¦  «         ‰                      t          |t          j        t          j	        dd¦  «        f¦  «        d¦  «         ‰                      t          |t          j        t          j	        dd¦  «        f¦  «        d¦  «         ˆ fd	„}‰  
                    ||¦  «         ‰                      ||¦  «         d S )
Nc                 ó*   — |                       ¦   «         S r[   ©Úmean©r�  s    rW   r
  z,TestParforNumPy.test_mean.<locals>.test_implÆ  s   € Ø—6’6‘8”8ˆOrY   éd   r  r  ©Úsizerì   rŸ  rý   c                  ó.   •— ‰                       d¦  «        S r#  ©r  r]   s   €rW   ú<lambda>z+TestParforNumPy.test_mean.<locals>.<lambda>Ñ  ó   ø€ ˜4×5Ò5°aÑ8Ô8€ rY   ©rÀ   rŽ  r�  Úrandinträ   rÐ   rî   r   r¡  r—  rê   rð   )rT   r
  r’  r�  r¯  Údata_gens   `     rW   Ú	test_meanzTestParforNumPy.test_meanÅ  s  ø€ ð	ð 	ð 	àˆÝŒI�NŠN˜1ÑÔˆÝŒI×Ò˜b¨¨1 vÐÑ.Ô.ˆØ�
Š
�9˜aÑ Ô Ð Ø�
Š
�9˜aÑ Ô Ð Ø×Ò� iµ%´+½e¼mÈQÐPSÑ2TÔ2TÐ1WÑXÔXÐZ[Ñ\Ô\Ð\Ø×Ò� iµ%´+½e¼mÈQÐPSÑ2TÔ2TÐ1WÑXÔXÐZ[Ñ\Ô\Ð\ð 9Ð8Ð8Ð8ˆØ×Ò˜I xÑ0Ô0Ð0Ø×#Ò# I¨xÑ8Ô8Ð8Ð8Ð8rY   c           
      ó˜  ‡ — d„ }d}t           j                             |¦  «        }t           j                             d|df¬¦  «        }|d|z  z   }‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      t          |t          j        t          j	        dd¦  «        f¦  «        d	¦  «         ‰                      t          |t          j        t          j	        d	d¦  «        f¦  «        d	¦  «         ˆ fd
„}‰  
                    ||¦  «         ‰                      ||¦  «         d S )Nc                 ó*   — |                       ¦   «         S r[   )Úvarrã  s    rW   r
  z+TestParforNumPy.test_var.<locals>.test_implÖ  ó   € Ø—5’5‘7”7ˆNrY   rä  r  r  rå  ù              ð?rì   rŸ  rý   c                  ó.   •— ‰                       d¦  «        S r#  rè  r]   s   €rW   ré  z*TestParforNumPy.test_var.<locals>.<lambda>ã  rê  rY   rë  )rT   r
  r’  r�  r¯  rŸ  rí  s   `      rW   Útest_varzTestParforNumPy.test_varÕ  s=  ø€ ð	ð 	ð 	àˆÝŒI�NŠN˜1ÑÔˆÝŒI×Ò˜b¨¨1 vÐÑ.Ô.ˆØ��Q‘‰JˆØ�
Š
�9˜aÑ Ô Ð Ø�
Š
�9˜aÑ Ô Ð Ø�
Š
�9˜aÑ Ô Ð Ø×Ò� iµ%´+½e¼mÈQÐPSÑ2TÔ2TÐ1WÑXÔXÐZ[Ñ\Ô\Ð\Ø×Ò� iµ%´+½e¼mÈQÐPSÑ2TÔ2TÐ1WÑXÔXÐZ[Ñ\Ô\Ð\ð 9Ð8Ð8Ð8ˆØ×Ò˜I xÑ0Ô0Ð0Ø×#Ò# I¨xÑ8Ô8Ð8Ð8Ð8rY   c                 ó^  ‡ — d„ }d}t           j                             |¦  «        }t           j                             d|df¬¦  «        }|d|z  z   }‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         t          j        t
          j        dd¦  «        f}‰                      t          ||¦  «        d	¦  «         ‰                      t          ||¦  «        d	¦  «         ˆ fd
„}‰  
                    ||¦  «         ‰                      ||¦  «         d S )Nc                 ó*   — |                       ¦   «         S r[   )Ústdrã  s    rW   r
  z+TestParforNumPy.test_std.<locals>.test_implè  rò  rY   rä  r  r  rå  ró  rì   rŸ  rý   c                  ó.   •— ‰                       d¦  «        S r#  rè  r]   s   €rW   ré  z*TestParforNumPy.test_std.<locals>.<lambda>ö  rê  rY   )rÀ   rŽ  r�  rì  rä   r   r¡  r—  rÐ   rî   rê   rð   )rT   r
  r’  r�  r¯  rŸ  Úargtyrí  s   `       rW   Útest_stdzTestParforNumPy.test_stdç  s+  ø€ ð	ð 	ð 	àˆÝŒI�NŠN˜1ÑÔˆÝŒI×Ò˜b¨¨1 vÐÑ.Ô.ˆØ��Q‘‰JˆØ�
Š
�9˜aÑ Ô Ð Ø�
Š
�9˜aÑ Ô Ð Ø�
Š
�9˜aÑ Ô Ð Ý”�Uœ]¨A¨sÑ3Ô3Ð5ˆØ×Ò� i°Ñ7Ô7¸Ñ;Ô;Ð;Ø×Ò� i°Ñ7Ô7¸Ñ;Ô;Ð;ð 9Ð8Ð8Ð8ˆØ×Ò˜I xÑ0Ô0Ð0Ø×#Ò# I¨xÑ8Ô8Ð8Ð8Ð8rY   c                 ój   — d„ }|                       t          |t          j        f¦  «        d¦  «         dS )zŒ
        Test function with only a random call to make sure a random function
        like ranf is actually translated to a parfor.
        c                 óH   — t           j                             | | f¦  «        }|S r[   )rÀ   rŽ  r�  r·  s     rW   r
  z5TestParforNumPy.test_random_parfor.<locals>.test_implÿ  s   € Ý”	—’  1˜vÑ&Ô&ˆAØˆHrY   rì   Nr¸  r  s     rW   Útest_random_parforz"TestParforNumPy.test_random_parforú  s=   € ð
	ð 	ð 	ð 	×Ò� iµ%´+°ÑAÔAÀ1ÑEÔEÐEÐEÐErY   c                 óD  — d„ }d}|                       |t          j        |¦  «        f¦  «        }|                     |¦  «        } ||¦  «        }t          j                             ||d¬¦  «         |                      t          |t          j
        f¦  «        d¦  «         d S )Nc                 óæ  — t           j                             | | f¬¦  «        }t           j                             | | ¦  «        }t           j                             dd| | f¦  «        }t           j                             d| | f¦  «        }t           j                             dd| | f¬¦  «        }t           j                             ddd| | f¦  «        }t          j        ||z   |z   |z   |z   |z   ¦  «        S ©Nrå  ç        r^  rì   r  )Úhighræ  rý   )	rÀ   rŽ  Ústandard_normalr   ÚnormalÚ	chisquarerì  Ú
triangularr  ©r  r�  r¯  rŸ  r�  ÚEÚFs          rW   r
  z/TestParforNumPy.test_randoms.<locals>.test_impl  sÎ   € Ý”	×)Ò)°°1¨vÐ)Ñ6Ô6ˆAÝ”	—’  1Ñ%Ô%ˆAÝ”	× Ò   c¨A¨q¨6Ñ2Ô2ˆAÝ”	×#Ò# C¨!¨Q¨Ñ0Ô0ˆAÝ”	×!Ò! !¨!°1°a°&Ð!Ñ9Ô9ˆAÝ”	×$Ò$ Q¨¨1¨q°!¨fÑ5Ô5ˆAÝ”6˜!˜A™#˜a™% ™' !™) A™+Ñ&Ô&Ð&rY   rÈ  gš™™™™™©?)Úrtolrì   )r¢   r«   r   rÍ   rÀ   rÎ   Úassert_allcloserÐ   rî   r   r’  ©rT   r
  r  r´   rÚ   Ú	py_outputs         rW   Útest_randomszTestParforNumPy.test_randoms  sŸ   € ð	'ð 	'ð 	'ð ˆØ×&Ò& yµ5´<À±?´?Ð2DÑEÔEˆØ×*Ò*¨1Ñ-Ô-ˆØ�I˜a‘L”Lˆ	å
Œ
×"Ò" =°)À$Ð"ÑGÔGÐGØ×Ò� iµ%´+°ÑAÔAÀ1ÑEÔEÐEÐEÐErY   c                 ó,  — d„ }d}|                       |t          j        |¦  «        f¦  «        }|                     |¦  «        } ||¦  «        }|                      ||¦  «         |                      t          |t          j        f¦  «        d¦  «         d S )Nc                 ó¤  — t           j                             | | f¬¦  «        }t           j                             | | ¦  «        }t           j                             dd| | f¦  «        }t           j                             d| | f¦  «        }t           j                             dd| | f¬¦  «        }t           j                             ddd| | f¦  «        }dS r  )rÀ   rŽ  r  r   r  r  rì  r  r  s          rW   r
  z4TestParforNumPy.test_dead_randoms.<locals>.test_impl  s¯   € Ý”	×)Ò)°°1¨vÐ)Ñ6Ô6ˆAÝ”	—’  1Ñ%Ô%ˆAÝ”	× Ò   c¨A¨q¨6Ñ2Ô2ˆAÝ”	×#Ò# C¨!¨Q¨Ñ0Ô0ˆAÝ”	×!Ò! !¨!°1°a°&Ð!Ñ9Ô9ˆAÝ”	×$Ò$ Q¨¨1¨q°!¨fÑ5Ô5ˆAØ�1rY   rÈ  r   )r¢   r«   r   rÍ   rÐ   rî   r   r’  r  s         rW   Útest_dead_randomsz!TestParforNumPy.test_dead_randoms  s˜   € ð	ð 	ð 	ð ˆØ×&Ò& yµ5´<À±?´?Ð2DÑEÔEˆØ×*Ò*¨1Ñ-Ô-ˆØ�I˜a‘L”Lˆ	Ø×Ò˜¨	Ñ2Ô2Ð2Ø×Ò� iµ%´+°ÑAÔAÀ1ÑEÔEÐEÐEÐErY   c                 ó   ‡ — d„ }d„ }d}t           j                             |¦  «        }t           j                             d|¬¦  «                             t           j        ¦  «        }t           j                             ||f¦  «        }t          j        t           j        t           j        g¦  «        }‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         d}||fD ]¸}	‰  	                    |	t          j        d d …         f¦  «        }
‰                      t          ¦  «        5 }|
                     t          j        g t           j        ¬¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   ‰                      |t!          |j        ¦  «        ¦  «         Œ¹ˆ fd„}‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         d S )	Nc                 ó*   — |                       ¦   «         S r[   ©r²  rã  s    rW   r½  z,TestParforNumPy.test_min.<locals>.test_impl1(  rò  rY   c                 ó*   — t          j        | ¦  «        S r[   )rÀ   r²  rã  s    rW   rÂ  z,TestParforNumPy.test_min.<locals>.test_impl2+  ó   € Ý”6˜!‘9”9ÐrY   éÓ   r  rå  zDzero-size array to reduction operation minimum which has no identityr'  c                  ó.   •— ‰                       d¦  «        S r#  rè  r]   s   €rW   ré  z*TestParforNumPy.test_min.<locals>.<lambda>F  rê  rY   ©rÀ   rŽ  r�  rì  Ú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Úerí  s   `            rW   Útest_minzTestParforNumPy.test_min'  s›  ø€ ð	ð 	ð 	ð	ð 	ð 	ð ˆÝŒI�NŠN˜1ÑÔˆÝŒI×Ò˜b qÐÑ)Ô)×0Ò0µ´Ñ:Ô:ˆÝŒI�NŠN˜A˜q˜6Ñ"Ô"ˆÝŒH•b”f�bœfÐ%Ñ&Ô&ˆØ�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!ð/ˆà Ð,ð 	1ð 	1ˆDØ×*Ò*¨4µ%´+¸a¸a¸a´.Ð1BÑCÔCˆFØ×"Ò"¥:Ñ.Ô.ð A°!Ø×"Ò"¥2¤8¨Bµb´hÐ#?Ñ#?Ô#?Ñ@Ô@Ð@ðAð Að Añ Aô Að Að Að Að Að Að Aøøøð Að Að Að Aà�MŠM˜#�s 1¤;Ñ/Ô/Ñ0Ô0Ð0Ð0ð 9Ð8Ð8Ð8ˆØ×Ò˜J¨Ñ1Ô1Ð1Ø×#Ò# J°Ñ9Ô9Ð9Ø×Ò˜J¨Ñ1Ô1Ð1Ø×#Ò# J°Ñ9Ô9Ð9Ð9Ð9s   Æ-4G-Ç-G1	Ç4G1	c                 ó  ‡ — d„ }d„ }d}t           j                             |¦  «        }t           j                             d|¬¦  «                             t           j        ¦  «        }t           j                             ||f¦  «        }t          j        t           j         t           j         g¦  «        }‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         d}||fD ]¸}	‰  	                    |	t          j        d d …         f¦  «        }
‰                      t          ¦  «        5 }|
                     t          j        g t           j        ¬¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   ‰                      |t!          |j        ¦  «        ¦  «         Œ¹ˆ fd„}‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         d S )	Nc                 ó*   — |                       ¦   «         S r[   )r³  rã  s    rW   r½  z,TestParforNumPy.test_max.<locals>.test_impl1M  rò  rY   c                 ó*   — t          j        | ¦  «        S r[   )rÀ   r³  rã  s    rW   rÂ  z,TestParforNumPy.test_max.<locals>.test_impl2P  r  rY   r  r  rå  zDzero-size array to reduction operation maximum which has no identityr'  c                  ó.   •— ‰                       d¦  «        S r#  rè  r]   s   €rW   ré  z*TestParforNumPy.test_max.<locals>.<lambda>k  rê  rY   r  r  s   `            rW   Útest_maxzTestParforNumPy.test_maxL  sŸ  ø€ ð	ð 	ð 	ð	ð 	ð 	ð ˆÝŒI�NŠN˜1ÑÔˆÝŒI×Ò˜b qÐÑ)Ô)×0Ò0µ´Ñ:Ô:ˆÝŒI�NŠN˜A˜q˜6Ñ"Ô"ˆÝŒH•r”v�g¥¤˜wÐ'Ñ(Ô(ˆØ�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!ð/ˆà Ð,ð 	1ð 	1ˆDØ×*Ò*¨4µ%´+¸a¸a¸a´.Ð1BÑCÔCˆFØ×"Ò"¥:Ñ.Ô.ð A°!Ø×"Ò"¥2¤8¨Bµb´hÐ#?Ñ#?Ô#?Ñ@Ô@Ð@ðAð Að Añ Aô Að Að Að Að Að Að Aøøøð Að Að Að Aà�MŠM˜#�s 1¤;Ñ/Ô/Ñ0Ô0Ð0Ð0ð 9Ð8Ð8Ð8ˆØ×Ò˜J¨Ñ1Ô1Ð1Ø×#Ò# J°Ñ9Ô9Ð9Ø×Ò˜J¨Ñ1Ô1Ð1Ø×#Ò# J°Ñ9Ô9Ð9Ð9Ð9s   Æ/4G/Ç/G3	Ç6G3	c                 óà  ‡ — d„ }d„ }d}t          j        g d¢¦  «        }t           j                             d|¬¦  «                             t           j        ¦  «        }t           j                             ||f¦  «        }t          j        ddt           j        d	d
g¦  «        }‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         d}||fD ]¸}	‰  	                    |	t          j        d d …         f¦  «        }
‰                      t          ¦  «        5 }|
                     t          j        g t           j        ¬¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   ‰                      |t!          |j        ¦  «        ¦  «         Œ¹ˆ fd„}‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         d S )Nc                 ó*   — |                       ¦   «         S r[   )r±  rã  s    rW   r½  z/TestParforNumPy.test_argmax.<locals>.test_impl1r  ó   € Ø—8’8‘:”:ÐrY   c                 ó*   — t          j        | ¦  «        S r[   )rÀ   r±  rã  s    rW   rÂ  z/TestParforNumPy.test_argmax.<locals>.test_impl2u  r¾  rY   r  )r^  r  r  ç       @r  r  rå  r^  r  r+  r  z*attempt to get argmax of an empty sequencer'  c                  ó.   •— ‰                       d¦  «        S r#  rè  r]   s   €rW   ré  z-TestParforNumPy.test_argmax.<locals>.<lambda>�  rê  rY   ©rÀ   r�  rŽ  rì  r  r  r�  Únanrä   r¢   r   r’  r  rÉ   rÍ   rô   r"  r  rê   rð   r  s   `            rW   Útest_argmaxzTestParforNumPy.test_argmaxq  ó¢  ø€ ð	ð 	ð 	ð	 ð 	 ð 	 ð ˆÝŒHÐ)Ð)Ð)Ñ*Ô*ˆÝŒI×Ò˜b qÐÑ)Ô)×0Ò0µ´Ñ:Ô:ˆÝŒI�NŠN˜A˜q˜6Ñ"Ô"ˆÝŒH�b˜"�bœf b¨"Ð-Ñ.Ô.ˆØ�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!Ø�
Š
�:˜qÑ!Ô!Ð!ð ;ˆØ Ð,ð 	1ð 	1ˆDØ×*Ò*¨4µ%´+¸a¸a¸a´.Ð1BÑCÔCˆFØ×"Ò"¥:Ñ.Ô.ð A°!Ø×"Ò"¥2¤8¨Bµb´hÐ#?Ñ#?Ô#?Ñ@Ô@Ð@ðAð Að Añ Aô Að Að Að Að Að Að Aøøøð Að Að Að Aà�MŠM˜#�s 1¤;Ñ/Ô/Ñ0Ô0Ð0Ð0ð 9Ð8Ð8Ð8ˆØ×Ò˜J¨Ñ1Ô1Ð1Ø×#Ò# J°Ñ9Ô9Ð9Ø×Ò˜J¨Ñ1Ô1Ð1Ø×#Ò# J°Ñ9Ô9Ð9Ð9Ð9ó   Æ4GÇG!	Ç$G!	c                 óà  ‡ — d„ }d„ }d}t          j        g d¢¦  «        }t           j                             d|¬¦  «                             t           j        ¦  «        }t           j                             ||f¦  «        }t          j        ddt           j        dd	g¦  «        }‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         d
}||fD ]¸}	‰  	                    |	t          j        d d …         f¦  «        }
‰                      t          ¦  «        5 }|
                     t          j        g t           j        ¬¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   ‰                      |t!          |j        ¦  «        ¦  «         Œ¹ˆ fd„}‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         ‰                      ||¦  «         d S )Nc                 ó*   — |                       ¦   «         S r[   r†  rã  s    rW   r½  z/TestParforNumPy.test_argmin.<locals>.test_impl1–  r)  rY   c                 ó*   — t          j        | ¦  «        S r[   )rÀ   r‡  rã  s    rW   rÂ  z/TestParforNumPy.test_argmin.<locals>.test_impl2™  r¾  rY   r  )r^  r  r+  r  r  r  rå  r^  r  r  z*attempt to get argmin of an empty sequencer'  c                  ó.   •— ‰                       d¦  «        S r#  rè  r]   s   €rW   ré  z-TestParforNumPy.test_argmin.<locals>.<lambda>³  rê  rY   r-  r  s   `            rW   Útest_argminzTestParforNumPy.test_argmin•  r0  r1  c                 óê   — d„ }t          j        d¦  «        }|                      ||¦  «         t          j        t          j        dd¦  «        f}|                      t          ||¦  «        d¦  «         d S )Nc                 ó0   — |                       d¦  «         | S ©Nç      @©Úfill©r®   s    rW   r
  z4TestParforNumPy.test_ndarray_fill.<locals>.test_implº  ó   € Ø�FŠF�3‰KŒKˆKØˆHrY   r  rì   rŸ  ©rÀ   Úzerosrä   r   r¡  r—  rÐ   rî   ©rT   r
  r®   rú  s       rW   Útest_ndarray_fillz!TestParforNumPy.test_ndarray_fill¹  sr   € ð	ð 	ð 	õ ŒH�R‰LŒLˆØ�
Š
�9˜aÑ Ô Ð Ý”�Uœ]¨A¨sÑ3Ô3Ð5ˆØ×Ò� i°Ñ7Ô7¸Ñ;Ô;Ð;Ð;Ð;rY   c                 óê   — d„ }t          j        d¦  «        }|                      ||¦  «         t          j        t          j        dd¦  «        f}|                      t          ||¦  «        d¦  «         d S )Nc                 ó0   — |                       d¦  «         | S r9  r;  r=  s    rW   r
  z6TestParforNumPy.test_ndarray_fill2d.<locals>.test_implÃ  r>  rY   ©rý   rý   rý   rŸ  rì   r?  rA  s       rW   Útest_ndarray_fill2dz#TestParforNumPy.test_ndarray_fill2dÂ  sr   € ð	ð 	ð 	õ ŒH�U‰OŒOˆØ�
Š
�9˜aÑ Ô Ð Ý”�Uœ]¨A¨sÑ3Ô3Ð5ˆØ×Ò� i°Ñ7Ô7¸Ñ;Ô;Ð;Ð;Ð;rY   c                 ój   — d„ }t          j        g d¢¦  «        }d}|                      |||¦  «         d S )Nc                 óÆ   — t          j        ||dft           j        ¬¦  «        }| d|…         }|j        } | dz  }|                     dd¦  «        }||z  }||d d …d d …df<   |S ©Nrì   r'  r   rJ   ©rÀ   r@  r—  ræ  r  ©rˆ   r‰   Úresult_matrixÚsub_aÚzÚresult_datas         rW   r
  z<TestParforNumPy.test_reshape_with_neg_one.<locals>.test_implÍ  su   € ÝœH a¨¨A Yµb´jÐAÑAÔAˆMØ�a˜�c”FˆEØ”
ˆAØ�A‘ˆAØ—’˜b !Ñ$Ô$ˆAØ !™)ˆKØ#.ˆM˜!˜!˜!˜A˜A˜A˜a˜%Ñ Ø Ð rY   ©r^  r+  r  r  ç      @ç      @r:  g       @g      "@ç      $@g      &@rÿ  r  ©rÀ   r�  rä   ©rT   r
  rˆ   r‰   s       rW   Útest_reshape_with_neg_onez)TestParforNumPy.test_reshape_with_neg_oneË  óT   € ð	!ð 	!ð 	!õ ŒHð 4ð 4ð 4ñ 5ô 5ˆàˆà�
Š
�9˜a Ñ#Ô#Ð#Ð#Ð#rY   c                 ój   — d„ }t          j        g d¢¦  «        }d}|                      |||¦  «         d S )Nc                 óÆ   — t          j        ||dft           j        ¬¦  «        }| d|…         }|j        } | dz  }|                     dd¦  «        }||z  }||d d …d d …df<   |S )Nrì   r'  r   iåúÿÿrJ  rK  s         rW   r
  z>TestParforNumPy.test_reshape_with_large_neg.<locals>.test_implß  su   € ÝœH a¨¨A Yµb´jÐAÑAÔAˆMØ�a˜�c”FˆEØ”
ˆAØ�A‘ˆAØ—’˜e QÑ'Ô'ˆAØ !™)ˆKØ#.ˆM˜!˜!˜!˜A˜A˜A˜a˜%Ñ Ø Ð rY   rP  r  rT  rU  s       rW   Útest_reshape_with_large_negz+TestParforNumPy.test_reshape_with_large_negÝ  rW  rY   c                 óB  — |                       t          j        ¦  «        5 }t          d¬¦  «        d„ ¦   «         }t	          j        g d¢¦  «        }d} |||¦  «         d d d ¦  «         n# 1 swxY w Y   d}|                      |t          |j        ¦  «        ¦  «         d S )NT©Úparallelc                 óÆ   — t          j        ||dft           j        ¬¦  «        }| d|…         }|j        } | dz  }|                     dd¦  «        }||z  }||d d …d d …df<   |S rI  rJ  )rˆ   r‰   ÚrmrM  rN  rO  s         rW   r
  zETestParforNumPy.test_reshape_with_too_many_neg_one.<locals>.test_implò  ss   € å”X˜q ! Q˜i­r¬zÐ:Ñ:Ô:�Ø˜!˜A˜#œ�Ø”J�Ø˜‘E�Ø—M’M " bÑ)Ô)�Ø# a™i�Ø'��1�1�1�Q�Q�Q�q�5‘	Ø�	rY   rP  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_onez2TestParforNumPy.test_reshape_with_too_many_neg_oneï  só   € à×Ò�vÔ=Ñ>Ô>ð 	À&Ý˜4Ð Ñ Ô ðð ñ !Ô ðõ ”ð 8ð 8ð 8ñ 9ô 9ˆAàˆAØˆI�a˜‰OŒOˆOð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð" IˆØ�Š�c�3˜vÔ/Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1s    >A*Á*A.Á1A.c                 ó`   — d„ }|                       |t          j        d¦  «        d¬¦  «         d S )Nc                 óÒ   — t          j        | ¦  «        t          j        | ¦  «        z   t          j        | ¦  «        z   t          j        | ¦  «        z   t          j        | ¦  «        z   S r[   )rÀ   r  Úprodr²  r³  rñ  r   s    rW   r
  z0TestParforNumPy.test_0d_array.<locals>.test_impl  sD   € Ý”6˜!‘9”9�rœw q™zœzÑ)­B¬F°1©I¬IÑ5½¼¸q¹	¼	ÑAÅBÄFÈ1ÁIÄIÑMÐMrY   é   F©r»   )rä   rÀ   r�  r  s     rW   Útest_0d_arrayzTestParforNumPy.test_0d_array  s:   € ð	Nð 	Nð 	Nà�
Š
�9�bœh q™kœk¸Eˆ
ÑBÔBÐBÐBÐBrY   c           	      óÖ   — d„ }t          j        d¦  «        dz  }|                      ||¦  «         |                      t	          |t
          j        d d d…         f¦  «        d¦  «         d S )Nc                 óP   — t          j        | j        dz  | j        dz  z   ¦  «        S r}  )rÀ   r  ÚrealÚimag)rN  s    rW   r
  z6TestParforNumPy.test_real_imag_attr.<locals>.test_impl  s#   € Ý”6˜!œ& A™+¨¬°!©Ñ3Ñ4Ô4Ð4rY   r�   y      ð?      ð?rì   )rÀ   r  rä   rÐ   rî   r   r*  )rT   r
  rN  s      rW   Útest_real_imag_attrz#TestParforNumPy.test_real_imag_attr
  sp   € ð	5ð 	5ð 	5õ ŒI�a‰LŒL˜FÑ#ˆØ�
Š
�9˜aÑ Ô Ð Ø×Ò� iµ%Ô2BÀ3À3ÀQÀ3Ô2GÐ1IÑJÔJÈAÑNÔNÐNÐNÐNrY   N)rx   rO   ry   rZ  r=   r«  r´  r¹  rÎ  rÖ  rÞ  rî  rõ  rû  rþ  r  r  r!  r&  r/  r6  rB  rF  rV  rZ  rb  rh  rm  r}   rY   rW   r¦  r¦  z  s˜  € € € € € à1Ð1àð$ð $ñ „Zð$ð	Gð 	Gð 	GðFð Fð Fð.ð .ð .ð .ð .ð .ð 
/ð 
/ð 
/ð9ð 9ð 9ð 9ð 9ð 9ð$9ð 9ð 9ð&Fð Fð FðFð Fð Fð$Fð Fð Fð"#:ð #:ð #:ðJ#:ð #:ð #:ðJ":ð ":ð ":ðH":ð ":ð ":ðH<ð <ð <ð<ð <ð <ð$ð $ð $ð$$ð $ð $ð$2ð 2ð 2ð,Cð Cð Cð
Oð Oð Oð Oð OrY   r¦  c                   óX   — e Zd ZdZ ej        e d¦  «        ed„ ¦   «         ¦   «         ZdS )ÚTestParforsUnsupportedz$Tests for unsupported use of parforszOnly impacts 32 bit hardwarec                 ó’  — |                       t          j        ¦  «        5 }t          d¬¦  «        d„ ¦   «         }t	          j        ddd¦  «                             dd¦  «        }t	          j        ddd¦  «        } |||¦  «         d	d	d	¦  «         n# 1 swxY w Y   d
}|                      |t          |j	        ¦  «        ¦  «         d	S )zu
        This test is in place until issues with the 'parallel'
        target on 32 bit hardware are fixed.
        Tr\  c                 ó,   — t          j        | |¦  «        S r[   r^  r©  s     rW   ÚddotzHTestParforsUnsupported.test_unsupported_combination_raises.<locals>.ddot  s   € å”v˜a ‘|”|Ð#rY   r   rì   rD  rý   r  NzCThe 'parallel' target is not currently supported on 32 bit hardware)
r  r   ÚUnsupportedParforsErrorr   rÀ   rÿ   r  rô   r"  r  )rT   ra  rr  r�  ró  rù   s         rW   Ú#test_unsupported_combination_raisesz:TestParforsUnsupported.test_unsupported_combination_raises  s  € ð ×Ò�vÔ=Ñ>Ô>ð 	À&Ý˜4Ð Ñ Ô ð$ð $ñ !Ô ð$õ ”˜A˜q "Ñ%Ô%×-Ò-¨a°Ñ4Ô4ˆAÝ”˜A˜q "Ñ%Ô%ˆAØˆD��A‰JŒJˆJð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ðˆà�Š�c�3˜vÔ/Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1s    A&BÂBÂBN)	rx   rO   ry   rZ  ÚunittestÚskipIfr<   r=   rt  r}   rY   rW   ro  ro    sP   € € € € € Ø.Ð.Ø€X„_˜�ZÐ!?Ñ@Ô@Øð2ð 2ñ „Zñ AÔ@ð2ð 2ð 2rY   ro  c                   óì  — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d „ Z$d!„ Z%d"„ Z&d#„ Z'd$„ Z(d%„ Z)d&„ Z*d'„ Z+d(„ Z,d)„ Z-d*„ Z.d+„ Z/d,„ Z0d-„ Z1d.„ Z2d/„ Z3d0„ Z4d1„ Z5d2„ Z6d3„ Z7d4„ Z8d5„ Z9d6„ Z:d7„ Z;d8„ Z<d9„ Z=d:„ Z>d;„ Z?d<„ Z@d=„ ZAd>„ ZBd?„ ZCd@„ ZDdA„ ZEdB„ ZFdC„ ZGdD„ ZHdE„ ZIdF„ ZJdG„ ZKdH„ ZLdIS )JÚTestParforsz6 Tests cpython, reduction and various parfors featuresc                 ó@   ‡ — d„ }‰                       |ˆ fd„¦  «         d S )Nc                 ó   — | |z  |z   S r[   r}   )rˆ   r®   rm  s      rW   r
  z,TestParfors.test_arraymap.<locals>.test_impl/  s   € Ø�q‘5˜1‘9ÐrY   c                  ó.   •— ‰                       d¦  «        S ©Nr  rè  r]   s   €rW   ré  z+TestParfors.test_arraymap.<locals>.<lambda>2  s   ø€ ¨t×/IÒ/IÈ!Ñ/LÔ/L€ rY   )rê   r  s   ` rW   Útest_arraymapzTestParfors.test_arraymap.  s:   ø€ ð	ð 	ð 	ð 	×Ò˜IÐ'LÐ'LÐ'LÐ'LÑMÔMÐMÐMÐMrY   c                 ó~   — d„ }|                       |¦  «         |                      t          |d¦  «        d¦  «         d S )Nc                  ó€   — t          j        d¦  «        } t          j        d¦  «        }t          j        | |z   ¦  «        S )Nrì   ©r  é   )rÀ   r�  r	  r  ©rv  ru  s     rW   r
  z0TestParfors.test_0d_broadcast.<locals>.test_impl5  s0   € Ý”˜‘”ˆAÝ”˜Ñ!Ô!ˆAÝ”6˜!˜a™%‘=”=Ð rY   r}   rì   ©rä   rÐ   rî   r  s     rW   Útest_0d_broadcastzTestParfors.test_0d_broadcast4  óK   € ð	!ð 	!ð 	!ð 	�
Š
�9ÑÔÐØ×Ò� i°Ñ4Ô4°aÑ8Ô8Ð8Ð8Ð8rY   c                 ó~   — d„ }|                       |¦  «         |                      t          |d¦  «        d¦  «         d S )Nc                  ó€   — t          j        d¦  «        } t          j        d¦  «        }t          j        | |z   ¦  «        S ©Nr€  )rÀ   r	  r@  r  r‚  s     rW   r
  z-TestParfors.test_2d_parfor.<locals>.test_impl=  s2   € Ý”˜Ñ!Ô!ˆAÝ”˜Ñ"Ô"ˆAÝ”6˜!˜a™%‘=”=Ð rY   r}   rì   rƒ  r  s     rW   Útest_2d_parforzTestParfors.test_2d_parfor<  r…  rY   c                 óz   ‡ ‡— d„ Šˆˆ fd„}d„ }‰                       ||¦  «         ‰                      ||¦  «         d S )Nc               3   óf   K  — t          j        d¦  «        } t          j        d¦  «        }| |fV — d S rˆ  ©rÀ   r	  r@  r‚  s     rW   Úcase1z)TestParfors.test_nd_parfor.<locals>.case1E  s5   è è € Ý”˜Ñ!Ô!ˆAÝ”˜Ñ"Ô"ˆAØ�a�&ˆLˆLˆLˆLˆLrY   c                  óZ   •— t           ‰ ¦   «         ‰                     d¦  «        ¦  «        S r}  )r
   r  )r�  rT   s   €€rW   ré  z,TestParfors.test_nd_parfor.<locals>.<lambda>J  s%   ø€ �5  ¡¤¨$×*DÒ*DÀQÑ*GÔ*GÑHÔH€ rY   c                 ó0   — t          j        | |z   ¦  «        S r[   r‹  r‚  s     rW   r
  z-TestParfors.test_nd_parfor.<locals>.test_implL  s   € Ý”6˜!˜a™%‘=”=Ð rY   )rê   rð   )rT   rí  r
  r�  s   `  @rW   Útest_nd_parforzTestParfors.test_nd_parforD  sj   øø€ ð	ð 	ð 	ð
 IÐHÐHÐHÐHˆð	!ð 	!ð 	!ð 	×Ò˜I xÑ0Ô0Ð0Ø×#Ò# I¨xÑ8Ô8Ð8Ð8Ð8rY   c                 óN   ‡— ddl mŠ ˆfd„}d}|                      ||¦  «         d S )Nr   )r	  c                 ó*   •—  ‰| ¦  «        }|d         S rÑ  r}   )r  r�  r	  s     €rW   r
  z9TestParfors.test_np_func_direct_import.<locals>.test_implT  s   ø€ Ø��Q‘”ˆAØ�Q”4ˆKrY   éo   )rã  r	  rä   )rT   r
  r  r	  s      @rW   Útest_np_func_direct_importz&TestParfors.test_np_func_direct_importR  sO   ø€ ØÐÐÐÐÐð	ð 	ð 	ð 	ð 	ð ˆØ�
Š
�9˜aÑ Ô Ð Ð Ð rY   c                 ó<  — d„ }|                       |dd¦  «         |                      t          ¦  «        5 } t          d¬¦  «        |¦  «        } |dd¦  «         d d d ¦  «         n# 1 swxY w Y   d}|                      |t          |j        ¦  «        ¦  «         d S )Nc                 ó€   — t          j        | ¦  «        }t          j        |¦  «        }t          j        ||z   ¦  «        S r[   r®  )rD  r  r�  r¯  s       rW   r
  z2TestParfors.test_size_assertion.<locals>.test_impl[  s.   € Ý”˜‘
”
ˆAÝ”˜‘
”
ˆAÝ”6˜!˜a™%‘=”=Ð rY   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_assertionzTestParfors.test_size_assertionZ  sä   € ð	!ð 	!ð 	!ð
 	�
Š
�9˜b "Ñ%Ô%Ð%Ø×Ò�~Ñ.Ô.ð 	°&Ø'•D $Ð'Ñ'Ô'¨	Ñ2Ô2ˆEØˆE�"�a‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð +ˆØ�Š�c�3˜vÔ/Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1s   µ&A'Á'A+Á.A+c                 ó¦   — d„ }d}t           j                             |¦  «        }t          j        |¦  «        }|                      ||||¦  «         d S )Nc                 ó¤   — t          j        d¦  «        D ]:}t          ||z  dz  |dz   |z  dz  ¦  «        D ]}d||<   | |         dk    rd||<   ŒŒ;|S )Nrý   rì   r   ©r«   r   r  )r®   Úis_positiver’  r  r€  s        rW   r
  z'TestParfors.test_cfg.<locals>.test_impli  ss   € Ý”\ !‘_”_ð +ð +�Ý  !¡ Q¡¨¨1©¨a©°©
Ñ4Ô4ð +ð +�AØ%&�K ‘NØ˜”t˜a’x�xØ)*˜ A™øð+ð
 ÐrY   rä  )rÀ   rŽ  Úrandr@  rä   )rT   r
  r’  r®   rœ  s        rW   Útest_cfgzTestParfors.test_cfgg  sV   € ð	ð 	ð 	ð ˆÝŒI�NŠN˜1ÑÔˆÝ”h˜q‘k”kˆØ�
Š
�9˜a ¨aÑ0Ô0Ð0Ð0Ð0rY   c           	      ó"  — d„ }d}t           j                             |¦  «        }|                      ||¦  «         t           j                             d|¬¦  «                             t           j        ¦  «        }|                      ||¦  «         d„ }|                      ¦   «         5  |                      |¦  «         d d d ¦  «         n# 1 swxY w Y   d}t           j                             d|¬¦  «                             t           j        ¦  «        }d„ }|                      ||¦  «         d„ }|                      ||                     d	¦  «        ¦  «         d
„ }|                      ||                     d	¦  «        ¦  «         |  	                    t          |t          j        d d …d d …f         f¦  «        d¦  «         d„ }|                      ||¦  «         |  	                    t          |t          j        d d …         f¦  «        d¦  «         d S )Nc                 ó*   — d}t          d„ | |¦  «        S )Nr  c                 ó"   — t          | |¦  «        S r[   r  r‡   s     rW   ré  z<TestParfors.test_reduce.<locals>.test_impl.<locals>.<lambda>z  s   € ¥c¨!¨Q¡i¤i€ rY   r   )r�  Úinit_vals     rW   r
  z*TestParfors.test_reduce.<locals>.test_implx  s   € ØˆHÝÐ/Ð/°°HÑ=Ô=Ð=rY   r  r  rå  c                  óR   — d„ } t          | t          j        g d¢¦  «        d¦  «        S )Nc                 ó   — | dz  S r}  r}   r=  s    rW   ré  z<TestParfors.test_reduce.<locals>.test_impl.<locals>.<lambda>„  s
   € ˜!˜q™&€ rY   ©rì   rý   r  r  r�   rý   )r   rÀ   r�  )Úgs    rW   r
  z*TestParfors.test_reduce.<locals>.test_implƒ  s*   € Ø Ð ˆAÝ˜!�RœX o o oÑ6Ô6¸Ñ:Ô:Ð:rY   é    c                 ó>   — t          j        | | dk             ¦  «        S r|  r‹  rã  s    rW   r
  z*TestParfors.test_reduce.<locals>.test_implŒ  s   € Ý”6˜!˜A˜qšDœ'‘?”?Ð"rY   c                 óZ   — | d d …df         }t          j        | |dk    df         ¦  «        S )Nr   r  rì   r‹  ©r�  r¯  s     rW   r
  z*TestParfors.test_reduce.<locals>.test_impl’  s/   € Ø�!�!�!�A�#”ˆAÝ”6˜!˜A˜qšD ˜Fœ)Ñ$Ô$Ð$rY   )é   r  c                 ó^   — | d d …df         }t          j        | |dk    dd…f         ¦  «        S )Nr   r  rì   rý   r‹  rª  s     rW   r
  z*TestParfors.test_reduce.<locals>.test_impl™  s3   € Ø�!�!�!�A�#”ˆAÝ”6˜!˜A˜qšD  1 ˜Hœ+Ñ&Ô&Ð&rY   rý   c                 ó4   — t          j        | ¦  «        }| |z
  S r[   )rÀ   Úamin)r�  Úmin_vals     rW   r
  z*TestParfors.test_reduce.<locals>.test_impl   s   € Ý”g˜a‘j”jˆGØ�w‘;ÐrY   )rÀ   rŽ  r�  rä   rì  r  r  ÚassertTypingErrorr  rÐ   rî   r«   r—  ©rT   r
  r  r�  s       rW   Útest_reducezTestParfors.test_reducew  sL  € ð	>ð 	>ð 	>ð ˆÝŒI�NŠN˜1ÑÔˆØ�
Š
�9˜aÑ Ô Ð ÝŒI×Ò˜b qÐÑ)Ô)×0Ò0µ´Ñ:Ô:ˆØ�
Š
�9˜aÑ Ô Ð ð	;ð 	;ð 	;ð ×#Ò#Ñ%Ô%ð 	"ð 	"Ø�JŠJ�yÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð ˆÝŒI×Ò˜b qÐÑ)Ô)×0Ò0µ´Ñ:Ô:ˆð	#ð 	#ð 	#à�
Š
�9˜aÑ Ô Ð ð	%ð 	%ð 	%ð 	�
Š
�9˜aŸiši¨Ñ0Ô0Ñ1Ô1Ð1ð	'ð 	'ð 	'ð 	�
Š
�9˜aŸiši¨Ñ0Ô0Ñ1Ô1Ð1à×Ò� iµ%´-ÀÀÀÀ!À!À!ÀÔ2DÐ1FÑGÔGÈÑKÔKÐKð	ð 	ð 	ð 	�
Š
�9˜aÑ Ô Ð à×Ò� iµ%´-ÀÀÀÔ2BÐ1DÑEÔEÀqÑIÔIÐIÐIÐIs   Â&CÃCÃCc                 óð   — d„ }d}|                       t          ¦  «        5 }|                      |d¦  «        }d d d ¦  «         n# 1 swxY w Y   |                      |t	          |j        ¦  «        ¦  «         d S )Nc                  óV   — d} t          d¦  «        D ]}t          j        | ¦  «        } Œ| S rÅ  )r   Úcmathr`  ©Úaccr  s     rW   r
  z9TestParfors.test_use_of_reduction_var1.<locals>.test_impl¨  s0   € ØˆCÝ˜A‘Y”Yð &ð &�Ý”j ‘o”o��ØˆJrY   ú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_var1z&TestParfors.test_use_of_reduction_var1§  s¸   € ð	ð 	ð 	ð UˆØ×Ò�zÑ*Ô*ð 	:¨aØ×*Ò*¨9°bÑ9Ô9ˆFð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:à�Š�c�3˜qœ{Ñ+Ô+Ñ,Ô,Ð,Ð,Ð,ó    AÁAÁ
Ac                 óú   — d„ }d}|                       t          j        ¦  «        5 }|                      |d¦  «        }d d d ¦  «         n# 1 swxY w Y   |                      |t          |j        ¦  «        ¦  «         d S )Nc                  ó8   — d} t          d¦  «        D ]}| dz  } Œ| S ©Nrä  rý   ©r   r¶  s     rW   r
  z9TestParfors.test_unsupported_floordiv1.<locals>.test_implµ  s,   € ØˆCÝ˜A‘Y”Yð ð �Ø˜‘	��ØˆJrY   zÑParallel 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  rº  s        rW   Útest_unsupported_floordiv1z&TestParfors.test_unsupported_floordiv1´  s¼   € ð	ð 	ð 	ð(ˆð
 ×Ò�vÔ5Ñ6Ô6ð 	:¸!Ø×*Ò*¨9°bÑ9Ô9ˆFð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:à�Š�c�3˜qœ{Ñ+Ô+Ñ,Ô,Ð,Ð,Ð,ó   ¥AÁAÁAc                 óð   — d„ }d}|                       t          ¦  «        5 }|                      |d¦  «        }d d d ¦  «         n# 1 swxY w Y   |                      |t	          |j        ¦  «        ¦  «         d S )Nc                  ó>   — d} t          d¦  «        D ]
}| |dz   z  } Œ| S r¿  rÀ  r¶  s     rW   r
  z4TestParfors.test_unsupported_xor1.<locals>.test_implÆ  s0   € ØˆCÝ˜A‘Y”Yð ð �Ø�q˜1‘u‘��ØˆJrY   r¸  r}   r¹  rº  s        rW   Útest_unsupported_xor1z!TestParfors.test_unsupported_xor1Å  s¸   € ð	ð 	ð 	ð UˆØ×Ò�zÑ*Ô*ð 	:¨aØ×*Ò*¨9°bÑ9Ô9ˆFð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:à�Š�c�3˜qœ{Ñ+Ô+Ñ,Ô,Ð,Ð,Ð,r¼  c                 óš   — d„ }d}|                       ||¦  «         |                      t          |t          j        f¦  «        d¦  «         d S )Nc                 óR   — t          j        | ¦  «        }|                     ¦   «         S r[   r®  r·  s     rW   r
  z8TestParfors.test_parfor_array_access1.<locals>.test_implÔ  s   € Ý”˜‘
”
ˆAØ—5’5‘7”7ˆNrY   r  r   )rä   rÐ   rÏ  r   r“  ©rT   r
  r  s      rW   Útest_parfor_array_access1z%TestParfors.test_parfor_array_access1Ñ  sV   € ð	ð 	ð 	ð ˆØ�
Š
�9˜aÑ Ô Ð Ø×Ò� Yµ´°Ñ>Ô>ÀÑBÔBÐBÐBÐBrY   c                 óš   — d„ }d}|                       ||¦  «         |                      t          |t          j        f¦  «        d¦  «         d S )Nc                 ó  — t          j        | ¦  «        }d}d} t          j        t	          |¦  «        ¦  «        D ]}|||         z  }Œt          j        t	          |¦  «        ¦  «        D ]}|| k    r| ||         z  } Œ|| z   S rÑ  )rÀ   r	  r«   r   rÒ   ©r  r�  rD  r  s       rW   r
  z8TestParfors.test_parfor_array_access2.<locals>.test_implß  s†   € Ý”˜‘
”
ˆAØˆAØˆAÝ”\¥# a¡&¤&Ñ)Ô)ð ð �Ø�Q�q”T‘	��å”\¥# a¡&¤&Ñ)Ô)ð ð �Ø˜’6�6Ø˜˜1œ‘I�Aøà�q‘5ˆLrY   r  r   ©rä   rÐ   rè  r   r“  rÉ  s      rW   Útest_parfor_array_access2z%TestParfors.test_parfor_array_access2Ü  sX   € ð	ð 	ð 	ð ˆØ�
Š
�9˜aÑ Ô Ð Ø×ÒÕ4°YÅÄÀÑNÔNÐPQÑRÔRÐRÐRÐRrY   c                 óú   — d„ }d}|                       t          j        ¦  «        5 }|                      ||¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )Nc                 ó¶   — t          j        | t           j        ¦  «        }d}t          j        t          |¦  «        ¦  «        D ]}|||         z  }|dk    r|}Œd S ©Nr   rý   )rÀ   r	  r’  r«   r   rÒ   rÍ  s       rW   r
  z8TestParfors.test_parfor_array_access3.<locals>.test_implñ  s_   € Ý”˜�2œ8Ñ$Ô$ˆAØˆAÝ”\¥# a¡&¤&Ñ)Ô)ð ð �Ø�Q�q”T‘	�Ø�a’4�4Ø�Aøðð rY   r  z Overwrite of parallel loop index)r  r   r`  rä   rô   r"  r  )rT   r
  r  r  s       rW   Útest_parfor_array_access3z%TestParfors.test_parfor_array_access3ð  s»   € ð	ð 	ð 	ð ˆØ×Ò�vÔ=Ñ>Ô>ð 	%À&Ø�JŠJ�y !Ñ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%à�ŠÐ8½#¸fÔ>NÑ:OÔ:OÑPÔPÐPÐPÐPrÃ  c           	      óØ  — d„ }d}d}t           j                             ||f¦  «        }t           j                             |¦  «        }|                      |||¦  «         t	          |t          j        t
          j        dd¦  «        t          j        t
          j        dd¦  «        f¦  «        \  }}|                      t          |j
        ¦  «        dk    od|j
        v ¦  «         |j
        d         }d}	d }
|j        D ]*}t          |t          j        j        j        ¦  «        rd	}	|}
Œ+|                      |	¦  «         d}|
j                             ¦   «         D ]}}|j        D ]s}t          |t&          j        ¦  «        rWt          |j        t&          j        ¦  «        r8|j        j        d
k    r(d	}|                      |
j        |j        j        v ¦  «         ŒtŒ~|                      |¦  «         d S )Nc                 ó,   — t          j        | |¦  «        S r[   r^  )r�  r‰   s     rW   r
  z8TestParfors.test_parfor_array_access4.<locals>.test_impl  rª  rY   r  r  rý   rŸ  rì   r   FTrñ  )rÀ   rŽ  r�  rä   rÃ  r   r¡  r—  rN  rÒ   r¹  rÇ  r¿   r«   r°  r±  rÈ  rÖ  rÞ  r   r×  rä  rå  rS  rê  rV  )rT   r
  r  Údr�  r‰   r½  r¿  rË  Úparfor_foundr±  rï  Úbuild_tuple_foundÚbls                 rW   Útest_parfor_array_access4z%TestParfors.test_parfor_array_access4þ  så  € ð	 ð 	 ð 	 ð ˆØˆÝŒI�NŠN˜A˜q˜6Ñ"Ô"ˆÝŒI�NŠN˜1ÑÔˆØ�
Š
�9˜a Ñ#Ô#Ð#å,Ø�œ¥E¤M°1°cÑ:Ô:Ýœ¥E¤M°1°cÑ:Ô:ð<ñ=ô =‰ˆ�ð 	�Š�˜GœNÑ+Ô+¨qÒ0ÐH°Q¸'¼.Ð5HÑIÔIÐIØ”˜qÔ!ˆØˆØˆØ”Jð 	ð 	ˆDÝ˜$¥¤Ô 4Ô ;Ñ<Ô<ð Ø#�Ø�øà�Š˜Ñ%Ô%Ð%Ø!ÐàÔ"×)Ò)Ñ+Ô+ð 	Jð 	JˆBØœð Jð J�Ý˜t¥R¤YÑ/Ô/ð JÝ& t¤zµ2´7Ñ;Ô;ðJà œJœM¨]Ò:Ð:Ø(,Ð%Ø—O’O FÔ$4¸¼
Ô8HÐ$HÑIÔIÐIøðJð 	�ŠÐ)Ñ*Ô*Ð*Ð*Ð*rY   c                 ó`   — d„ }t          j        d¦  «        }|                      ||¦  «         d S )Nc                 ó”   — t          j        t          | ¦  «        ¦  «        D ]}| j                             d¦  «        | |<   Œ | d         S ©Nr   r  )r«   r   rÒ   r(  rÑ   )rˆ   r  s     rW   r
  z5TestParfors.test_parfor_dtype_type.<locals>.test_impl'  sA   € Ý”\¥# a¡&¤&Ñ)Ô)ð 'ð '�Ø”w—|’| A‘”��!‘�Ø�Q”4ˆKrY   r  rˆ  )rT   r
  rˆ   s      rW   Útest_parfor_dtype_typez"TestParfors.test_parfor_dtype_type%  s:   € ð	ð 	ð 	õ
 ŒG�B‰KŒKˆØ�
Š
�9˜aÑ Ô Ð Ð Ð rY   c                 óš   — d„ }d}|                       ||¦  «         |                      t          |t          j        f¦  «        d¦  «         d S )Nc                 ó¦   — t          j        | df¦  «        }d}t          j        | ¦  «        D ]#}|||d d …f                              ¦   «         z  }Œ$|S )Nr  r   )rÀ   r	  r«   r   r  )r  rv  rm  r  s       rW   r
  z8TestParfors.test_parfor_array_access5.<locals>.test_impl1  sT   € Ý”˜˜A˜‘”ˆAØˆAÝ”\ !‘_”_ð "ð "�Ø�Q�q˜˜˜�s”V—Z’Z‘\”\Ñ!��ØˆHrY   r  r   rÎ  rÉ  s      rW   Útest_parfor_array_access5z%TestParfors.test_parfor_array_access5/  sX   € ð	ð 	ð 	ð ˆØ�
Š
�9˜aÑ Ô Ð Ø×ÒÕ4°YÅÄÀÑNÔNÐPQÑRÔRÐRÐRÐRrY   c                 ó`   — d„ }t          j        d¦  «        }|                      ||¦  «         d S )Nc                 óR   — t          d¦  «        D ]}d| d         z  | d<   Œ| d         S )Nr  rý   r   rÀ  )Úoutr  s     rW   r
  z8TestParfors.test_parfor_hoist_setitem.<locals>.test_impl?  s3   € Ý˜B‘Z”Zð $ð $�Ø˜S œV™��A‘�Ø�q”6ˆMrY   rì   rˆ  )rT   r
  rä  s      rW   Útest_parfor_hoist_setitemz%TestParfors.test_parfor_hoist_setitem<  s:   € ð	ð 	ð 	õ
 Œg�a‰jŒjˆØ�
Š
�9˜cÑ"Ô"Ð"Ð"Ð"rY   c                 ó*  — d„ }d}d}|                       |||¦  «         |                      t          |t          j        t          j        f¦  «        d¦  «         |                      t          |t          j        t          j        f¦  «        d¦  «         d S )Nc                 óØ   — t          j        |¦  «        }t          j        | |f¦  «        }t          j        | ¦  «        }t          d¦  «        D ]}| t          j        ||¦  «        z  }Œ|S r|  )rÀ   r	  r  rt  )r’  r�  rw  rv  ru  r  r¯  s          rW   r
  z8TestParfors.test_parfor_generate_fuse.<locals>.test_implJ  s_   € Ý”˜‘
”
ˆAÝ”˜˜A˜‘”ˆAÝ”˜‘
”
ˆAÝ˜1‘X”Xð (ð (�Ø�R�"œ&  A™,œ,Ñ&��àˆHrY   r  r  r  )rä   rÐ   rà  r   r“  rî   )rT   r
  r  rÖ  s       rW   Útest_parfor_generate_fusez%TestParfors.test_parfor_generate_fuseG  s�   € ð	ð 	ð 	ð ˆØˆØ�
Š
�9˜a Ñ#Ô#Ð#Ø×ÒÕ)¨)µe´jÅ%Ä*Ð5MÑNÔNÐPQÑRÔRÐRØ×Ò� iµ%´*½e¼jÐ1IÑJÔJÈAÑNÔNÐNÐNÐNrY   c                 óÀ   — d„ }t          j        dt           j        ¦  «        }t          j        dt           j        ¦  «        }d|d<   |                      |||¦  «         d S )Nc                 ó,   — t          j        | |¦  «        S r[   )rÀ   Úbitwise_andrª  s     rW   r
  z.TestParfors.test_ufunc_expr.<locals>.test_impl[  s   € Ý”> ! QÑ'Ô'Ð'rY   r  r   rì   )rÀ   r	  Úuint8rä   )rT   r
  r�  r¯  s       rW   Útest_ufunc_exprzTestParfors.test_ufunc_exprY  s^   € ð	(ð 	(ð 	(õ ŒG�A•r”xÑ Ô ˆÝŒG�A•r”xÑ Ô ˆØˆˆ!‰Ø�
Š
�9˜a Ñ#Ô#Ð#Ð#Ð#rY   c                 ój   — d„ }|                       t          |t          j        f¦  «        d¦  «         d S )Nc                 óZ   — t          | f¦  «        }t          | ¦  «        D ]
}|dz   ||<   Œ|S )Nr+  )Úunsafe_emptyr  ©r  r�  r  s      rW   r
  z;TestParfors.test_find_callname_intrinsic.<locals>.test_impld  s:   € Ý˜a˜TÑ"Ô"ˆAÝ˜1‘X”Xð ð �Ø˜3‘w��!‘�ØˆHrY   rì   )rÐ   rà  r   r“  r  s     rW   Útest_find_callname_intrinsicz(TestParfors.test_find_callname_intrinsicc  s>   € ð	ð 	ð 	ð 	×ÒÕ)¨)µe´j°]ÑCÔCÀQÑGÔGÐGÐGÐGrY   c                 ó8   — d„ }|                       |d¦  «         d S )Nc                 óf   — d}t          | ¦  «        D ]}|dz  }Œt          | ¦  «        D ]}|dz  }Œ|S rü   rÀ  ©r  r·  r  s      rW   r
  z7TestParfors.test_reduction_var_reuse.<locals>.test_implp  sL   € ØˆCÝ˜A‘Y”Yð ð �Ø�q‘��å˜A‘Y”Yð ð �Ø�q‘��àˆJrY   r«  r  r  s     rW   Útest_reduction_var_reusez$TestParfors.test_reduction_var_reusen  s-   € ð	ð 	ð 	ð 	�
Š
�9˜bÑ!Ô!Ð!Ð!Ð!rY   c                 ó¨   — d„ }|                       |t          j        d¦  «        t          j        d¦  «                             d¦  «        ¦  «         d S )Nc                 ó^   — d}t          | j        d         ¦  «        D ]}||         r|dz  }Œ|S ©Nrì   r   ©r   rŽ  )r�  ÚcondrÁ  r  s       rW   r
  z8TestParfors.test_non_identity_initial.<locals>.test_impl}  s?   € ØˆAÝ˜AœG AœJÑ'Ô'ð ð �Ø˜”7ð Ø˜‘F�AøØˆHrY   r  Úbool©rä   rÀ   r	  r  r  s     rW   Útest_non_identity_initialz%TestParfors.test_non_identity_initial{  sM   € ð	ð 	ð 	ð 	�
Š
�9�bœg b™kœk­2¬7°2©;¬;×+=Ò+=¸fÑ+EÔ+EÑFÔFÐFÐFÐFrY   c                 ó¨   — d„ }|                       |t          j        d¦  «        t          j        d¦  «                             d¦  «        ¦  «         d S )Nc                 ó~   — d}d}t          | j        d         ¦  «        D ]}||         r|dz  }|dz  }Œ|dz  }Œ||z   S )Nrì   r  r   rý   rú  )r�  rû  rÁ  rÅ  r  s        rW   r
  z9TestParfors.test_if_not_else_reduction.<locals>.test_impl‡  s]   € ØˆAØˆAÝ˜AœG AœJÑ'Ô'ð ð �Ø˜”7ð Ø˜‘F�AØ˜‘F�A�Aà˜‘F�A�AØ�q‘5ˆLrY   r  rü  rý  r  s     rW   Útest_if_not_else_reductionz&TestParfors.test_if_not_else_reduction…  sM   € ð		ð 		ð 		ð 	�
Š
�9�bœg b™kœk­2¬7°2©;¬;×+=Ò+=¸fÑ+EÔ+EÑFÔFÐFÐFÐFrY   c                 ó8   — d„ }|                       |d¦  «         d S )Nc                 ó(  — d}|d         |d         z  }t          j        |t           j        ¦  «        }t          j        |¦  «                             |¦  «        }t          j        | ¦  «        D ]}||z  }Œt          j        | ¦  «        D ]}||z  }Œ|S ©N©é   r€   r   rì   ©rÀ   r@  Úint_r  r  r«   r   ©r  Úshpræ  Úresult1Útmpr  s         rW   r
  z?TestParfors.test_two_d_array_reduction_reuse.<locals>.test_impl”  s�   € ØˆCØ�q”6˜C œF‘?ˆDÝ”h˜s¥B¤GÑ,Ô,ˆGÝ”)˜D‘/”/×)Ò)¨#Ñ.Ô.ˆCå”\ !‘_”_ð ð �Ø˜3‘��å”\ !‘_”_ð ð �Ø˜3‘��àˆNrY   rä  r  r  s     rW   Ú test_two_d_array_reduction_reusez,TestParfors.test_two_d_array_reduction_reuse“  s-   € ð	ð 	ð 	ð 	�
Š
�9˜cÑ"Ô"Ð"Ð"Ð"rY   c                 ó8   — d„ }|                       |d¦  «         d S )Nc                 ó¸   — t          j        dt           j        ¦  «        }t          j        | ¦  «        D ]%}|t          j        |gt           j        ¦  «        z  }Œ&|S r#  )rÀ   r@  r  r«   r   r�  )r  Úresultr  s      rW   r
  z9TestParfors.test_one_d_array_reduction.<locals>.test_impl¥  sM   € Ý”X˜a¥¤Ñ)Ô)ˆFå”\ !‘_”_ð 1ð 1�Ø�"œ( A 3­¬Ñ0Ô0Ñ0��àˆMrY   rä  r  r  s     rW   Útest_one_d_array_reductionz&TestParfors.test_one_d_array_reduction¤  s-   € ð	ð 	ð 	ð 	�
Š
�9˜cÑ"Ô"Ð"Ð"Ð"rY   c                 ó8   — d„ }|                       |d¦  «         d S )Nc                 óð   — d}|d         |d         z  }t          j        |t           j        ¦  «        }t          j        |¦  «                             |¦  «        }t          j        | ¦  «        D ]}||z  }Œ|S r  r  r	  s         rW   r
  z9TestParfors.test_two_d_array_reduction.<locals>.test_impl°  sm   € ØˆCØ�q”6˜C œF‘?ˆDÝ”h˜s¥B¤GÑ,Ô,ˆGÝ”)˜D‘/”/×)Ò)¨#Ñ.Ô.ˆCå”\ !‘_”_ð ð �Ø˜3‘��àˆNrY   rä  r  r  s     rW   Útest_two_d_array_reductionz&TestParfors.test_two_d_array_reduction¯  s-   € ð		ð 		ð 		ð 	�
Š
�9˜cÑ"Ô"Ð"Ð"Ð"rY   c                 ó8   — d„ }|                       |d¦  «         d S )Nc                 óÒ   — d}t          j        |t           j        ¦  «        }t          j        g d¢¦  «                             |¦  «        }t          j        | ¦  «        D ]}||z  }Œ|S )Nr  )r^  r+  r  r  rQ  rR  )rÀ   r@  rÓ  r�  r  r«   r   ©r  r
  r  r  r  s        rW   r
  zJTestParfors.test_two_d_array_reduction_with_float_sizes.<locals>.test_implÀ  se   € ØˆCÝ”h˜s¥B¤JÑ/Ô/ˆGÝ”(Ð9Ð9Ð9Ñ:Ô:×BÒBÀ3ÑGÔGˆCå”\ !‘_”_ð ð �Ø˜3‘��àˆNrY   rä  r  r  s     rW   Ú+test_two_d_array_reduction_with_float_sizesz7TestParfors.test_two_d_array_reduction_with_float_sizes½  s-   € ð	ð 	ð 	ð 	�
Š
�9˜cÑ"Ô"Ð"Ð"Ð"rY   c                 ó8   — d„ }|                       |d¦  «         d S )Nc                 ó´   — d}dt          j        |t           j        ¦  «        z  }dt          j        |¦  «        z  }t	          j        | ¦  «        D ]}||z  }Œ|S )Nr  rý   )rÀ   r	  r  Ú	ones_liker«   r   r  s        rW   r
  z>TestParfors.test_two_d_array_reduction_prod.<locals>.test_implÍ  sZ   € ØˆCØ�"œ' #¥r¤wÑ/Ô/Ñ/ˆGØ•b”l 7Ñ+Ô+Ñ+ˆCå”\ !‘_”_ð ð �Ø˜3‘��àˆNrY   rä  r  r  s     rW   Útest_two_d_array_reduction_prodz+TestParfors.test_two_d_array_reduction_prodÌ  s-   € ð	ð 	ð 	ð 	�
Š
�9˜cÑ"Ô"Ð"Ð"Ð"rY   c                 ó8   — d„ }|                       |d¦  «         d S )Nc                 óº   — d}t          j        |t           j        ¦  «        }t          j        | ¦  «        D ]$}|t          j        |t           j        ¦  «        z  }Œ%|S )N)r  rý   rf  )rÀ   r@  r  r«   r   r	  )r  r
  r  r  s       rW   r
  z;TestParfors.test_three_d_array_reduction.<locals>.test_implÚ  sP   € ØˆCÝ”h˜s¥B¤GÑ,Ô,ˆGå”\ !‘_”_ð 1ð 1�Ø�2œ7 3­¬Ñ0Ô0Ñ0��àˆNrY   rä  r  r  s     rW   Útest_three_d_array_reductionz(TestParfors.test_three_d_array_reductionÙ  s-   € ð	ð 	ð 	ð 	�
Š
�9˜cÑ"Ô"Ð"Ð"Ð"rY   c                 ód   — d„ }d}t          j        |¦  «        }|                      ||¦  «         d S )Nc                 ó0   — |                       ¦   «         dz   S r#  )Úargsortrã  s    rW   r
  z>TestParfors.test_preparfor_canonicalize_kws.<locals>.test_implç  s   € Ø—9’9‘;”; ‘?Ð"rY   r  ©rÀ   r  rä   r±  s       rW   Útest_preparfor_canonicalize_kwsz+TestParfors.test_preparfor_canonicalize_kwså  s?   € ð	#ð 	#ð 	#ð ˆÝŒI�a‰LŒLˆØ�
Š
�9˜aÑ Ô Ð Ð Ð rY   c                 ó  — d„ }t          j        dt          j        d¦  «        ¦  «        }|                      |t	          j        |¦  «        f¦  «        }|                      |                     |¦  «         ||¦  «        ¦  «         d S )Nc                 ó   — | j         S r[   r'  rã  s    rW   r
  z8TestParfors.test_preparfor_datetime64.<locals>.test_implð  s	   € Ø”7ˆNrY   rì   zdatetime64[ns])rÀ   râ  r(  r¢   r«   r   rÐ   rÍ   )rT   r
  r�  r´   s       rW   Útest_preparfor_datetime64z%TestParfors.test_preparfor_datetime64î  s�   € ð	ð 	ð 	õ ŒH�Q�œÐ!1Ñ2Ô2Ñ3Ô3ˆØ×&Ò& yµ5´<À±?´?Ð2DÑEÔEˆØ×Ò˜×+Ò+¨AÑ.Ô.°	°	¸!±´Ñ=Ô=Ð=Ð=Ð=rY   c                 ór   — d„ }|                       |t          j                             d¦  «        ¦  «         d S )Nc                 óœ   — | j         d         }d}t          |¦  «        D ],}h d£}|                     |¦  «         d}|D ]}||z  }Œ||z  }Œ-|S )Nr   >   rì   rý   r  )rŽ  r   rÚ  )rv  r  r·  r  ÚRr  r®   s          rW   r
  zITestParfors.test_no_hoisting_with_member_function_call.<locals>.test_implø  sn   € Ø”˜”
ˆAØˆCÝ˜A‘Y”Yð ð �Ø�I�I�Ø—’�a‘”�Ø�Øð ð �AØ˜1‘H�C�CØ�s‘
��ØˆJrY   rÈ  )rä   rÀ   rŽ  r�  r  s     rW   Ú*test_no_hoisting_with_member_function_callz6TestParfors.test_no_hoisting_with_member_function_call÷  s;   € ð
	ð 
	ð 
	ð 	�
Š
�9�bœiŸnšn¨SÑ1Ô1Ñ2Ô2Ð2Ð2Ð2rY   c                 ó6   — d„ }|                       |¦  «         dS )zñ issue3671: 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                  óN   — t          j        dt           j        ¬¦  «        } | dk    S )Nr  r'  r   )rÀ   r@  r  ©rv  s    rW   r
  z8TestParfors.test_array_compare_scalar.<locals>.test_impl  s!   € Ý”˜¥2¤7Ð+Ñ+Ô+ˆAØ˜’6ˆMrY   Nr  r  s     rW   Útest_array_compare_scalarz%TestParfors.test_array_compare_scalar  s+   € ð	ð 	ð 	ð 	�
Š
�9ÑÔÐÐÐrY   c                 óf   — d„ }t          j        d¦  «        }|                      ||dd¬¦  «         d S )Nc                 óz   — t          | ¦  «        }| d|…         }|r| d|dz  …         }|                     ¦   «         S rÒ  )rÒ   r  )r®   Úhalfræ  Úparrs       rW   r
  z?TestParfors.test_array_analysis_optional_def.<locals>.test_impl  sA   € Ý�q‘6”6ˆDØ�Q�t�V”9ˆDàð $Ø˜˜4 ™7˜”|�à—8’8‘:”:ÐrY   rD  TFrg  rˆ  ©rT   r
  r®   s      rW   Ú test_array_analysis_optional_defz,TestParfors.test_array_analysis_optional_def  s@   € ð	ð 	ð 	õ ŒG�B‰KŒKˆØ�
Š
�9˜a ¸ˆ
Ñ>Ô>Ð>Ð>Ð>rY   c                 ój  — d„ }t          j        dt          ¬¦  «        }t          j        dt          ¬¦  «        }|                      |||¦  «         |                      t          |t          j        t          j        dd¦  «        t          j        t          j        dd¦  «        f¦  «        d¦  «         d S )Nc                 ó  — t          j        t          | ¦  «        t           j        ¬¦  «        }t          |¦  «        }t	          j        |¦  «        D ]}| |         ||<   Œt	          j        |¦  «        D ]}||         ||         z   ||<   Œ|S rÑ  )rÀ   râ  rÒ   r—  r«   r   )rˆ   r‰   Údataræ  r  s        rW   r
  z7TestParfors.test_prange_side_effects.<locals>.test_impl  s†   € Ý”8�C ™FœF­"¬*Ð5Ñ5Ô5ˆDÝ�t‘9”9ˆDÝ”\ $Ñ'Ô'ð ð �Ø˜Aœ$��Q‘�Ý”\ $Ñ'Ô'ð )ð )�Ø˜qœ' A a¤D™.��Q‘�ØˆKrY   rä  r'  rì   rŸ  )	rÀ   r  Úfloaträ   rÐ   rî   r   r¡  r—  )rT   r
  r®   rm  s       rW   Útest_prange_side_effectsz$TestParfors.test_prange_side_effects  s·   € ð	ð 	ð 	õ ŒI�g¥UÐ+Ñ+Ô+ˆÝŒI�g¥UÐ+Ñ+Ô+ˆà�
Š
�9˜a Ñ#Ô#Ð#Ø×Ò� iÝ%*¤[µ´ÀÀ3Ñ%GÔ%GÝ%*¤[µ´ÀÀ3Ñ%GÔ%Gð%IñJô JàKLñ	Nô 	Nð 	Nð 	Nð 	NrY   c                 ó`   — d„ }t          j        d¦  «        }|                      ||¦  «         d S )Nc                 óš   — d}d}t          j        t          | ¦  «        ¦  «        D ]$}| |xx         |d         |d         z   |z   z  cc<   Œ%| S )Nr   rf  r   rì   )r«   r   rÒ   ©rˆ   Úatupr‰   r  s       rW   r
  z*TestParfors.test_tuple1.<locals>.test_impl1  sZ   € ØˆDØˆAÝ”\¥# a¡&¤&Ñ)Ô)ð .ð .�Ø�!��”˜˜Qœ $ q¤'Ñ)¨AÑ-Ñ-��‘�ØˆHrY   r  r#  r4  s      rW   Útest_tuple1zTestParfors.test_tuple10  ó:   € ð	ð 	ð 	õ ŒI�b‰MŒMˆØ�
Š
�9˜aÑ Ô Ð Ð Ð rY   c                 ó`   — d„ }t          j        d¦  «        }|                      ||¦  «         d S )Nc                 ó’   — | j         }d}t          j        t          | ¦  «        ¦  «        D ]}| |xx         |d         |z   z  cc<   Œ| S )Nrf  r   )rŽ  r«   r   rÒ   r=  s       rW   r
  z*TestParfors.test_tuple2.<locals>.test_impl<  sR   € Ø”7ˆDØˆAÝ”\¥# a¡&¤&Ñ)Ô)ð $ð $�Ø�!��”˜˜Qœ !™Ñ#��‘�ØˆHrY   r  r#  r4  s      rW   Útest_tuple2zTestParfors.test_tuple2;  r@  rY   c                 ó`   — d„ }t          j        d¦  «        }|                      ||¦  «         d S )Nc                 óÎ   — t          j        d¦  «        df}d}t          j        t	          | ¦  «        ¦  «        D ]*}| |xx         |d         d         |d         z   |z   z  cc<   Œ+| S )Nr  r  rf  r   r�   rì   )rÀ   r  r«   r   rÒ   r=  s       rW   r
  z*TestParfors.test_tuple3.<locals>.test_implG  sk   € Ý”I˜b‘M”M 1Ð%ˆDØˆAÝ”\¥# a¡&¤&Ñ)Ô)ð 1ð 1�Ø�!��”˜˜Qœ œ
 T¨!¤WÑ,¨qÑ0Ñ0��‘�ØˆHrY   r  r#  r4  s      rW   Útest_tuple3zTestParfors.test_tuple3F  r@  rY   c                 ó`   — d„ }t          j        d¦  «        }|                      ||¦  «         d S )Nc                 ó´   — t          dd¬¦  «        }d}t          j        t          | ¦  «        ¦  «        D ]"}| |xx         |j        |j        z   |z   z  cc<   Œ#| S ©Nr  r  rƒ   rf  )r‚   r«   r   rÒ   r„   r…   )rˆ   Úantupr‰   r  s       rW   r
  z/TestParfors.test_namedtuple1.<locals>.test_implR  sc   € Ý"¨°!Ð4Ñ4Ô4ˆEØˆAÝ”\¥# a¡&¤&Ñ)Ô)ð 6ð 6�Ø�!��”˜œ e¤kÑ1°AÑ5Ñ5��‘�ØˆHrY   r  r#  r4  s      rW   Útest_namedtuple1zTestParfors.test_namedtuple1Q  r@  rY   c                 ó†   ‡— t          dd¦  «        Šˆfd„}t          j        d¦  «        }|                      ||¦  «         d S )NÚTestNamedTuple2rƒ   c                 ó®   •—  ‰dd¬¦  «        }d}t          j        t          | ¦  «        ¦  «        D ]"}| |xx         |j        |j        z   |z   z  cc<   Œ#| S rI  )r«   r   rÒ   r„   r…   )rˆ   rJ  r‰   r  rM  s       €rW   r
  z/TestParfors.test_namedtuple2.<locals>.test_impl^  sf   ø€ Ø#�O¨!°1Ð5Ñ5Ô5ˆEØˆAÝ”\¥# a¡&¤&Ñ)Ô)ð 6ð 6�Ø�!��”˜œ e¤kÑ1°AÑ5Ñ5��‘�ØˆHrY   r  )r   rÀ   r  rä   )rT   r
  r®   rM  s      @rW   Útest_namedtuple2zTestParfors.test_namedtuple2\  sV   ø€ Ý$Ð%6Ð8JÑKÔKˆð	ð 	ð 	ð 	ð 	õ ŒI�b‰MŒMˆØ�
Š
�9˜aÑ Ô Ð Ð Ð rY   c                 ó¢   — t          ddg¦  «        }d„ }d„ } |t          j        d¦  «        ¬¦  «        }|                      |||g¬¦  «         d S )NÚTestNamedTuple3rm  c                 ó   — d| j         d d …<   d S )Nr�   ©rm  r�  s    rW   r
  z/TestParfors.test_namedtuple3.<locals>.test_implm  s   € ØˆAŒC���‰FˆFˆFrY   c                 óZ   — t           j                             | j        |j        ¦  «         d S r[   )rÀ   rÎ   rÏ   rm  r‡   s     rW   r…  z.TestParfors.test_namedtuple3.<locals>.comparerp  s$   € ÝŒJ×*Ò*¨1¬3°´Ñ4Ô4Ð4Ð4Ð4rY   r  rS  r‡  )r   rÀ   r@  rä   )rT   rQ  r
  r…  r®   s        rW   Útest_namedtuple3zTestParfors.test_namedtuple3h  sp   € õ %Ð%7¸¸Ñ>Ô>ˆð	ð 	ð 	ð	5ð 	5ð 	5ð ˆO�bœh r™lœlÐ+Ñ+Ô+ˆØ�
Š
�9˜a°X°Jˆ
Ñ?Ô?Ð?Ð?Ð?rY   c                 óZ  — d„ }t          j        d¦  «        dz   }t          j        d¦  «        dz   }|                      |||¦  «         |                      t	          |t          j        t
          j        dd¦  «        t          j        t
          j        dd¦  «        f¦  «        d¦  «         d S )Nc                 ó   — || z  }|S r[   r}   r‡   s     rW   r
  z1TestParfors.test_inplace_binop.<locals>.test_implw  s   € Ø�‰FˆAØˆHrY   r  rä  rì   rŸ  )rÀ   r  rä   rÐ   rî   r   r¡  r—  ©rT   r
  rv  ru  s       rW   Útest_inplace_binopzTestParfors.test_inplace_binopv  s³   € ð	ð 	ð 	õ ŒI�b‰MŒM˜BÑˆÝŒI�b‰MŒM˜CÑˆØ�
Š
�9˜a Ñ#Ô#Ð#Ø×Ò� iÝ%*¤[µ´ÀÀ3Ñ%GÔ%GÝ%*¤[µ´ÀÀ3Ñ%GÔ%Gð%IñJô JàKLñ	Nô 	Nð 	Nð 	Nð 	NrY   c                 ód   — d„ }t          j        ddg¦  «        }|                      ||¦  «         d S )Nc                 óÈ   — t          | ¦  «        }||f}t          j        d|z   dz   t          j        ¬¦  «        }|dd d …f         }t	          | ¦  «        D ]\  }}||||f<   Œ|S )Nr  r'  r   ©rÒ   rÀ   r@  Úuint64rÆ  ©rˆ   r  Úarray_shapeÚindicesÚk_listr  r¦  s          rW   r
  z0TestParfors.test_tuple_concat.<locals>.test_impl„  st   € Ý�A‘”ˆAØ˜Q˜$ˆKÝ”h  {Ñ 2°TÑ 9Å"Ä)ÐLÑLÔLˆGØ˜Q   ˜T”]ˆFå! !™œð !ð !‘��1Ø ��q˜!�t‘�ØˆMrY   rì   rT  r4  s      rW   Útest_tuple_concatzTestParfors.test_tuple_concat‚  s@   € ð	ð 	ð 	õ ŒH�a˜�VÑÔˆØ�
Š
�9˜aÑ Ô Ð Ð Ð rY   c                 ód   — d„ }t          j        ddg¦  «        }|                      ||¦  «         d S )Nc                 óØ   — t          | ¦  «        }||f}t          j        d|z   dz   d d…         t          j        ¬¦  «        }|dd d …f         }t	          | ¦  «        D ]\  }}||||f<   Œ|S )Nr  rJ   r'  r   r\  r^  s          rW   r
  zCTestParfors.test_tuple_concat_with_reverse_slice.<locals>.test_impl“  s„   € Ý�A‘”ˆAØ˜Q˜$ˆKÝ”h  {Ñ 2°TÑ 9¸3¸B¸3Ô?Ý%'¤Yð0ñ 0ô 0ˆGà˜Q   ˜T”]ˆFå! !™œð !ð !‘��1Ø ��q˜!�t‘�ØˆMrY   rì   rT  r4  s      rW   Ú$test_tuple_concat_with_reverse_slicez0TestParfors.test_tuple_concat_with_reverse_slice‘  s@   € ð		ð 		ð 		õ ŒH�a˜�VÑÔˆØ�
Š
�9˜aÑ Ô Ð Ð Ð rY   c                 ó`   — d„ }t          j        d¦  «        }|                      ||¦  «         d S )Nc                 óF   — | f| | fz   }|d                               ¦   «         S rÑ  ©r  )rˆ   ÚSs     rW   r
  z6TestParfors.test_array_tuple_concat.<locals>.test_impl£  s#   € Ø�˜˜1�v‘ˆAØ�Q”4—8’8‘:”:ÐrY   ©r  r  rˆ  r4  s      rW   Útest_array_tuple_concatz#TestParfors.test_array_tuple_concat¡  s:   € ð	ð 	ð 	õ ŒG�E‰NŒNˆØ�
Š
�9˜aÑ Ô Ð Ð Ð rY   c                 ó`   — d„ }t          j        d¦  «        }|                      ||¦  «         d S )Nc                 ó   — | dz  S )NrQ  r}   r=  s    rW   r
  z3TestParfors.test_high_dimension1.<locals>.test_impl¬  s   € Ø�s‘7ˆNrY   )rý   rý   rý   rý   rý   é   rˆ  r4  s      rW   Útest_high_dimension1z TestParfors.test_high_dimension1ª  s;   € ð	ð 	ð 	åŒGÐ'Ñ(Ô(ˆØ�
Š
�9˜aÑ Ô Ð Ð Ð rY   c                 ób   — d„ }d}|                       |t          j        |¦  «        |¦  «         d S )Nc                 ó>   — t          j        |¦  «        D ]}d| |<   Œ| S r#  ©r«   Úpndindex©r®   Úszr  s      rW   r
  z-TestParfors.test_tuple_arg.<locals>.test_impl²  ó+   € Ý”^ BÑ'Ô'ð ð �Ø��!‘�ØˆHrY   ©r  r�   )rä   rÀ   râ  ©rT   r
  ru  s      rW   Útest_tuple_argzTestParfors.test_tuple_arg±  s<   € ð	ð 	ð 	ð ˆØ�
Š
�9�bœh r™lœl¨BÑ/Ô/Ð/Ð/Ð/rY   c                 ób   — d„ }d}|                       |t          j        |¦  «        d¦  «         d S )Nc                 ó>   — t          j        |¦  «        D ]}d| |<   Œ| S r#  rr  rt  s      rW   r
  z=TestParfors.test_tuple_arg_not_whole_array.<locals>.test_implº  rv  rY   rw  ©r  r  ©rä   rÀ   r@  rx  s      rW   Útest_tuple_arg_not_whole_arrayz*TestParfors.test_tuple_arg_not_whole_array¹  s<   € ð	ð 	ð 	ð ˆØ�
Š
�9�bœh r™lœl¨GÑ4Ô4Ð4Ð4Ð4rY   c                 ó`   — d„ }d}|                       |t          j        |¦  «        ¦  «         d S )Nc                 óB   — d}t          j        |¦  «        D ]}d| |<   Œ| S )Nrw  rì   rr  rt  s      rW   r
  z6TestParfors.test_tuple_for_pndindex.<locals>.test_implÂ  s0   € ØˆBÝ”^ BÑ'Ô'ð ð �Ø��!‘�ØˆHrY   rw  r}  rx  s      rW   Útest_tuple_for_pndindexz#TestParfors.test_tuple_for_pndindexÁ  s:   € ð	ð 	ð 	ð
 ˆØ�
Š
�9�bœh r™lœlÑ+Ô+Ð+Ð+Ð+rY   c                 ób   — d„ }d}|                       |t          j        |¦  «        d¦  «         d S )Nc                 óF   — |df}t          j        |¦  «        D ]}d| |<   Œ| S r–  rr  )r®   Úfirstru  r  s       rW   r
  z5TestParfors.test_tuple_arg_literal.<locals>.test_implË  s4   € Ø˜�ˆBÝ”^ BÑ'Ô'ð ð �Ø��!‘�ØˆHrY   rw  r  r}  rx  s      rW   Útest_tuple_arg_literalz"TestParfors.test_tuple_arg_literalÊ  s<   € ð	ð 	ð 	ð
 ˆØ�
Š
�9�bœh r™lœl¨BÑ/Ô/Ð/Ð/Ð/rY   c                 ó¦   ‡ ‡‡‡‡— d„ Šd„ Šd„ Š ‰ ‰¦   «         ‰¦  «        Šˆˆˆˆ ˆfd„}t           t          d¬¦  «        fD ]} ||¦  «         Œd S )Nc                 ó>   — t          j        |¦  «        D ]}d| |<   Œ| S r#  rr  rt  s      rW   r
  z?TestParfors.test_tuple_of_literal_nonliteral.<locals>.test_impl×  rv  rY   c                 ó   —  || d¦  «        S )Nr|  r}   )r®   r1  s     rW   rM  z:TestParfors.test_tuple_of_literal_nonliteral.<locals>.callÜ  s   € Ø�2�a˜‘>”>Ð!rY   c                  ó*   — t          j        d¦  «        S )Nr:  ©rÀ   r@  r}   rY   rW   ré  z>TestParfors.test_tuple_of_literal_nonliteral.<locals>.<lambda>ß  s   € �BœH XÑ.Ô.€ rY   c                 ó�   •—  | ‰¦  «        }t          ‰¦  «        } | ‰¦   «         |¦  «        }‰                     ‰|¦  «         d S r[   )r   ÚassertPreciseEqual)	ÚdecÚf1Úf2ÚgotrM  ÚexpectedÚ	get_inputrT   r
  s	       €€€€€rW   rä   z;TestParfors.test_tuple_of_literal_nonliteral.<locals>.checkâ  sN   ø€ Ø��Y‘”ˆBÝ�d‘”ˆBØ�"�Y�Y‘[”[ "Ñ%Ô%ˆCØ×#Ò# H¨cÑ2Ô2Ð2Ð2Ð2rY   Tr\  ©r   )rT   rä   rÖ  rM  r‘  r’  r
  s   `  @@@@rW   Ú test_tuple_of_literal_nonliteralz,TestParfors.test_tuple_of_literal_nonliteralÓ  s­   øøøøø€ ð	ð 	ð 	ð
	"ð 	"ð 	"ð /Ð.ˆ	Ø�4˜	˜	™œ YÑ/Ô/ˆð	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3õ � dÐ+Ñ+Ô+Ð,ð 	ð 	ˆAØˆE�!‰HŒHˆHˆHð	ð 	rY   c                 ób   — d„ }d}|                       |t          j        |¦  «        |¦  «         d S )Nc                 ó>   — t          j        |¦  «        D ]}d| |<   Œ| S r#  rr  rt  s      rW   r
  z0TestParfors.test_tuple_arg_1d.<locals>.test_implì  rv  rY   ©r  r}  rx  s      rW   Útest_tuple_arg_1dzTestParfors.test_tuple_arg_1dë  s<   € ð	ð 	ð 	ð ˆØ�
Š
�9�bœh r™lœl¨BÑ/Ô/Ð/Ð/Ð/rY   c                 ó`   — d„ }d}|                       |t          j        |¦  «        ¦  «         d S )Nc                 óB   — d}t          j        |¦  «        D ]}d| |<   Œ| S ©Nr—  rì   rr  rt  s      rW   r
  z8TestParfors.test_tuple_arg_1d_literal.<locals>.test_implô  s0   € ØˆBÝ”^ BÑ'Ô'ð ð �Ø��!‘�ØˆHrY   r—  r}  rx  s      rW   Útest_tuple_arg_1d_literalz%TestParfors.test_tuple_arg_1d_literaló  s:   € ð	ð 	ð 	ð
 ˆØ�
Š
�9�bœh r™lœlÑ+Ô+Ð+Ð+Ð+rY   c                 ó^   — d„ }|                       |t          j        d¦  «        d¦  «         d S )Nc                 ó>   — t          j        |¦  «        D ]}d| |<   Œ| S r#  rr  rt  s      rW   r
  z4TestParfors.test_int_arg_pndindex.<locals>.test_implý  rv  rY   r:  r  r}  r  s     rW   Útest_int_arg_pndindexz!TestParfors.test_int_arg_pndindexü  s9   € ð	ð 	ð 	ð 	�
Š
�9�bœh xÑ0Ô0°!Ñ4Ô4Ð4Ð4Ð4rY   c                 ó"  ‡— t           d„ ¦   «         Šˆfd„}d}t          j        ||f¦  «        }t          j        d d …d d d…f         t
          j        f}|                      t          ||¦  «        d¦  «         |  	                    |||¦  «         d S )Nc                 óv   — t          ||z   dz   dz  dz   |dz
  d¦  «        D ]}| |dz   |f         dz   | ||f<   Œd S ©Nrì   rý   rƒ  )Úur  Úevenræ  r€  s        rW   Úissue7854_procz=TestParfors.test_prange_unknown_call1.<locals>.issue7854_proc  s\   € å˜D 1™H q™L¨AÑ-°Ñ1°4¸!±8¸QÑ?Ô?ð *ð *�Ø˜A ™E 1˜Hœ+¨™/��!�Q�$‘�ð*ð *rY   c                 ó¬   •— t          j        d|dz
  ¦  «        D ]} ‰| |d|¦  «         Œt          j        d|dz
  ¦  «        D ]} ‰| |d|¦  «         Œ| S rù  ©r«   r   )r£  ræ  r  r¥  s      €rW   r
  z8TestParfors.test_prange_unknown_call1.<locals>.test_impl  sx   ø€ Ý”\ ! T¨A¡XÑ.Ô.ð .ð .�Ø�˜q ! Q¨Ñ-Ô-Ð-Ð-Ý”\ ! T¨A¡XÑ.Ô.ð .ð .�Ø�˜q ! Q¨Ñ-Ô-Ð-Ð-ØˆHrY   r  rì   rý   )
rB   rÀ   r@  r«   r—  r   r’  rÐ   rî   rä   )rT   r
  ræ  r£  Úcptypesr¥  s        @rW   Útest_prange_unknown_call1z%TestParfors.test_prange_unknown_call1  s­   ø€ Ý	ð	*ð 	*ñ 
Ô	ð	*ð	ð 	ð 	ð 	ð 	ð ˆÝŒH�d˜D�\Ñ"Ô"ˆÝ”=    C C a C Ô(­%¬+Ð6ˆØ×Ò� i°Ñ9Ô9¸1Ñ=Ô=Ð=Ø�
Š
�9˜a Ñ&Ô&Ð&Ð&Ð&rY   c                 óü   — d„ }d}t          j        ||f¦  «        }t          j        d d …d d d…f         t          j        f}|                      t          ||¦  «        d¦  «         |                      |||¦  «         d S )Nc                 ó@  — t          j        d|dz
  ¦  «        D ]7}t          |dz   dz  dz   |dz
  d¦  «        D ]}| |dz   |f         dz   | ||f<   ŒŒ8t          j        d|dz
  ¦  «        D ]4}t          |dz  dz   |dz
  d¦  «        D ]}| |dz   |f         dz   | ||f<   ŒŒ5| S r¢  r›  )r£  ræ  r  r€  s       rW   r
  z6TestParfors.test_prange_index_calc1.<locals>.test_impl  sß   € Ý”\ ! T¨A¡XÑ.Ô.ð .ð .�Ý  A¡¨™{¨Q™°°q±¸!Ñ<Ô<ð .ð .�AØ  A¡ q œk¨A™o�A�a˜�d‘G�Gð.å”\ ! T¨A¡XÑ.Ô.ð .ð .�Ý˜q 1™u q™y¨$°©(°AÑ6Ô6ð .ð .�AØ  A¡ q œk¨A™o�A�a˜�d‘G�Gð.àˆHrY   r  rì   rý   ©	rÀ   r@  r«   r—  r   r’  rÐ   rî   rä   )rT   r
  ræ  r£  r¨  s        rW   Útest_prange_index_calc1z#TestParfors.test_prange_index_calc1  sˆ   € ð	ð 	ð 	ð ˆÝŒH�d˜D�\Ñ"Ô"ˆÝ”=    C C a C Ô(­%¬+Ð6ˆØ×Ò� i°Ñ9Ô9¸1Ñ=Ô=Ð=Ø�
Š
�9˜a Ñ&Ô&Ð&Ð&Ð&rY   c                 óZ  — d„ }d}t          j        ||f¦  «        }t          j        ||f¦  «        }t          j        d d …d d d…f         t          j        d d …d d d…f         t          j        f}|                      t          ||¦  «        d¦  «         |                      ||||¦  «         d S )Nc                 óú   — t          j        |¦  «        D ]&}t          |¦  «        D ]}|||f         dz   | ||f<   ŒŒ't          j        |¦  «        D ]}t          |¦  «        D ]	}d|||f<   Œ
Œ| d         |d         z   S )Nrì   r  r5  r›  )rˆ   r‰   ræ  r  r€  s        rW   r
  z9TestParfors.test_prange_reverse_order1.<locals>.test_impl-  s¥   € Ý”\ $Ñ'Ô'ð *ð *�Ý˜t™œð *ð *�AØ  1 œg¨™k�A�a˜�d‘G�Gð*å”\ $Ñ'Ô'ð  ð  �Ý˜t™œð  ð  �AØ�A�a˜�d‘G�Gð à�T”7˜Q˜tœWÑ$Ð$rY   r  rì   rý   r¬  ©rT   r
  ræ  rˆ   r‰   r¨  s         rW   Útest_prange_reverse_order1z&TestParfors.test_prange_reverse_order1*  s´   € ð	%ð 	%ð 	%ð ˆÝŒH�d˜D�\Ñ"Ô"ˆÝŒH�d˜D�\Ñ"Ô"ˆÝ”=    C C a C Ô(­%¬-¸¸¸¸3¸3¸Q¸3¸Ô*?ÅÄÐMˆØ×Ò� i°Ñ9Ô9¸1Ñ=Ô=Ð=Ø�
Š
�9˜a  DÑ)Ô)Ð)Ð)Ð)rY   c                 óî   — d„ }d}t          j        |¦  «        }t          j        d d …         t          j        f}|                      t          ||¦  «        d¦  «         |                      |||¦  «         d S )Nc                 ó†   — d}t          j        |¦  «        D ]}|| |<   Œt          j        |¦  «        D ]}|| d         z  }Œ|S )Nr   r�   r§  )rˆ   ræ  r‰   r  s       rW   r
  z@TestParfors.test_prange_parfor_index_then_not.<locals>.test_impl@  sX   € ØˆAÝ”\ $Ñ'Ô'ð ð �Ø��!‘�Ý”\ $Ñ'Ô'ð ð �Ø�Q�q”T‘	��ØˆHrY   r  rý   r¬  )rT   r
  ræ  rˆ   r¨  s        rW   Ú!test_prange_parfor_index_then_notz-TestParfors.test_prange_parfor_index_then_not=  sx   € ð	ð 	ð 	ð ˆÝŒH�T‰NŒNˆÝ”=   Ô#¥U¤[Ð1ˆØ×Ò� i°Ñ9Ô9¸1Ñ=Ô=Ð=Ø�
Š
�9˜a Ñ&Ô&Ð&Ð&Ð&rY   c                 ó`  — d„ }d}t          j        |¦  «        }t          |¦  «        }t          j        d d …         t
          j                             t
          j        |¦  «        t
          j        f}|  	                    t          ||¦  «        d¦  «         |                      ||||¦  «         d S )Nc                 óª   — d}t          j        |¦  «        D ]}|||         z   | |<   Œt          j        |¦  «        D ]}|| |         |d         z   z  }Œ|S rÅ  r§  )rˆ   Útupræ  r·  r  s        rW   r
  zJTestParfors.test_prange_parfor_index_const_tuple_fusion.<locals>.test_implQ  si   € ØˆCÝ”\ $Ñ'Ô'ð "ð "�Ø˜3˜qœ6‘z��!‘�Ý”\ $Ñ'Ô'ð %ð %�Ø�q˜”t˜c !œf‘}Ñ$��ØˆJrY   r  rì   )rÀ   r@  r±   r«   r—  r   Ú
containersÚUniTupler“  rÐ   rî   rä   r°  s         rW   Ú+test_prange_parfor_index_const_tuple_fusionz7TestParfors.test_prange_parfor_index_const_tuple_fusionN  s¢   € ð	ð 	ð 	ð ˆÝŒH�T‰NŒNˆÝ�!‰HŒHˆÝ”=   Ô#ÝÔ#×,Ò,­U¬]¸DÑAÔAÝ”:ðˆð 	×Ò� i°Ñ9Ô9¸1Ñ=Ô=Ð=Ø�
Š
�9˜a  DÑ)Ô)Ð)Ð)Ð)rY   c                 ó>  — d„ }d}t          j        |¦  «        }t          j        |¦  «        }t          j        d d …         t          j        d d …         t          j        f}|                      t          ||¦  «        d¦  «         |                      ||||¦  «         d S )Nc                 ó®   — t          j        |¦  «        D ]}| d         ||<   Œt          j        |¦  «        D ]}|| |<   Œ|dxx         | d         z  cc<   |S )Nr�   r   r§  )rˆ   r‰   ræ  r  s       rW   r
  zITestParfors.test_prange_non_parfor_index_then_opposite.<locals>.test_imple  sl   € Ý”\ $Ñ'Ô'ð ð �Ø˜”t��!‘�Ý”\ $Ñ'Ô'ð ð �Ø��!‘�àˆaˆDˆDŒD�A�a”D‰LˆDˆD‰DØˆHrY   r  rý   r¬  r°  s         rW   Ú*test_prange_non_parfor_index_then_oppositez6TestParfors.test_prange_non_parfor_index_then_oppositeb  s”   € ð	ð 	ð 	ð ˆÝŒH�T‰NŒNˆÝŒH�T‰NŒNˆÝ”=   Ô#¥U¤]°1°1°1Ô%5µu´{ÐCˆØ×Ò� i°Ñ9Ô9¸1Ñ=Ô=Ð=Ø�
Š
�9˜a  DÑ)Ô)Ð)Ð)Ð)rY   c                 óÜ   — dd„}t          j        d¦  «        }|                      ||d t           j        j        d„ g¬¦  «         |                      |                     ¦   «         d¦  «         d S )Nc                 ó8   — t          d¦  «        D ]	}|�d| |<   Œ
d S )Nrì   r  rÀ  )ÚarrÚpredr  s      rW   r
  z3TestParfors.test_prange_optional.<locals>.test_implv  s1   € Ý˜A‘Y”Yð !ð !�ØÐ#Ø �C˜‘Føð!ð !rY   r  c                 ó   — | |k    S r[   r}   ©r®   rm  s     rW   ré  z2TestParfors.test_prange_optional.<locals>.<lambda>~  s
   € °A¸²F€ rY   r‡  rS  r[   )rÀ   r	  rä   rÎ   rÏ   rÐ   r  ©rT   r
  rÀ  s      rW   Útest_prange_optionalz TestParfors.test_prange_optionalu  s   € ð	!ð 	!ð 	!ð 	!õ
 Œg�b‰kŒkˆØ�
Š
�9˜c 4Ý')¤zÔ'EØ':Ð':ð'<ð 	ñ 	=ô 	=ð 	=ð 	×Ò˜Ÿš™œ DÑ)Ô)Ð)Ð)Ð)rY   c                 óê   — d„ }|                       t          ¦  «        5 }|                      |¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt	          |j        ¦  «        ¦  «         d S )Nc                  ó   — d} | d         S )N©g333333ó?gÍÌÌÌÌÌô?r   r}   r�  s    rW   r
  z8TestParfors.test_untraced_value_tuple.<locals>.test_implƒ  s   € ØˆAØ�Q”4ˆKrY   r  r  r  s      rW   Útest_untraced_value_tuplez%TestParfors.test_untraced_value_tuple�  s±   € ð	ð 	ð 	ð ×Ò�~Ñ.Ô.ð 	"°&Ø�JŠJ�yÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"à�ŠÐ4µc¸&Ô:JÑ6KÔ6KÑLÔLÐLÐLÐLr  c                 óê   — d„ }|                       t          ¦  «        5 }|                      |¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt	          |j        ¦  «        ¦  «         d S )Nc                  ó"   — d} | d         d         S )N)rÈ  r   r}   r�  s    rW   r
  zBTestParfors.test_recursive_untraced_value_tuple.<locals>.test_impl�  s   € ØˆAØ�Q”4˜”7ˆNrY   r  r  r  s      rW   Ú#test_recursive_untraced_value_tuplez/TestParfors.test_recursive_untraced_value_tuple‹  s±   € ð	ð 	ð 	ð ×Ò�~Ñ.Ô.ð 	"°&Ø�JŠJ�yÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"à�ŠÐ4µc¸&Ô:JÑ6KÔ6KÑLÔLÐLÐLÐLr  c                 ó  — d„ }t          j        t           j        dd¦  «        f}|                      t	          ||¦  «        d¦  «         t          j        dt
          j        ¬¦  «        }|                      ||¦  «         d S )Nc                 óÈ  — d}t          | ¦  «        }t          j        |t          j        ¦  «        }t	          |¦  «        D ]}| |         |d         z  ||<   Œt          |¦  «        }t          j        |t          j        ¦  «        }t	          |¦  «        D ]}||         |d         z
  ||<   Œd}t          |¦  «        }	t	          |	¦  «        D ]}
|||
         z  }Œ||d         z   S )NrÈ  r   rì   r  ©rÒ   rÀ   râ  r—  r   )rÀ  rˆ   Ún1Úarr2r  Ún2Úarr3r€  ÚtotalÚn3r¾   s              rW   r
  z9TestParfors.test_untraced_value_parfor.<locals>.test_impl—  sÞ   € ØˆAÝ�S‘”ˆBÝ”8˜B¥¤
Ñ+Ô+ˆDÝ˜B‘Z”Zð (ð (�Ø˜aœ& 1 Q¤4™-��Q‘�Ý�T‘”ˆBÝ”8˜B¥¤
Ñ+Ô+ˆDÝ˜B‘Z”Zð )ð )�Ø˜qœ' A a¤D™.��Q‘�ØˆEÝ�T‘”ˆBÝ˜B‘Z”Zð !ð !�Ø˜˜aœÑ ��Ø˜1˜Qœ4‘<ÐrY   rì   rŸ  r  r'  )r   r¡  r’  rÐ   rî   rÀ   r  rä   )rT   r
  rÍ  rÀ  s       rW   Útest_untraced_value_parforz&TestParfors.test_untraced_value_parfor•  s{   € ð	 ð 	 ð 	 õ  Œ{�5œ;¨¨3Ñ/Ô/Ð2ˆØ×Ò� i°Ñ5Ô5°qÑ9Ô9Ð9åŒi˜¥"¤(Ð+Ñ+Ô+ˆØ�
Š
�9˜cÑ"Ô"Ð"Ð"Ð"rY   c                 ó\   — d„ }|                       |t          j        d¦  «        ¦  «         d S )Nc                 óh   — d}t          | j        d         ¦  «        D ]}|r| d| |d d …f<   |dz  }Œ| S rÅ  )r  rŽ  )r®   rR  r  s      rW   r
  z;TestParfors.test_setitem_2d_one_replaced.<locals>.test_impl¯  sR   € ØˆEÝ˜1œ7 1œ:Ñ&Ô&ð ð �àð Ø�AØ��%˜˜˜�(‘Ø˜‘
��ØˆHrY   )r  rì   r}  r  s     rW   Útest_setitem_2d_one_replacedz(TestParfors.test_setitem_2d_one_replaced­  s7   € ð	ð 	ð 	ð 	�
Š
�9�bœh vÑ.Ô.Ñ/Ô/Ð/Ð/Ð/rY   c                 óÄ   — d„ }t          j        d¦  «        }|                      ||dd¦  «         |                      ||dd¦  «         |                      ||dd¦  «         d S )Nc                 ó¶   — t          j        | j        ¦  «        }|r|                     t           j        ¦  «        S |r	||         }n||dz
           }|| j        z  S r#  )rÀ   r  ræ  r  r—  )rÀ  Úflag1Úflag2ÚinvÚrets        rW   r
  z7TestParfors.test_1array_control_flow.<locals>.test_impl½  s[   € Ý”)˜CœHÑ%Ô%ˆCØð .Ø—z’z¥"¤*Ñ-Ô-Ð-Øð #Ø˜#”h��à˜# ™'”l�Ø˜œ‘>Ð!rY   rä  TFr#  rÄ  s      rW   Útest_1array_control_flowz$TestParfors.test_1array_control_flow»  sn   € ð	"ð 	"ð 	"õ Œi˜‰nŒnˆØ�
Š
�9˜c 4¨Ñ/Ô/Ð/Ø�
Š
�9˜c 4¨Ñ.Ô.Ð.Ø�
Š
�9˜c 5¨%Ñ0Ô0Ð0Ð0Ð0rY   c                 ó”   — d„ }t          j        d¦  «        }|                      ||dd¦  «         |                      ||dd¦  «         d S )Nc                 ó¤   — t          j        | j        ¦  «        }t          j        || j        |z   ¦  «        }|r	||         }n||dz
           }||z  S r#  ©rÀ   r  ræ  )rÀ  r“  ÚflagÚinv1Úinv2rß  s         rW   r
  z9TestParfors.test_2array_1_control_flow.<locals>.test_implÎ  sT   € Ý”9˜SœXÑ&Ô&ˆDÝ”9˜Q ¤¨1¡Ñ-Ô-ˆDØð %Ø˜4”j��à˜4 !™8”n�Ø˜‘:ÐrY   rä  r  TFr#  rÄ  s      rW   Útest_2array_1_control_flowz&TestParfors.test_2array_1_control_flowÌ  sV   € ð	ð 	ð 	õ Œi˜‰nŒnˆØ�
Š
�9˜c 2 tÑ,Ô,Ð,Ø�
Š
�9˜c 2 uÑ-Ô-Ð-Ð-Ð-rY   c                 ó”   — d„ }t          j        d¦  «        }|                      ||dd¦  «         |                      ||dd¦  «         d S )Nc                 óÊ   — t          j        | j        ¦  «        }t          j        || j        |z   ¦  «        }|r||         }||         }n||dz
           }||dz
           }||z  S r#  rã  )rÀ  r“  rä  rå  ræ  Úret1Úret2s          rW   r
  z9TestParfors.test_2array_2_control_flow.<locals>.test_implÝ  sj   € Ý”9˜SœXÑ&Ô&ˆDÝ”9˜Q ¤¨1¡Ñ-Ô-ˆDØð &Ø˜D”z�Ø˜D”z��à˜D 1™H”~�Ø˜D 1™H”~�Ø˜$‘;ÐrY   rä  r  TFr#  rÄ  s      rW   Útest_2array_2_control_flowz&TestParfors.test_2array_2_control_flowÛ  sV   € ð		ð 		ð 		õ Œi˜‰nŒnˆØ�
Š
�9˜c 2 tÑ,Ô,Ð,Ø�
Š
�9˜c 2 uÑ-Ô-Ð-Ð-Ð-rY   c                 ó–   — d„ }|                       |d¦  «         |                      t          |t          j        f¦  «        d¦  «         d S )Nc                 ó^  — t          j        | t           j        ¬¦  «        }t          j        | t           j        ¬¦  «        }t          | ¦  «        D ]$}t	          |¦  «        D ]}||xx         dz  cc<   ŒŒ%t          | ¦  «        D ] }|dk    rŒ	||         ||dz
           z
  ||<   Œ!|dd …         S )Nr'  rì   r   )rÀ   r@  r“  r   r  )r  ÚrÚcr  r€  s        rW   r
  z-TestParfors.test_issue8515.<locals>.test_implð  s¿   € Ý”˜¥"¤'Ð*Ñ*Ô*ˆAÝ”˜¥"¤'Ð*Ñ*Ô*ˆAÝ˜A‘Y”Yð ð �Ý˜q™œð ð �AØ�a�D�D”D˜A‘I�D�D‘D�Dðõ ˜A‘Y”Yð 'ð '�Ø˜’6�6ØØ˜”t˜a  A¡œh‘��!‘�Ø�Q�R�R”5ˆLrY   rn  rý   )rä   rÐ   rî   r   r’  r  s     rW   Útest_issue8515zTestParfors.test_issue8515ì  sQ   € ð	ð 	ð 	ð 	�
Š
�9˜bÑ!Ô!Ð!Ø×Ò� iµ%´+°ÑAÔAÀ1ÑEÔEÐEÐEÐErY   c                 ó®   — d„ }|                       |dd¦  «         |                      t          |t          j        t          j        f¦  «        d¦  «         d S )Nc                 óÄ   — t          j        d¦  «        }t          j        |¦  «        }t          j        d¦  «        }t	          t          | |¦  «        ¦  «        }||z   |z   S ©Nrä  )rÀ   r	  r~  ÚceilÚintr³  )rˆ   r‰   rv  ru  rð  s        rW   r
  z:TestParfors.test_fusion_no_side_effects.<locals>.test_impl	  sJ   € Ý”˜‘”ˆAÝ”	˜!‘”ˆAÝ”˜‘”ˆAÝ•C˜˜1‘I”I‘”ˆAØ�q‘5˜1‘9ÐrY   gš™™™™™@g333333@rì   )rä   rÐ   rî   r   r—  r  s     rW   Útest_fusion_no_side_effectsz'TestParfors.test_fusion_no_side_effects 	  sY   € ð	ð 	ð 	ð 	�
Š
�9˜c 3Ñ'Ô'Ð'Ø×Ò� iµ%´-ÅÄÐ1OÑPÔPÐRSÑTÔTÐTÐTÐTrY   N)Mrx   rO   ry   rZ  r}  r„  r‰  r�  r”  r˜  rž  r²  r»  rÂ  rÆ  rÊ  rÏ  rÓ  r=   rÚ  rÞ  rá  r?   rå  rè  rí  rò  rö  rþ  r  r  r  r  r  r  r  r$  r'  r+  r/  r5  r:  r?  rC  rF  rK  rO  rU  rY  rb  re  rk  ro  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}   rY   rW   rx  rx  *  sž  € € € € € à@Ð@ðNð Nð Nð9ð 9ð 9ð9ð 9ð 9ð9ð 9ð 9ð!ð !ð !ð2ð 2ð 2ð1ð 1ð 1ð .Jð .Jð .Jð`-ð -ð -ð-ð -ð -ð"
-ð 
-ð 
-ð	Cð 	Cð 	CðSð Sð Sð(Qð Qð Qð ð$+ð $+ñ „Zð$+ðL!ð !ð !ðSð Sð Sð ð#ð #ñ „]ð#ð ðOð Oñ „ZðOð"$ð $ð $ð	Hð 	Hð 	Hð"ð "ð "ðGð Gð GðGð Gð Gð#ð #ð #ð"	#ð 	#ð 	#ð#ð #ð #ð#ð #ð #ð#ð #ð #ð
#ð 
#ð 
#ð!ð !ð !ð>ð >ð >ð3ð 3ð 3ð
ð 
ð 
ð
?ð 
?ð 
?ðNð Nð Nð$	!ð 	!ð 	!ð	!ð 	!ð 	!ð	!ð 	!ð 	!ð	!ð 	!ð 	!ð
!ð 
!ð 
!ð@ð @ð @ð
Nð 
Nð 
Nð!ð !ð !ð!ð !ð !ð !ð !ð !ð!ð !ð !ð0ð 0ð 0ð5ð 5ð 5ð,ð ,ð ,ð0ð 0ð 0ðð ð ð00ð 0ð 0ð,ð ,ð ,ð5ð 5ð 5ð'ð 'ð 'ð*'ð 'ð 'ð$*ð *ð *ð&'ð 'ð 'ð"*ð *ð *ð(*ð *ð *ð&
*ð 
*ð 
*ðMð Mð MðMð Mð Mð#ð #ð #ð00ð 0ð 0ð1ð 1ð 1ð".ð .ð .ð.ð .ð .ð"Fð Fð Fð(Uð Uð Uð Uð UrY   rx  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚTestParforsLeaksc                 óN   —  | j         |g|¢R Ž \  }} | j        |||g|¢R i |¤Ž d S r[   râ   rã   s         rW   rä   zTestParforsLeaks.check	  óM   € Ø(˜Ô(¨Ð7°$Ð7Ð7Ð7‰ˆˆvØ$ˆÔ$ V¨U°FÐL¸TÐLÐLÐLÀVÐLÐLÐLÐLÐLrY   c                 óÆ   — t          d¬¦  «        d„ ¦   «         }t          j        d¦  «                             t          j        ¦  «        }|                      ||¦  «         d S )NTr\  c                 ó*   — |                       ¦   «         S r[   rh  )rÀ  s    rW   r
  z2TestParforsLeaks.test_reduction.<locals>.test_impl	  s   € à—7’7‘9”9ÐrY   r  ©r   rÀ   r  r  r—  rä   rÄ  s      rW   Útest_reductionzTestParforsLeaks.test_reduction	  s`   € å	�tÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	õ Œi˜‰mŒm×"Ò"¥2¤:Ñ.Ô.ˆØ�
Š
�9˜cÑ"Ô"Ð"Ð"Ð"rY   c                 óÆ   — t          d¬¦  «        d„ ¦   «         }t          j        d¦  «                             t          j        ¦  «        }|                      ||¦  «         d S )NTr\  c                 óz   — d}d}t          | j        ¦  «        D ]}|| |         z  }|d| |         dz   z  z  }Œ||z  S )Nr  r^  rì   )r   ræ  )rÀ  rˆ   r‰   r  s       rW   r
  z@TestParforsLeaks.test_multiple_reduction_vars.<locals>.test_impl	  sT   € àˆAØˆAÝ˜CœHÑ%Ô%ð 'ð '�Ø�S˜”V‘�Ø�R˜3˜qœ6 A™:Ñ&Ñ&��Ø�q‘5ˆLrY   r  rþ  rÄ  s      rW   Útest_multiple_reduction_varsz-TestParforsLeaks.test_multiple_reduction_vars	  s`   € Ý	�tÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	õ Œi˜‰mŒm×"Ò"¥2¤:Ñ.Ô.ˆØ�
Š
�9˜cÑ"Ô"Ð"Ð"Ð"rY   N)rx   rO   ry   rä   rÿ  r  r}   rY   rW   rù  rù  	  sD   € € € € € ðMð Mð Mð#ð #ð #ð
#ð 
#ð 
#ð 
#ð 
#rY   rù  c                   óö   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	e
d„ ¦   «         Ze
d	„ ¦   «         Ze
d
„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Ze
d„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestParforsSlicec                 ó\   — d„ }|                       |t          j        d¦  «        ¦  «         d S )Nc                 óN   — | j         \  }| d|dz
  …         | d|dz
  …         z   }|S ©Nr   rý   rì   ©rŽ  ©rˆ   r  r‰   s      rW   r
  z6TestParforsSlice.test_parfor_slice1.<locals>.test_impl+	  s2   € Ø”7‰DˆQØ�!�A�a‘C�%”˜1˜Q˜q ™s˜Uœ8Ñ#ˆAØˆHrY   r  ©rä   rÀ   r	  r  s     rW   Útest_parfor_slice1z#TestParforsSlice.test_parfor_slice1*	  s5   € ð	ð 	ð 	ð
 	�
Š
�9�bœg b™kœkÑ*Ô*Ð*Ð*Ð*rY   c                 ó|  — d„ }|                       |t          j        d¦  «        d¦  «         |                      t          ¦  «        5 }  t          d¬¦  «        |¦  «        t          j        d¦  «        d¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )Nc                 óH   — | j         \  }| d|dz
  …         | d|…         z   }|S r  r  ©rˆ   rD  r  r‰   s       rW   r
  z6TestParforsSlice.test_parfor_slice2.<locals>.test_impl3	  s.   € Ø”7‰DˆQØ�!�A�a‘C�%”˜1˜Q˜q˜Sœ6Ñ!ˆAØˆHrY   r  r—  Tr\  údo not match©	rä   rÀ   r	  r  r  r   rô   r"  r  r  s      rW   Útest_parfor_slice2z#TestParforsSlice.test_parfor_slice22	  sì   € ð	ð 	ð 	ð 	�
Š
�9�bœg b™kœk¨1Ñ-Ô-Ð-à×Ò�~Ñ.Ô.ð 	;°&Ø*Ð�D˜$ÐÑÔ 	Ñ*Ô*­2¬7°2©;¬;°rÑ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;à�Š�n¥c¨&Ô*:Ñ&;Ô&;Ñ<Ô<Ð<Ð<Ð<s   Á6B	Â	BÂBc                 ó\   — d„ }|                       |t          j        d¦  «        ¦  «         d S )Nc                 ó`   — | j         \  }}| d|dz
  …d|dz
  …f         | d|…d|…f         z   }|S rÅ  r  r  s       rW   r
  z6TestParforsSlice.test_parfor_slice3.<locals>.test_impl@	  sD   € Ø”G‰EˆQˆqØ�!�A�a‘C�%˜˜!˜A™#˜�+”  1 Q 3 q¨ s 7¤Ñ+ˆAØˆHrY   ©r  r  r
  r  s     rW   Útest_parfor_slice3z#TestParforsSlice.test_parfor_slice3?	  ó5   € ð	ð 	ð 	ð
 	�
Š
�9�bœg e™nœnÑ-Ô-Ð-Ð-Ð-rY   c                 ó\   — d„ }|                       |t          j        d¦  «        ¦  «         d S )Nc                 óZ   — | j         \  }}| d d …d|dz
  …f         | d d …d|…f         z   }|S rÅ  r  r  s       rW   r
  z6TestParforsSlice.test_parfor_slice4.<locals>.test_implH	  s@   € Ø”G‰EˆQˆqØ�!�!�!�A�a˜‘c�E�'”
˜Q˜q˜q˜q  1 ˜uœXÑ%ˆAØˆHrY   r  r
  r  s     rW   Útest_parfor_slice4z#TestParforsSlice.test_parfor_slice4G	  r  rY   c                 ó\   — d„ }|                       |t          j        d¦  «        ¦  «         d S )Nc                 óZ   — | j         \  }}| d|dz
  …d d …f         | d|…d d …f         z   }|S rÅ  r  r  s       rW   r
  z6TestParforsSlice.test_parfor_slice5.<locals>.test_implP	  s@   € Ø”G‰EˆQˆqØ�!�A�a‘C�%˜˜˜�'”
˜Q˜q ˜s 1 1 1˜uœXÑ%ˆAØˆHrY   r  r
  r  s     rW   Útest_parfor_slice5z#TestParforsSlice.test_parfor_slice5O	  r  rY   c                 ó\   — d„ }|                       |t          j        d¦  «        ¦  «         d S )Nc                 ó`   — |                       ¦   «         }| dd d …f         |d d …df         z   }|S r#  ©Ú	transpose©rˆ   r‰   rð  s      rW   r
  z6TestParforsSlice.test_parfor_slice6.<locals>.test_implX	  s5   € Ø—’‘”ˆAØ�!�A�A�A�#”˜˜1˜1˜1˜Q˜3œ‘ˆAØˆHrY   r  r
  r  s     rW   Útest_parfor_slice6z#TestParforsSlice.test_parfor_slice6W	  r  rY   c                 óx  — d„ }|                       |t          j        d¦  «        ¦  «         |                      t          ¦  «        5 }  t          d¬¦  «        |¦  «        t          j        d¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )Nc                 ó`   — |                       ¦   «         }| dd d …f         |dd d …f         z   }|S r#  r  r!  s      rW   r
  z6TestParforsSlice.test_parfor_slice7.<locals>.test_impl`	  s5   € Ø—’‘”ˆAØ�!�A�A�A�#”˜˜1˜Q˜Q˜Q˜3œ‘ˆAØˆHrY   rj  Tr\  r   r  r  r  s      rW   Útest_parfor_slice7z#TestParforsSlice.test_parfor_slice7_	  sè   € ð	ð 	ð 	ð 	�
Š
�9�bœg e™nœnÑ-Ô-Ð-à×Ò�~Ñ.Ô.ð 	;°&Ø*Ð�D˜$ÐÑÔ 	Ñ*Ô*­2¬7°5©>¬>Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;à�Š�n¥c¨&Ô*:Ñ&;Ô&;Ñ<Ô<Ð<Ð<Ð<s   Á5BÂBÂBc                 ó‚   — d„ }|                       |t          j        d¦  «                             d¦  «        ¦  «         d S )Nc                 óp   — | j         \  }}|                      ¦   «         }| d|…d|…f         |d|…d|…f<   |S r#  ©rŽ  r   r  s       rW   r
  z6TestParforsSlice.test_parfor_slice8.<locals>.test_impln	  sD   € Ø”G‰EˆQˆqØ—’‘”ˆAØ˜1˜Q˜3˜q ˜s˜7œˆAˆa�ˆc�!�A�#ˆg‰JØˆHrY   r—  rj  ©rä   rÀ   r  r  r  s     rW   Útest_parfor_slice8z#TestParforsSlice.test_parfor_slice8l	  óC   € ð	ð 	ð 	ð 	�
Š
�9�bœi¨™lœl×2Ò2°5Ñ9Ô9Ñ:Ô:Ð:Ð:Ð:rY   c                 ó‚   — d„ }|                       |t          j        d¦  «                             d¦  «        ¦  «         d S )Nc                 óp   — | j         \  }}|                      ¦   «         }| d d …d|…f         |d|…d|…f<   |S r#  r(  r  s       rW   r
  z6TestParforsSlice.test_parfor_slice9.<locals>.test_implx	  sD   € Ø”G‰EˆQˆqØ—’‘”ˆAØ˜1˜1˜1˜Q˜q˜S˜5œˆAˆa�ˆc�!�A�#ˆg‰JØˆHrY   r�  r   r)  r  s     rW   Útest_parfor_slice9z#TestParforsSlice.test_parfor_slice9v	  sC   € ð	ð 	ð 	ð 	�
Š
�9�bœi¨™mœm×3Ò3°EÑ:Ô:Ñ;Ô;Ð;Ð;Ð;rY   c                 ó‚   — d„ }|                       |t          j        d¦  «                             d¦  «        ¦  «         d S )Nc                 óh   — | j         \  }}|                      ¦   «         }| dd|…f         |dd|…f<   |S r›  r(  r  s       rW   r
  z7TestParforsSlice.test_parfor_slice10.<locals>.test_impl‚	  s<   € Ø”G‰EˆQˆqØ—’‘”ˆAØ˜˜1˜Q˜3˜”xˆAˆa��!�ˆe‰HØˆHrY   r—  rj  r)  r  s     rW   Útest_parfor_slice10z$TestParforsSlice.test_parfor_slice10€	  r+  rY   c                 ó‚   — d„ }|                       |t          j        d¦  «                             d¦  «        ¦  «         d S )Nc                 óv   — | j         \  }}}|                      ¦   «         }| d d …dd|…f         |d d …dd|…f<   |S r›  ©rŽ  rÃ   )rˆ   rD  r  r“  r‰   s        rW   r
  z7TestParforsSlice.test_parfor_slice11.<locals>.test_impl‹	  sJ   € Ø”g‰GˆQˆq�Ø—’‘”ˆAØ˜1˜1˜1˜Q˜q ˜s˜7œˆAˆaˆaˆa��!�A�#ˆg‰JØˆHrY   é   )r  r  r  r)  r  s     rW   Útest_parfor_slice11z$TestParforsSlice.test_parfor_slice11Š	  sC   € ð	ð 	ð 	ð 	�
Š
�9�bœi¨™mœm×3Ò3°GÑ<Ô<Ñ=Ô=Ð=Ð=Ð=rY   c                 ó‚   — d„ }|                       |t          j        d¦  «                             d¦  «        ¦  «         d S )Nc                 óh   — | j         \  }}|                      ¦   «         }| dd d…f         |ddd…f<   |S )Nr   éþÿÿÿrì   rJ   r4  r  s       rW   r
  z7TestParforsSlice.test_parfor_slice12.<locals>.test_impl”	  s<   € Ø”G‰EˆQˆqØ—’‘”ˆAØ˜!˜C˜R˜C˜%œˆAˆa��"�ˆf‰IØˆHrY   r�  r   r)  r  s     rW   Útest_parfor_slice12z$TestParforsSlice.test_parfor_slice12“	  óC   € ð	ð 	ð 	ð 	�
Š
�9�bœi¨™mœm×3Ò3°EÑ:Ô:Ñ;Ô;Ð;Ð;Ð;rY   c                 ó‚   — d„ }|                       |t          j        d¦  «                             d¦  «        ¦  «         d S )Nc                 ót   — | j         \  }}|                      ¦   «         }d}| d| |dz
  …f         |dd|…f<   |S )NrJ   r   rì   r4  )rˆ   rD  r  r‰   rð  s        rW   r
  z7TestParforsSlice.test_parfor_slice13.<locals>.test_impl�	  sG   € Ø”G‰EˆQˆqØ—’‘”ˆAØˆAØ˜˜A˜2˜a ™c˜6˜”{ˆAˆa��!�ˆe‰HØˆHrY   r�  r   r)  r  s     rW   Útest_parfor_slice13z$TestParforsSlice.test_parfor_slice13œ	  sC   € ð	ð 	ð 	ð 	�
Š
�9�bœi¨™mœm×3Ò3°EÑ:Ô:Ñ;Ô;Ð;Ð;Ð;rY   c                 ó‚   — d„ }|                       |t          j        d¦  «                             d¦  «        ¦  «         d S )Nc                 óh   — | j         \  }}|                      ¦   «         }| ddd…f         |dd d…f<   |S )Nr   éýÿÿÿr  rì   rJ   r4  r  s       rW   r
  z7TestParforsSlice.test_parfor_slice14.<locals>.test_impl§	  s<   € Ø”G‰EˆQˆqØ—’‘”ˆAØ˜˜2˜a˜4˜”yˆAˆa���ˆe‰HØˆHrY   r�  r   r)  r  s     rW   Útest_parfor_slice14z$TestParforsSlice.test_parfor_slice14¦	  r;  rY   c                 ó‚   — d„ }|                       |t          j        d¦  «                             d¦  «        ¦  «         d S )Nc                 óp   — | j         \  }}|                      ¦   «         }| ddd…f         |d|dz
   d …f<   |S )Nr   rA  r  rì   r4  r  s       rW   r
  z7TestParforsSlice.test_parfor_slice15.<locals>.test_impl°	  sB   € Ø”G‰EˆQˆqØ—’‘”ˆAØ˜Q˜r !˜t˜Vœ9ˆAˆa�!�A‘#���ˆi‰LØˆHrY   r�  r   r)  r  s     rW   Útest_parfor_slice15z$TestParforsSlice.test_parfor_slice15¯	  r;  rY   c                 ó2  — d„ }|                       |t          j        d¦  «        t          j        d¦  «        d¦  «         t          j        dd…         t          j        dd…         t          j        f}|                      t          ||¦  «        d¦  «         dS )zÞ This 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                 óR   — | j         |j         k    sJ ‚d| d|…<   d|d|dz
  …<   | |z  S ©Nr  rì   r   r  )rˆ   r‰   r  s      rW   r
  z7TestParforsSlice.test_parfor_slice16.<locals>.test_impl¾	  s>   € Ø”7˜aœgÒ%Ð%Ð%Ð%ØˆAˆa�ˆc‰FØˆAˆa��1‘ˆg‰JØ�q‘5ˆLrY   r  é   Nrý   )	rä   rÀ   r	  r@  r«   r—  r’  rÐ   rî   ©rT   r
  r˜   s      rW   Útest_parfor_slice16z$TestParforsSlice.test_parfor_slice16¸	  s…   € ð	ð 	ð 	ð 	�
Š
�9�bœg b™kœk­2¬8°B©<¬<¸Ñ;Ô;Ð;Ý”˜a˜a˜aÔ ¥%¤-°°°Ô"2µE´KÐ@ˆØ×Ò� i°Ñ6Ô6¸Ñ:Ô:Ð:Ð:Ð:rY   c                 ó^   — d„ }|                       |dt          j        d¦  «        ¦  «         d S )Nc                 ó\   — t          j        | ¦  «        }t          |¦  «        }||| d …<   |S r[   ©rÀ   r@  rÒ   )rD  r�  r¯  r  s       rW   r
  z7TestParforsSlice.test_parfor_slice17.<locals>.test_implÉ	  s.   € Ý”˜‘”ˆAÝ�A‘”ˆAØˆAˆqˆbˆcˆc‰FØˆHrY   r  r
  r  s     rW   Útest_parfor_slice17z$TestParforsSlice.test_parfor_slice17È	  s7   € ð	ð 	ð 	ð 	�
Š
�9˜b¥"¤'¨"¡+¤+Ñ.Ô.Ð.Ð.Ð.rY   c                 ó6   — d„ }|                       |¦  «         d S )Nc                  ór   — t          j        d¦  «        } t          j        dd¦  «        | dd…<   | d         }|S )Nr  r   rf  rì   rI  r  )rÀ   r@  r  )rˆ   rm  s     rW   r
  z7TestParforsSlice.test_parfor_slice18.<locals>.test_implÓ	  s4   € Ý”˜‘”ˆAÝ”Y˜q !‘_”_ˆAˆa�ˆc‰FØ�!”ˆAØˆHrY   r  r  s     rW   Útest_parfor_slice18z$TestParforsSlice.test_parfor_slice18Ñ	  s+   € ð	ð 	ð 	ð 	�
Š
�9ÑÔÐÐÐrY   c                 ó\   — d„ }|                       |t          j        d¦  «        ¦  «         d S )Nc                 ó*   — | d d…xx         dz  cc<   | S rÅ  r}   r.  s    rW   r
  z7TestParforsSlice.test_parfor_slice19.<locals>.test_implÝ	  s    € ØˆbˆqˆbˆEˆEŒE�Q‰JˆEˆE‰EØˆHrY   r  r
  r  s     rW   Útest_parfor_slice19z$TestParforsSlice.test_parfor_slice19Û	  ó5   € ð	ð 	ð 	ð 	�
Š
�9�bœg b™kœkÑ*Ô*Ð*Ð*Ð*rY   c                 ó:   — d„ }|                       |d¬¦  «         d S )Nc                  ó`   — t          j        d¦  «        } | dd …         }t          |¦  «        }|S )Nr  rì   )rÀ   r	  rÒ   )rˆ   rð  rÁ  s      rW   r
  z7TestParforsSlice.test_parfor_slice20.<locals>.test_implå	  s,   € Ý”˜‘”ˆAØ�!�"�"”ˆAÝ�A‘”ˆAØˆHrY   Frg  r  r  s     rW   Útest_parfor_slice20z$TestParforsSlice.test_parfor_slice20ã	  s/   € ð	ð 	ð 	ð 	�
Š
�9¨uˆ
Ñ5Ô5Ð5Ð5Ð5rY   c                 ó¶   — d„ }t           j                             d¦  «        }t           j                             d¦  «        }|                      |||¦  «         d S )Nc                 ó’   — |                       | j        d¦  «        } |                      |j        d¦  «        }| |d d…d d …f         k    S )Nrì   rJ   )r  ræ  )Úx1Úx2s     rW   r
  z7TestParforsSlice.test_parfor_slice21.<locals>.test_implî	  sG   € Ø—’˜BœG QÑ'Ô'ˆBØ—’˜BœG QÑ'Ô'ˆBØ˜˜C˜R˜C   ˜FœÒ#Ð#rY   r�   r  )rÀ   rŽ  r�  rä   ©rT   r
  r\  r]  s       rW   Útest_parfor_slice21z$TestParforsSlice.test_parfor_slice21í	  sU   € ð	$ð 	$ð 	$õ
 ŒY�^Š^˜AÑÔˆÝŒY�^Š^˜AÑÔˆØ�
Š
�9˜b "Ñ%Ô%Ð%Ð%Ð%rY   c                 óŠ   — d„ }t          j        d¦  «        }t          j        d¦  «        }|                      |||¦  «         d S )Nc                 óp   — t          j        d¦  «        }t          d¦  «        D ]}|| d d …|f         z  }Œ|S r›  )rÀ   r@  r   )r\  r]  r‰   r  s       rW   r
  z7TestParforsSlice.test_parfor_slice22.<locals>.test_implø	  s@   € Ý”˜‘”ˆAÝ˜A‘Y”Yð ð �Ø�R˜˜˜˜2˜”Y‘��ØˆHrY   )r  rf  r  )rÀ   r@  r�  rä   r^  s       rW   Útest_parfor_slice22z$TestParforsSlice.test_parfor_slice22÷	  sK   € ð	ð 	ð 	õ ŒX�fÑÔˆÝŒX�a‰[Œ[ˆØ�
Š
�9˜b "Ñ%Ô%Ð%Ð%Ð%rY   c                 ó\   — d„ }|                       |t          j        d¦  «        ¦  «         d S )Nc                 ó   — d| d d…<   | S )Nrý   r   r}   r=  s    rW   r
  z7TestParforsSlice.test_parfor_slice23.<locals>.test_impl
  s   € ØˆAˆbˆqˆb‰EØˆHrY   r  r
  r  s     rW   Útest_parfor_slice23z$TestParforsSlice.test_parfor_slice23
  rV  rY   c                 ó†   — d„ }t          dd¦  «        D ],}|                      |dt          j        d¦  «        |¦  «         Œ-d S )Nc                 óp   — t          j        | ¦  «        }||d …         }|d t          |¦  «        …         }|S r[   rN  ©rD  r�  r  r¯  rŸ  s        rW   r
  z7TestParforsSlice.test_parfor_slice24.<locals>.test_impl
  s4   € Ý”˜‘”ˆAØ�!�"�"”ˆAØ�'•3�q‘6”6�'”
ˆAØˆHrY   éñÿÿÿrn  r  ©r  rä   rÀ   r	  ©rT   r
  r  s      rW   Útest_parfor_slice24z$TestParforsSlice.test_parfor_slice24

  óW   € ð	ð 	ð 	õ �s˜B‘”ð 	6ð 	6ˆAØ�JŠJ�y "¥b¤g¨b¡k¤k°1Ñ5Ô5Ð5Ð5ð	6ð 	6rY   c                 ó†   — d„ }t          dd¦  «        D ],}|                      |dt          j        d¦  «        |¦  «         Œ-d S )Nc                 óp   — t          j        | ¦  «        }|d |…         }|d t          |¦  «        …         }|S r[   rN  rh  s        rW   r
  z7TestParforsSlice.test_parfor_slice25.<locals>.test_impl
  s4   € Ý”˜‘”ˆAØ�"�1�"”ˆAØ�'•3�q‘6”6�'”
ˆAØˆHrY   ri  rn  r  rj  rk  s      rW   Útest_parfor_slice25z$TestParforsSlice.test_parfor_slice25
  rm  rY   c                 ó\   — d„ }|                       |t          j        d¦  «        ¦  «         d S )Nc                 óf   — | j         \  }|                      ¦   «         }| dd…         ||dz
   d …<   |S )NrA  r  rì   r4  r	  s      rW   r
  z7TestParforsSlice.test_parfor_slice26.<locals>.test_impl
  s8   € Ø”7‰DˆQØ—’‘”ˆAØ˜2˜a˜4œˆA��!‘ˆfˆgˆg‰JØˆHrY   r  ©rä   rÀ   r  r  s     rW   Útest_parfor_slice26z$TestParforsSlice.test_parfor_slice26
  s5   € ð	ð 	ð 	ð 	�
Š
�9�bœi¨™lœlÑ+Ô+Ð+Ð+Ð+rY   c                 ó\   — d„ }|                       |t          j        d¦  «        ¦  «         d S )Nc                 ó~   — d}t          | j        d         ¦  «        D ]}| |         dk    r|dz  }|r
| d |…         }Œ dS rÅ  rú  )rˆ   Ún_valid_valsr  Úunuseds       rW   r
  z7TestParforsSlice.test_parfor_slice27.<locals>.test_impl*
  sW   € ØˆLå˜AœG AœJÑ'Ô'ð .ð .�Ø�Q”4˜1’9�9Ø  AÑ%�Làð .Ø˜} ˜}Ô-�Føà�1rY   r  rs  r  s     rW   Útest_parfor_slice27z$TestParforsSlice.test_parfor_slice27'
  s5   € ð
	ð 
	ð 
	ð 	�
Š
�9�bœi¨™lœlÑ+Ô+Ð+Ð+Ð+rY   c           	      óz  ‡— t          ddd ¦  «        t          dd d ¦  «        t          d dd¦  «        t          d d d ¦  «        t          d d d¦  «        fD ]fŠˆfd„}d}|                      ||¦  «         t          j        |dz  ¦  «                             |df¦  «        }ˆfd	„}|                      ||¦  «         Œgd S )
Nrì   r  rý   rJ   r9  c                 óÐ   •— t          j        | dz  ¦  «                             | df¦  «        }d}t          j        | ¦  «        D ]!}|||‰f                              ¦   «         z  }Œ"|S ©Nr  r   )rÀ   r  r  r«   r   r  )r  rv  rm  r  Útss       €rW   r
  zHTestParforsSlice.test_parfor_array_access_lower_slice.<locals>.test_impl<
  se   ø€ Ý”I˜a !™eÑ$Ô$×,Ò,¨a°¨VÑ4Ô4�Ø�Ýœ a™œð (ð (�AØ˜˜1˜b˜5œŸš™œÑ'�A�AØ�rY   r  r  c                 óŽ   •— d}t          j        | j        d         ¦  «        D ]!}|| |‰f                              ¦   «         z  }Œ"|S rÑ  )r«   r   rŽ  r  )rv  rm  r  r}  s      €rW   r
  zHTestParforsSlice.test_parfor_array_access_lower_slice.<locals>.test_implH
  sH   ø€ Ø�Ýœ a¤g¨a¤jÑ1Ô1ð (ð (�AØ˜˜1˜b˜5œŸš™œÑ'�A�AØ�rY   )Úslicerä   rÀ   r  r  )rT   r
  r  rv  r}  s       @rW   Ú$test_parfor_array_access_lower_slicez5TestParforsSlice.test_parfor_array_access_lower_slice8
  sò   ø€ Ý˜˜A˜tÑ$Ô$¥e¨A¨t°TÑ&:Ô&:½EÀ$ÈÈ2Ñ<NÔ<NÝ˜˜t TÑ*Ô*­E°$¸¸bÑ,AÔ,AðCð 	%ð 	%ˆBðð ð ð ð ð ˆAØ�JŠJ�y !Ñ$Ô$Ð$å”	˜!˜a™%Ñ Ô ×(Ò(¨!¨Q¨Ñ0Ô0ˆAðð ð ð ð ð �JŠJ�y !Ñ$Ô$Ð$Ð$ð+	%ð 	%rY   N) rx   rO   ry   r  r  r  r  r  r"  r%  r?   r*  r.  r1  r6  r:  r>  rB  rE  rK  rO  rR  rU  rY  r_  rb  re  rl  rp  rt  ry  r€  r}   rY   rW   r  r  '	  sè  € € € € € ð+ð +ð +ð=ð =ð =ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð=ð =ð =ð ð;ð ;ñ „]ð;ð ð<ð <ñ „]ð<ð ð;ð ;ñ „]ð;ð>ð >ð >ð<ð <ð <ð<ð <ð <ð<ð <ð <ð<ð <ð <ð ð;ð ;ñ „]ð;ð/ð /ð /ðð ð ð+ð +ð +ð6ð 6ð 6ð&ð &ð &ð	&ð 	&ð 	&ð+ð +ð +ð6ð 6ð 6ð6ð 6ð 6ð,ð ,ð ,ð,ð ,ð ,ð"%ð %ð %ð %ð %rY   r  c                   ó   — e Zd Zd„ ZdS )ÚTestParforsOptionsc                 ó´  — d„ }|                       |t          j        d¦  «        ¦  «         t          j        d d …         f}|                      t          ||¦  «        d¦  «         |                      t          ||d¬¦  «        d¦  «         |                      t          ||dd¬¦  «        d¦  «         |                      t          ||ddd¬	¦  «        d
¦  «         |                      t          ||dddd¬¦  «        d¦  «         |                      t          ||ddddd¬¦  «        d¦  «         |                      t          ||dddddd¬¦  «        d¦  «         d S )Nc                 ó$  — | j         d         }t          j        |¦  «        }t          j        d„ t	          |¦  «        D ¦   «         ¦  «        }| ||z  z   |d |…<   t          |¦  «        D ]}||         | |         z  ||<   Œt          d„ |d¦  «        S )Nr   c                 ó   — g | ]}|‘ŒS r}   r}   )r­   r  s     rW   r¯   zMTestParforsOptions.test_parfor_options.<locals>.test_impl.<locals>.<listcomp>X
  s   € Ð0Ð0Ð0 ˜1Ð0Ð0Ð0rY   c                 ó   — | |z   S r[   r}   rÃ  s     rW   ré  zKTestParforsOptions.test_parfor_options.<locals>.test_impl.<locals>.<lambda>\
  s
   €  Q q¡S€ rY   )rŽ  rÀ   r	  r�  r  r   r   )rˆ   r  r‰   rð  r  s        rW   r
  z9TestParforsOptions.test_parfor_options.<locals>.test_implU
  s“   € Ø”˜”
ˆAÝ”˜‘
”
ˆAÝ”Ð0Ð0¥e¨A¡h¤hÐ0Ñ0Ô0Ñ1Ô1ˆAØ˜˜A™‘IˆAˆbˆqˆb‰EÝ˜A‘Y”Yð #ð #�Ø˜”t˜a œd‘{��!‘�Ý˜.˜.¨!¨QÑ/Ô/Ð/rY   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î   rJ  s      rW   Útest_parfor_optionsz&TestParforsOptions.test_parfor_optionsT
  sÁ  € ð	0ð 	0ð 	0ð 	�
Š
�9�bœg b™kœkÑ*Ô*Ð*Ý”˜a˜a˜aÔ Ð"ˆà×Ò� i°Ñ6Ô6¸Ñ:Ô:Ð:à×Ò� i°¸eÐDÑDÔDÀaÑHÔHÐHà×Ò� i°¸eØ',ð.ñ .ô .Ø/0ñ	2ô 	2ð 	2ð 	×Ò� i°¸eØ',°eð=ñ =ô =Ø>?ñ	Aô 	Að 	Að 	×Ò� i°¸eØ',°eÀEðKñ Kô KØLMñ	Oô 	Oð 	Oð 	×Ò� i°¸eØ',°eÀEØ#(ð*ñ *ô *à+,ñ	.ô 	.ð 	.ð 	×Ò� i°¸eØ',°eÀEØ#(°ð7ñ 7ô 7à89ñ	;ô 	;ð 	;ð 	;ð 	;rY   N)rx   rO   ry   r‹  r}   rY   rW   r‚  r‚  Q
  s#   € € € € € ð ;ð  ;ð  ;ð  ;ð  ;rY   r‚  c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestParforsBitMaskc                 ó^   — d„ }|                       |t          j        d¦  «        d¦  «         d S )Nc                 ó   — | |k    }d| |<   | S rÑ  r}   r	  s      rW   r
  z:TestParforsBitMask.test_parfor_bitmask1.<locals>.test_impl{
  s   € Ø�A’ˆAØˆAˆa‰DØˆHrY   r  r�   rs  r  s     rW   Útest_parfor_bitmask1z'TestParforsBitMask.test_parfor_bitmask1z
  s7   € ð	ð 	ð 	ð
 	�
Š
�9�bœi¨™mœm¨QÑ/Ô/Ð/Ð/Ð/rY   c                 ón   — d„ }t          j        d¦  «        }|dk    }|                      |||¦  «         d S )Nc                 ó   — d| |<   | S rÑ  r}   r‡   s     rW   r
  z:TestParforsBitMask.test_parfor_bitmask2.<locals>.test_implƒ
  ó   € ØˆAˆa‰DØˆHrY   r  r�   r#  rU  s       rW   Útest_parfor_bitmask2z'TestParforsBitMask.test_parfor_bitmask2‚
  óE   € ð	ð 	ð 	õ ŒI�b‰MŒMˆØ�ŠEˆØ�
Š
�9˜a Ñ#Ô#Ð#Ð#Ð#rY   c                 ón   — d„ }t          j        d¦  «        }|dk    }|                      |||¦  «         d S )Nc                 ó   — | |         | |<   | S r[   r}   r‡   s     rW   r
  z:TestParforsBitMask.test_parfor_bitmask3.<locals>.test_implŒ
  s   € Ø�Q”4ˆAˆa‰DØˆHrY   r  r�   r#  rU  s       rW   Útest_parfor_bitmask3z'TestParforsBitMask.test_parfor_bitmask3‹
  r•  rY   c                 ón   — d„ }t          j        d¦  «        }|dk    }|                      |||¦  «         d S )Nc                 ó"   — d| z  |         | |<   | S r}  r}   r‡   s     rW   r
  z:TestParforsBitMask.test_parfor_bitmask4.<locals>.test_impl•
  s   € Ø˜‘E˜1”:ˆAˆa‰DØˆHrY   r  r�   r#  rU  s       rW   Útest_parfor_bitmask4z'TestParforsBitMask.test_parfor_bitmask4”
  r•  rY   c                 ón   — d„ }t          j        d¦  «        }|dk    }|                      |||¦  «         d S )Nc                 ó.   — | |         | |         z  | |<   | S r[   r}   r‡   s     rW   r
  z:TestParforsBitMask.test_parfor_bitmask5.<locals>.test_implž
  s   € Ø�Q”4˜!˜Aœ$‘;ˆAˆa‰DØˆHrY   r  r�   r#  rU  s       rW   Útest_parfor_bitmask5z'TestParforsBitMask.test_parfor_bitmask5�
  r•  rY   c                 óf  — d„ }t          j        d¦  «        }|dk    }t          j        t          |¦  «        ¦  «        }|                      t
          ¦  «        5 }|                      ||||¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j	        ¦  «        ¦  «         d S )Nc                 ó   — || |<   | S r[   r}   r!  s      rW   r
  z:TestParforsBitMask.test_parfor_bitmask6.<locals>.test_impl§
  r“  rY   r  r�   r  )
rÀ   r  r@  r  r  r  rä   rô   r"  r  )rT   r
  rˆ   r‰   rð  r  s         rW   Útest_parfor_bitmask6z'TestParforsBitMask.test_parfor_bitmask6¦
  sä   € ð	ð 	ð 	õ ŒI�b‰MŒMˆØ�ŠEˆÝŒH•S˜‘V”VÑÔˆð ×Ò�~Ñ.Ô.ð 	+°&Ø�JŠJ�y ! Q¨Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+à�ŠÐ4µc¸&Ô:JÑ6KÔ6KÑLÔLÐLÐLÐLs   ÁA>Á>BÂBN)	rx   rO   ry   r�  r”  r˜  r›  rž  r¡  r}   rY   rW   r�  r�  w
  ss   € € € € € ð0ð 0ð 0ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ðMð Mð Mð Mð MrY   r�  c                   ó¼   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zd„ Zd„ Zd„ ZdS )ÚTestParforsMiscz?
    Tests miscellaneous parts of ParallelAccelerator use.
    c                 ó
  — d„ } t          dd¬¦  «        |¦  «        }t          j        d¬¦  «        5 }t          j        d¦  «         t          j        dd¬¦  «         t          j        dd	t
          j        j        d
¬¦  «          |¦   «          d d d ¦  «         n# 1 swxY w Y   |                      t          |¦  «        d¦  «         d„ |j
                             ¦   «         D ¦   «         }|                      |dg¦  «         d S )Nc                  ó|   — t          j        d¦  «        } t          | j        ¦  «        D ]}| |xx         |z  cc<   Œ| S rô  )rÀ   r	  r   ræ  )rÀ  r  s     rW   r²   z9TestParforsMisc.test_no_warn_if_cache_set.<locals>.pyfunc¼
  sD   € Ý”'˜#‘,”,ˆCÝ˜CœHÑ%Ô%ð ð �Ø�A��”˜!‘��‘�ØˆJrY   T)r]  Úcache©ÚrecordÚalwaysÚignoreÚ	typeguard)ÚactionÚmodulez.*TBB_INTERFACE_VERSION.*znumba\.np\.ufunc\.parallel.*)r¬  ÚmessageÚcategoryr­  r   c                 ó&   — g | ]}|j         j        ‘ŒS r}   )rõ   Úhas_dynamic_globals)r­   r÷   s     rW   r¯   z=TestParforsMisc.test_no_warn_if_cache_set.<locals>.<listcomp>Ò
  s3   € ð Eð Eð EØ#'ð  $œ|Ô?ð Eð Eð ErY   F)r   ÚwarningsÚcatch_warningsÚsimplefilterÚfilterwarningsr«   r   ÚNumbaWarningrÐ   rÒ   Ú	overloadsrÞ  )rT   r²   rµ   Úraised_warningsr±  s        rW   Útest_no_warn_if_cache_setz)TestParforsMisc.test_no_warn_if_cache_setº
  ss  € ð	ð 	ð 	ð 0•˜d¨$Ð/Ñ/Ô/°Ñ7Ô7ˆåÔ$¨DÐ1Ñ1Ô1ð 		°_ÝÔ! (Ñ+Ô+Ð+ÝÔ#¨8Ø+6ð8ñ 8ô 8ð 8õ Ô#¨8Ø,HÝ-2¬\Ô-FØ+JðLñ Lô Lð Lð ˆE‰GŒGˆGð		ð 		ð 		ñ 		ô 		ð 		ð 		ð 		ð 		ð 		ð 		øøøð 		ð 		ð 		ð 		ð 	×Ò�˜_Ñ-Ô-¨qÑ1Ô1Ð1ðEð EØ+0¬?×+AÒ+AÑ+CÔ+CðEñ Eô EÐà×ÒÐ,¨u¨gÑ6Ô6Ð6Ð6Ð6s   ³ABÂBÂ"Bc                 ó*  — d„ }|                       |d¦  «        }t          ¦   «         5 }|                     ¦   «          d d d ¦  «         n# 1 swxY w Y   |                     ¦   «                              ¦   «         D ]}|                      d|¦  «         Œd S )Nc                  óº   — t          j        d¦  «        } t          j        dd¦  «        | dd…<   t          d| d         ¦  «         t          d| d         ¦  «         | S )Nr  r   rf  rì   rI  za[3]:r  )rÀ   r@  r  Úprintr�  s    rW   rè   zITestParforsMisc.test_statement_reordering_respects_aliasing.<locals>.impl×
  sS   € Ý”˜‘”ˆAÝ”Y˜q !‘_”_ˆAˆa�ˆc‰FÝ�'˜1˜Qœ4Ñ Ô Ð Ý�'˜1˜Qœ4Ñ Ô Ð ØˆHrY   r}   z	a[3]: 2.0)r¢   r6   rÍ   Úgetvaluer?  rÐ   )rT   rè   r÷   ÚstdoutÚlines        rW   Ú+test_statement_reordering_respects_aliasingz;TestParforsMisc.test_statement_reordering_respects_aliasingÖ
  sà   € ð	ð 	ð 	ð ×$Ò$ T¨2Ñ.Ô.ˆÝÑÔð 	 &Ø×ÒÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à—O’OÑ%Ô%×0Ò0Ñ2Ô2ð 	0ð 	0ˆDØ×Ò˜[¨$Ñ/Ô/Ð/Ð/ð	0ð 	0s   ¨A	Á	AÁAc                 óž  — d„ }t          j        t           j        dg¦  «        } t          d¬¦  «        |¦  «        }t          j        j        j        }	 dt          j        j        _        t           j         	                     ||¦  «         ||¦  «        ¦  «         |t          j        j        _        d S # |t          j        j        _        w xY w)Nc                 ó*   — t          j        | ¦  «        S r[   )rÀ   Úisinfrã  s    rW   r
  z;TestParforsMisc.test_parfor_ufunc_typing.<locals>.test_implå
  s   € Ý”8˜A‘;”;ÐrY   r  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_typingz(TestParforsMisc.test_parfor_ufunc_typingä
  s¹   € ð	ð 	ð 	õ ŒH•b”f˜c�]Ñ#Ô#ˆØ#•˜dÐ#Ñ#Ô# IÑ.Ô.ˆå”}Ô+ÔFˆð	KØ>B�EŒMÔ Ô;ÝŒJ×)Ò)¨)¨)°A©,¬,¸¸¸a¹¼ÑAÔAÐAð ?K�EŒMÔ Ô;Ð;Ð;ø¸l�EŒMÔ Ô;ÐJÐJÐJÐJs   ÁAB4 Â4Cc                 óT   — d„ }|                       t          |d¦  «        d¦  «         d S )Nc                  ó²   — d} g d¢}t           j        j                             ¦   «          |}t          j        d¦  «        D ]}| ||         z  } Œ| |d         z   S )Nr   r¥  r�   rý   )r«   r°  r±  Úinit_pranger   )ÚresrÀ  Údummyr  s       rW   r
  z6TestParforsMisc.test_init_block_dce.<locals>.test_implõ
  s`   € ØˆCØ�+�+ˆCÝŒMÔ ×,Ò,Ñ.Ô.Ð.ØˆEÝ”\ !‘_”_ð ð �Ø�s˜1”v‘��Ø˜˜qœ‘>Ð!rY   r}   r   )rÐ   rÓ  r  s     rW   Útest_init_block_dcez#TestParforsMisc.test_init_block_dceó
  s:   € ð	"ð 	"ð 	"ð 	×ÒÕ,¨Y¸Ñ;Ô;¸QÑ?Ô?Ð?Ð?Ð?rY   c                 ó6   — d„ }|                       |¦  «         d S )Nc                  ób   — d} t          d¦  «        D ]}| dz  } Œt          j        | f¦  «        }|S )Nr   r  rì   ©r  rÀ   r@  )r·  rK   r8  s      rW   r
  zBTestParforsMisc.test_alias_analysis_for_parfor1.<locals>.test_impl  s=   € ØˆCÝ˜1‘X”Xð ð �Ø�q‘��å”8˜S˜FÑ#Ô#ˆDØˆKrY   r  r  s     rW   Útest_alias_analysis_for_parfor1z/TestParforsMisc.test_alias_analysis_for_parfor1   s+   € ð	ð 	ð 	ð 	�
Š
�9ÑÔÐÐÐrY   c                 ó:  ‡‡— dŠt          dd¬¦  «         G ˆfd„dt          ¦  «        ¦   «         Š G ˆfd„dt          ¦  «        }t          d|¬	¦  «        d
„ ¦   «         }|                      t
          j        j        j        ¦  «         |  	                    t          j        ¦  «        5 } |¦   «          d d d ¦  «         n# 1 swxY w Y   |                      ‰t          |j        ¦  «        ¦  «         |                      t
          j        j        j        ¦  «         d S )NÚ
BROKEN_MSGTF)Úmutates_CFGÚanalysis_onlyc                   ó$   •— e Zd ZdZd„ Zˆ fd„ZdS )úVTestParforsMisc.test_no_state_change_in_gufunc_lowering_on_error.<locals>.BreakParforsÚbreak_parforsc                 ó.   — t          j        | ¦  «         d S r[   )r3   r—   r]   s    rW   r—   z_TestParforsMisc.test_no_state_change_in_gufunc_lowering_on_error.<locals>.BreakParfors.__init__  s   € ÝÔ% dÑ+Ô+Ð+Ð+Ð+rY   c                 óò   •— |j         j                             ¦   «         D ]V}|j        D ]J}t	          |t
          j        j        j        ¦  «        r$ G ˆfd„dt          ¦  «        } |¦   «         |_
        ŒK dS d S )Nc                   ó   •— e Zd Zˆ fd„ZdS )úoTestParforsMisc.test_no_state_change_in_gufunc_lowering_on_error.<locals>.BreakParfors.run_pass.<locals>.Brokenc                 ó,   •— t          j        ‰¦  «        ‚r[   )r   ÚLoweringError)rT   ÚotherrÓ  s     €rW   Ú
differencezzTestParforsMisc.test_no_state_change_in_gufunc_lowering_on_error.<locals>.BreakParfors.run_pass.<locals>.Broken.difference%  s   ø€ Ý*0Ô*>¸zÑ*JÔ*JÐ$JrY   N)rx   rO   ry   rà  ©rÓ  s   €rW   ÚBrokenrÜ  #  s5   ø€ € € € € ð!Kð !Kð !Kð !Kð !Kð !Kð !KrY   râ  T)r—  r¹  rÞ  rÇ  r¿   r«   r°  r±  rÈ  rÈ   Úraces)rT   r§  Úblkrï  râ  rÓ  s        €rW   Úrun_passz_TestParforsMisc.test_no_state_change_in_gufunc_lowering_on_error.<locals>.BreakParfors.run_pass  s­   ø€ Ø œ=Ô/×6Ò6Ñ8Ô8ð  ð  �CØ #¤ð 2ð 2˜Ý% d­E¬MÔ,@Ô,GÑHÔHð 2ðKð Kð Kð Kð Kð Kð K­ñ Kô Kð Kð
 *0¨©¬˜DœJøØ˜4˜4ð ð  rY   N)rx   rO   ry   Ú_namer—   rå  rá  s   €rW   ÚBreakParforsr×    sB   ø€ € € € € à#ˆEð,ð ,ð ,ð ð  ð  ð  ð  ð  ð  rY   rç  c                   ó   •— e Zd Zˆ fd„ZdS )ú^TestParforsMisc.test_no_state_change_in_gufunc_lowering_on_error.<locals>.BreakParforsCompilerc                 óš   •— t          j        | j        ¦  «        }|                     ‰t          ¦  «         |                     ¦   «          |gS r[   )r1   Údefine_nopython_pipeliner§  Úadd_pass_afterr4   Úfinalize)rT   Úpmrç  s     €rW   Údefine_pipelineszoTestParforsMisc.test_no_state_change_in_gufunc_lowering_on_error.<locals>.BreakParforsCompiler.define_pipelines.  s?   ø€ Ý'Ô@ÀÄÑLÔL�Ø×!Ò! ,µÑ?Ô?Ð?Ø—’‘”�Ø�t�rY   N)rx   rO   ry   rï  )rç  s   €rW   ÚBreakParforsCompilerré  ,  s.   ø€ € € € € ðð ð ð ð ð ð rY   rð  )r]  Úpipeline_classc                  ó8   — d} t          d¦  «        D ]}| dz  } Œ| S r#  rÀ  )r®   rK   s     rW   ÚfoozMTestParforsMisc.test_no_state_change_in_gufunc_lowering_on_error.<locals>.foo5  s,   € àˆAÝ˜A‘Y”Yð ð �Ø�Q‘��ØˆHrY   )r2   r3   r0   r   ÚassertFalser«   r°  r±  rÄ  r  r   rÞ  rô   r"  r  )rT   rð  ró  r  rÓ  rç  s       @@rW   Ú0test_no_state_change_in_gufunc_lowering_on_errorz@TestParforsMisc.test_no_state_change_in_gufunc_lowering_on_error  s�  øø€ ð
 "ˆ
å	 4°uÐ	=Ñ	=Ô	=ð	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 �<ñ 	 ô 	 ñ 
>Ô	=ð	 ð2	ð 	ð 	ð 	ð 	ð 	ð 	¥<ñ 	ô 	ð 	õ 
�tÐ,@Ð	AÑ	AÔ	Að	ð 	ñ 
BÔ	Að	ð 	×Ò�œÔ-ÔHÑIÔIÐIà×Ò�vÔ3Ñ4Ô4ð 	¸ØˆC‰EŒEˆEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	�Š�j¥# fÔ&6Ñ"7Ô"7Ñ8Ô8Ð8ð 	×Ò�œÔ-ÔHÑIÔIÐIÐIÐIs   Â(B?Â?CÃCc                 óØ  ‡‡	—  G d„ dt           j        ¦  «        } |d¦  «        Š	 t          |¦  «        t          j        ¦  «          G d„ dt
          ¦  «        }t          j        |¦  «        ˆ	fd„¦   «         }t          |¦  «        d„ ¦   «         }t          |dd	d
i¬¦  «        d„ ¦   «         }t          d„ ¦   «         Št          ˆfd„¦   «         }t          j        j        j        }|                      |¦  «         	  | |¦   «         ¦  «         |                      t          j        j        j        ¦  «         |t          j        j        _        d S # |t          j        j        _        w xY w)Nc                   ó   — e Zd ZdS )ú2TestParforsMisc.test_issue_5098.<locals>.DummyTypeN©rx   rO   ry   r}   rY   rW   Ú	DummyTyperø  H  ó   € € € € € ØˆDrY   rú  Úmy_dummyc                   ó   — e Zd ZdS )ú.TestParforsMisc.test_issue_5098.<locals>.DummyNrù  r}   rY   rW   ÚDummyrþ  N  rû  rY   rÿ  c                 ó   •— ‰S r[   r}   )Úvalrð  Ú
dummy_types     €rW   Útypeof_Dummyz5TestParforsMisc.test_issue_5098.<locals>.typeof_DummyQ  s	   ø€ àÐrY   c                 óN   — t          |j                             ¦   «         ¦  «        S r[   )r!   ÚcontextÚget_dummy_value)ÚtypÚobjrð  s      rW   Úunbox_indexz4TestParforsMisc.test_issue_5098.<locals>.unbox_indexU  s   € å˜qœy×8Ò8Ñ:Ô:Ñ;Ô;Ð;rY   Úmethod1r]  T)Újit_optionsc                 ó   — d„ }|S )Nc                 ó"  — d„ }t          |¦  «        }t          j        |t          j        ¬¦  «        }t	          |¦  «        D ]} |||         |¦  «        ||<   Œt	          |dz
  ¦  «        D ]"}||xx          |||         |¦  «        z  cc<   Œ#|S )Nc                 ó‚   — |                       ¦   «         }t          j        |t          j        | ¦  «        <    ||¦  «        S r[   )rÃ   rÀ   r.  rÃ  )rˆ   Úfrð  s      rW   ÚbazzPTestParforsMisc.test_issue_5098.<locals>._get_method1.<locals>._foo.<locals>.baz\  s/   € ØŸš™œ�AÝ%'¤V�A•b”h˜q‘k”k‘NØ˜1˜Q™4œ4�KrY   r'  rì   rÏ  )r  rÀ  r�   r  ÚlengthÚ
output_arrr  s          rW   Ú_foozCTestParforsMisc.test_issue_5098.<locals>._get_method1.<locals>._foo[  s­   € ð ð  ð  õ
 ˜S™œ�ÝœX fµB´JÐ?Ñ?Ô?�
Ý ™œð 6ð 6�AØ$' C¨¨A¬°Ñ$5Ô$5�J˜q‘M�MÝ ¨¡
Ñ+Ô+ð 7ð 7�AØ˜q�M�M”M S S¨¨Q¬°Ñ%6Ô%6Ñ6�M�M‘M�MØ!Ð!rY   r}   )r  rÀ  r�   r  s       rW   Ú_get_method1z5TestParforsMisc.test_issue_5098.<locals>._get_method1Y  s   € ð"ð "ð "ð ˆKrY   c                 ó*   — |                       ¦   «         S r[   rá  )ró  s    rW   Úbarz,TestParforsMisc.test_issue_5098.<locals>.barj  s   € à—6’6‘8”8ˆOrY   c                 ó`   •— |                       t          j        g d¢g d¢g¦  «        ‰¦  «        S )N©r^  r+  r  )r  rQ  rR  )r
  rÀ   r�  )rÖ  r  s    €rW   Útest1z.TestParforsMisc.test_issue_5098.<locals>.test1n  s.   ø€ à—9’9�RœX   ¸¸¸Ð&HÑIÔIÈ3ÑOÔOÐOrY   )r   ÚOpaquer   r"   ÚOpaqueModelÚobjectr   Úregisterr    r   r   r«   r°  r±  rÄ  rô  )
rT   rú  rÿ  r  r	  r  r  Ú
save_stater  r  s
           @@rW   Útest_issue_5098zTestParforsMisc.test_issue_5098G  sØ  øø€ ð	ð 	ð 	ð 	ð 	�œñ 	ô 	ð 	ð �Y˜zÑ*Ô*ˆ
Ø!��yÑ!Ô!¥&Ô"4Ñ5Ô5Ð5ð	ð 	ð 	ð 	ð 	•Fñ 	ô 	ð 	õ 
Ô	˜eÑ	$Ô	$ð	ð 	ð 	ð 	ñ 
%Ô	$ð	õ 
ˆyÑ	Ô	ð	<ð 	<ñ 
Ô	ð	<õ 
˜ I¸JÀtÐ;LÐ	MÑ	MÔ	Mð	ð 	ñ 
NÔ	Mð	õ  
ð	ð 	ñ 
Œð	õ 
ð	Pð 	Pð 	Pð 	Pñ 
Œð	Põ ”]Ô)ÔDˆ
Ø×Ò˜Ñ$Ô$Ð$ð	IØˆE�%�%‘'”'‰NŒNˆNØ×Ò�Uœ]Ô1ÔLÑMÔMÐMð ?I�EŒMÔ Ô;Ð;Ð;ø¸j�EŒMÔ Ô;ÐHÐHÐHÐHs   Ã=<E ÅE)c                 óŒ  — t          d¬¦  «        d„ ¦   «         }t          dd¦  «        5  |                      t          j        ¦  «        5 } |d¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   t          |j        ¦  «        }|                      d|¦  «         |                      d|¦  «         d S )	NTr\  c                 óH   — d}d}t          d¦  «        D ]}|||          z  }Œ|S )N)rì   rý   r  r  r   r  rÀ  )ÚidxÚbig_tuprN  r®   s       rW   Úoversize_tuplezMTestParforsMisc.test_oversized_tuple_as_arg_to_kernel.<locals>.oversize_tuple~  s6   € àˆGØˆAÝ˜B‘Z”Zð "ð "�Ø�W˜S”\Ñ!��ØˆHrY   ÚNUMBA_PARFOR_MAX_TUPLE_SIZEÚ3r   zUse of a tuplezin a parallel region)r   r8   r  r   rs  r"  r  rô   )rT   r$  r  Úerrstrs       rW   Ú%test_oversized_tuple_as_arg_to_kernelz5TestParforsMisc.test_oversized_tuple_as_arg_to_kernel|  sJ  € å	�tÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	õ !Ð!>ÀÑDÔDð 	"ð 	"Ø×"Ò"¥6Ô#AÑBÔBð "ÀfØ�˜qÑ!Ô!Ð!ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"õ �VÔ%Ñ&Ô&ˆØ�ŠÐ&¨Ñ/Ô/Ð/Ø�ŠÐ,¨fÑ5Ô5Ð5Ð5Ð5s5   ª A9Á
A"ÁA9Á"A&	Á&A9Á)A&	Á*A9Á9A=Â A=c                 óÆ   — d„ }d}t           j                             dd|¬¦  «        }t           j                             dd|¬¦  «        }|                      |||¦  «         d S )Nc                 ó  — d}t          j        | j        || j        ¬¦  «        }| j        }t	          |d         ¦  «        D ]J}t	          |d         ¦  «        D ]2}| ||f         |||f         z
  | ||f         |||f         z   z  |||f<   Œ3ŒK|S ©Nr   r'  rì   )rÀ   ÚfullrŽ  r(  r   )Úimg_nirÚimg_redÚ	fillvalueÚout_imgÚdimsrm  r®   s          rW   Ú	ndvi_njitz1TestParforsMisc.test_issue5167.<locals>.ndvi_njit�  s­   € ØˆIÝ”g˜gœm¨Y¸g¼mÐLÑLÔLˆGØ”=ˆDÝ˜D œG‘_”_ð Fð F�Ý  Q¤™œð Fð F�AØ&-¨a°¨d¤m°g¸aÀ¸d´mÑ&CØ&-¨a°¨d¤m°g¸aÀ¸d´mÑ&Cñ&E�G˜A˜q˜D‘M�MðFð ˆNrY   )r  r  r^  g     ˆÃ@)Úlowr  ræ  )rÀ   rŽ  Úuniformrä   )rT   r2  Ú
tile_shapeÚarray1Úarray2s        rW   Útest_issue5167zTestParforsMisc.test_issue5167Ž  sl   € ð	ð 	ð 	ð ˆ
Ý”×"Ò" s°¸zÐ"ÑJÔJˆÝ”×"Ò" s°¸zÐ"ÑJÔJˆØ�
Š
�9˜f fÑ-Ô-Ð-Ð-Ð-rY   c                 óV  — d„ }t           d„ ¦   «         }t          j                             d¬¦  «        }  t          d¬¦  «        |¦  «        |                     ¦   «         |d¦  «        } ||                     ¦   «         |d¦  «        }t          j                             ||¦  «         d S )Nc                 ó:  — t          j        | j        d         | j        d         ft           j        ¬¦  «        }t	          | j        d         ¦  «        D ]G}t          |dz   | j        d         ¦  «        D ]&} || |         | |         g|¢R Ž }||||f<   ||||f<   Œ'ŒH|S r+  )rÀ   r@  rŽ  rÓ  r   r  )rˆ   rˆ  Ú	dist_argsr  r  r€  rÖ  s          rW   Ú
reproducerz2TestParforsMisc.test_issue5065.<locals>.reproducer¡  s²   € Ý”X˜qœw qœz¨1¬7°1¬:Ð6½b¼jÐIÑIÔIˆFÝ˜AœG AœJÑ'Ô'ð %ð %�Ý˜q 1™u a¤g¨a¤jÑ1Ô1ð %ð %�AØ˜˜Q˜qœT 1 Q¤4Ð4¨)Ð4Ð4Ð4�AØ#$�F˜1˜a˜4‘LØ#$�F˜1˜a˜4‘L�Lð%ð ˆMrY   c                 ó–   — d}t          | j        d         ¦  «        D ]}|| |         ||         z
  dz  z  }Œt          j        |¦  «        S )Nr  r   rý   )r  rŽ  rÀ   r`  )r®   rm  r  r  s       rW   Ú	euclideanz1TestParforsMisc.test_issue5065.<locals>.euclideanª  sO   € àˆFÝ˜1œ7 1œ:Ñ&Ô&ð -ð -�Ø˜1˜Qœ4 ! A¤$™;¨1Ñ,Ñ,��Ý”7˜6‘?”?Ð"rY   )r�   rý   rå  Tr\  r}   )r   rÀ   rŽ  rÃ   rÎ   r  )rT   r<  r>  rˆ   r�  r‘  s         rW   Útest_issue5065zTestParforsMisc.test_issue5065Ÿ  s°   € ð	ð 	ð 	õ 
ð	#ð 	#ñ 
Œð	#õ ŒI×Ò &ÐÑ)Ô)ˆà-Ð!�d˜DÐ!Ñ!Ô! *Ñ-Ô-¨a¯fªf©h¬h¸	À"ÑEÔEˆØ�:˜aŸfšf™hœh¨	°"Ñ5Ô5ˆå
Œ
×"Ò" 3¨Ñ1Ô1Ð1Ð1Ð1rY   c                 óˆ   — d„ }t          j        d¦  «        t          j        d¦  «        f}|                      ||¦  «         d S )Nc                 óš   — dgt          | ¦  «        z  }t          t          | ¦  «        ¦  «        D ]}t          | |         ¦  «        ||<   Œ|S rÑ  )rÒ   r   )Úmyarrayr  r  s      rW   Útest_numba_parallelz;TestParforsMisc.test_issue5001.<locals>.test_numba_parallelº  sK   € Ø�S�3˜w™<œ<Ñ'ˆFÝ�C ™LœLÑ)Ô)ð ,ð ,�Ý ¨¤
™OœO��q‘	�	ØˆMrY   rä  é2   )rÀ   râ  rä   )rT   rC  rB  s      rW   Útest_issue5001zTestParforsMisc.test_issue5001¸  sH   € ð	ð 	ð 	õ ”8˜C‘=”=¥¤¨"¡¤Ð.ˆØ�
Š
Ð&¨Ñ0Ô0Ð0Ð0Ð0rY   c                 ó~   ‡— t           d„ ¦   «         Št          d¬¦  «        ˆfd„¦   «         } |dgfdz  ¦  «         d S )Nc                 ó   — d S r[   r}   )Úgridss    rW   ró  z+TestParforsMisc.test_issue3169.<locals>.fooÅ  s   € àˆDrY   Tr\  c                 óB   •— t          d¦  «        D ]} ‰| ¦  «         Œd S r#  rÀ  )rH  r®   ró  s     €rW   r  z+TestParforsMisc.test_issue3169.<locals>.barÉ  s1   ø€ å˜A‘Y”Yð ð �Ø��E‘
”
�
�
ðð rY   rì   rý   r“  )rT   r  ró  s     @rW   Útest_issue3169zTestParforsMisc.test_issue3169Ã  sh   ø€ å	ð	ð 	ñ 
Œð	õ 
�tÐ	Ñ	Ô	ð	ð 	ð 	ð 	ñ 
Ô	ð	ð
 	ˆˆaˆSˆF�Q‰J‰ŒˆˆˆrY   c                 óª   ‡— t          dd¦  «        }ˆfd„}t          d¬¦  «        d„ ¦   «         Š |dd¬¦  «        }|                      ||¦  «         d S )	NÚmytyper‡   c                 óN   •— t          d¦  «        D ]} ‰|| ¦  «         Œ| j        S r|  )r   rˆ   )Úmydatar¾   Úinners     €rW   Úouterz-TestParforsMisc.test_issue4846.<locals>.outerÖ  s4   ø€ Ý˜A‘Y”Yð !ð !�Ø��a˜Ñ Ô Ð Ð Ø”8ˆOrY   T)Únogilc                 ó*   — | |j         f}| |j        f}d S r[   r‡   )r¾   rN  r  r¦  s       rW   rO  z-TestParforsMisc.test_issue4846.<locals>.innerÛ  s   € à�F”H�ˆAØ�F”H�ˆAˆAˆArY   rˆ   r‰   )r   r   rä   )rT   rL  rP  rN  rO  s       @rW   Útest_issue4846zTestParforsMisc.test_issue4846Ñ  s„   ø€ õ ˜H jÑ1Ô1ˆð	ð 	ð 	ð 	ð 	õ
 
�DÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	ð �˜# Ð%Ñ%Ô%ˆà�
Š
�5˜&Ñ!Ô!Ð!Ð!Ð!rY   c                 ó6   — d„ }|                       |¦  «         d S )Nc                  ób   — d} d}t          t          | ¦  «        ¦  «        D ]}|| |         z  }Œ|S )Nr¥  r   )r   rÒ   )r®   rˆ   r  s      rW   Útest1bz.TestParforsMisc.test_issue3748.<locals>.test1bæ  s;   € ØˆAØˆAÝ�C ™FœF‘^”^ð ð �Ø�Q�q”T‘	��ØˆHrY   r  )rT   rV  s     rW   Útest_issue3748zTestParforsMisc.test_issue3748ä  s+   € ð	ð 	ð 	ð 	�
Š
�6ÑÔÐÐÐrY   c                 ót   — d„ }d}t          j        |t          ¬¦  «        }|                      |||¦  «         d S )Nc                 óˆ   — t          | d         ¦  «        D ]+}t          | d         ¦  «        D ]}|dz  |z   ||         |<   ŒŒ,|S )Nr   rì   g      @rÀ  )ræ  rÀ  r®   rm  s       rW   Úparallel_testz5TestParforsMisc.test_issue5277.<locals>.parallel_testñ  sU   € Ý˜D œG‘_”_ð ,ð ,�Ý  Q¤™œð ,ð ,�AØ ! C¡¨!¡�C˜”F˜1‘I�Ið,àˆJrY   r:  r'  )rÀ   r@  rö  rä   )rT   rZ  ræ  rÀ  s       rW   Útest_issue5277zTestParforsMisc.test_issue5277ï  sH   € ð	ð 	ð 	ð ˆÝŒh�t¥3Ð'Ñ'Ô'ˆà�
Š
�= $¨Ñ,Ô,Ð,Ð,Ð,rY   c                 óø   — t          d¬¦  «        d„ ¦   «         }t          j        d¦  «        }d}t          j        d¦  «        }|                       ||||¦  «        |                     |||¦  «        ¦  «         d S )NTr\  c                 ój   — t          d¦  «        D ]}t          d¦  «        D ]	}d|||f<   Œ
Œ|r|dz  }|S r#  )r   r  )r  Úmethodrä  r  r€  s        rW   ró  z5TestParforsMisc.test_issue5570_ssa_races.<locals>.fooý  sV   € å˜A‘Y”Yð "ð "�Ý˜q™œð "ð "�AØ !�C˜˜1˜‘I�Ið"àð Ø�q‘�ØˆJrY   )r�   r�   é9   rE  )r   rÀ   r@  rŒ  Úpy_func)rT   ró  r  r^  rä  s        rW   Útest_issue5570_ssa_racesz(TestParforsMisc.test_issue5570_ssa_racesü  s�   € Ý	�tÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	õ Œh�u‰oŒoˆØˆÝŒh�vÑÔˆà×ÒØˆC��V˜SÑ!Ô!Ø�KŠK˜˜V SÑ)Ô)ñ	
ô 	
ð 	
ð 	
ð 	
rY   c                 ó  — t          d¬¦  «        d„ ¦   «         }t          j                             d¦  «         t          j                             d¦  «        }|                       ||¦  «        |                     |¦  «        ¦  «         d S )NTr\  c                 ór   — | }t          dd¦  «        D ]}||d d …d d …f         }Œt          j        |¦  «        S )Nr   r  )r  rÀ   r³  )r˜   Úpackagerõ  Úz_stacks       rW   Úfind_maxima_3D_jitzDTestParforsMisc.test_issue6095_numpy_max.<locals>.find_maxima_3D_jit  sF   € àˆGÝ˜q "™œð /ð /�Ø! %¨¨¨¨A¨A¨A +Ô.��Ý”6˜'‘?”?Ð"rY   r   )r  r  r  )r   rÀ   rŽ  r   rŒ  r`  )rT   rf  r˜   s      rW   Útest_issue6095_numpy_maxz(TestParforsMisc.test_issue6095_numpy_max  s“   € Ý	�tÐ	Ñ	Ô	ð	#ð 	#ñ 
Ô	ð	#õ 	Œ	�Š�qÑÔÐÝŒy×Ò Ñ-Ô-ˆØ×ÒØÐ˜tÑ$Ô$Ø×&Ò& tÑ,Ô,ñ	
ô 	
ð 	
ð 	
ð 	
rY   c                 óÊ   — d„ }d}d}t          j        ||ft           j        ¬¦  «        }t          j        ||ft           j        ¬¦  «        }|                      |||¦  «         d S )Nc                 ó’   — | j         }|d         }t          |¦  «        D ]'}| |d d …f         ||d d …f<   ||dfxx         dz  cc<   Œ(|S rÅ  )rŽ  r   )ÚggÚgg_nextÚgsrÖ  Úi_ggs        rW   r
  z3TestParforsMisc.test_issue5942_1.<locals>.test_impl!  sm   € Ø”ˆBØ�1”ˆAÝ˜q™	œ	ð &ð &�Ø$& t¨Q¨Q¨Q w¤K�˜˜a˜a˜a˜Ñ Ø˜˜a˜Ð Ð Ô  AÑ%Ð Ð Ñ Ð àˆNrY   r  rý   r'  )rÀ   r@  r  rä   )rT   r
  rÖ  r¾   rj  rk  s         rW   Útest_issue5942_1z TestParforsMisc.test_issue5942_1  sm   € ð	ð 	ð 	ð ˆØˆå”(˜A˜q˜6­2¬8Ð4Ñ4Ô4ˆÝ”(˜A˜q˜6­2¬8Ð4Ñ4Ô4ˆØ�
Š
�9˜b 'Ñ*Ô*Ð*Ð*Ð*rY   c                 óB   — d„ }d}d}|                       |||¦  «         d S )Nc                 ó.  — t          j        | |ft           j        ¬¦  «        }t          j        | |ft           j        ¬¦  «        }t          | ¦  «        D ]@}t	          |¦  «        D ]	}||||f<   Œ
||d d …f         ||d d …f<   ||dfxx         dz  cc<   ŒA|S )Nr'  r   rì   )rÀ   r@  r  r   r  )rÖ  r¾   rj  rk  rm  r  s         rW   r
  z3TestParforsMisc.test_issue5942_2.<locals>.test_impl3  sµ   € Ý”h  1˜v­r¬xÐ8Ñ8Ô8ˆBÝ”h  1˜v­r¬xÐ8Ñ8Ô8ˆGå˜q™	œ	ð &ð &�Ý˜q™œð 'ð '�AØ"&�B�t˜Q�w‘K�KØ$& t¨Q¨Q¨Q w¤K�˜˜a˜a˜a˜Ñ Ø˜˜a˜Ð Ð Ô  AÑ%Ð Ð Ñ Ð àˆNrY   r  rý   r  )rT   r
  rÖ  r¾   s       rW   Útest_issue5942_2z TestParforsMisc.test_issue5942_21  s9   € ð
	ð 
	ð 
	ð ˆØˆà�
Š
�9˜a Ñ#Ô#Ð#Ð#Ð#rY   c                 óÐ   — t          d¬¦  «        d„ ¦   «         }t          j        g d¢g d¢g¦  «        }|                       ||¦  «        |                     |¦  «        ¦  «         d S )NTr\  c                 ó|  — t          | j        d         ¦  «        D ] }t          j        }t          j        g d¢t          j        ¬¦  «        }dD ]Y}t          j                             | |d d …f         |z   ¦  «        }||k     r%|}t          j        |||gt          j        ¬¦  «        }ŒZ| |d d …fxx         |z  cc<   Œ¡| S )Nr   )r   r   r   r'  )rì   r   rJ   )r   rŽ  rÀ   r  r�  rÓ  rY  Únorm)rï  r   rˆ  Útrr  Údist_ts         rW   r  z)TestParforsMisc.test_issue6102.<locals>.fH  sÃ   € å˜QœW QœZÑ(Ô(ð ð �Ý”v�Ý”X˜i˜i˜i­r¬zÐ:Ñ:Ô:�Ø#ð Cð C�AÝœYŸ^š^¨A¨b°!°!°!¨e¬H°q©LÑ9Ô9�FØ ’}�}Ø%˜ÝœX q¨!¨Q iµr´zÐBÑBÔB˜øØ�"�a�a�a�%��”˜B‘��‘�ØˆHrY   )r  r  r  )r  r  r^  )r   rÀ   r�  rŒ  r`  )rT   r  rï  s      rW   Útest_issue6102zTestParforsMisc.test_issue6102D  su   € õ 
�tÐ	Ñ	Ô	ð
	ð 
	ñ 
Ô	ð
	õ ŒH�l�l�l L L LÐ1Ñ2Ô2ˆØ×Ò   !¡¤ a§i¢i°¡l¤lÑ3Ô3Ð3Ð3Ð3rY   c                 ób   — t          d¬¦  «        d„ ¦   «         }|                      |¦  «         d S )NTr\  c                  óæ   — d} t          j        | f¦  «        }t          j        | dz
  f¦  «        }t          t	          |¦  «        ¦  «        D ]$}t          j        |||dz   …         ¦  «        ||<   Œ%|S r–  )rÀ   r	  râ  r   rÒ   r  )r  Úna_maskr  r  s       rW   r
  z1TestParforsMisc.test_issue6774.<locals>.test_implY  so   € àˆAÝ”g˜q˜d‘m”mˆGÝ”X˜q 1™u˜hÑ'Ô'ˆFÝ�C ™KœKÑ(Ô(ð 5ð 5�ÝœF 7¨1¨Q°©U¨7Ô#3Ñ4Ô4��q‘	�	ØˆMrY   )r   rä   r  s     rW   Útest_issue6774zTestParforsMisc.test_issue6774X  sA   € Ý	�tÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	ð 	�
Š
�9ÑÔÐÐÐrY   c                 ó6   — d„ }|                       |¦  «         d S )Nc                  óF   — t          j        t          t          f¦  «        } | S r[   )rÀ   r@  Ú_GLOBAL_INT_FOR_TESTING1Ú_GLOBAL_INT_FOR_TESTING2)Úbufs    rW   r
  z9TestParforsMisc.test_issue4963_globals.<locals>.test_imple  s   € Ý”(Õ4Õ6NÐOÑPÔPˆCØˆJrY   r  r  s     rW   Útest_issue4963_globalsz&TestParforsMisc.test_issue4963_globalsd  s+   € ð	ð 	ð 	ð 	�
Š
�9ÑÔÐÐÐrY   c                 óH   ‡‡— dŠdŠˆˆfd„}|                       |¦  «         d S )Nr€   r�   c                  ó4   •— t          j        ‰‰f¦  «        } | S r[   rŠ  )r€  Ú_FREEVAR_INT_FOR_TESTING1Ú_FREEVAR_INT_FOR_TESTING2s    €€rW   r
  z:TestParforsMisc.test_issue4963_freevars.<locals>.test_implm  s   ø€ Ý”(Ð5Ð7PÐQÑRÔRˆCØˆJrY   r  )rT   r
  r„  r…  s     @@rW   Útest_issue4963_freevarsz'TestParforsMisc.test_issue4963_freevarsj  sH   øø€ Ø$&Ð!Ø$%Ð!ð	ð 	ð 	ð 	ð 	ð 	ð 	�
Š
�9ÑÔÐÐÐrY   N)rx   rO   ry   rZ  r¹  rÀ  rÇ  rÍ  rÑ  rõ  r  r(  r8  r?  rE  rJ  r?   rS  rW  r[  ra  rg  rn  rq  r@   rw  r{  r�  r†  r}   rY   rW   r£  r£  µ
  sž  € € € € € ðð ð7ð 7ð 7ð80ð 0ð 0ðKð Kð Kð@ð @ð @ð	ð 	ð 	ð:Jð :Jð :Jðx3Ið 3Ið 3Iðj6ð 6ð 6ð$.ð .ð .ð"2ð 2ð 2ð2	1ð 	1ð 	1ðð ð ð ð"ð "ñ „]ð"ð$	ð 	ð 	ð-ð -ð -ð
ð 
ð 
ð&
ð 
ð 
ð+ð +ð +ð&$ð $ð $ð& ð4ð 4ñ Ôð4ð&
ð 
ð 
ðð ð ðð ð ð ð rY   r£  c                   ó^   — e Zd Zd„ 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S )ÚTestParforsDiagnosticsc                 óN   —  | j         |g|¢R Ž \  }} | j        |||g|¢R i |¤Ž d S r[   râ   rã   s         rW   rä   zTestParforsDiagnostics.checkv  rû  rY   c                 ó†   — |                       |¦  «        }|                       |¦  «        }|                      ||¦  «         d S r[   )Ú_fusion_equivalentrÐ   )rT   r�  r‘  rˆ   r‰   s        rW   Úassert_fusion_equivalencez0TestParforsDiagnostics.assert_fusion_equivalencez  sD   € Ø×#Ò# CÑ(Ô(ˆØ×#Ò# HÑ-Ô-ˆØ×Ò˜˜AÑÔÐÐÐrY   c                 óî   ‡— t          t          ¦  «        }t          |                     ¦   «         ¦  «        Št	          |                     ¦   «         ¦  «        D ]}ˆfd„||         D ¦   «         ||‰z
  <   Œ|S )Nc                 ó   •— g | ]}|‰z
  ‘ŒS r}   r}   )r­   r®   Úmin_keys     €rW   r¯   z=TestParforsDiagnostics._fusion_equivalent.<locals>.<listcomp>Š  s   ø€ Ð>Ð>Ð>°  G¡Ð>Ð>Ð>rY   )r   rÈ   r²  ÚkeysÚsorted)rT   ÚthingÚnewr¾   r�  s       @rW   r‹  z)TestParforsDiagnostics._fusion_equivalent  st   ø€ õ �$ÑÔˆÝ�e—j’j‘l”lÑ#Ô#ˆÝ˜Ÿ
š
™œÑ%Ô%ð 	?ð 	?ˆAØ>Ð>Ð>Ð>°U¸1´XÐ>Ñ>Ô>ˆC��G‘ÑÐØˆ
rY   Nc                 ót  — |�(|                       ||                     ¦   «         ¦  «         |�|                      ||j        ¦  «         |�|                      ||j        ¦  «         |�H|j                             ¦   «         }|D ],}|D ]}	|	d         |k    r nŒd|›d|›�}
t          |
¦  «        ‚Œ-|�7|                     ¦   «         }|                       |t          |¦  «        ¦  «         t          ¦   «         5  t          dd¦  «        D ]}|                     |¦  «         Œ	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr   zReplacement for z was not found. Had rì   r�   )rÐ   Úcount_parforsrŒ  Úfusion_infoÚnested_fusion_infor´  rÞ  r  Úhoisted_allocationsrÒ   r6   r  Údump)rT   rŸ  Úparfors_countr–  r—  r´  r˜  Úreplr®   Úreplacedrù   Úhoisted_allocss               rW   Úassert_diagnosticsz)TestParforsDiagnostics.assert_diagnostics�  sÏ  € ð Ð$Ø×Ò˜]¨K×,EÒ,EÑ,GÔ,GÑHÔHÐHØÐ"Ø×*Ò*¨;¸Ô8OÑPÔPÐPØÐ)Ø×*Ò*Ð+=Ø+6Ô+IñKô Kð KàÐ#ØÔ+×2Ò2Ñ4Ô4ˆDØ!ð .ð .�Ø $ð .ð .�HØ ”{ aÒ'Ð'Ø˜ð (ð.ð IJÈÈÈ4È4ÐP�CÝ(¨Ñ-Ô-Ð-ð ð
 Ð*Ø(×<Ò<Ñ>Ô>ˆNØ×ÒÐ0µ#°nÑ2EÔ2EÑFÔFÐFõ ÑÔð 	$ð 	$Ý˜1˜a‘[”[ð $ð $�Ø× Ò  Ñ#Ô#Ð#Ð#ð$ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	$ð 	$s   Ã6)D-Ä-D1Ä4D1c                 ó´   — d„ }|                       |¦  «         |                      |d¦  «        }|j        d         }|                      |ddddgi¬¦  «         d S )	Nc                  ó`   — d} t          j        | ¦  «        }t          j        | ¦  «        }||z   S ©Nr  rŒ  ©r  rˆ   r‰   s      rW   r
  z9TestParforsDiagnostics.test_array_expr.<locals>.test_impl«  s*   € ØˆAÝ”˜‘
”
ˆAÝ”˜‘”ˆAØ�q‘5ˆLrY   r}   Úparfor_diagnosticsrì   r  r  r�   )rš  r–  ©rä   r¢   r¶  rž  ©rT   r
  r´   rŸ  s       rW   Útest_array_exprz&TestParforsDiagnostics.test_array_exprª  s}   € ð	ð 	ð 	ð 	�
Š
�9ÑÔÐØ×&Ò& y°"Ñ5Ô5ˆØ”oÐ&:Ô;ˆØ×Ò ¸1Ø/0°1°a°&¨kð 	 ñ 	;ô 	;ð 	;ð 	;ð 	;rY   c                 óª   — d„ }|                       |¦  «         |                      |d¦  «        }|j        d         }|                      |d¬¦  «         d S )Nc                  óf   — d} t          j        | ¦  «        }t          | ¦  «        D ]
}|dz  ||<   Œ|S r¡  ©rÀ   râ  r   )r  rˆ   r  s      rW   r
  z5TestParforsDiagnostics.test_prange.<locals>.test_impl¸  s=   € ØˆAÝ”˜‘”ˆAÝ˜A‘Y”Yð ð �Ø˜2‘v��!‘�ØˆHrY   r}   r£  rì   ©rš  r¤  r¥  s       rW   Útest_prangez"TestParforsDiagnostics.test_prange·  sf   € ð	ð 	ð 	ð 	�
Š
�9ÑÔÐØ×&Ò& y°"Ñ5Ô5ˆØ”oÐ&:Ô;ˆØ×Ò ¸1ÐÑ=Ô=Ð=Ð=Ð=rY   c                 óÞ   — d„ }|                       |¦  «         |                      |d¦  «        }|j        d         }|                      t	          d„ |j        D ¦   «         ¦  «        ¦  «         dS )zEmake sure original user variable name is used in fusion info
        c                  ó  — d} t          j        | ¦  «        }t          j        |¦  «        }t          j        ||z  ¦  «        }d}t	          | dz
  ¦  «        D ].}t	          | dz
  ¦  «        D ]}|||         ||dz            z   z  }ŒŒ/|S )Nr  r   rý   rì   )rÀ   r	  ÚsinÚcosr   )r  r®   rˆ   r‰   r·  r  r€  s          rW   r
  z;TestParforsDiagnostics.test_user_varname.<locals>.test_implÇ  s�   € ØˆAÝ”˜‘
”
ˆAÝ”�q‘	”	ˆAÝ”�q˜1‘u‘”ˆAØˆCÝ˜A ™E‘]”]ð +ð +�Ý  A¡™œð +ð +�AØ˜1˜Qœ4 ! A¨¡E¤(™?Ñ*�C�Cð+àˆJrY   r}   r£  c              3   ó(   K  — | ]}d |j         v V — ŒdS )zslice(0, n, 1)N)r®  )r­   rï  s     rW   rô  z;TestParforsDiagnostics.test_user_varname.<locals>.<genexpr>Ø  s*   è è € ÐRÐR°!Ð  A¤IÐ-ÐRÐRÐRÐRÐRÐRrY   N)rä   r¢   r¶  rN  ÚanyÚfusion_reportsr¥  s       rW   Útest_user_varnamez(TestParforsDiagnostics.test_user_varnameÄ  s‹   € ð		ð 		ð 		ð 	�
Š
�9ÑÔÐØ×&Ò& y°"Ñ5Ô5ˆØ”oÐ&:Ô;ˆð 	�ŠÝÐRÐR°{Ô7QÐRÑRÔRÑRÔRñ	Tô 	Tð 	Tð 	Tð 	TrY   c                 ó²   — d„ }|                       |¦  «         |                      |d¦  «        }|j        d         }|                      |dddgi¬¦  «         d S )Nc                  ó˜   — d} t          j        | | f¦  «        }t          | ¦  «        D ]!}t          | ¦  «        D ]}|dz  |z   |||f<   ŒŒ"|S r¡  r©  )r  rˆ   r  r€  s       rW   r
  z<TestParforsDiagnostics.test_nested_prange.<locals>.test_implÛ  se   € ØˆAÝ”˜!˜Q˜Ñ Ô ˆAÝ˜A‘Y”Yð )ð )�Ý ™œð )ð )�AØ "™f q™j�A�a˜�d‘G�Gð)àˆHrY   r}   r£  rý   rì   )rš  r—  r¤  r¥  s       rW   Útest_nested_prangez)TestParforsDiagnostics.test_nested_prangeÚ  s{   € ð	ð 	ð 	ð 	�
Š
�9ÑÔÐØ×&Ò& y°"Ñ5Ô5ˆØ”oÐ&:Ô;ˆØ×Ò ¸1Ø45¸°s°8ð 	 ñ 	=ô 	=ð 	=ð 	=ð 	=rY   c                 ó¶   — d„ }|                       |¦  «         |                      |d¦  «        }|j        d         }|                      |dddgidg¬¦  «         d S )	Nc                  óZ   — d} t          j        | ¦  «        }t          j        |¦  «        }|S r¡  )rÀ   r	  r‡  r¢  s      rW   r
  zCTestParforsDiagnostics.test_function_replacement.<locals>.test_implê  s&   € ØˆAÝ”˜‘
”
ˆAÝ”	˜!‘”ˆAØˆHrY   r}   r£  rì   rý   r  )r‡  rã  )rš  r–  r´  r¤  r¥  s       rW   Útest_function_replacementz0TestParforsDiagnostics.test_function_replacementé  s†   € ð	ð 	ð 	ð 	�
Š
�9ÑÔÐØ×&Ò& y°"Ñ5Ô5ˆØ”oÐ&:Ô;ˆØ×Ò ¸1Ø-.°°¨HØ0CÐ/Eð 	 ñ 	Gô 	Gð 	Gð 	Gð 	GrY   c                 óª   — d„ }|                       |¦  «         |                      |d¦  «        }|j        d         }|                      |d¬¦  «         d S )Nc                  óv   — d} t          j        | dz   ¦  «        }d}t          | ¦  «        D ]}|||         z  }Œ|S rH  )rÀ   r	  r   )r  rˆ   r·  r  s       rW   r
  z8TestParforsDiagnostics.test_reduction.<locals>.test_implø  sF   € ØˆAÝ”˜˜A™‘”ˆAØˆCÝ˜A‘Y”Yð ð �Ø�q˜”t‘��ØˆJrY   r}   r£  rý   rª  r¤  r¥  s       rW   rÿ  z%TestParforsDiagnostics.test_reduction÷  sf   € ð	ð 	ð 	ð 	�
Š
�9ÑÔÐØ×&Ò& y°"Ñ5Ô5ˆØ”oÐ&:Ô;ˆØ×Ò ¸1ÐÑ=Ô=Ð=Ð=Ð=rY   c                 óª   — d„ }|                       |¦  «         |                      |d¦  «        }|j        d         }|                      |d¬¦  «         d S )Nc                  ó@   — d} t          j        | ¦  «        }d|d d …<   |S )Nr  rf  r  )r  rˆ   s     rW   r
  z6TestParforsDiagnostics.test_setitem.<locals>.test_impl  s&   € ØˆAÝ”˜‘
”
ˆAØˆAˆaˆaˆa‰DØˆHrY   r}   r£  rì   rª  r¤  r¥  s       rW   Útest_setitemz#TestParforsDiagnostics.test_setitem  sf   € ð	ð 	ð 	ð 	�
Š
�9ÑÔÐØ×&Ò& y°"Ñ5Ô5ˆØ”oÐ&:Ô;ˆØ×Ò ¸1ÐÑ=Ô=Ð=Ð=Ð=rY   c                 óª   — d„ }|                       |¦  «         |                      |d¦  «        }|j        d         }|                      |d¬¦  «         d S )Nc                  ó¤   — d} d}d}t          | ¦  «        D ]9}t          j        |f¦  «        }t          |¦  «        D ]}|||<   Œ||d         z  }Œ:|S )Nr  r�   r   rJ   )r   rÀ   r@  r  )r  rD  r·  r  Útempr€  s         rW   r
  zBTestParforsDiagnostics.test_allocation_hoisting.<locals>.test_impl  si   € ØˆAØˆAØˆCÝ˜A‘Y”Yð  ð  �Ý”x  ‘~”~�Ý˜q™œð  ð  �AØ�D˜‘G�GØ�t˜B”x‘��ØˆJrY   r}   r£  rì   )r˜  r¤  r¥  s       rW   Útest_allocation_hoistingz/TestParforsDiagnostics.test_allocation_hoisting  sf   € ð		ð 		ð 		ð 	�
Š
�9ÑÔÐØ×&Ò& y°"Ñ5Ô5ˆØ”oÐ&:Ô;ˆØ×Ò ÀÐÑCÔCÐCÐCÐCrY   )NNNNN)rx   rO   ry   rä   rŒ  r‹  rž  r¦  r«  r³  r¶  r¹  rÿ  r¾  rÂ  r}   rY   rW   rˆ  rˆ  s  sç   € € € € € ðMð Mð Mðð ð ð
ð ð ð =AØ@DØBFð$ð $ð $ð $ð:;ð ;ð ;ð>ð >ð >ðTð Tð Tð,=ð =ð =ðGð Gð Gð>ð >ð >ð
>ð 
>ð 
>ðDð Dð Dð Dð DrY   rˆ  c                   ó   — e Zd Zd„ Zd„ ZdS )ÚTestPrangeBasec                 ó^  — |j         }t          |j        ¦  «        }|€?d|j        v sJ ‚t          d„ |j        D ¦   «         ¦  «        }t	          |j        ¦  «        }�n|j                             d¦  «        }g }t          j        |¦  «        D ]B}|j	        dk    r5t          |j        ¦  «        |k    r|                     |j        dz   ¦  «         ŒC|                     d¦  «         t          |¦  «        }t          |¦  «        dz
  }	t          j        dk    rd|	dz  z   }	t#          |j        ¦  «        }t          |¦  «        t          |¦  «        k    sJ ‚|D ]}
||
         }|	||<   Œt	          |¦  «        }|                     ||¬¦  «        }t'          j        |t+          ¦   «         ¦  «        }|S )	z�
        This function does the actual code augmentation to enable the explicit
        testing of `prange` calls in place of `range`.
        Nr  c                 ó"   — g | ]}|d k    r|nd‘ŒS )r  r   r}   r¬   s     rW   r¯   z7TestPrangeBase.generate_prange_func.<locals>.<listcomp>2  s:   € ð "Að "Að "AØ&'ð ()¨G¢| | ! !¸ð "Að "Að "ArY   ÚLOAD_GLOBALrì   r   )r  rÇ  )Úco_codeÚco_names)Ú__code__rÈ   rÉ  r±   ÚbytesrÈ  rõ  ÚdisÚBytecodeÚopnamerC   rÍ  rÂ   ÚoffsetrÒ   rD   Ú	PYVERSIONÚ	bytearrayÚreplaceÚpytypesÚFunctionTypeÚglobals)rT   r²   Úpatch_instanceÚpyfunc_codeÚprange_namesÚnew_codeÚ	range_idxÚrange_locationsÚinstrÚ
prange_idxr  r"  Úprange_codeÚpfuncs                 rW   Úgenerate_prange_funcz#TestPrangeBase.generate_prange_func%  sâ  € ð
 ”oˆå˜KÔ0Ñ1Ô1ˆàÐ!ð ˜kÔ2Ð2Ð2Ð2Ð2Ý ð "Að "AØ+6Ô+?ð"Añ "Aô "Añ Bô BˆLå˜[Ô0Ñ1Ô1ˆH‰Hð $Ô,×2Ò2°7Ñ;Ô;ˆIØ ˆOåœ kÑ2Ô2ð Að A�Ø”< =Ò0Ð0Ý+¨E¬IÑ6Ô6¸)ÒCÐCØ'×.Ò.¨u¬|¸aÑ/?Ñ@Ô@Ð@øà×Ò Ñ)Ô)Ð)Ý  Ñ.Ô.ˆLÝ˜\Ñ*Ô*¨QÑ.ˆJÝŒ 'Ò)Ð)à *°¡/Ñ2�
Ý  Ô!4Ñ5Ô5ˆHÝ�~Ñ&Ô&­#¨oÑ*>Ô*>Ò>Ð>Ð>Ð>à#ð +ð +�Ø% aÔ(�Ø *�˜‘�Ý˜X‘”ˆHð "×)Ò)°(Ø3?ð *ñ Aô Aˆõ Ô$ [µ'±)´)Ñ<Ô<ˆàˆrY   c                 óf  — |                      dd¦  «        }|                      dd¦  «        }|                      dd¦  «        }|                      ||¦  «        }t          d„ |D ¦   «         ¦  «        }|                      ||¦  «        }	t	          j        d¬¦  «        5 }
t	          j        d	¦  «         |                      ||¦  «        }ddd¦  «         n# 1 swxY w Y   |r|                      ||¦  «         |r%|  	                    ||¦  «        }t          d
|ifi |¤Ž} | j        ||	|g|¢R i |¤Ž |
S )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_resultc                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r}   rª   r¬   s     rW   r¯   z0TestPrangeBase.prange_tester.<locals>.<listcomp>   r°   rY   Tr§  r©  rº   )rÌ   rà  r±   r§   r²  r³  r´  r¢   rY  r¥   r0  rà   )rT   r²   r˜   r³   rÖ  r¹   râ  rß  rž   rµ   r¸  r´   Ú
fastcpfuncs                rW   Úprange_testerzTestPrangeBase.prange_testerW  s   € ðB  ŸšÐ$4°dÑ;Ô;ˆØŸšÐ$4°eÑ<Ô<ˆØ &§
¢
Ð+BÀEÑ JÔ JÐà×)Ò)¨&°.ÑAÔAˆõ Ð3Ð3¨dÐ3Ñ3Ô3Ñ4Ô4ˆØ×!Ò! &¨#Ñ.Ô.ˆõ Ô$¨DÐ1Ñ1Ô1ð 	7°_ÝÔ! (Ñ+Ô+Ð+Ø×*Ò*¨5°#Ñ6Ô6ˆFð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7ð
 ð 	-Ø× Ò  ¨Ñ,Ô,Ð,ð !ð 	DØ×7Ò7¸¸sÑCÔCˆJÝÐ+¨ZÐ8ÐCÐC¸FÐCÐCˆFà$ˆÔ$ V¨U°FÐL¸TÐLÐLÐLÀVÐLÐLÐLØÐs   Â+CÃCÃCN)rx   rO   ry   rà  rå  r}   rY   rW   rÄ  rÄ  #  s8   € € € € € ð0ð 0ð 0ðd\ð \ð \ð \ð \rY   rÄ  c                   ó
  — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Z ej        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 d„ Z!d„ Z"d „ Z#d!„ Z$d"„ Z%d#„ Z&d$„ Z'd%S )&ÚTestPrangeBasicz Tests Prange c                 ó<   — d„ }|                       |dd¬¦  «         d S )Nc                  óf   — d} t          j        | ¦  «        }t          | ¦  «        D ]
}d|z  ||<   Œ|S )Nr  r+  ©rÀ   r@  r  rñ  s      rW   r
  z0TestPrangeBasic.test_prange01.<locals>.test_impl»  s=   € ØˆAÝ”˜‘”ˆAÝ˜1‘X”Xð ð �Ø˜Q‘w��!‘�ØˆHrY   ró   T©r¸   r¹   ©rå  r  s     rW   Útest_prange01zTestPrangeBasic.test_prange01º  óA   € ð	ð 	ð 	ð 	×Ò˜9°ZØ*.ð 	ñ 	0ô 	0ð 	0ð 	0ð 	0rY   c                 ó<   — d„ }|                       |dd¬¦  «         d S )Nc                  ót   — d} t          j        | dz
  ¦  «        }t          d| ¦  «        D ]}d|z  ||dz
  <   Œ|S )Nr  rì   r+  rê  rñ  s      rW   r
  z0TestPrangeBasic.test_prange02.<locals>.test_implÅ  sG   € ØˆAÝ”˜˜Q™‘”ˆAÝ˜1˜a‘[”[ð #ð #�Ø ™7��!�a‘%‘�ØˆHrY   ró   Trë  rì  r  s     rW   Útest_prange02zTestPrangeBasic.test_prange02Ä  rî  rY   c                 ó<   — d„ }|                       |dd¬¦  «         d S )Nc                  ó8   — d} t          d¦  «        D ]}| dz  } Œ| S ©Nr  rý   rƒ  ©rÁ  r  s     rW   r
  z0TestPrangeBasic.test_prange03.<locals>.test_implÏ  ó,   € ØˆAÝ˜2‘Y”Yð ð �Ø�Q‘��ØˆHrY   ró   Trë  rì  r  s     rW   Útest_prange03zTestPrangeBasic.test_prange03Î  óA   € ð	ð 	ð 	ð
 	×Ò˜9°ZØ*.ð 	ñ 	0ô 	0ð 	0ð 	0ð 	0rY   c                 ó<   — d„ }|                       |dd¬¦  «         d S )Nc                  ó8   — d} t          d¦  «        D ]}| dz  } Œ| S )Nr  r  rý   rƒ  rõ  s     rW   r
  z3TestPrangeBasic.test_prange03mul.<locals>.test_implØ  s,   € ØˆAÝ˜2‘Y”Yð ð �Ø�Q‘��ØˆHrY   ró   Trë  rì  r  s     rW   Útest_prange03mulz TestPrangeBasic.test_prange03mul×  rø  rY   c                 ó<   — d„ }|                       |dd¬¦  «         d S )Nc                  ó8   — d} t          d¦  «        D ]}| dz  } Œ| S )Nrä  r  rý   rƒ  rõ  s     rW   r
  z3TestPrangeBasic.test_prange03sub.<locals>.test_implá  s,   € ØˆAÝ˜2‘Y”Yð ð �Ø�Q‘��ØˆHrY   ró   Trë  rì  r  s     rW   Útest_prange03subz TestPrangeBasic.test_prange03subà  rø  rY   c                 ó<   — d„ }|                       |dd¬¦  «         d S )Nc                  ó8   — d} t          d¦  «        D ]}| dz  } Œ| S rô  rƒ  rõ  s     rW   r
  z3TestPrangeBasic.test_prange03div.<locals>.test_implê  rö  rY   ró   Trë  rì  r  s     rW   Útest_prange03divz TestPrangeBasic.test_prange03divé  rø  rY   c                 ó<   — d„ }|                       |dd¬¦  «         d S )Nc                  ó|   — d} d}t          j        d¦  «        }t          d¦  «        D ]}|| k    r|||<   Œd||<   Œ|S )Nrý   r  r  r   ©rÀ   râ  r  ©rˆ   r‰   r�  r  s       rW   r
  z0TestPrangeBasic.test_prange04.<locals>.test_impló  sR   € ØˆAØˆAÝ”˜‘”ˆAÝ˜1‘X”Xð ð �Ø˜’6�6Ø�A�a‘D�Dà�A�a‘D�DØˆHrY   ró   Trë  rì  r  s     rW   Útest_prange04zTestPrangeBasic.test_prange04ò  sA   € ð		ð 		ð 		ð 	×Ò˜9°ZØ*.ð 	ñ 	0ô 	0ð 	0ð 	0ð 	0rY   c                 ó<   — d„ }|                       |dd¬¦  «         d S )Nc                  ó’   — d} t          j        | t           j        ¬¦  «        }d}t          d| dz
  d¦  «        D ]}|||         z  }Œ|S ©Nr  r'  r   rì   ©rÀ   r	  r—  r  ©r  r�  rÁ  r  s       rW   r
  z0TestPrangeBasic.test_prange05.<locals>.test_impl  sU   € ØˆAÝ”˜¥2¤:Ð.Ñ.Ô.ˆAØˆAÝ˜1˜a !™e QÑ'Ô'ð ð �Ø�Q�q”T‘	��ØˆHrY   ró   Trë  rì  r  s     rW   Útest_prange05zTestPrangeBasic.test_prange05   óA   € ð	ð 	ð 	ð 	×Ò˜9°ZØ*.ð 	ñ 	0ô 	0ð 	0ð 	0ð 	0rY   c                 ó<   — d„ }|                       |dd¬¦  «         d S )Nc                  óŒ   — d} t          j        | t           j        ¬¦  «        }d}t          ddd¦  «        D ]}|||         z  }Œ|S r	  r
  r  s       rW   r
  z0TestPrangeBasic.test_prange06.<locals>.test_impl  sO   € ØˆAÝ”˜¥2¤:Ð.Ñ.Ô.ˆAØˆAÝ˜1˜a ‘^”^ð ð �Ø�Q�q”T‘	��ØˆHrY   ró   Trë  rì  r  s     rW   Útest_prange06zTestPrangeBasic.test_prange06  r  rY   c                 ó<   — d„ }|                       |dd¬¦  «         d S )Nc                  óŠ   — d} t          j        | t           j        ¬¦  «        }d}t          | d¦  «        D ]}|||         z  }Œ|S r	  r
  r  s       rW   r
  z0TestPrangeBasic.test_prange07.<locals>.test_impl  sM   € ØˆAÝ”˜¥2¤:Ð.Ñ.Ô.ˆAØˆAÝ˜1˜a‘[”[ð ð �Ø�Q�q”T‘	��ØˆHrY   ró   Trë  rì  r  s     rW   Útest_prange07zTestPrangeBasic.test_prange07  r  rY   c                 ó<   — d„ }|                       |dd¬¦  «         d S )Nc                  óÈ   — d} t          j        | ¦  «        }d}t          t          |¦  «        ¦  «        D ],}t          t          |¦  «        ¦  «        D ]}|||         z  }ŒŒ-|S r|  ©rÀ   r	  r  rÒ   ©r  r�  r·  r  r€  s        rW   r
  z0TestPrangeBasic.test_prange08.<locals>.test_impl"  sh   € ØˆAÝ”˜‘”ˆAØˆCÝ�3˜q™6œ6‘]”]ð  ð  �Ý�s 1™vœv™œð  ð  �AØ˜1˜Qœ4‘K�C�Cð àˆJrY   ró   Trë  rì  r  s     rW   Útest_prange08zTestPrangeBasic.test_prange08!  óA   € ð	ð 	ð 	ð 	×Ò˜9°ZØ*.ð 	ñ 	0ô 	0ð 	0ð 	0ð 	0rY   c                 ó<   — d„ }|                       |dd¬¦  «         d S )Nc                  ó”   — d} t          j        | ¦  «        }d}t          d¦  «        D ]}t          d¦  «        D ]}|||         z  }ŒŒ |S r|  ©rÀ   r	  r  r  s        rW   r
  z2TestPrangeBasic.test_prange08_1.<locals>.test_impl.  s\   € ØˆAÝ”˜‘”ˆAØˆCÝ˜1‘X”Xð  ð  �Ý˜q™œð  ð  �AØ˜1˜Qœ4‘K�C�Cð àˆJrY   ró   Trë  rì  r  s     rW   Útest_prange08_1zTestPrangeBasic.test_prange08_1-  r  rY   c                 ó@   — d„ }|                       |dgdd¬¦  «         d S )Nc                  ó`   — d} d}t          | ¦  «        D ]}t          | ¦  «        D ]}|dz  }ŒŒ|S ©Nr  r   rì   rƒ  )r  r·  r  r€  s       rW   r
  z0TestPrangeBasic.test_prange09.<locals>.test_impl:  sK   € ØˆAØˆCÝ˜1‘X”Xð ð �Ý˜q™œð ð �AØ˜1‘H�C�CðàˆJrY   rì   ró   T©rÖ  r¸   r¹   rì  r  s     rW   Útest_prange09zTestPrangeBasic.test_prange099  sF   € ð	ð 	ð 	ð 	×Ò˜9°a°SØ*4Ø*.ð 	ñ 	0ô 	0ð 	0ð 	0ð 	0rY   c                 ó@   — d„ }|                       |dgdd¬¦  «         d S )Nc                  ón   — d} d}t          | ¦  «        D ] }d}t          | ¦  «        D ]}|dz  }Œ||z  }Œ!|S r   rƒ  )r  Úacc2r€  Úacc1r  s        rW   r
  z0TestPrangeBasic.test_prange10.<locals>.test_implG  sV   € ØˆAØˆDÝ˜1‘X”Xð ð �Ø�Ý˜q™œð ð �AØ˜A‘I�D�DØ˜‘��ØˆKrY   r   ró   Tr!  rì  r  s     rW   Útest_prange10zTestPrangeBasic.test_prange10F  sF   € ð	ð 	ð 	ð 	×Ò˜9°a°SØ*4Ø*.ð 	ñ 	0ô 	0ð 	0ð 	0ð 	0rY   z1list append is not thread-safe yet (#2391, #2408)c                 ó<   — d„ }|                       |dd¬¦  «         d S )Nc                  ó8   — d} d„ t          | ¦  «        D ¦   «         S )Nr  c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r}   )rÀ   r®  )r­   r€  s     rW   r¯   zDTestPrangeBasic.test_prange11.<locals>.test_impl.<locals>.<listcomp>Y  s    € Ð0Ð0Ð0 !•B”F˜1‘I”IÐ0Ð0Ð0rY   rƒ  r   s    rW   r
  z0TestPrangeBasic.test_prange11.<locals>.test_implW  s!   € ØˆAØ0Ð0¥u¨Q¡x¤xÐ0Ñ0Ô0Ð0rY   ró   Trë  rì  r  s     rW   Útest_prange11zTestPrangeBasic.test_prange11U  sA   € ð	1ð 	1ð 	1ð 	×Ò˜9°ZØ*.ð 	ñ 	0ô 	0ð 	0ð 	0ð 	0rY   c                 ó<   — d„ }|                       |dd¬¦  «         d S )Nc                  óŒ   — d} d}t          j        |¦  «        }t          t          |¦  «         ¦  «        D ]}| ||         z  } Œ| S rÝ  r  )r·  r  rv  r  s       rW   r
  z0TestPrangeBasic.test_prange12.<locals>.test_impl^  sJ   € ØˆCØˆAÝ”˜‘
”
ˆAÝ�C ™FœF˜7‘^”^ð ð �Ø�q˜”t‘��ØˆJrY   ró   Trë  rì  r  s     rW   Útest_prange12zTestPrangeBasic.test_prange12]  sA   € ð	ð 	ð 	ð 	×Ò˜9°ZØ*.ð 	ñ 	0ô 	0ð 	0ð 	0ð 	0rY   c                 ób   — d„ }|                       |t          j        d¦  «        dd¬¦  «         d S )Nc                 ó8   — d}t          | ¦  «        D ]}|dz  }Œ|S rÅ  rƒ  rõ  s      rW   r
  z0TestPrangeBasic.test_prange13.<locals>.test_impli  s,   € ØˆCÝ˜1‘X”Xð ð �Ø�q‘��ØˆJrY   r  ró   Trë  )rå  rÀ   r  r  s     rW   Útest_prange13zTestPrangeBasic.test_prange13h  sK   € ð	ð 	ð 	ð
 	×Ò˜9¥b¤h¨q¡k¤kÀ*Ø*.ð 	ñ 	0ô 	0ð 	0ð 	0ð 	0rY   c                 óx   — d„ }|                       |t          j                             d¦  «        dd¬¦  «         d S )Nc                 ód   — d}t          t          | ¦  «        ¦  «        D ]}|| |         dz  z  }Œ|S )Nr  rý   ©r  rÒ   )r�  rÁ  r  s      rW   r
  z0TestPrangeBasic.test_prange14.<locals>.test_implr  s:   € ØˆAÝ�3˜q™6œ6‘]”]ð ð �Ø�Q�q”T˜!‘V‘��ØˆHrY   r  ró   Trë  )rå  rÀ   rŽ  r�  r  s     rW   Útest_prange14zTestPrangeBasic.test_prange14q  sR   € ð	ð 	ð 	ð 	×Ò˜9¥b¤i§n¢n°QÑ&7Ô&7Ø*4Ø*.ð 	ñ 	0ô 	0ð 	0ð 	0ð 	0rY   c                 ó>   — d„ }|                       |ddd¬¦  «         d S )Nc                 ól   — d}t          | ¦  «        D ]!}t          j        d¦  «        }||d         z  }Œ"|S )Nr   r1  r5  )r  rÀ   r	  )r’  r·  r  r®   s       rW   r
  z0TestPrangeBasic.test_prange15.<locals>.test_impl�  s=   € ØˆCÝ˜1‘X”Xð ð �Ý”G˜F‘O”O�Ø�q˜”w‘��ØˆJrY   rž  ró   Trë  rì  r  s     rW   Útest_prange15zTestPrangeBasic.test_prange15~  sC   € ð	ð 	ð 	ð 	×Ò˜9 d¸:Ø*.ð 	ñ 	0ô 	0ð 	0ð 	0ð 	0rY   c                 ó>   — d„ }|                       |ddd¬¦  «         d S )Nc                 ó<   — d}t          |  | ¦  «        D ]}|dz  }Œ|S rÒ  rƒ  ©r’  r·  r  s      rW   r
  z0TestPrangeBasic.test_prange16.<locals>.test_implŒ  s0   € ØˆCÝ˜A˜2˜q‘\”\ð ð �Ø�q‘��ØˆJrY   rž  rò   Trë  rì  r  s     rW   Útest_prange16zTestPrangeBasic.test_prange16‹  sC   € ð	ð 	ð 	ð
 	×Ò˜9 d¸8Ø*.ð 	ñ 	0ô 	0ð 	0ð 	0ð 	0rY   c                 ó>   — d„ }|                       |ddd¬¦  «         d S )Nc                 óp   — d}t          j        | ¦  «        }t          |  | ¦  «        D ]}|||         z  }Œ|S rÑ  r  ©r’  r·  rv  r  s       rW   r
  z0TestPrangeBasic.test_prange17.<locals>.test_impl•  sA   € ØˆCÝ”˜‘
”
ˆAÝ˜A˜2˜q‘\”\ð ð �Ø�q˜”t‘��ØˆJrY   r—  rò   Trë  rì  r  s     rW   Útest_prange17zTestPrangeBasic.test_prange17”  óC   € ð	ð 	ð 	ð 	×Ò˜9 a¸Ø*.ð 	ñ 	0ô 	0ð 	0ð 	0ð 	0rY   c                 ó>   — d„ }|                       |ddd¬¦  «         d S )Nc                 ó¬   — d}t          j        | ¦  «        }t          |  d¦  «        D ]+}|||         z  }t          d| ¦  «        D ]}|||         z  }ŒŒ,|S )Nr   r�   éüÿÿÿr  )r’  r·  rv  r  r€  s        rW   r
  z0TestPrangeBasic.test_prange18.<locals>.test_implŸ  sj   € ØˆCÝ”˜‘
”
ˆAÝ˜A˜2˜q‘\”\ð  ð  �Ø�q˜”t‘�Ý˜r 1™œð  ð  �AØ˜1˜Qœ4‘K�C�Cð àˆJrY   r—  rò   Trë  rì  r  s     rW   Útest_prange18zTestPrangeBasic.test_prange18ž  óC   € ð	ð 	ð 	ð 	×Ò˜9 a¸Ø*.ð 	ñ 	0ô 	0ð 	0ð 	0ð 	0rY   c                 ó>   — d„ }|                       |ddd¬¦  «         d S )Nc                 óª   — d}| dz   }t          j        | |f¦  «        }t          |  | ¦  «        D ]#}t          | |¦  «        D ]}||||f         z  }ŒŒ$|S rÝ  r  )r’  r·  ÚMrv  r  r€  s         rW   r
  z0TestPrangeBasic.test_prange19.<locals>.test_impl«  sp   € ØˆCØ�A‘ˆAÝ”˜˜A˜‘”ˆAÝ˜A˜2˜q‘\”\ð #ð #�Ý ˜r 1™œð #ð #�AØ˜1˜Q ˜Tœ7‘N�C�Cð#àˆJrY   r—  rò   Trë  rì  r  s     rW   Útest_prange19zTestPrangeBasic.test_prange19ª  rF  rY   c                 ó>   — d„ }|                       |ddd¬¦  «         d S )Nc                 ón   — d}t          j        | ¦  «        }t          d| ¦  «        D ]}|||         z  }Œ|S )Nr   rJ   r  r?  s       rW   r
  z0TestPrangeBasic.test_prange20.<locals>.test_impl·  s?   € ØˆCÝ”˜‘
”
ˆAÝ˜2˜q‘\”\ð ð �Ø�q˜”t‘��ØˆJrY   r—  rò   Trë  rì  r  s     rW   Útest_prange20zTestPrangeBasic.test_prange20¶  rA  rY   c                 ó>   — d„ }|                       |ddd¬¦  «         d S )Nc                 ó:   — d}t          dd¦  «        D ]}|dz  }Œ|S )Nr   rA  rJ   r  rƒ  r;  s      rW   r
  z0TestPrangeBasic.test_prange21.<locals>.test_implÁ  s.   € ØˆCÝ˜2˜r‘]”]ð ð �Ø�q‘��ØˆJrY   r—  rò   Trë  rì  r  s     rW   Útest_prange21zTestPrangeBasic.test_prange21À  sC   € ð	ð 	ð 	ð
 	×Ò˜9 a¸Ø*.ð 	ñ 	0ô 	0ð 	0ð 	0ð 	0rY   c                 ó>   — d„ }|                       |ddd¬¦  «         d S )Nc                  ó–   — d} d}t          j        d¦  «        }t          dd¦  «        D ]}|| k    r|||<   Œ|dk     rd||<   Œd||<   Œ |S )	Nr   r  r  r9  rý   rì   rJ   rf  r  r  s       rW   r
  z0TestPrangeBasic.test_prange22.<locals>.test_implÊ  sh   € ØˆAØˆAÝ”˜‘”ˆAÝ˜2˜q‘\”\ð ð �Ø˜’6�6Ø�A�a‘D�DØ˜’U�UØ�A�a‘D�Dà�A�a‘D�DØˆHrY   rò   T©r¸   r¹   râ  rì  r  s     rW   Útest_prange22zTestPrangeBasic.test_prange22É  sH   € ð	ð 	ð 	ð 	×Ò˜9°XØ*.Àdð 	ñ 	Lô 	Lð 	Lð 	Lð 	LrY   c                 óz   — d„ }t          j        d¦  «        d d d…         }|                      ||ddd¬¦  «         d S )Nc                 óN   — t          t          | ¦  «        ¦  «        D ]}|| |<   Œ| S r[   r4  ©r�  r  s     rW   r
  z0TestPrangeBasic.test_prange23.<locals>.test_implÛ  s-   € Ý�3˜q™6œ6‘]”]ð ð �Ø��!‘�ØˆHrY   é    rý   ró   TrS  ©rÀ   r@  rå  ©rT   r
  r�  s      rW   Útest_prange23zTestPrangeBasic.test_prange23Ù  sb   € ð	ð 	ð 	õ ŒH�R‰LŒL˜˜˜1˜ÔˆØ×Ò˜9 a¸
Ø*.Àdð 	ñ 	Lô 	Lð 	Lð 	Lð 	LrY   c                 óz   — d„ }t          j        d¦  «        d d d…         }|                      ||ddd¬¦  «         d S )Nc                 óR   — t          t          | ¦  «         d¦  «        D ]}|| |<   Œ| S rÑ  r4  rW  s     rW   r
  z0TestPrangeBasic.test_prange24.<locals>.test_implå  s3   € Ý�C ™FœF˜7 AÑ&Ô&ð ð �Ø��!‘�ØˆHrY   rX  rý   rò   TrS  rY  rZ  s      rW   Útest_prange24zTestPrangeBasic.test_prange24ã  sb   € ð	ð 	ð 	õ ŒH�R‰LŒL˜˜˜1˜ÔˆØ×Ò˜9 a¸Ø*.Àdð 	ñ 	Lô 	Lð 	Lð 	Lð 	LrY   c                 óF  — d„ }t          j        d¦  «        }|                      ||dgddd¬¦  «         |                      |t	          j        |¦  «        f¦  «        }|j        d         }|                     ¦   «         }|                      t          |¦  «        d¦  «         d S )	Nc                 ó�   ‡ — t          ‰ ¦  «        }ˆ fd„t          |¦  «        D ¦   «         }t          |¦  «        D ]
}‰ |z   ||<   Œ|S )Nc                 ó8   •— g | ]}t          j        ‰¦  «        ‘ŒS r}   )rÀ   Ú
zeros_like)r­   rK   r�  s     €rW   r¯   zDTestPrangeBasic.test_prange25.<locals>.test_impl.<locals>.<listcomp>ð  s#   ø€ Ð6Ð6Ð6¨•2”= Ñ#Ô#Ð6Ð6Ð6rY   )rÒ   r  )r�  r  r€  r  s   `   rW   r
  z0TestPrangeBasic.test_prange25.<locals>.test_implî  sV   ø€ Ý�A‘”ˆAØ6Ð6Ð6Ð6­U°1©X¬XÐ6Ñ6Ô6ˆCÝ˜1‘X”Xð ð �Ø˜Q™��A‘�ØˆJrY   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_prange25zTestPrangeBasic.test_prange25í  s±   € ð	ð 	ð 	õ ŒG�E‰NŒNˆØ×Ò˜9 a¸!¸Ø*4ÀTØ15ð 	ñ 	7ô 	7ð 	7ð ×&Ò& yµ5´<À±?´?Ð2DÑEÔEˆØ”oÐ&:Ô;ˆØ$×8Ò8Ñ:Ô:ˆØ×Ò�˜^Ñ,Ô,¨aÑ0Ô0Ð0Ð0Ð0rY   c                 óz   — d„ }t          j        d¦  «        d d d…         }|                      ||ddd¬¦  «         d S )Nc                 ód   — | d d d…         }t          t          |¦  «        ¦  «        D ]}|||<   Œ| S r|  r4  )r�  r¯  r  s      rW   r
  z0TestPrangeBasic.test_prange26.<locals>.test_implÿ  s<   € Ø�#�#�A�#”ˆAÝ�3˜q™6œ6‘]”]ð ð �Ø��!‘�ØˆHrY   rX  rý   ró   TrS  rY  rZ  s      rW   Útest_prange26zTestPrangeBasic.test_prange26þ  sb   € ð	ð 	ð 	õ
 ŒH�R‰LŒL˜˜˜1˜ÔˆØ×Ò˜9 a¸
Ø*.Àdð 	ñ 	Lô 	Lð 	Lð 	Lð 	LrY   c           	      ó’   — d„ }|                       |t          j        d¦  «        t          j        g d¢¦  «        ddgdd¬¦  «         d S )	Nc                 ó¤   — t          |d         dz
  ¦  «        D ]6}t          d¦  «        D ]$}t          j        | |dz
  |dz   …         ¦  «        }Œ%Œ7dS rü   )r  rÀ   Úabs)rˆ   r‰   rð  r€  r¾   rN  s         rW   r
  z0TestPrangeBasic.test_prange27.<locals>.test_impl
  s_   € Ý˜1˜Qœ4 ™6‘]”]ð +ð +�Ý˜q™œð +ð +�AÝœ˜q  1¡ Q q¡S œzÑ*Ô*�A�Að+à�1rY   rD  )
r  r  r  r  r  r  r  r  r  r  r   rì   ró   Tr!  )rå  rÀ   r  Úasarrayr  s     rW   Útest_prange27zTestPrangeBasic.test_prange27  si   € ð	ð 	ð 	ð 	×Ò˜9Ýœ9 R™=œ=Ýœ:Ð&;Ð&;Ð&;Ñ<Ô<ØØ+,¨#Ø*4Ø*.ð 	ñ 	0ô 	0ð 	0ð 	0ð 	0rY   c           	      óÔ   — d„ }t          j        ddgddgddgddgddgddgg¦  «        }t          j        ddgddgddgdd	gd	d
gg¦  «        }|                      |||ddd¬¦  «         d S )Nc                 ó  — t          j        t          |¦  «        ¦  «        }t          dt          |¦  «        ¦  «        D ]A}||df         }||df         }| |         }| |         }||z
  }|d         |d         z   }	|	||<   ŒB|S rÅ  )rÀ   r@  rÒ   r  )
r®   rm  rä  r"  Úi0Úi1ÚPt1ÚPt2ró  Úvl2s
             rW   r
  z0TestPrangeBasic.test_prange28.<locals>.test_impl  sŒ   € Ý”(�3˜q™6œ6Ñ"Ô"ˆCÝ˜Q¥ A¡¤Ñ'Ô'ð ð �Ø�s˜A�v”Y�Ø�s˜A�v”Y�Ø˜”e�Ø˜”e�Ø˜#‘I�Ø˜”d˜Q˜qœT‘k�Ø��C‘�ØˆJrY   ç      ð¿r^  r  r   rì   rý   r  r  r�   ró   TrS  )rÀ   r�  rå  rX  s       rW   Útest_prange28zTestPrangeBasic.test_prange28  sÇ   € ð
	ð 
	ð 
	õ ŒH�s˜C�jØ˜R�jØ˜R�jØ˜C�jØ˜R�jØ˜R�jð"ñ #ô #ˆõ ŒH�q˜!�fØ˜!�fØ˜!�fØ˜!�fØ˜!�fð	ñ ô ˆð 	×Ò˜9 a¨¸:Ø*.Àdð 	ñ 	Lô 	Lð 	Lð 	Lð 	LrY   c                 ód   — d„ }|                       |d¦  «         |                       |d¦  «         d S )Nc                 ól   — d}| rt          d¦  «        D ]}|dz  }Œnt          d¦  «        D ]}|dz  }Œ|S )Nr   rì   r  rƒ  )rä  r  r  s      rW   r
  z0TestPrangeBasic.test_prange29.<locals>.test_impl9  s[   € ØˆFØð  Ý˜q™œð  ð  �AØ˜a‘K�F�Fð õ ˜q™œð  ð  �AØ˜a‘K�F�FØˆMrY   TFrì  r  s     rW   Útest_prange29zTestPrangeBasic.test_prange297  sE   € ð	ð 	ð 	ð 	×Ò˜9 dÑ+Ô+Ð+Ø×Ò˜9 eÑ,Ô,Ð,Ð,Ð,rY   c                 ó¸   — d„ }t          j        t          j        ddd¦  «        ¦  «        }t          j        g d¢¦  «        }|                      |||d¦  «         d S )Nc                 ó,  — |j         d         }t          | ¦  «        }t          j        ||ft          j        ¬¦  «        }t          | ¦  «        |z   dz
  |z  }t          |¦  «        D ]-}||z  }|dz   |z  }	| ||	…         |d d …         z  |d d …||	…f<   Œ.|S r+  )rŽ  rÒ   rÀ   r@  r—  r  )
r®   ÚparÚ
numthreadsÚn_parÚn_xr  Úchunklenr  rÙ  rÚ  s
             rW   r
  z0TestPrangeBasic.test_prange30.<locals>.test_implH  s­   € Ø”I˜a”LˆEÝ�a‘&”&ˆCÝ”X˜u c˜lµ"´*Ð=Ñ=Ô=ˆFÝ˜A™œ Ñ+¨aÑ/°JÑ>ˆHå˜:Ñ&Ô&ð ?ð ?�Ø˜H™�Ø˜A™ Ñ)�Ø()¨%°¨*¬¸¸A¸A¸A¼Ñ(>��q�q�q˜% ˜*�}Ñ%Ð%àˆMrY   r   r  r^  r  rý   )rÀ   r�  r  rå  )rT   r
  r®   rz  s       rW   Útest_prange30zTestPrangeBasic.test_prange30F  sc   € ð	ð 	ð 	õ ŒH•R”Y˜q ! SÑ)Ô)Ñ*Ô*ˆÝŒh���Ñ'Ô'ˆà×Ò˜9 a¨¨aÑ0Ô0Ð0Ð0Ð0rY   N)(rx   rO   ry   rZ  rí  rñ  r÷  rû  rþ  r  r  r  r  r  r  r  r"  r'  ru  Úskipr+  r.  r1  r5  r8  r<  r@  rE  rJ  rM  rP  rT  r[  r^  rc  rf  rk  rt  rw  r  r}   rY   rW   rç  rç  ¶  sB  € € € € € àÐð0ð 0ð 0ð0ð 0ð 0ð0ð 0ð 0ð0ð 0ð 0ð0ð 0ð 0ð0ð 0ð 0ð0ð 0ð 0ð	0ð 	0ð 	0ð	0ð 	0ð 	0ð	0ð 	0ð 	0ð
0ð 
0ð 
0ð
0ð 
0ð 
0ð0ð 0ð 0ð0ð 0ð 0ð €X„]ÐFÑGÔGð0ð 0ñ HÔGð0ð	0ð 	0ð 	0ð0ð 0ð 0ð0ð 0ð 0ð
0ð 
0ð 
0ð0ð 0ð 0ð0ð 0ð 0ð
0ð 
0ð 
0ð
0ð 
0ð 
0ð0ð 0ð 0ð0ð 0ð 0ðLð Lð Lð Lð Lð LðLð Lð Lð1ð 1ð 1ð"Lð Lð Lð0ð 0ð 0ð"Lð Lð Lð<-ð -ð -ð1ð 1ð 1ð 1ð 1rY   rç  c                   óÞ   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚTestPrangeSpecificz4 Tests specific features/problems found under prangec                 ó8   — d„ }|                       |d¦  «         d S )Nc                 óN   — d}t          | ¦  «        D ]}|dz  }|dk    r|dz  }Œ|S ©Nr   rì   r  rƒ  ©r  rð  r  s      rW   r
  zRTestPrangeSpecific.test_prange_two_instances_same_reduction_var.<locals>.test_impla  ó=   € ØˆAÝ˜1‘X”Xð ð �Ø�Q‘�Ø�r’6�6Ø˜‘F�AøØˆHrY   r—  rì  r  s     rW   Ú,test_prange_two_instances_same_reduction_varz?TestPrangeSpecific.test_prange_two_instances_same_reduction_var_  s/   € ð	ð 	ð 	ð 	×Ò˜9 aÑ(Ô(Ð(Ð(Ð(rY   c                 óú   — d„ }|                       t          j        ¦  «        5 }|                      |d¦  «         d d d ¦  «         n# 1 swxY w Y   d}|                      |t          |j        ¦  «        ¦  «         d S )Nc                 óN   — d}t          | ¦  «        D ]}|dz  }|dk    r|dz  }Œ|S r…  rƒ  r†  s      rW   r
  zKTestPrangeSpecific.test_prange_conflicting_reduction_ops.<locals>.test_implk  r‡  rY   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_opsz8TestPrangeSpecific.test_prange_conflicting_reduction_opsj  s¾   € ð	ð 	ð 	ð ×Ò�vÔ6Ñ7Ô7ð 	-¸6Ø×Ò˜y¨!Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ðˆà�Š�c�3˜vÔ/Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1ó   £AÁA
ÁA
c                 ó6   — d„ }|                       |¦  «         d S )Nc                  ó�   — dx} }t          d¦  «        D ]/}|dk    r| dz  } Œt          j        d¦  «        }|d         r|dz  }Œ0| |fS )Nr   rì   rý   r1  r5  rÐ  )r�  r¯  r¾   r®   s       rW   r
  zLTestPrangeSpecific.test_prange_two_conditional_reductions.<locals>.test_impl{  sb   € ØˆIˆA�Ý˜1‘X”Xð ð �Ø˜’6�6Ø˜‘F�A�Aåœ Ñ(Ô(�AØ˜”wð Ø˜Q™˜øØ�a�4ˆKrY   rì  r  s     rW   Ú&test_prange_two_conditional_reductionsz9TestPrangeSpecific.test_prange_two_conditional_reductionsy  s-   € ð		ð 		ð 		ð 	×Ò˜9Ñ%Ô%Ð%Ð%Ð%rY   c                 ó6   — d„ }|                       |¦  «         d S )Nc                  óh   — d} t          d¦  «        D ]}t          d¦  «        D ]}|dk    r| dz  } ŒŒ | S rÅ  rƒ  )r�  r¾   r  s      rW   r
  zCTestPrangeSpecific.test_prange_nested_reduction1.<locals>.test_implˆ  sP   € ØˆAÝ˜1‘X”Xð ð �Ý˜q™œð ð �AØ˜A’v�vØ˜Q™˜øðð ˆHrY   rì  r  s     rW   Útest_prange_nested_reduction1z0TestPrangeSpecific.test_prange_nested_reduction1‡  s-   € ð	ð 	ð 	ð 	×Ò˜9Ñ%Ô%Ð%Ð%Ð%rY   c                 ó  — d„ }|                       t          ¦  «        5 } |¦   «          d d d ¦  «         n# 1 swxY w Y   |                      |d ¦  «        }|                      |d¦  «        }|                      |d¦  «        }|                       t          ¦  «        5 }|                     ¦   «          d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         }|                      |d         t          j        ¦  «         d S )Nc                  óf   — d} t          j        | ¦  «        }t          | ¦  «        D ]
}d|z  ||<   Œ|S )NrX  rì   rê  rñ  s      rW   r
  z<TestPrangeSpecific.test_check_error_model.<locals>.test_impl“  s=   € ØˆAÝ”˜‘”ˆAÝ˜1‘X”Xð ð �Ø˜1‘u��!‘�ØˆHrY   r}   r   )	r  ÚZeroDivisionErrorrà  r¢   r¥   rÍ   rÐ   rÀ   r  )rT   r
  r  rß  ÚpcresÚpfcresr  s          rW   Útest_check_error_modelz)TestPrangeSpecific.test_check_error_model‘  sv  € ð	ð 	ð 	ð ×ÒÕ0Ñ1Ô1ð 	°VØˆI‰KŒKˆKð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ×)Ò)¨)°TÑ:Ô:ˆØ×%Ò% e¨RÑ0Ô0ˆØ×/Ò/°°rÑ:Ô:ˆð ×ÒÕ0Ñ1Ô1ð 	 °VØ×ÒÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð ×#Ò#Ñ%Ô%ˆØ×Ò˜ œ¥B¤FÑ+Ô+Ð+Ð+Ð+s   ž5µ9¼9ÂB=Â=CÃCc                 ó  — d„ }t          j        d¦  «                             dd¦  «        }|                      ||ddd¬¦  «         |                      |d ¦  «        }t          t          j        |¦  «        g¦  «        }|                      ||¦  «        }|  	                    |¦  «        }| 
                    ¦   «         D ]O\  }}|                     ¦   «         D ]5}	d|	v r/||	v r+|                      |	                     d	¦  «        d
¦  «          nŒ6ŒPd S )Nc                 ób   — t          t          | ¦  «        ¦  «        D ]}| |         }d|d d …<   Œ| S r#  r4  )r�  r  r¯  s      rW   r
  z?TestPrangeSpecific.test_check_alias_analysis.<locals>.test_impl¬  s:   € Ý�3˜q™6œ6‘]”]ð ð �Ø�a”D�Ø��!�!�!‘�ØˆHrY   rX  r  rI  ró   TrS  ÚdefineÚnoaliasrý   )rÀ   r@  r  rå  rà  r±   r«   r   r¥   r5  rV  r?  rÐ   rR  )
rT   r
  r�  rß  rž   r÷   rW  r¾   ró  r¿  s
             rW   Útest_check_alias_analysisz,TestPrangeSpecific.test_check_alias_analysisª  s*  € ð	ð 	ð 	õ
 ŒH�R‰LŒL× Ò   AÑ&Ô&ˆØ×Ò˜9 a¸
Ø*.Àdð 	ñ 	Lô 	Lð 	Là×)Ò)¨)°TÑ:Ô:ˆÝ•U”\ !‘_”_Ð%Ñ&Ô&ˆØ×-Ò-¨e°SÑ9Ô9ˆØ×!Ò! $Ñ'Ô'ˆØ—I’I‘K”Kð 	ð 	‰DˆAˆqØŸš™œð ð �à˜tÐ#Ð#¨¨T¨	¨	ð ×$Ò$ T§Z¢Z°	Ñ%:Ô%:¸AÑ>Ô>Ð>Ø�Eøøð	ð 	rY   c                 óú   — d„ }|                       t          j        ¦  «        5 }|                      |d¦  «         d d d ¦  «         n# 1 swxY w Y   d}|                      |t          |j        ¦  «        ¦  «         d S )Nc                 ó<   — d}t          d| d¦  «        D ]}|dz  }Œ|S rÒ  rƒ  r;  s      rW   r
  zJTestPrangeSpecific.test_prange_raises_invalid_step_size.<locals>.test_implÃ  s0   € ØˆCÝ˜1˜a ‘^”^ð ð �Ø�q‘��ØˆJrY   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_sizez7TestPrangeSpecific.test_prange_raises_invalid_step_sizeÂ  s¼   € ð	ð 	ð 	ð ×Ò�vÔ=Ñ>Ô>ð 	0À&Ø×Ò˜y¨$Ñ/Ô/Ð/ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0àDˆØ�Š�c�3˜vÔ/Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1rŽ  c                 ó>  — d„ }|                       |dd¬¦  «         |                      |d ¦  «        }|                      |d¦  «        }|                      |¦  «        }d}d}t	          j        |||fz  ¦  «        }t	          j        d|›d	|›d
|›�¦  «        } |j        ¦   «         D ]v\  }	}
|
                     ¦   «         }t          |¦  «        D ]\  }}| 	                    |¦  «        r nŒ|  
                    | 	                    ||dz            ¦  «        ¦  «         Œwd S )Nc                  óB   — d} d}t          | ¦  «        D ]
}||dz  z  }Œ|S )NrÈ  r   r+  rƒ  rñ  s      rW   r
  zFTestPrangeSpecific.test_prange_fastmath_check_works.<locals>.test_implÒ  s5   € ØˆAØˆAÝ˜1‘X”Xð ð �Ø�Q˜‘W‘��ØˆHrY   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, rì   )rå  rà  r¥   r5  r@  ÚcompilerV  r?  rÆ  rT  rN  )rT   r
  rß  r÷   r   Ú_idÚ
recipr_strÚreciprocal_instÚ	fadd_instr   ÚkernelrB  r  r®   s                 rW   Ú test_prange_fastmath_check_worksz3TestPrangeSpecific.test_prange_fastmath_check_worksÎ  s[  € ð	ð 	ð 	ð 	×Ò˜9°ZØ*.ð 	ñ 	0ô 	0ð 	0à×)Ò)¨)°TÑ:Ô:ˆØ×-Ò-¨e°RÑ8Ô8ˆØ× Ò  Ñ&Ô&ˆØ-ˆØ@ˆ
Ýœ* Z°3¸°*Ñ%<Ñ=Ô=ˆÝ”J�JØ"% # # s s s¨C¨Cð 1ñ 2ô 2ˆ	ð
 %˜BœH™JœJð 	>ð 	>‰LˆD�&Ø×(Ò(Ñ*Ô*ˆHÝ! (Ñ+Ô+ð ð ‘��1Ø"×(Ò(¨Ñ+Ô+ð Ø�Eðà�OŠO˜IŸOšO¨H°Q¸±U¬OÑ<Ô<Ñ=Ô=Ð=Ð=ð	>ð 	>rY   c                 ó8   — d„ }|                       |d¦  «         d S )Nc                 óš   — t          j        | | f¦  «        }|d         }t          | ¦  «        D ]
}|dz   ||<   Œ|                     ¦   «         S rÅ  ©rÀ   r@  r  r  )r  r‰   rˆ   r€  s       rW   r
  z8TestPrangeSpecific.test_parfor_alias1.<locals>.test_implí  sO   € Ý”˜!˜Q˜Ñ Ô ˆAØ�!”ˆAÝ˜1‘X”Xð ð �Ø˜1‘u��!‘�Ø—5’5‘7”7ˆNrY   r  rì  r  s     rW   Útest_parfor_alias1z%TestPrangeSpecific.test_parfor_alias1ì  s/   € ð	ð 	ð 	ð 	×Ò˜9 aÑ(Ô(Ð(Ð(Ð(rY   c                 ó8   — d„ }|                       |d¦  «         d S )Nc                 ó¾   — t          j        | | f¦  «        }t          | ¦  «        D ]$}||         }t          | ¦  «        D ]
}||z   ||<   ŒŒ%|                     ¦   «         S r[   r®  )r  r‰   r  rˆ   r€  s        rW   r
  z8TestPrangeSpecific.test_parfor_alias2.<locals>.test_implö  si   € Ý”˜!˜Q˜Ñ Ô ˆAÝ˜1‘X”Xð ð �Ø�A”$ˆaÝ˜Q‘x”xð ð �!Ø˜1‘u��!‘�ðà—5’5‘7”7ˆNrY   r  rì  r  s     rW   Útest_parfor_alias2z%TestPrangeSpecific.test_parfor_alias2õ  s/   € ð	ð 	ð 	ð 	×Ò˜9 aÑ(Ô(Ð(Ð(Ð(rY   c                 ó8   — d„ }|                       |d¦  «         d S )Nc                 óú   — t          j        | | | f¦  «        }t          | ¦  «        D ]A}||         }t          | ¦  «        D ]'}||         }t          | ¦  «        D ]}||z   |z   ||<   ŒŒ(ŒB|                     ¦   «         S r[   r®  )r  r‰   r  rˆ   r€  rð  r¾   s          rW   r
  z8TestPrangeSpecific.test_parfor_alias3.<locals>.test_impl   s”   € Ý”˜!˜Q ˜Ñ#Ô#ˆAÝ˜1‘X”Xð #ð #�Ø�A”$ˆaÝ˜Q‘x”xð #ð #�!Ø�a”D�Ý˜q™œð #ð #�AØ˜Q™ ™�!�A‘$�$ð#ð#ð —5’5‘7”7ˆNrY   r  rì  r  s     rW   Útest_parfor_alias3z%TestPrangeSpecific.test_parfor_alias3ÿ  s/   € ð	ð 	ð 	ð 	×Ò˜9 aÑ(Ô(Ð(Ð(Ð(rY   c                 óž   — d„ }|                       |dd¦  «        }|d         }d}|                      |t          |j        ¦  «        ¦  «         d S )Nc                 ó.   — t          |¦  «        D ]}| }Œ|S r[   rƒ  )r®   rm  r€  r¾   s       rW   r
  z8TestPrangeSpecific.test_parfor_race_1.<locals>.test_impl  s#   € Ý˜1‘X”Xð ð �Ø��ØˆHrY   r  rD  r   z�Variable 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"  r®  )rT   r
  r¸  Úwarning_objÚexpected_msgs        rW   Útest_parfor_race_1z%TestPrangeSpecific.test_parfor_race_1  sc   € ð	ð 	ð 	ð ×,Ò,¨Y¸¸BÑ?Ô?ˆØ% aÔ(ˆðFˆð 	�Š�l¥C¨Ô(;Ñ$<Ô$<Ñ=Ô=Ð=Ð=Ð=rY   c                 ó6   — d„ }|                       |¦  «         dS )až   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                  ó.  — d} t           j        }t          d¦  «        D ]3} |d¦  «        }|  |t          j        d¦  «        ¦  «        d         z  } Œ4t          d¦  «        D ]3} |d¦  «        }|  |t          j        d¦  «        ¦  «        d         z  } Œ4| S )Nr   rì   r^  rý   )rÀ   Únegativer  r@  )r¯  r  r  Úthis_matterss       rW   r
  zGTestPrangeSpecific.test_nested_parfor_push_call_vars.<locals>.test_impl  s™   € ØˆAÝ”ˆAÝ˜1‘X”Xð (ð (�Ø ˜q ™uœu�Ø�Q�Q•r”x ‘|”|‘_”_ QÔ'Ñ'��Ý˜1‘X”Xð (ð (�Ø ˜q ™uœu�Ø�Q�Q•r”x ‘|”|‘_”_ QÔ'Ñ'��àˆHrY   Nrì  r  s     rW   Ú!test_nested_parfor_push_call_varsz4TestPrangeSpecific.test_nested_parfor_push_call_vars  s-   € ð
	ð 
	ð 
	ð 	×Ò˜9Ñ%Ô%Ð%Ð%Ð%rY   c                 ó²   — d„ }d}t          j        |||f¦  «        }t          j        |t           j        ¬¦  «        }|                      |||dg¬¦  «         dS )a+   issue4903: 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                 ó†  — t          j        t          |¦  «        ¦  «        }t          j        t          |¦  «        ¦  «        }t          d¦  «        D ]l}||         }t          |¦  «        D ]!}|t          j        | ||f         ¦  «        z  }Œ"t          |¦  «        D ]!}|t          j        | ||f         ¦  «        z  }Œ"Œm||fS r#  )rÀ   r@  rÒ   r  ra  )ÚzzÚtcÚlhÚlcr  ÚntrÅ  s          rW   r
  zATestPrangeSpecific.test_copy_global_for_parfor.<locals>.test_impl3  s¾   € Ý”�#˜b™'œ'Ñ"Ô"ˆBÝ”�#˜b™'œ'Ñ"Ô"ˆBÝ˜1‘X”Xð +ð +�Ø˜”U�Ý˜r™œð +ð +�AØ�"œ&  A q D¤Ñ*Ô*Ñ*�B�BÝ˜r™œð +ð +�AØ�"œ&  A q D¤Ñ*Ô*Ñ*�B�Bð+à�r�6ˆMrY   rý   r'  r   )rÖ  N)rÀ   r	  r  rå  )rT   r
  rD  rÂ  rÃ  s        rW   Útest_copy_global_for_parforz.TestPrangeSpecific.test_copy_global_for_parfor,  sh   € ð		ð 		ð 		ð ˆÝŒW�a˜˜A�YÑÔˆÝŒW�Q�bœgÐ&Ñ&Ô&ˆØ×Ò˜9 b¨"¸a¸SÐÑAÔAÐAÐAÐArY   c                 ó8   — d„ }|                       |d¦  «         d S )Nc                 óx   — d}t           j        }t          d¦  «        D ]} |d¦  «        }| || ¦  «        z  }Œ|S )Nr   rì   r^  )rÀ   r½  r  )r  r¯  r  r  r¾  s        rW   r
  zGTestPrangeSpecific.test_multiple_call_getattr_object.<locals>.test_implD  sH   € ØˆAÝ”ˆAÝ˜1‘X”Xð ð �Ø ˜q ™vœv�Ø�Q�Q�q‘T”T‘	��àˆHrY   r^  rì  r  s     rW   Ú!test_multiple_call_getattr_objectz4TestPrangeSpecific.test_multiple_call_getattr_objectC  s/   € ð	ð 	ð 	ð 	×Ò˜9 cÑ*Ô*Ð*Ð*Ð*rY   c                 óÎ  — d„ }t          j        ddt          fdt          fg¬¦  «        }t          j        ddt          fdt          fg¬¦  «        }t          j        ddt          fdt          fg¬¦  «        }|                     t           j        ¦  «        }|                     t           j        ¦  «        }|                     t           j        ¦  «        }t           ||¦  «        ¦  «        }t           t          |¦  «        |¦  «        ¦  «        }	t          |d¬¦  «        }
t           |
|¦  «        ¦  «        }|                      ||	¦  «         |                      ||¦  «         d S )Nc                 óX   — t          t          | ¦  «        ¦  «        D ]}d| j        |<   Œ| S r9  )r  rÒ   r®   )r  r  s     rW   r
  zHTestPrangeSpecific.test_argument_alias_recarray_field.<locals>.test_implP  s/   € Ý�3˜q™6œ6‘]”]ð ð �Ø�”�A‘�ØˆHrY   r  r®   rm  r'  Tr\  )	rÀ   r@  r9  rö  ÚviewÚrecarrayrÈ   r   rÐ   )rT   r
  ÚX1ÚX2ÚX3rI  rJ  Úv3Ú
python_resÚnjit_resÚpa_funcÚpa_ress               rW   Ú"test_argument_alias_recarray_fieldz5TestPrangeSpecific.test_argument_alias_recarray_fieldN  s<  € ð	ð 	ð 	õ ŒX�b #¥u °µS¨zÐ <Ð=Ñ=Ô=ˆÝŒX�b #¥u °µS¨zÐ <Ð=Ñ=Ô=ˆÝŒX�b #¥u °µS¨zÐ <Ð=Ñ=Ô=ˆØ�WŠW•R”[Ñ!Ô!ˆØ�WŠW•R”[Ñ!Ô!ˆØ�WŠW•R”[Ñ!Ô!ˆõ ˜)˜) B™-œ-Ñ(Ô(ˆ
Ý˜�˜Y™œ¨Ñ+Ô+Ñ,Ô,ˆÝ�y¨4Ð0Ñ0Ô0ˆÝ�g�g˜b‘k”kÑ"Ô"ˆØ×Ò˜ XÑ.Ô.Ð.Ø×Ò˜ VÑ,Ô,Ð,Ð,Ð,rY   c                 ó  ‡— t           d„ ¦   «         Šˆfd„} |d¦  «        } t          |¦  «        d¦  «        }t          |d¬¦  «        } |d¦  «        }|                      ||¦  «         |                      ||¦  «         dS )zº issue3699: 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                 óV   — | d         }| d         dz   }|                       |¦  «         |S )z£ If the variable X is hoisted in the test_impl prange
                then subsequent list_check calls would return increasing
                values.
            rJ   rì   )rÂ   )rv  rß  rˆ   s      rW   Ú
list_checkz>TestPrangeSpecific.test_mutable_list_param.<locals>.list_checki  s.   € ð �B”%ˆCØ�"”˜‘	ˆAØ�HŠH�Q‰KŒKˆKØˆJrY   c                 óH   •— t          | ¦  «        D ]}dg} ‰|¦  «        }Œ|S rô  rÀ  )r  r  rv  rˆ   rÚ  s       €rW   r
  z=TestPrangeSpecific.test_mutable_list_param.<locals>.test_impls  s3   ø€ Ý˜A‘Y”Yð "ð "�Ø�E�Ø�J˜q‘M”M��ØˆHrY   r  Tr\  N©r   rÐ   )rT   r
  rÓ  rÔ  rÕ  rÖ  rÚ  s         @rW   Útest_mutable_list_paramz*TestPrangeSpecific.test_mutable_list_paramd  s¬   ø€ õ
 
ð	ð 	ñ 
Œð	ð	ð 	ð 	ð 	ð 	ð
 �Y˜r‘]”]ˆ
Ø"•4˜	‘?”? 2Ñ&Ô&ˆÝ�y¨4Ð0Ñ0Ô0ˆØ�˜‘”ˆØ×Ò˜ XÑ.Ô.Ð.Ø×Ò˜ VÑ,Ô,Ð,Ð,Ð,rY   c                 ó¬   — d„ }t          j        g d¢t          ¬¦  «        t          j        ddgt          ¬¦  «        g}|                      ||¦  «         d S )Nc                 óx   ‡ — t          j        ˆ fd„t          t          ‰ ¦  «        ¦  «        D ¦   «         ¦  «        S )Nc                 ó:   •— g | ]}t          ‰|         ¦  «        ‘ŒS r}   )rÒ   )r­   r  r®   s     €rW   r¯   zXTestPrangeSpecific.test_list_comprehension_prange.<locals>.test_impl.<locals>.<listcomp>‚  s#   ø€ Ð>Ð>Ð>¨1�S  1¤™YœYÐ>Ð>Ð>rY   )rÀ   r�  r  rÒ   r=  s   `rW   r
  zDTestPrangeSpecific.test_list_comprehension_prange.<locals>.test_impl�  s4   ø€ Ý”8Ð>Ð>Ð>Ð>µµc¸!±f´f±´Ð>Ñ>Ô>Ñ?Ô?Ð?rY   )rì   rý   r  r'  rì   rý   )rÀ   r�  rö  rå  r4  s      rW   Útest_list_comprehension_prangez1TestPrangeSpecific.test_list_comprehension_prange  s`   € ð	@ð 	@ð 	@åŒX�g�g�g¥SÐ)Ñ)Ô)­"¬(°A°a°5ÅÐ*DÑ*DÔ*DÐEˆØ×Ò˜9 aÑ(Ô(Ð(Ð(Ð(rY   c                 ó|   — d„ }t          j        dt           j        ¬¦  «        }|                      ||dd¦  «         d S )Nc                 óÄ   — t          j        | j        ¦  «        }t          | j        d         ¦  «        D ]+}| |         d         dz  }|dk    rd}|dk    rd}|||g||<   Œ,|S )Nr   g     ào@)rÀ   r@  rŽ  r  )Úimagerˆ   r‰   râ  r  rï  Úhs          rW   r
  z>TestPrangeSpecific.test_ssa_false_reduction.<locals>.test_implŒ  st   € Ý”H˜Uœ[Ñ)Ô)ˆEÝ˜5œ; qœ>Ñ*Ô*ð %ð %�Ø˜!”H˜Q”K %Ñ'�Ø˜’6�6Ø�AØ˜’6�6Ø�AØ˜q !˜9��a‘�ØˆLrY   rj  r'  r   )rÀ   r@  r  rå  )rT   r
  rä  s      rW   Útest_ssa_false_reductionz+TestPrangeSpecific.test_ssa_false_reduction†  sI   € ð		ð 		ð 		õ ”˜¥r¤xÐ0Ñ0Ô0ˆØ×Ò˜9 e¨Q°Ñ2Ô2Ð2Ð2Ð2rY   c                 ó6   — d„ }|                       |¦  «         d S )Nc                  ó”   — d} t          j        | t           j        ¬¦  «        }t          d¦  «        D ]}dg}d|d<   |d         ||<   Œ|S )Nr�   r'  r   rì   )rÀ   râ  r’  r  )r  rˆ   r¾   rv  s       rW   r
  z@TestPrangeSpecific.test_list_setitem_hoisting.<locals>.test_impl�  sV   € ØˆAÝ”˜¥"¤(Ð+Ñ+Ô+ˆAÝ˜1‘X”Xð ð �Ø�C�Ø��!‘Ø˜”t��!‘�ØˆHrY   rì  r  s     rW   Útest_list_setitem_hoistingz-TestPrangeSpecific.test_list_setitem_hoistingš  s-   € ð	ð 	ð 	ð 	×Ò˜9Ñ%Ô%Ð%Ð%Ð%rY   c                 ó®   — t          j        dt           j        fg¦  «        }d„ }d„ }|                      |t          j        d|¬¦  «        |g¬¦  «         d S )Nrñ  c                 ó@   — t          d¦  «        D ]}d| |         d<   Œd S )Nrì   rñ  rƒ  )Ústatesr  s     rW   r
  z?TestPrangeSpecific.test_record_array_setitem.<locals>.test_impl¬  s2   € Ý˜1‘X”Xð %ð %�Ø#$��q”	˜%Ñ Ð ð%ð %rY   c                 óF   — | d         d         |d         d         k    sJ ‚d S )Nr   rñ  r}   r‡   s     rW   r…  z>TestPrangeSpecific.test_record_array_setitem.<locals>.comparer°  s)   € Ø�Q”4˜”; ! A¤$ u¤+Ò-Ð-Ð-Ð-Ð-Ð-rY   rì   )rŽ  r(  r‡  )rÀ   r(  r  rå  r@  )rT   Ústate_dtyper
  r…  s       rW   Útest_record_array_setitemz,TestPrangeSpecific.test_record_array_setitem¨  s{   € å”h ­¬Ð 1Ð2Ñ3Ô3ˆð	%ð 	%ð 	%ð	/ð 	/ð 	/ð 	×Ò˜9Ýœ8¨!°;Ð?Ñ?Ô?Ø/7¨jð 	ñ 	:ô 	:ð 	:ð 	:ð 	:rY   c                 ó²   — t          j        dt           j        fg¦  «        }d„ }t          j        d|¬¦  «        }d„ }|                      |||g¬¦  «         d S )Nr®   c                 ó^   — | j         }t          | j         ¦  «        D ]}d|z   | d         |<   Œ| S )Nrf  r®   )ræ  r  )rì  r  r  s      rW   r
  zKTestPrangeSpecific.test_record_array_setitem_yield_array.<locals>.test_implº  s:   € Ø”ˆAÝ˜6œ;Ñ'Ô'ð 'ð '�Ø!" Q¡��s”˜A‘�ØˆMrY   r  r'  c                 óF   — t           j                             | |¦  «         d S r[   rƒ  r‡   s     rW   r…  zJTestPrangeSpecific.test_record_array_setitem_yield_array.<locals>.comparerÂ  r†  rY   r‡  )rÀ   r(  r“  r@  rå  )rT   rî  r
  rì  r…  s        rW   Ú%test_record_array_setitem_yield_arrayz8TestPrangeSpecific.test_record_array_setitem_yield_array·  s�   € Ý”h ¥b¤g Ð/Ñ0Ô0ˆð	ð 	ð 	õ ”˜" KÐ0Ñ0Ô0ˆð	*ð 	*ð 	*ð 	×Ò˜9Ø!Ø/7¨jð 	ñ 	:ô 	:ð 	:ð 	:ð 	:rY   c                 ó:   — d„ }|                       |dd¦  «         d S )Nc                 óÒ   — t          j        | f¦  «        }|dk    r#t          | ¦  «        D ]}||xx         dz  cc<   Œn"t          | ¦  «        D ]}||xx         dz  cc<   Œ|d         S )Nrì   rý   r   rê  )ræ  Úcaser  r  s       rW   r
  z4TestPrangeSpecific.test_issue7501.<locals>.test_implÊ  s…   € Ý”X˜t˜gÑ&Ô&ˆFØ�qŠyˆyÝ˜t™œð #ð #�AØ˜1�I�I”I ‘N�I�I‘I�Ið#õ ˜t™œð #ð #�AØ˜1�I�I”I ‘N�I�I‘I�IØ˜!”9ÐrY   r  rì   rì  r  s     rW   Útest_issue7501z!TestPrangeSpecific.test_issue7501É  s1   € ð	ð 	ð 	ð 	×Ò˜9 a¨Ñ+Ô+Ð+Ð+Ð+rY   c                 óz   — d„ }d}t           j                             |¦  «        }|                      ||¦  «         d S )Nc                 ó   — d}t          j        g d¢¦  «        }|j        d         }| j        d         }d}t          |¦  «        D ]‰}| |         }||z
  dz   d|dz  z  z  }t          j        |¦  «        }	||	t          j        ||z  ¦  «        z
  t          j        t          j        t          j        ||	z
  ¦  «        ¦  «        ¦  «        z   z  }ŒŠ|S )Nr]  )rs  r+  rQ  r   rý   )rÀ   r�  rŽ  r  r²  r_  r  ra  )
rv  r‰   Úpointsr’  r  Úexpsr  ÚprÖ  rD  s
             rW   r
  z6TestPrangeSpecific.test_kde_example.<locals>.test_impl×  sÉ   € àˆAÝ”XÐ.Ð.Ð.Ñ/Ô/ˆFØ”˜Q”ˆAØ”˜”
ˆAØˆDÝ˜1‘X”Xð Jð J�Ø�a”D�Ø˜6‘z A‘oÐ%¨!¨a°©d©(Ñ3�Ý”F˜1‘I”I�Ø˜�BœF 1 q¡5™MœMÑ)­B¬Fµ2´6½"¼&ÀÀQÁ¹-¼-Ñ3HÔ3HÑ,IÔ,IÑIÑI��ØˆKrY   rÈ  )rÀ   rŽ  r�  rå  )rT   r
  r  rv  s       rW   Útest_kde_examplez#TestPrangeSpecific.test_kde_exampleÖ  sG   € ð	ð 	ð 	ð ˆÝŒI�NŠN˜1ÑÔˆØ×Ò˜9 aÑ(Ô(Ð(Ð(Ð(rY   c                 ó²   — t          j        t          j        ddgdt           j        ¬¦  «        }|                      d|                     ¦   «         ¦  «         d S )Nz-mz#numba.tests.parfors_max_label_errorrÝ  )rN   ÚstderrzTEST PASSED)ÚsubpÚcheck_outputÚsysÚ
executableÚSTDOUTrô   Údecode)rT   rä  s     rW   Útest_issue_due_to_max_labelz.TestPrangeSpecific.test_issue_due_to_max_labelé  sT   € õ ÔÝŒ^˜TÐ#HÐIØÝ”;ð
ñ 
ô 
ˆð
 	�Š�m S§Z¢Z¡\¤\Ñ2Ô2Ð2Ð2Ð2rY   c                 ó`   — d„ }t          j        d¦  «        }|                      ||¦  «         d S )Nc                 óÂ   — t          j        | ¦  «        }t          j        | ¦  «        }t          t	          | ¦  «        ¦  «        D ]}|                     ¦   «         ||<   Œ|S r[   )rÀ   rb  r¯  r  rÒ   r  )r®   r�  r  r  s       rW   r
  z4TestPrangeSpecific.test_issue7578.<locals>.test_implö  sQ   € Ý”˜aÑ Ô ˆAÝ”&˜‘)”)ˆCå�3˜q™6œ6‘]”]ð !ð !�Ø—w’w‘y”y��!‘�àˆHrY   rS  )rÀ   r  rå  r4  s      rW   Útest_issue7578z!TestPrangeSpecific.test_issue7578ô  s<   € ð	ð 	ð 	õ ŒI�c‰NŒNˆØ×Ò˜9 aÑ(Ô(Ð(Ð(Ð(rY   N) rx   rO   ry   rZ  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}   rY   rW   r‚  r‚  [  sÉ  € € € € € à>Ð>ð	)ð 	)ð 	)ð2ð 2ð 2ð&ð &ð &ð&ð &ð &ð ð,ð ,ñ „]ð,ð0ð ð ð0
2ð 
2ð 
2ð>ð >ð >ð<)ð )ð )ð)ð )ð )ð
)ð 
)ð 
)ð
>ð 
>ð 
>ð&ð &ð &ð*Bð Bð Bð.	+ð 	+ð 	+ð-ð -ð -ð,-ð -ð -ð6)ð )ð )ð3ð 3ð 3ð(&ð &ð &ð:ð :ð :ð:ð :ð :ð$,ð ,ð ,ð)ð )ð )ð& ð3ð 3ñ Ôð3ð ð)ð )ñ Ôð)ð )ð )rY   r‚  c                   óX   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ ZdS )ÚTestParforChunksizingz:
    Tests chunksize handling in ParallelAccelerator.
    Fc                 ó$   — t          d¦  «         d S rÑ  ©r   r]   s    rW   ÚsetUpzTestParforChunksizing.setUp	  ó   € Ý˜qÑ!Ô!Ð!Ð!Ð!rY   c                 ó$   — t          d¦  «         d S rÑ  r  r]   s    rW   ÚtearDownzTestParforChunksizing.tearDown  r  rY   c                 ó  — |                       t          ¦   «         d¦  «         t          d¦  «         |                       t          ¦   «         d¦  «         t          d¦  «         |                       t          ¦   «         d¦  «         d S ©Nr   rI  )rÐ   r   r   r]   s    rW   Ú$test_python_parallel_chunksize_basicz:TestParforChunksizing.test_python_parallel_chunksize_basic  s{   € à×ÒÕ/Ñ1Ô1°1Ñ5Ô5Ð5Ý˜qÑ!Ô!Ð!Ø×ÒÕ/Ñ1Ô1°1Ñ5Ô5Ð5Ý˜qÑ!Ô!Ð!Ø×ÒÕ/Ñ1Ô1°1Ñ5Ô5Ð5Ð5Ð5rY   c                 ó   — |                       t          ¦   «         d¦  «         t          d¦  «        5  |                       t          ¦   «         d¦  «         d d d ¦  «         n# 1 swxY w Y   |                       t          ¦   «         d¦  «         d S r  )rÐ   r   r   r]   s    rW   Útest_python_with_chunksizez0TestParforChunksizing.test_python_with_chunksize  sÂ   € à×ÒÕ/Ñ1Ô1°1Ñ5Ô5Ð5Ý Ñ"Ô"ð 	:ð 	:Ø×ÒÕ3Ñ5Ô5°qÑ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:à×ÒÕ/Ñ1Ô1°1Ñ5Ô5Ð5Ð5Ð5s   ²#A!Á!A%Á(A%c                 ó&  — t           d„ ¦   «         }t           d„ ¦   «         }|                       |¦   «         d¦  «          |d¦  «         |                       |¦   «         d¦  «          |d¦  «         |                       |¦   «         d¦  «         d S )Nc                  ó   — t          ¦   «         S r[   )r   r}   rY   rW   Úget_cszHTestParforChunksizing.test_njit_parallel_chunksize_basic.<locals>.get_cs   s   € å)Ñ+Ô+Ð+rY   c                 ó    — t          | ¦  «        S r[   r  r=  s    rW   Úset_cszHTestParforChunksizing.test_njit_parallel_chunksize_basic.<locals>.set_cs$  s   € å)¨!Ñ,Ô,Ð,rY   r   rI  rÜ  )rT   r  r  s      rW   Ú"test_njit_parallel_chunksize_basicz8TestParforChunksizing.test_njit_parallel_chunksize_basic  s¬   € å	ð	,ð 	,ñ 
Œð	,õ 
ð	-ð 	-ñ 
Œð	-ð 	×Ò˜˜™œ 1Ñ%Ô%Ð%Øˆˆq‰	Œ	ˆ	Ø×Ò˜˜™œ 1Ñ%Ô%Ð%Øˆˆq‰	Œ	ˆ	Ø×Ò˜˜™œ 1Ñ%Ô%Ð%Ð%Ð%rY   c                 óÈ   — t           d„ ¦   «         } |d¦  «        \  }}}|                      |d¦  «         |                      |d¦  «         |                      |d¦  «         d S )Nc                 ó®   — t          ¦   «         }t          d¦  «        5  t          ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          ¦   «         }|||fS )NrI  )r   r   )r®   Úcs1Úcs2Úcs3s       rW   r
  zATestParforChunksizing.test_njit_with_chunksize.<locals>.test_impl0  s’   € å(Ñ*Ô*ˆCÝ# AÑ&Ô&ð /ð /Ý,Ñ.Ô.�ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /å(Ñ*Ô*ˆCØ˜˜S�=Ð s   ž9¹=Á =rI  r   rÜ  )rT   r
  r  r   r!  s        rW   Útest_njit_with_chunksizez.TestParforChunksizing.test_njit_with_chunksize.  sx   € å	ð	!ð 	!ñ 
Œð	!ð "˜	 !™œ‰ˆˆS�#à×Ò˜˜aÑ Ô Ð Ø×Ò˜˜aÑ Ô Ð Ø×Ò˜˜aÑ Ô Ð Ð Ð rY   c                 ó6  — t          d¬¦  «        d„ ¦   «         }dD ]|}t          d¦  «        D ]j} ||dz   |¦  «        \  }}|                      t          j        |dk    ¦  «        ¦  «         |                      t          j        |dk    ¦  «        ¦  «         ŒkŒ}d	S )
z© Test 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                 ó  — t          j        |¦  «        }t          j        |d¦  «        }t          j        | ¦  «        5  t          j        |¦  «        D ]}t          j        ¦   «         ||<   d||<   Œ	 d d d ¦  «         n# 1 swxY w Y   ||fS )Nióÿÿÿr  )rÀ   r@  r,  r«   r   r   r   )Úcsr  rË  Úinner_csr  s        rW   r
  zLTestParforChunksizing.test_all_iterations_reset_chunksize.<locals>.test_implC  sÉ   € å”(˜1‘+”+ˆCÝ”w˜q #‘”ˆHÝÔ)¨"Ñ-Ô-ð  ð  Ýœ a™œð  ð  �AÝ"'Ô">Ñ"@Ô"@�H˜Q‘KØ�C˜‘F�Fð ð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð ˜�=Ð s   ¾3A>Á>BÂB)iè  iå  i¯  iÁ  rn  rì   r  r   N)r   r  rN  rÀ   Úall)rT   r
  r€  r  rË  r&  s         rW   Ú#test_all_iterations_reset_chunksizez9TestParforChunksizing.test_all_iterations_reset_chunksize>  sº   € õ
 
�tÐ	Ñ	Ô	ð	!ð 	!ñ 
Ô	ð	!ð 'ð 	7ð 	7ˆAÝ˜2‘Y”Yð 7ð 7�Ø ) 	¨!¨A©#¨qÑ 1Ô 1‘��XØ—’¥¤ s¨b¢yÑ 1Ô 1Ñ2Ô2Ð2Ø—’¥¤ x°1¢}Ñ 5Ô 5Ñ6Ô6Ð6Ð6ð7ð	7ð 	7rY   c                 óò   — |                       t          ¦  «        5 }t          d„ ¦   «         } |¦   «          d d d ¦  «         n# 1 swxY w Y   d}|                      |t	          |j        ¦  «        ¦  «         d S )Nc                  ó$   — t          d¦  «         d S )NrJ   r  r}   rY   rW   Úneg_testzMTestParforChunksizing.test_njit_parallel_chunksize_negative.<locals>.neg_testY  s   € å& rÑ*Ô*Ð*Ð*Ð*rY   ú/chunksize must be greater than or equal to zero)r  rÉ   r   rô   r"  r  )rT   ra  r+  rù   s       rW   Ú%test_njit_parallel_chunksize_negativez;TestParforChunksizing.test_njit_parallel_chunksize_negativeV  s»   € à×Ò�zÑ*Ô*ð 	¨fÝð+ð +ñ ŒTð+ð ˆH‰JŒJˆJð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð @ˆØ�Š�c�3˜vÔ/Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1s   ›AÁAÁ	Ac                 óÜ   — |                       t          ¦  «        5 }t          d¦  «         d d d ¦  «         n# 1 swxY w Y   d}|                      |t	          |j        ¦  «        ¦  «         d S )NrJ   r,  )r  rÉ   r   rô   r"  r  ©rT   ra  rù   s      rW   Ú'test_python_parallel_chunksize_negativez=TestParforChunksizing.test_python_parallel_chunksize_negativeb  s£   € à×Ò�zÑ*Ô*ð 	'¨fÝ" 2Ñ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð @ˆØ�Š�c�3˜vÔ/Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1ó   ›7·;¾;c                 óü   — |                       t          j        ¦  «        5 }t          d„ ¦   «         } |¦   «          d d d ¦  «         n# 1 swxY w Y   d}|                      |t          |j        ¦  «        ¦  «         d S )Nc                  ó$   — t          d¦  «         d S )NÚinvalid_typer  r}   rY   rW   rè   zMTestParforChunksizing.test_njit_parallel_chunksize_invalid_type.<locals>.impll  s   € å& ~Ñ6Ô6Ð6Ð6Ð6rY   ú)The parallel chunksize must be an integer)r  r   ÚTypingErrorr   rô   r"  r  )rT   ra  rè   rù   s       rW   Ú)test_njit_parallel_chunksize_invalid_typez?TestParforChunksizing.test_njit_parallel_chunksize_invalid_typej  s½   € Ø×Ò�vÔ1Ñ2Ô2ð 	°fÝð7ð 7ñ ŒTð7ð ˆD‰FŒFˆFð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð :ˆØ�Š�c�3˜vÔ/Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1s    AÁAÁAc                 óÜ   — |                       t          ¦  «        5 }t          d¦  «         d d d ¦  «         n# 1 swxY w Y   d}|                      |t	          |j        ¦  «        ¦  «         d S )Nr4  r5  )r  Ú	TypeErrorr   rô   r"  r  r/  s      rW   Ú+test_python_parallel_chunksize_invalid_typezATestParforChunksizing.test_python_parallel_chunksize_invalid_typeu  s¢   € Ø×Ò�yÑ)Ô)ð 	3¨VÝ" >Ñ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð :ˆØ�Š�c�3˜vÔ/Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1r1  N)rx   rO   ry   rZ  rz   r  r  r  r  r  r"  r(  r-  r0  r7  r:  r}   rY   rW   r  r    sË   € € € € € ðð ð "Ðð"ð "ð "ð"ð "ð "ð6ð 6ð 6ð6ð 6ð 6ð&ð &ð &ð !ð !ð !ð 7ð 7ð 7ð0
2ð 
2ð 
2ð2ð 2ð 2ð	2ð 	2ð 	2ð2ð 2ð 2ð 2ð 2rY   r  c                   óZ   — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚTestParforsVectorizerFc                 óø  — |                      dd¦  «        }|                      dd¦  «        }|                      dd¦  «        }|                      dd¦  «        }||d	œ}	g }
|	                     ¦   «         D ](\  }}|
                     t          ||¦  «        ¦  «         Œ)|
d
         5  |
d         5  t	          d„ |D ¦   «         ¦  «        }|                      |d ¦  «        }|dk    r|                      ||¦  «        }n|                      ||¦  «        }|                      |¦  «        }|r•t          j
        d¦  «        }|                     |j                             ¦   «         ¦  «        }|                      t          |¦  «        d¦  «         |                      |d
         |¦  «         |                      |i ¦  «         |cd d d ¦  «         cd d d ¦  «         S # 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nr•   FÚcpu_namezskylake-avx512Ú
assertionsTÚcpu_featuresz-prefer-256-bit)ÚNUMBA_CPU_NAMEÚNUMBA_CPU_FEATURESr   rì   c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r}   rª   r¬   s     rW   r¯   z8TestParforsVectorizer.get_gufunc_asm.<locals>.<listcomp>–  s    € Ð7Ð7Ð7¨Q�œ a™œÐ7Ð7Ð7rY   z%call\s+\w+\*\s+@do_scheduling_(\w+)\()rÌ   rV  rÂ   r8   r±   rà  r¥   r¢   r<  r@  r¥  Úfindallrõ   rö   rí   rÒ   rÐ   ÚassertNotEqual)rT   r�   Úschedule_typer˜   r³   r•   r>  r?  r@  Úenv_optsÚ	overridesr¾   ró  rž   Úpfunc_vectorizabler÷   ÚasmÚschedtyÚmatchess                      rW   Úget_gufunc_asmz$TestParforsVectorizer.get_gufunc_asm„  s¤  € à—:’:˜j¨%Ñ0Ô0ˆØ—:’:˜jÐ*:Ñ;Ô;ˆØ—Z’Z ¨dÑ3Ô3ˆ
ð —z’z .Ð2CÑDÔDˆà&.Ø*6ðð ˆð ˆ	Ø—N’NÑ$Ô$ð 	8ð 	8‰DˆAˆqØ×ÒÕ0°°AÑ6Ô6Ñ7Ô7Ð7Ð7à�qŒ\ð 	ð 	˜9 Qœ<ð 	ð 	ÝÐ7Ð7°$Ð7Ñ7Ô7Ñ8Ô8ˆCØ!%×!:Ò!:¸4ÀÑ!FÔ!FÐØ˜4ÒÐØ×5Ò5Ð6HÈ#ÑNÔN��à×,Ò,Ð-?ÀÑEÔE�ð ×&Ò& tÑ,Ô,ˆCàð -Ýœ*Ð%LÑMÔM�Ø!Ÿ/š/¨$¬,×*CÒ*CÑ*EÔ*EÑFÔF�Ø×'Ò'­¨G©¬°aÑ8Ô8Ð8Ø× Ò  ¨¤¨]Ñ;Ô;Ð;Ø×#Ò# C¨Ñ,Ô,Ð,àð%	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s7   Â%	G/Â.DGÆ>G/ÇG	ÇG/ÇG	ÇG/Ç/G3Ç6G3c                 ót  — d„ }t          j        d¦  «        }|                      |d|d¬¦  «        }|                      |d|d¬¦  «        }|                     ¦   «         D ]K}|                      d|v ¦  «         |                      d|v pd	|v ¦  «         |                      d
|v ¦  «         ŒL|                     ¦   «         D ]y}|                      d|v¦  «         |                      d|v¦  «         |                      d|v od	|v¦  «         |                      d|v ¦  «         |                      d
|v¦  «         ŒzdS )úÐ 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                 óz   — t          | ¦  «        }d}t          |¦  «        D ]}|t          j        |¦  «        z  }Œ|S rÑ  ©rÒ   r  rÀ   r`  )r�  r  r·  r  s       rW   Úwill_vectorizezJTestParforsVectorizer.test_vectorizer_fastmath_asm.<locals>.will_vectorize³  s@   € Ý�A‘”ˆAØˆCÝ˜1‘X”Xð "ð "�Ø•r”w˜q‘z”zÑ!��ØˆJrY   r  ró   T©r•   FÚvaddpdÚvsqrtpdÚ__svml_sqrtÚzmmÚvsqrtsdÚvaddsdN)rÀ   r@  rM  rÞ  rN  )rT   rR  rÍ  Úfast_asmÚslow_asmró  s         rW   Útest_vectorizer_fastmath_asmz2TestParforsVectorizer.test_vectorizer_fastmath_asm©  sp  € ð	ð 	ð 	õ Œh�r‰lŒlˆà×&Ò& ~°zÀ3Ø04ð 'ñ 6ô 6ˆà×&Ò& ~°zÀ3Ø05ð 'ñ 7ô 7ˆà—’Ñ"Ô"ð 	(ð 	(ˆAð �OŠO˜H¨˜MÑ*Ô*Ð*Ø�OŠO˜I¨˜NÐ@¨m¸qÐ.@ÑAÔAÐAØ�OŠO˜E Q˜JÑ'Ô'Ð'Ð'à—’Ñ"Ô"ð 	,ð 	,ˆAà�OŠO˜H¨AÐ-Ñ.Ô.Ð.Ø�OŠO˜I¨QÐ.Ñ/Ô/Ð/à�OŠO˜I¨˜NÐE¨}ÀAÐ/EÑFÔFÐFØ�OŠO˜H¨˜MÑ*Ô*Ð*à�OŠO˜E¨˜NÑ+Ô+Ð+Ð+ð	,ð 	,rY   c                 óf  — d„ }d„ }t          j        d¦  «        }t          dd¦  «        5  |                      |d|d¬¦  «        }|                      |d	|d¬¦  «        }d
d
d
¦  «         n# 1 swxY w Y   |                     ¦   «         D ]G}|                      d|v¦  «         |                      d|v ¦  «         |                      d|v¦  «         ŒH|                     ¦   «         D ]K}|                      d|v pd|v ¦  «         |                      d|v ¦  «         |                      d|v ¦  «         ŒLd
S )rO  c                 ó†   — t          | ¦  «        }t          | d¦  «        D ]}t          j        | |         ¦  «        | |<   Œ | S rÑ  rQ  ©r�  r  r  s      rW   Úwill_not_vectorizezTTestParforsVectorizer.test_unsigned_refusal_to_vectorize.<locals>.will_not_vectorizeØ  sB   € Ý�A‘”ˆAÝ˜A˜2˜q‘\”\ð %ð %�Ý”w˜q œt‘}”}��!‘�ØˆHrY   c                 ó‚   — t          | ¦  «        }t          |¦  «        D ]}t          j        | |         ¦  «        | |<   Œ | S r[   rQ  r_  s      rW   rR  zPTestParforsVectorizer.test_unsigned_refusal_to_vectorize.<locals>.will_vectorizeÞ  s>   € Ý�A‘”ˆAÝ˜1‘X”Xð %ð %�Ý”w˜q œt‘}”}��!‘�ØˆHrY   r  ÚNUMBA_BOUNDSCHECKÚ0rò   TrS  ró   NrU  rX  rW  rV  Úvmovupd)rÀ   r@  r8   rM  rÞ  rN  )rT   r`  rR  rÍ  Ú	novec_asmÚvec_asmró  s          rW   Ú"test_unsigned_refusal_to_vectorizez8TestParforsVectorizer.test_unsigned_refusal_to_vectorizeÑ  s·  € ð	ð 	ð 	ð	ð 	ð 	õ Œh�r‰lŒlˆõ !Ð!4°cÑ:Ô:ð 	9ð 	9Ø×+Ò+Ð,>ÀÈ#Ø59ð ,ñ ;ô ;ˆIð ×)Ò)¨.¸*ÀcØ37ð *ñ 9ô 9ˆGð		9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð ×!Ò!Ñ#Ô#ð 	,ð 	,ˆAà�OŠO˜I¨QÐ.Ñ/Ô/Ð/à�OŠO˜I¨˜NÑ+Ô+Ð+à�OŠO˜E¨˜NÑ+Ô+Ð+Ð+à—’Ñ!Ô!ð 	(ð 	(ˆAð �OŠO˜I¨˜NÐ@¨m¸qÐ.@ÑAÔAÐAØ�OŠO˜I¨˜NÑ+Ô+Ð+Ø�OŠO˜E Q˜JÑ'Ô'Ð'Ð'ð	(ð 	(s   «3A*Á*A.Á1A.c                 ó¼  — d„ }d„ }t          dd¦  «        5  |                      |dd¬¦  «        }|                      |dd¬¦  «        }d	d	d	¦  «         n# 1 swxY w Y   d
„ }|                     ¦   «         D ]\  }} ||¦  «        } |                     ¦   «         D ]\  }} ||¦  «        }	 ddlm}
 |                      t          |¦  «        t          |	¦  «        ¦  «         t          ||	¦  «        D ]i\  }}||k    rŒ |
d„ ||¦  «        }|                     ¦   «         }|D ]8}|d         dk    r*|                      ||d         |d         …         d¦  «         Œ9Œjd	S )zï This 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                  ó@   — d} d}t          |  d¦  «        D ]}||z  }Œ|S )Né   r  r   rƒ  rñ  s      rW   Úsigned_variantzMTestParforsVectorizer.test_signed_vs_unsigned_vec_asm.<locals>.signed_variant  s5   € ØˆAØˆAÝ˜A˜2˜q‘\”\ð ð �Ø�Q‘��ØˆHrY   c                  ó<   — d} d}t          | ¦  «        D ]}||z  }Œ|S )Nrj  r  rƒ  rñ  s      rW   Úunsigned_variantzOTestParforsVectorizer.test_signed_vs_unsigned_vec_asm.<locals>.unsigned_variant  s1   € ØˆAØˆAÝ˜1‘X”Xð ð �Ø�Q‘��ØˆHrY   rb  rc  rò   TrS  ró   Nc                 óD  — g }|                       ¦   «         D ]ˆ}|                     ¦   «         }|dk    rl|                     d¦  «        sW|                     d¦  «        sB|                     d¦  «        s-d|v s)|                     t	          j        dd|¦  «        ¦  «         Œ‰|S )NÚ rI   rK   ú"r/  z[	])r?  ÚstripÚ
startswithrÂ   r@  Úsub)rJ  r·  r®   Úspds       rW   Ústrip_instrszKTestParforsVectorizer.test_signed_vs_unsigned_vec_asm.<locals>.strip_instrs  s¤   € ØˆCØ—^’^Ñ%Ô%ð <ð <�Ø—g’g‘i”i�ð ˜"’9�9 c§n¢n°SÑ&9Ô&9�9Ø(+¯ª°sÑ(;Ô(;ð à(+¯ª°sÑ(;Ô(;ð ð )@À3Ð(FÐ(FØŸ
š
¥2¤6¨&°"°cÑ#:Ô#:Ñ;Ô;Ð;øØˆJrY   r   )ÚSequenceMatcherc                 ó   — | dk    S )Nú	r}   r=  s    rW   ré  zGTestParforsVectorizer.test_signed_vs_unsigned_vec_asm.<locals>.<lambda>9  s
   €   d¢€ rY   Úinsertr9  rJ   r£  )	r8   rM  rV  Údifflibrv  rÐ   rÒ   rÓ   Úget_opcodes)rT   rk  rm  Ú
signed_asmÚunsigned_asmru  r¾   ró  Úsigned_instrÚunsigned_instrÚsmrˆ   r‰   rÁ  rP  rS  s                   rW   Útest_signed_vs_unsigned_vec_asmz5TestParforsVectorizer.test_signed_vs_unsigned_vec_asmý  s  € ð	ð 	ð 	ð	ð 	ð 	õ !Ð!4°cÑ:Ô:ð 	>ð 	>Ø×,Ò,¨^¸XØ6:ð -ñ <ô <ˆJà×.Ò.Ð/?ÀØ8<ð /ñ >ô >ˆLð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>ð	ð 	ð 	ð ×$Ò$Ñ&Ô&ð 	ð 	‰DˆAˆqØ'˜<¨™?œ?ˆLØà ×&Ò&Ñ(Ô(ð 	ð 	‰DˆAˆqØ)˜\¨!™_œ_ˆNØà1Ð1Ð1Ð1Ð1Ð1ð 	×Ò�˜\Ñ*Ô*­C°Ñ,?Ô,?Ñ@Ô@Ð@Ý˜ nÑ5Ô5ð 	@ð 	@‰DˆAˆqØ�AŠvˆvØà�BÐ*Ð*¨A¨qÑ1Ô1�Ø—m’m‘o”o�Øð @ð @�BØ˜!”u Ò(Ð(Ø×(Ò(¨¨2¨b¬6°"°R´&¨=Ô)9¸3Ñ?Ô?Ð?øð@ð	@ð 	@s   —1AÁAÁAN)	rx   rO   ry   rz   rM  r9   r\  rg  r�  r}   rY   rW   r<  r<  }  s„   € € € € € ð
 "Ðð#ð #ð #ðJ ð%,ð %,ñ „Zð%,ðN ð)(ð )(ñ „Zð)(ðV ð=@ð =@ñ „Zð=@ð =@ð =@rY   r<  c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )Ú TestParforReductionSetNumThreadszCTest execution correctness on reductions with set_num_threads.
    c                 óÚ   ‡‡— t           j        }d|z  Š|dz
  Št          d¬¦  «        ˆˆfd„¦   «         }|                     ‰¦  «        } |‰¦  «        }|                      ||¦  «         d S )Nrý   rì   Tr\  c                 ó¢   •— d}t          | ¦  «         t          ‰¦  «        D ],}d|‰z  z   }t          |¦  «         t          ¦   «         }||z  }Œ-|S rÅ  ©r   r   r   ©Únthreadsr·  r  Ú
local_maskÚgntrI  Úmasks        €€rW   Úudtz6TestParforReductionSetNumThreads.test_add.<locals>.udtI  óa   ø€ àˆCÝ˜HÑ%Ô%Ð%Ý˜A‘Y”Yð ð �Ø  T¡™\�
Ý 
Ñ+Ô+Ð+Ý%Ñ'Ô'�Ø�s‘
��ØˆJrY   ©r   ÚNUMBA_NUM_THREADSr   r`  rŒ  ©rT   r’  rŒ  Úexpectr�  rI  r‹  s        @@rW   Útest_addz)TestParforReductionSetNumThreads.test_addD  óŽ   øø€ ÝÔ$ˆØ�‰EˆØ�1‰uˆå	�tÐ	Ñ	Ô	ð	ð 	ð 	ð 	ð 	ñ 
Ô	ð	ð —’˜TÑ"Ô"ˆØˆc�$‰iŒiˆØ×Ò ¨Ñ,Ô,Ð,Ð,Ð,rY   c                 óö   ‡‡— t          dt          j        ¦  «        }d|z  Š|dz
  Št          d¬¦  «        ˆˆfd„¦   «         }|                     ‰¦  «        } |‰¦  «        }|                      ||¦  «         d S )Nr  rý   rì   Tr\  c                 ó¢   •— d}t          | ¦  «         t          ‰¦  «        D ],}d|‰z  z   }t          |¦  «         t          ¦   «         }||z  }Œ-|S r#  r†  r‡  s        €€rW   rŒ  z6TestParforReductionSetNumThreads.test_mul.<locals>.udt_  r�  rY   )r²  r   r�  r   r`  rŒ  r�  s        @@rW   Útest_mulz)TestParforReductionSetNumThreads.test_mulX  sš   øø€ õ �•6Ô+Ñ,Ô,ˆØ�‰EˆØ�1‰uˆå	�tÐ	Ñ	Ô	ð	ð 	ð 	ð 	ð 	ñ 
Ô	ð	ð —’˜TÑ"Ô"ˆØˆc�$‰iŒiˆØ×Ò ¨Ñ,Ô,Ð,Ð,Ð,rY   c                 óÚ   ‡‡— t           j        }d|z  Š|dz
  Št          d¬¦  «        ˆˆfd„¦   «         }|                     ‰¦  «        } |‰¦  «        }|                      ||¦  «         d S )Nrý   rì   Tr\  c                 ó¸   •— d}t          | ¦  «         t          ‰¦  «        D ]7}d|‰z  z   }t          |¦  «         t          ¦   «         }t          ||¦  «        }Œ8|S r#  )r   r   r   r³  r‡  s        €€rW   rŒ  z6TestParforReductionSetNumThreads.test_max.<locals>.udts  se   ø€ àˆCÝ˜HÑ%Ô%Ð%Ý˜A‘Y”Yð $ð $�Ø  T¡™\�
Ý 
Ñ+Ô+Ð+Ý%Ñ'Ô'�Ý˜#˜s‘m”m��ØˆJrY   rŽ  r�  s        @@rW   r&  z)TestParforReductionSetNumThreads.test_maxn  r“  rY   N)rx   rO   ry   rZ  r’  r–  r&  r}   rY   rW   rƒ  rƒ  @  sK   € € € € € ðð ð-ð -ð -ð(-ð -ð -ð,-ð -ð -ð -ð -rY   rƒ  c                   ó>   — e Zd Z ej        ¦   «         d„ ¦   «         ZdS )ÚTestDiagnosticEnvVarc                 ó
  — dt           j        d<   t          ¦   «         5 }t          d¬¦  «        d„ ¦   «         } |¦   «          d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         }|                      d|¦  «         d S )NÚ4ÚNUMBA_PARALLEL_DIAGNOSTICSTr\  c                  óx   — d} t          j        | t           j        ¬¦  «        }t          | ¦  «        D ]}d||<   Œ|S )Nrä  r'  rì   )rÀ   r@  r—  r   )r  r‰   r  s      rW   rè   z<TestDiagnosticEnvVar.test_diagnostics_env_var1.<locals>.impl‰  sB   € à�Ý”H˜a­¬
Ð3Ñ3Ô3�Ý ™œð ð �AØ�A�a‘D�DØ�rY   zParallel Accelerator Optimizing)ÚosÚenvironr6   r   r½  rô   )rT   r¾  rè   Ú
the_outputs       rW   Útest_diagnostics_env_var1z.TestDiagnosticEnvVar.test_diagnostics_env_var1…  sË   € à14�Œ
Ð/Ñ0ÝÑÔð 		 &Ý˜4Ð Ñ Ô ðð ñ !Ô ðð ˆD‰FŒFˆFð		ð 		ð 		ñ 		ô 		ð 		ð 		ð 		ð 		ð 		ð 		øøøð 		ð 		ð 		ð 		ð —_’_Ñ&Ô&ˆ
Ø�ŠÐ7¸ÑDÔDÐDÐDÐDs   ž$AÁAÁAN)rx   rO   ry   r5   Úrun_test_in_subprocessr¢  r}   rY   rW   rš  rš  ƒ  s>   € € € € € à$€XÔ$Ñ&Ô&ðEð Eñ 'Ô&ðEð Eð ErY   rš  Ú__main__r[   )�r~  r@  rÌ  rÅ   rŸ  r{   r  Ú
subprocessr   rÓ  r²  Ú	functoolsr   rã  rÀ   Únumpy.randomr   ru  Úcollectionsr   r   rÃ   Ú	itertoolsr	   r
   r   Únumba.parfors.parforr«   r   r   r   r   r   r   r   r   Ú
numba.corer   r   r   r   r   r   r   r   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.bytecoder-   Únumba.core.compilerr.   r/   r0   r1   Únumba.core.compiler_machineryr2   r3   Únumba.core.typed_passesr4   Únumba.tests.supportr5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   Únumba.core.extendingrB   rC   rD   rµ  ru  rF   rv  r|   Úx86_onlyr~  r  r‚   rŠ   rŒ   rq  ry  r”  rÃ  rî   rÏ  rÓ  rÍ  rà  rß  rè  rç  rë  r  r£  rý  r‹  r¦  ro  rx  rù  r  r‚  r�  r£  rˆ  rÄ  rç  r‚  r  r<  rƒ  rš  rx   Úmainr}   rY   rW   ú<module>r¹     s—
  ðð €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø €€€Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð à Ð Ð Ð ð=ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ðQð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð QðFð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fà *Ð *Ð *Ð *Ð *Ð *Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ð6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð CÐ BÐ BÐ BÐ BÐ BØ ,Ð ,Ð ,Ð ,Ð ,Ð ,ð5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5à EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ 2Ð 2Ð 2Ð 2Ð 2Ð 2ð(ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð
 2Ð 1Ð 1Ð 1Ð 1Ð 1Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø Ð Ð Ð Ð Ð à €€€Ø €€€ð ð:ð :ð :ð :ð :˜ñ :ô :ñ Ôð:ðz ˆ8Œ?Ð+˜8Ô+Ñ-Ô-Ð5GÐGÈÑYÔY€àÐ ØÐ à�Ð,Ð.@ÑAÔA€ð	ð 	ð 	ð ð_ð _ð _ð _ð _�hñ _ô _ñ Ôð_ðD	ð ð ð ð ð ðð ð ð@ð @ð @ðD	ð 	ð 	ðAð Að Aðð ð ðð ð ð$ð ð ðð ð ð"Dð Dð Dð
 ð  ð  ð  ðD	ð 	ð 	ð
!ð 
!ð 
!ð 
!ð 
!�6ñ 
!ô 
!ð 
!ð ðh@ð h@ð h@ð h@ð h@�oñ h@ô h@ñ Ôðh@ðV ð'Kð 'Kð 'Kð 'Kð 'K˜oñ 'Kô 'Kñ Ôð'KðT ðVOð VOð VOð VOð VO�oñ VOô VOñ ÔðVOðr2ð 2ð 2ð 2ð 2˜Xñ 2ô 2ð 2ð, ð]Uð ]Uð ]Uð ]Uð ]U�/ñ ]Uô ]Uñ Ôð]Uð@ ð#ð #ð #ð #ð #�¨ñ #ô #ñ Ôð#ð6 ðf%ð f%ð f%ð f%ð f%�ñ f%ô f%ñ Ôðf%ðR	 ð";ð ";ð ";ð ";ð ";˜ñ ";ô ";ñ Ôð";ðJ ð:Mð :Mð :Mð :Mð :M˜ñ :Mô :Mñ Ôð:Mðz ðzð zð zð zð z�oñ zô zñ Ôðzðz ðlDð lDð lDð lDð lD˜_ñ lDô lDñ ÔðlDð^Pð Pð Pð Pð P�_ñ Pô Pð Pðf ða1ð a1ð a1ð a1ð a1�nñ a1ô a1ñ Ôða1ðH ðd)ð d)ð d)ð d)ð d)˜ñ d)ô d)ñ Ôðd)ðL ðw2ð w2ð w2ð w2ð w2˜Hñ w2ô w2ñ Ôðw2ðt Ø	ð~@ð ~@ð ~@ð ~@ð ~@˜Nñ ~@ô ~@ñ 
„ñ Ôð~@ðB ð?-ð ?-ð ?-ð ?-ð ?- xñ ?-ô ?-ñ Ôð?-ðD ðEð Eð Eð Eð E˜8ñ Eô Eñ ÔðEð$ ˆzÒÐØ€H„M�O„O€O€O€Oð ÐrY   