§
    2@ÄjÂF  ã                   óŠ  — d dl mZ d dlZd dlmZ d dlmZmZ d dl	m
Z
mZmZmZ d dlZ e¦   «         Zde_        de_        e                     ¦   «         Zd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  G d„ dee
¦  «        Z! G d„ de
¦  «        Z" G d„ dee
¦  «        Z#e$dk    r ej%        ¦   «          dS dS )é    )ÚStringION)Útypes)Úcompile_extraÚFlags)ÚTestCaseÚtagÚMemoryLeakMixinÚnumpy_sincos_low_precisionTc                 óš   — ddl m} |                     dd ¦  «         |                     di ¦  «         t          |j        |j        | |fi |¤ŽS )Nr   ©Ú
cpu_targetÚreturn_typeÚlocals)Únumba.core.registryr   Ú
setdefaultr   Útyping_contextÚtarget_context)ÚpyfuncÚargtypesÚkwargsr   s       úMC:\Projects\Historical\venv\Lib\site-packages\numba/tests/test_looplifting.pyÚcompile_isolatedr      ss   € Ø.Ð.Ð.Ð.Ð.Ð.à
×Ò�m TÑ*Ô*Ð*Ø
×Ò�h Ñ#Ô#Ð#ÝØÔ!ØÔ!ØØð	ð ð
 ðð ð ó    c                 óf   — t          j        d¦  «        }t          |j        ¦  «        D ]}| ||<   Œ|S )Né   )ÚnpÚemptyÚrangeÚsize©ÚxÚaÚis      r   Úlift1r$   !   s6   € å
Œ�‰Œ€AÝ�1”6‰]Œ]ð ð ˆàˆˆ!‰ˆØ€Hr   c                 ó°   — t          j        d¦  «        }t          |j        d         ¦  «        D ]&}t          |j        d         ¦  «        D ]	}| |||f<   Œ
Œ'|S )N)r   é   r   é   )r   r   r   Úshape)r!   r"   r#   Újs       r   Úlift2r*   *   sf   € å
Œ�ÑÔ€AÝ�1”7˜1”:ÑÔð ð ˆÝ�q”w˜q”zÑ"Ô"ð 	ð 	ˆAàˆAˆa�ˆd‰GˆGð	ð €Hr   c                 ó¼   — t          ¦   «         }t          j        dt          j        ¬¦  «        }d}t	          |j        d         ¦  «        D ]}|||         | z  z  }Œ|S ©Né   ©Údtyper   ©Úobjectr   ÚarangeÚint64r   r(   )r!   Ú_r"   Úcr#   s        r   Úlift3r6   4   s[   € å‰Œ€AÝ
Œ	�!�2œ8Ð$Ñ$Ô$€AØ	€AÝ�1”7˜1”:ÑÔð ð ˆØ	ˆQˆqŒT�A‰X‰ˆˆØ€Hr   c                 óÐ   — t          ¦   «         }t          j        dt          j        ¬¦  «        }d}d}t	          |j        d         ¦  «        D ]}|||         | z  z  }||z  }Œ||z   S r,   r0   )r!   r4   r"   r5   Údr#   s         r   Úlift4r9   =   sm   € å‰Œ€AÝ
Œ	�!�2œ8Ð$Ñ$Ô$€AØ	€AØ	€AÝ�1”7˜1”:ÑÔð ð ˆØ	ˆQˆqŒT�A‰X‰ˆØ	ˆQ‰ˆˆØˆq‰5€Lr   c                 ó”   — t          ¦   «         }t          j        d¦  «        }t          |j        d         ¦  «        D ]
}|dk    r nŒ|S )Nr&   r   é   ©r1   r   r2   r   r(   ©r!   r4   r"   r#   s       r   Úlift5r>   H   sM   € Ý‰Œ€AÝ
Œ	�!‰Œ€AÝ�1”7˜1”:ÑÔð ð ˆàˆqŠ5ˆ5ØˆEð à€Hr   c              #   óž   K  — t          j        d¦  «        }dV — t          |j        ¦  «        D ]}| ||<   Œt          j        |¦  «        V — d S )Nr   r   )r   r   r   r   Úsumr    s      r   Ú	lift_gen1rA   Q   sS   è è € å
Œ�‰Œ€AØ
€G€G€GÝ�1”6‰]Œ]ð ð ˆàˆˆ!‰ˆÝ
Œ&�‰)Œ)€O€O€O€O€Or   c                  ó|   — t          j        d¦  «         t          d¦  «        D ]} t          d¦  «        D ]}  dS ŒdS )Nr'   é
   r;   )r   r   r   )r#   r)   s     r   Úlift_issue2561rD   Z   sL   € Ý„HˆQ�K„K€KÝ�2‰YŒYð ð ˆÝ�r‘”ð 	ð 	ˆAØ�1�1�1ð	àˆ1r   c                 ón   — t          j        d¦  «        }t          |j        d         ¦  «        D ]}|c S |S ©Nr&   r   )r   r2   r   r(   r    s      r   Úreject1rG   a   s:   € Ý
Œ	�!‰Œ€AÝ�1”7˜1”:ÑÔð ð ˆàˆˆˆØ€Hr   c              #   óœ   K  — t          ¦   «         }t          j        d¦  «        }t          |j        d         ¦  «        D ]}||         V — Œd S rF   r<   r=   s       r   Úreject_gen1rI   i   sR   è è € Ý‰Œ€AÝ
Œ	�!‰Œ€AÝ�1”7˜1”:ÑÔð ð ˆà�Œdˆ
ˆ
ˆ
ˆ
ðð r   c              #   óÈ   K  — t          ¦   «         }t          j        d¦  «        }t          |j        ¦  «        D ](}||         | z   }t          |¦  «        D ]}|dz  }Œ|V — Œ)d S )Nr   r;   )r1   r   r2   r   r   )r!   r4   r"   r#   Úresr)   s         r   Úreject_gen2rL   p   sw   è è € Ý‰Œ€AÝ
Œ	�!‰Œ€AÝ�1”6‰]Œ]ð ð ˆà�Œd�Q‰hˆÝ�q‘”ð 	ð 	ˆAð ˜‘(ˆCˆCØˆ	ˆ	ˆ	ˆ	ðð r   c                 óÐ   — t          j        dt           j        ¬¦  «        }t          |j        ¦  «        D ]0}t          ¦   «         }t          j        |dz   ¦  «        |         ||<   Œ1|S )Nr   r.   r'   )r   r   Úint32r   r   r1   r2   )r!   r"   r#   r4   s       r   Úreject_npm1rO   |   s[   € Ý
Œ��"œ(Ð#Ñ#Ô#€AÝ�1”6‰]Œ]ð #ð #ˆå‰HŒHˆÝŒy˜˜Q™ÑÔ Ô"ˆˆ!‰ˆà€Hr   c                   ón   — 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S )ÚTestLoopLiftingc           	      ó¬   — ddl m} t          |j        |j        ||d t
          i ¬¦  «        }|                      t          |j        ¦  «        d¦  «         |S )Nr   r   )r   Úflagsr   r'   )	r   r   r   r   r   Úlooplift_flagsÚassertEqualÚlenÚlifted)Úselfr   r   r   Úcress        r   Útry_liftzTestLoopLifting.try_liftˆ   sg   € Ø2Ð2Ð2Ð2Ð2Ð2åØÔ%ØÔ%Ø�HØ¥N¸2ð	
ñ 
ô 
ˆð 	×Ò�˜Tœ[Ñ)Ô)¨1Ñ-Ô-Ð-Øˆr   c                 ó”   — |j         d         }|j                             ¦   «         \  }|                      |j        j        ¦  «         d S ©Nr   )rW   Ú	overloadsÚvaluesÚ
assertTrueÚfndescÚnative)rX   rY   ÚjitloopÚloopcress       r   Úassert_lifted_nativez$TestLoopLifting.assert_lifted_native•   s@   € à”+˜a”.ˆØÔ&×-Ò-Ñ/Ô/‰
ˆØ�Š˜œÔ.Ñ/Ô/Ð/Ð/Ð/r   c                 ó¦   — |                       ||¦  «        } ||Ž } |j        |Ž }|                      |¦  «         |                      ||¦  «         dS )zH
        Check that pyfunc can loop-lift even in nopython mode.
        N)rZ   Úentry_pointrd   ÚassertPreciseEqual©rX   r   r   ÚargsrY   ÚexpectedÚgots          r   Úcheck_lift_okzTestLoopLifting.check_lift_ok›   sa   € ð �}Š}˜V XÑ.Ô.ˆØ�6˜4�=ˆØˆdÔ Ð%ˆØ×!Ò! $Ñ'Ô'Ð'à×Ò ¨#Ñ.Ô.Ð.Ð.Ð.r   c                 óÚ   — |                       ||¦  «        }t           ||Ž ¦  «        }t           |j        |Ž ¦  «        }|                      |¦  «         |                      ||¦  «         dS )zg
        Check that pyfunc (a generator function) can loop-lift even in
        nopython mode.
        N)rZ   Úlistrf   rd   rg   rh   s          r   Úcheck_lift_generator_okz'TestLoopLifting.check_lift_generator_ok¦   sr   € ð
 �}Š}˜V XÑ.Ô.ˆÝ˜˜ ˜Ñ&Ô&ˆÝÐ#�4Ô# TÐ*Ñ+Ô+ˆØ×!Ò! $Ñ'Ô'Ð'à×Ò ¨#Ñ.Ô.Ð.Ð.Ð.r   c                 ó²   — t          ||t          ¬¦  «        }|                      |j        ¦  «          ||Ž } |j        |Ž }|                      ||¦  «         dS )z4
        Check that pyfunc can't loop-lift.
        ©rS   N)r   rT   ÚassertFalserW   rf   rg   rh   s          r   Úcheck_no_liftzTestLoopLifting.check_no_lift²   sk   € õ   ¨Ý&4ð6ñ 6ô 6ˆà×Ò˜œÑ%Ô%Ð%Ø�6˜4�=ˆØˆdÔ Ð%ˆà×Ò ¨#Ñ.Ô.Ð.Ð.Ð.r   c                 óæ   — t          ||t          ¬¦  «        }|                      |j        ¦  «         t	           ||Ž ¦  «        }t	           |j        |Ž ¦  «        }|                      ||¦  «         dS )zK
        Check that pyfunc (a generator function) can't loop-lift.
        rq   N)r   rT   rr   rW   rn   rf   rg   rh   s          r   Úcheck_no_lift_generatorz'TestLoopLifting.check_no_lift_generator¾   s|   € õ   ¨Ý&4ð6ñ 6ô 6ˆà×Ò˜œÑ%Ô%Ð%Ý˜˜ ˜Ñ&Ô&ˆÝÐ#�4Ô# TÐ*Ñ+Ô+ˆØ×Ò ¨#Ñ.Ô.Ð.Ð.Ð.r   c                 óT   — |                       t          t          j        fd¦  «         d S ©N)é{   )rl   r$   r   Úintp©rX   s    r   Ú
test_lift1zTestLoopLifting.test_lift1É   ó$   € Ø×Ò�5¥5¤: -°Ñ8Ô8Ð8Ð8Ð8r   c                 óT   — |                       t          t          j        fd¦  «         d S rw   )rl   r*   r   ry   rz   s    r   Ú
test_lift2zTestLoopLifting.test_lift2Ì   r|   r   c                 óT   — |                       t          t          j        fd¦  «         d S rw   )rl   r6   r   ry   rz   s    r   Ú
test_lift3zTestLoopLifting.test_lift3Ï   r|   r   c                 óT   — |                       t          t          j        fd¦  «         d S rw   )rl   r9   r   ry   rz   s    r   Ú
test_lift4zTestLoopLifting.test_lift4Ò   r|   r   c                 óT   — |                       t          t          j        fd¦  «         d S rw   )rl   r>   r   ry   rz   s    r   Ú
test_lift5zTestLoopLifting.test_lift5Õ   r|   r   c                 ó>   — |                       t          dd¦  «         d S )N© )rl   rD   rz   s    r   Útest_lift_issue2561z#TestLoopLifting.test_lift_issue2561Ø   s    € Ø×Ò�>¨2¨rÑ2Ô2Ð2Ð2Ð2r   c                 óT   — |                       t          t          j        fd¦  «         d S rw   )ro   rA   r   ry   rz   s    r   Útest_lift_gen1zTestLoopLifting.test_lift_gen1Û   s$   € Ø×$Ò$¥Yµ´°¸vÑFÔFÐFÐFÐFr   c                 óT   — |                       t          t          j        fd¦  «         d S rw   )rs   rG   r   ry   rz   s    r   Útest_reject1zTestLoopLifting.test_reject1Þ   s$   € Ø×Ò�7¥U¤Z M°6Ñ:Ô:Ð:Ð:Ð:r   c                 óT   — |                       t          t          j        fd¦  «         d S rw   )ru   rI   r   ry   rz   s    r   Útest_reject_gen1z TestLoopLifting.test_reject_gen1á   ó$   € Ø×$Ò$¥[µ5´:°-ÀÑHÔHÐHÐHÐHr   c                 óT   — |                       t          t          j        fd¦  «         d S rw   )ru   rL   r   ry   rz   s    r   Útest_reject_gen2z TestLoopLifting.test_reject_gen2ä   rŽ   r   N)Ú__name__Ú
__module__Ú__qualname__rZ   rd   rl   ro   rs   ru   r{   r~   r€   r‚   r„   r‡   r‰   r‹   r�   r�   r†   r   r   rQ   rQ   †   s  € € € € € ðð ð ð0ð 0ð 0ð	/ð 	/ð 	/ð
/ð 
/ð 
/ð
/ð 
/ð 
/ð	/ð 	/ð 	/ð9ð 9ð 9ð9ð 9ð 9ð9ð 9ð 9ð9ð 9ð 9ð9ð 9ð 9ð3ð 3ð 3ðGð Gð Gð;ð ;ð ;ðIð Ið IðIð Ið Ið Ið Ir   rQ   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚTestLoopLiftingAnnotatec                 ó\  ‡
— ddl m} d„ Š
ˆ
fd„}  |d¬¦  «        |¦  «        }t          j        d¦  «        }|                     ¦   «         } ||¦  «        }t          j                             ||dz   ¦  «         t          ¦   «         }|                     |¬	¦  «         | 	                    ¦   «         }| 
                    ¦   «          |                      d
|¦  «         |j        j        dz   }	|                      d                     |	¬¦  «        |¦  «         |                      d|¦  «         dS )zO
        Verify that annotation works as expected with one lifted loop
        r   ©Újitc                  ó   — d S ©Nr†   r†   r   r   Úbarz4TestLoopLiftingAnnotate.test_annotate_1.<locals>.barð   ó   € ØˆDr   c                 ój   •—  ‰¦   «          t          | j        ¦  «        D ]}| |xx         dz  cc<   Œ| S )Nr'   ©r   r   )r!   r#   r›   s     €r   Úfooz4TestLoopLiftingAnnotate.test_annotate_1.<locals>.fooó   sA   ø€ ØˆC‰EŒEˆEÝ˜1œ6‘]”]ð ð �Ø�!��”˜‘	��‘�àˆHr   T©ÚforceobjrC   r'   ©Úfileú"The function contains lifted loopsr;   úLoop at line {line}©ÚlinezHas 1 overloadsN©Únumbar˜   r   r2   ÚcopyÚtestingÚassert_equalr   Úinspect_typesÚgetvalueÚcloseÚassertInÚ__code__Úco_firstlinenoÚformat)rX   r˜   rŸ   Úcfoor!   ÚxcopyÚrÚbufÚ
annotationr§   r›   s             @r   Útest_annotate_1z'TestLoopLiftingAnnotate.test_annotate_1é   s?  ø€ ð 	ÐÐÐÐÐð	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð "ˆsˆs˜DÐ!Ñ!Ô! #Ñ&Ô&ˆåŒI�b‰MŒMˆØ—’‘”ˆØˆD�‰GŒGˆÝ
Œ
×Ò  5¨1¡9Ñ-Ô-Ð-å‰jŒjˆØ×Ò ÐÑ$Ô$Ð$Ø—\’\‘^”^ˆ
Ø�	Š	‰Œˆà�ŠÐ:¸JÑGÔGÐGØŒ|Ô*¨QÑ.ˆØ�ŠÐ+×2Ò2¸Ð2Ñ=Ô=¸zÑJÔJÐJØ�ŠÐ'¨Ñ4Ô4Ð4Ð4Ð4r   c                 ó¨  ‡— ddl m} d„ Šˆfd„}  |d¬¦  «        |¦  «        }t          j        d¦  «        }|                     ¦   «         } ||¦  «        }t          j                             ||dz   d	z  ¦  «         t          ¦   «         }|                     |¬
¦  «         | 	                    ¦   «         }| 
                    ¦   «          |                      d|¦  «         |j        j        dz   }	|j        j        dz   }
|                      d                     |	¬¦  «        |¦  «         |                      d                     |
¬¦  «        |¦  «         dS )zP
        Verify that annotation works as expected with two lifted loops
        r   r—   c                  ó   — d S rš   r†   r†   r   r   r›   z4TestLoopLiftingAnnotate.test_annotate_2.<locals>.bar  rœ   r   c                 ó¸   •—  ‰¦   «          t          | j        ¦  «        D ]}| |xx         dz  cc<   Œt          | j        ¦  «        D ]}| |xx         dz  cc<   Œ| S )Nr'   r;   rž   )r!   r#   r)   r›   s      €r   rŸ   z4TestLoopLiftingAnnotate.test_annotate_2.<locals>.foo  so   ø€ ØˆC‰EŒEˆEå˜1œ6‘]”]ð ð �Ø�!��”˜‘	��‘�å˜1œ6‘]”]ð ð �Ø�!��”˜‘	��‘�ØˆHr   Tr    rC   r'   r;   r¢   r¤   r   é   r¥   r¦   Nr¨   )rX   r˜   rŸ   r´   r!   rµ   r¶   r·   r¸   Úline1Úline2r›   s              @r   Útest_annotate_2z'TestLoopLiftingAnnotate.test_annotate_2  sc  ø€ ð 	ÐÐÐÐÐð	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð "ˆsˆs˜DÐ!Ñ!Ô! #Ñ&Ô&ˆåŒI�b‰MŒMˆØ—’‘”ˆØˆD�‰GŒGˆÝ
Œ
×Ò  E¨A¡I°¡?Ñ3Ô3Ð3å‰jŒjˆØ×Ò ÐÑ$Ô$Ð$Ø—\’\‘^”^ˆ
Ø�	Š	‰Œˆà�ŠÐ:¸JÑGÔGÐGØ”Ô+¨aÑ/ˆØ”Ô+¨aÑ/ˆØ�ŠÐ+×2Ò2¸Ð2Ñ>Ô>À
ÑKÔKÐKØ�ŠÐ+×2Ò2¸Ð2Ñ>Ô>À
ÑKÔKÐKÐKÐKr   N)r‘   r’   r“   r¹   rÀ   r†   r   r   r•   r•   è   s8   € € € € € ð 5ð  5ð  5ðD$Lð $Lð $Lð $Lð $Lr   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 ej        ed¦  «        d„ ¦   «         Zd„ ZdS )ÚTestLoopLiftingInActionc                 ó†   — |j         |j        d                  j        }|                      t	          |¦  «        |¦  «         d S r\   )r]   Ú
signaturesrW   rU   rV   )rX   ÚjittedÚ	loopcountrW   s       r   Úassert_has_liftedz)TestLoopLiftingInAction.assert_has_lifted3  s<   € ØÔ! &Ô"3°AÔ"6Ô7Ô>ˆØ×Ò�˜V™œ iÑ0Ô0Ð0Ð0Ð0r   c                 ó@  — ddl m}m}m}m}  | |||d d …         ¦  «        d¬¦  «        d„ ¦   «         }dD ]f}t          j        dd¬	¦  «        }t          j        dd¬	¦  «        } |||¦  «         |                     ||¦  «         |                      ||¦  «         Œgd S )
Nr   )r˜   ÚvoidrN   ÚdoubleTr    c                 óÂ   — | dk    r-t          |j        d         ¦  «        D ]}||         dz  ||<   Œd S t          |j        d         ¦  «        D ]}||         dz   ||<   Œd S )Nr   g       @ç      ð?)r   r(   )Úur"   r#   s      r   Úforloop_with_ifz?TestLoopLiftingInAction.test_issue_734.<locals>.forloop_with_if:  s�   € à�AŠvˆvÝ˜qœw qœzÑ*Ô*ð &ð &�AØ˜Qœ4 #™:�A�a‘D�Dð&ð &õ ˜qœw qœzÑ*Ô*ð &ð &�AØ˜Qœ4 #™:�A�a‘D�Dð&ð &r   )r   r'   rC   rN   r.   )	r©   r˜   rÉ   rN   rÊ   r   r2   Úpy_funcrg   )	rX   r˜   rÉ   rN   rÊ   rÎ   rÍ   Únb_aÚnp_as	            r   Útest_issue_734z&TestLoopLiftingInAction.test_issue_7347  sç   € Ø2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2à	ˆˆTˆT�%˜   œÑ#Ô#¨dÐ	3Ñ	3Ô	3ð	&ð 	&ñ 
4Ô	3ð	&ð ð 	0ð 	0ˆAÝ”9˜R wÐ/Ñ/Ô/ˆDÝ”9˜R wÐ/Ñ/Ô/ˆDØˆO˜A˜tÑ$Ô$Ð$Ø×#Ò# A tÑ,Ô,Ð,Ø×#Ò# D¨$Ñ/Ô/Ð/Ð/ð	0ð 	0r   c                 óâ   — ddl m}  |dd¬¦  «        d„ ¦   «         }t          j        g d¢¦  «        }t          j                             |                     |¦  «         ||¦  «        ¦  «         d S )Nr   r—   zf8[:](f8[:])Tr    c                 ó  — t          j        t          | ¦  «        ¦  «        }d}t          t          | ¦  «        ¦  «        D ] }|dz  }| |         ||<   | |         dk    r nŒ!t          |dz   t          | ¦  «        ¦  «        D ]}d||<   Œ|S )Nr   r'   rC   )r   ÚzerosrV   r   )r!   rK   ÚindÚiis       r   Útestz4TestLoopLiftingInAction.test_issue_812.<locals>.testM  s™   € å”(�3˜q™6œ6Ñ"Ô"ˆCØˆCÝ�C ™FœF‘m”mð ð �Ø�q‘�Ø˜Sœ6��C‘Ø�S”6˜R’<�<Ø�Eð  õ
 ˜C !™G¥S¨¡V¤VÑ,Ô,ð ð �Ø��B‘�ØˆJr   )
rÌ   r&   r;   éýÿÿÿr-   r;   rC   r-   r;   r½   )r©   r˜   r   Úarrayr«   r¬   rÏ   )rX   r˜   rØ   r!   s       r   Útest_issue_812z&TestLoopLiftingInAction.test_issue_812J  s…   € ØÐÐÐÐÐà	ˆˆ^ dÐ	+Ñ	+Ô	+ð	ð 	ñ 
,Ô	+ð	õ ŒHÐ6Ð6Ð6Ñ7Ô7ˆÝ
Œ
×Ò §¢¨Q¡¤°°°a±´Ñ9Ô9Ð9Ð9Ð9r   c                 óø  — ddl m} d„ }t          j        d¦  «        }t	          ¦   «         }  |d¬¦  «        |¦  «        } |||¦  «        } |||¦  «        }|                      |d         |d         ¦  «         |                      |d         |d         ¦  «         |j        |j        d                  j        d         }|j         	                    ¦   «         \  }	|  
                    |	j        j        ¦  «         d S )Nr   r—   c                 óJ   — d}| D ]}||z  }Œ|                      ¦   «         }||fS r\   )Ú__hash__)r"   ÚbÚsÚeÚhs        r   Úlift_issue2368z?TestLoopLiftingInAction.test_issue_2368.<locals>.lift_issue2368c  s7   € ØˆAØð ð �Ø�Q‘��Ø—
’
‘”ˆAØ�a�4ˆKr   rC   Tr    r'   )r©   r˜   r   Úonesr1   rU   r]   rÄ   rW   r^   r_   r`   ra   )
rX   r˜   rã   r"   rß   rÅ   rj   rk   rb   rc   s
             r   Útest_issue_2368z'TestLoopLiftingInAction.test_issue_2368`  s  € ØÐÐÐÐÐð	ð 	ð 	õ ŒG�B‰KŒKˆÝ‰HŒHˆØ#��˜dÐ#Ñ#Ô# NÑ3Ô3ˆà!�> ! QÑ'Ô'ˆØˆf�Q˜‰lŒlˆà×Ò˜ !œ c¨!¤fÑ-Ô-Ð-Ø×Ò˜ !œ c¨!¤fÑ-Ô-Ð-àÔ" 6Ô#4°QÔ#7Ô8Ô?ÀÔBˆØÔ&×-Ò-Ñ/Ô/‰
ˆà�Š˜œÔ.Ñ/Ô/Ð/Ð/Ð/r   c                 ó`  — ddl m}  |d¬¦  «        d„ ¦   «         }|                      |                     d¦  «         |d¦  «        ¦  «         |                      |d¬¦  «         |                      |                     d¦  «         |d¦  «        ¦  «         |                      |d¬¦  «         d S )	Nr   r—   Tr    c                 ó2   — d}t          | ¦  «        D ]}|}Œ|S r\   ©r   ©ÚnrK   r#   s      r   rØ   z?TestLoopLiftingInAction.test_no_iteration_w_redef.<locals>.test~  s(   € àˆCÝ˜1‘X”Xð ð �Ø��ØˆJr   éÿÿÿÿr'   ©rÆ   ©r©   r˜   rU   rÏ   rÇ   ©rX   r˜   rØ   s      r   Útest_no_iteration_w_redefz1TestLoopLiftingInAction.test_no_iteration_w_redefy  sÉ   € ð 	ÐÐÐÐÐà	ˆ�dÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	ð 	×Ò˜Ÿš bÑ)Ô)¨4¨4°©8¬8Ñ4Ô4Ð4Ø×Ò˜t¨qÐÑ1Ô1Ð1à×Ò˜Ÿš a™œ¨$¨$¨q©'¬'Ñ2Ô2Ð2Ø×Ò˜t¨qÐÑ1Ô1Ð1Ð1Ð1r   c                 ó`  — ddl m}  |d¬¦  «        d„ ¦   «         }|                      |                     d¦  «         |d¦  «        ¦  «         |                      |d¬¦  «         |                      |                     d¦  «         |d¦  «        ¦  «         |                      |d¬¦  «         d S )	Nr   r—   Tr    c                 ó8   — d}t          | ¦  «        D ]}||z  }Œ|S r\   rè   ré   s      r   rØ   z7TestLoopLiftingInAction.test_no_iteration.<locals>.test�  s,   € àˆCÝ˜1‘X”Xð ð �Ø�q‘��ØˆJr   rë   r'   rì   rí   rî   s      r   Útest_no_iterationz)TestLoopLiftingInAction.test_no_iterationŒ  sÇ   € ØÐÐÐÐÐà	ˆ�dÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	ð 	×Ò˜Ÿš bÑ)Ô)¨4¨4°©8¬8Ñ4Ô4Ð4Ø×Ò˜t¨qÐÑ1Ô1Ð1à×Ò˜Ÿš a™œ¨$¨$¨q©'¬'Ñ2Ô2Ð2Ø×Ò˜t¨qÐÑ1Ô1Ð1Ð1Ð1r   c                 óÎ   — ddl m}  |d¬¦  «        d„ ¦   «         }|                      |                     d¦  «         |d¦  «        ¦  «         |                      |d¬¦  «         d S )Nr   r—   Tr    c                 ó.   — t          | ¦  «        D ]}|}Œ|S rš   rè   )rê   r#   rK   s      r   rØ   z>TestLoopLiftingInAction.test_define_in_loop_body.<locals>.test¡  s#   € å˜1‘X”Xð ð �Ø��ØˆJr   r'   rì   rí   rî   s      r   Útest_define_in_loop_bodyz0TestLoopLiftingInAction.test_define_in_loop_body�  s„   € àÐÐÐÐÐà	ˆ�dÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	ð 	×Ò˜Ÿš a™œ¨$¨$¨q©'¬'Ñ2Ô2Ð2Ø×Ò˜t¨qÐÑ1Ô1Ð1Ð1Ð1r   c                 óÈ   — ddl m}  |d¬¦  «        d„ ¦   «         }t          j        d¦  «        }|                      |                     |¦  «         ||¦  «        ¦  «         dS )zäTest a problem caused by invalid discovery of loop argument
        when a variable is used afterwards but not before.

        Before the fix, this will result in::

        numba.ir.NotDefinedError: 'i' is not defined
        r   r—   Tr    c                 ó¸   — t          | ¦  «        t          j        k    r5| j        dk    r#d}d}t	          | j        d         ¦  «        D ]}Œd S t          ‚d}d\  }}|S )Nr'   ç        r   )r   r   )Útyper   ÚndarrayÚndimr   r(   Ú	Exception)ÚargÚresultr)   r#   s       r   rØ   z;TestLoopLiftingInAction.test_invalid_argument.<locals>.testµ  sn   € å�C‰yŒy�BœJÒ&Ð&Ø”8˜q’=�=Ø �FØ�AÝ" 3¤9¨Q¤<Ñ0Ô0ð ð ˜Øðð õ $�Oà�Ø‘��1Ø�r   rC   N)r©   r˜   r   r2   rU   rÏ   )rX   r˜   rØ   rý   s       r   Útest_invalid_argumentz-TestLoopLiftingInAction.test_invalid_argument«  s|   € ð 	ÐÐÐÐÐà	ˆ�dÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	õ Œi˜‰mŒmˆØ×Ò˜Ÿš cÑ*Ô*¨D¨D°©I¬IÑ6Ô6Ð6Ð6Ð6r   c                 óÊ   — ddl m}  |d¬¦  «        d„ ¦   «         }|                      |                     ¦   «          |¦   «         ¦  «         |                      |d¬¦  «         d S )Nr   r—   Tr    c                  óP   — d} d}t          d¦  «        D ]}|dk    rd} || z  }Œ|| fS )Nr-   r   r;   r½   rè   )r!   Úyr#   s      r   rØ   zHTestLoopLiftingInAction.test_conditionally_defined_in_loop.<locals>.testÉ  sC   € àˆAØˆAÝ˜1‘X”Xð ð �Ø�q’5�5Ø�1Ø�Q‘��Ø�a�4ˆKr   r'   rì   rí   rî   s      r   Ú"test_conditionally_defined_in_loopz:TestLoopLiftingInAction.test_conditionally_defined_in_loopÇ  s€   € ØÐÐÐÐÐØ	ˆ�dÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	ð 	×Ò˜Ÿš™œ¨¨©¬Ñ0Ô0Ð0Ø×Ò˜t¨qÐÑ1Ô1Ð1Ð1Ð1r   c                 ó  — ddl m} dd l}d„ }|                     ¦   «         5  |                     d¦  «           |d¬¦  «        |¦  «        }|                       |d¦  «         |d¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r—   c                 ó2   — | rt          d¦  «        D ]}Œd S d S )NrC   rè   )r"   r#   s     r   r   zRTestLoopLiftingInAction.test_stack_offset_error_when_has_no_return.<locals>.pyfuncÚ  s6   € Øð Ý˜r™œð ð �AØðð ðð r   ÚerrorTr    )r©   r˜   ÚwarningsÚcatch_warningsÚsimplefilterrU   )rX   r˜   r  r   Úcfuncs        r   Ú*test_stack_offset_error_when_has_no_returnzBTestLoopLiftingInAction.test_stack_offset_error_when_has_no_returnÖ  sú   € ØÐÐÐÐÐØˆˆˆð	ð 	ð 	ð
 ×$Ò$Ñ&Ô&ð 	8ð 	8Ø×!Ò! 'Ñ*Ô*Ð*à&�C�C Ð&Ñ&Ô& vÑ.Ô.ˆEØ×Ò˜V˜V D™\œ\¨5¨5°©;¬;Ñ7Ô7Ð7ð		8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð 	8ð 	8s   ¢ABÂBÂ	Bc                 óž   ‡— ddl m} d„ Šˆfd„}  |d¬¦  «        |¦  «        }|                       |d¦  «         |d¦  «        ¦  «         dS )	zŒ
        https://github.com/numba/numba/issues/2179

        Looplifting transformation is using the wrong version of variable `h`.
        r   r—   c                 ó   — | S rš   r†   )r!   s    r   r›   z<TestLoopLiftingInAction.test_variable_scope_bug.<locals>.barí  s   € ØˆHr   c                 óV   •— d}t          | ¦  «        D ]}||z   }Œ| ‰| ¦  «        z
  }|S )Nrø   rè   )r!   râ   Úkr›   s      €r   rŸ   z<TestLoopLiftingInAction.test_variable_scope_bug.<locals>.fooð  s>   ø€ ØˆAÝ˜1‘X”Xð ð �Ø˜‘E��Ø�C�C˜‘F”F‘
ˆAØˆHr   Tr    rC   N)r©   r˜   rU   )rX   r˜   rŸ   r´   r›   s       @r   Útest_variable_scope_bugz/TestLoopLiftingInAction.test_variable_scope_bugå  s‰   ø€ ð 	ÐÐÐÐÐð	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð "ˆsˆs˜DÐ!Ñ!Ô! #Ñ&Ô&ˆØ×Ò˜˜˜R™œ $ $ r¡(¤(Ñ+Ô+Ð+Ð+Ð+r   c                 ól  — ddl m} d„ }  |d¬¦  «        |¦  «        }t          j        d¦  «        df}|                       ||Ž  ||Ž ¦  «         |                      t          |j        |j        d                  j        ¦  «        d¦  «         |j        |j        d                  j        d         }|                      t          |j        ¦  «        d¦  «         t          j        d¦  «        df}|                       ||Ž  ||Ž ¦  «         |                      t          |j        ¦  «        d	¦  «         d
S )z<
        https://github.com/numba/numba/issues/2481
        r   r—   c                 ó’   — | d d |…         }d}t          |j        ¦  «        D ]$}t          ¦   «          ||d d d…         |         z  }Œ%|S )Nr'   rë   )r   r   r1   )r!   r  ÚAr5   r  s        r   rŸ   z<TestLoopLiftingInAction.test_recompilation_loop.<locals>.foo   sV   € ð �#�#�A�#”ˆAØˆAÝ˜1œ6‘]”]ð #ð #�Ý‘”�Ø˜˜$˜$˜B˜$œ œ
‘N��ØˆHr   Tr    rC   r'   rë   r;   N)	r©   r˜   r   r2   rU   rV   r]   rÄ   rW   )rX   r˜   rŸ   r´   ri   rW   s         r   Útest_recompilation_loopz/TestLoopLiftingInAction.test_recompilation_loopú  s=  € ð 	ÐÐÐÐÐð	ð 	ð 	ð "ˆsˆs˜DÐ!Ñ!Ô! #Ñ&Ô&ˆåŒy˜‰}Œ}˜aÐˆØ×Ò˜˜˜d˜ T T¨4 [Ñ1Ô1Ð1à×Ò�˜Tœ^¨D¬O¸AÔ,>Ô?ÔFÑGÔGÈÑKÔKÐKØ” ¤°Ô 2Ô3Ô:¸1Ô=ˆà×Ò�˜VÔ.Ñ/Ô/°Ñ3Ô3Ð3åŒy˜‰}Œ}˜bÐ ˆØ×Ò˜˜˜d˜ T T¨4 [Ñ1Ô1Ð1à×Ò�˜VÔ.Ñ/Ô/°Ñ3Ô3Ð3Ð3Ð3r   zNumPy<1.25 sincos vs libmc           	      ó¨  — ddl m}  |d¬¦  «        d„ ¦   «         }t          ddddddd	¬
¦  «        } |di |¤Ž} |j        di |¤Ž}|                      |d         |d         ¦  «         |                      |d         |d         ¦  «         |j        |j        d                  j        \  }|                      t          |j
        ¦  «        d¦  «         d S )Nr   r—   Tr    c                 óÐ  — t          j        |¦  «        t          j        |¦  «        }}||c|d<   |d<   t          j        |dz
  ¦  «        D ]Š}	t          j        | ||	         z  ¦  «        |t          j        | ||	         z  ¦  «        z  z   ||	dz   <   t          j        |||	         z  ¦  «        |t          j        |||	         z  ¦  «        z  z   ||	dz   <   Œ‹t          ¦   «          ||fS )Nr   r'   )r   rÕ   r2   ÚsinÚcosr1   )
r"   rß   r5   r8   Úx0Úy0rê   ÚxsÚysr#   s
             r   rŸ   zDTestLoopLiftingInAction.test_lift_objectmode_issue_4223.<locals>.foo  sÕ   € å”X˜a‘[”[¥"¤(¨1¡+¤+�ˆBØ˜rˆLˆBˆq‰E�2�a‘5Ý”Y˜q ™s‘^”^ð Dð D�Ýœ&  R¨¤U¡Ñ+Ô+¨aµ"´&¸¸RÀ¼U¹Ñ2CÔ2CÑ.CÑC��1�Q‘3‘Ýœ&  R¨¤U¡Ñ+Ô+¨aµ"´&¸¸RÀ¼U¹Ñ2CÔ2CÑ.CÑC��1�Q‘3‘�Ý‰HŒHˆHØ�r�6ˆMr   g333333û?g333333ã?g333333ó?éÈ   )r"   rß   r5   r8   r  r  rê   r'   r†   )r©   r˜   ÚdictrÏ   rg   r]   rÄ   rW   rU   rV   Únopython_signatures)rX   r˜   rŸ   r   rk   rj   rW   s          r   Útest_lift_objectmode_issue_4223z7TestLoopLiftingInAction.test_lift_objectmode_issue_4223  sþ   € ð 	ÐÐÐÐÐà	ˆ�dÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	õ ˜˜s c¨S°Q¸1ÀÐDÑDÔDˆØˆcˆmˆm�FˆmˆmˆØ�3”;Ð(Ð( Ð(Ð(ˆØ×Ò  A¤¨°¬Ñ4Ô4Ð4Ø×Ò  A¤¨°¬Ñ4Ô4Ð4Ø”= ¤°Ô!2Ô3Ô:‰ˆØ×Ò�˜VÔ7Ñ8Ô8¸!Ñ<Ô<Ð<Ð<Ð<r   c                 ó  — ddl m}  |d¬¦  «        d„ ¦   «         } |d¬¦  «        d„ ¦   «         } |d¬¦  «        d„ ¦   «         }t          j        d¦  «        }t          j        d¦  «        }|                       |||¦  «        |                     ||¦  «        ¦  «         |                       |||¦  «        |                     ||¦  «        ¦  «         |                       |||¦  «        |                     ||¦  «        ¦  «         d S )	Nr   r—   Tr    c                 ó@   — d}t          | |¦  «        D ]
\  }}||z   }Œ|S r\   )Úzip)ÚXÚYr#   r!   r  s        r   Úudt_zipzDTestLoopLiftingInAction.test_lift_zip_and_enumerate.<locals>.udt_zip5  s2   € àˆAÝ˜A˜q™	œ	ð ð ‘��1Ø˜‘E��ØˆHr   c                 ó>   — d}t          | ¦  «        D ]
\  }}||z   }Œ|S r\   )Ú	enumerate)r$  r%  r#   rê   r!   s        r   Úudt_enumeratezJTestLoopLiftingInAction.test_lift_zip_and_enumerate.<locals>.udt_enumerate=  s0   € àˆAÝ! !™œð ð ‘��1Ø˜‘E��ØˆHr   c                 ó`   — d}t          t          | |¦  «        ¦  «        D ]\  }\  }}||z   }Œ|S r\   )r(  r#  )r$  r%  r#   rê   r!   r  s         r   Úudt_enumerate_zipzNTestLoopLiftingInAction.test_lift_zip_and_enumerate.<locals>.udt_enumerate_zipE  s>   € àˆAÝ&¥s¨1¨a¡y¤yÑ1Ô1ð ð ‘	�‘6�A�qØ˜‘E��ØˆHr   r-   )r©   r˜   r   rä   rU   rÏ   )rX   r˜   r&  r)  r+  r$  r%  s          r   Útest_lift_zip_and_enumeratez3TestLoopLiftingInAction.test_lift_zip_and_enumerate1  sN  € àÐÐÐÐÐà	ˆ�dÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	ð 
ˆ�dÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	ð 
ˆ�dÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	õ ŒG�A‰JŒJˆÝŒG�A‰JŒJˆà×Ò˜˜  A™œ¨¯ª¸¸1Ñ(=Ô(=Ñ>Ô>Ð>Ø×Ò˜˜ q¨!Ñ,Ô,¨m×.CÒ.CÀAÀqÑ.IÔ.IÑJÔJÐJØ×ÒÐ*Ð*¨1¨aÑ0Ô0Ø*×2Ò2°1°aÑ8Ô8ñ	:ô 	:ð 	:ð 	:ð 	:r   N)r‘   r’   r“   rÇ   rÒ   rÛ   rå   rï   rò   rõ   rÿ   r  r  r  r  ÚunittestÚskipIfr
   r   r,  r†   r   r   rÂ   rÂ   2  s
  € € € € € ð1ð 1ð 1ð0ð 0ð 0ð&:ð :ð :ð,0ð 0ð 0ð22ð 2ð 2ð&2ð 2ð 2ð"2ð 2ð 2ð7ð 7ð 7ð82ð 2ð 2ð8ð 8ð 8ð,ð ,ð ,ð*4ð 4ð 4ð@ €X„_Ð/Ø0ñ2ô 2ð=ð =ñ2ô 2ð=ð*!:ð !:ð !:ð !:ð !:r   rÂ   Ú__main__)&Úior   Únumpyr   Ú
numba.corer   Únumba.core.compilerr   r   Únumba.tests.supportr   r   r	   r
   r-  rT   Úforce_pyobjectÚenable_loopliftrª   Úpyobject_looplift_flagsÚenable_pyobject_loopliftr   r$   r*   r6   r9   r>   rA   rD   rG   rI   rL   rO   rQ   r•   rÂ   r‘   Úmainr†   r   r   ú<module>r:     sQ  ðØ Ð Ð Ð Ð Ð Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4ð=ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =à €€€ð �‘”€Ø $€Ô Ø!%€Ô à(×-Ò-Ñ/Ô/Ð Ø37Ð Ô 0ðð ð ðð ð ðð ð ðð ð ð	ð 	ð 	ðð ð ðð ð ðð ð ðð ð ðð ð ð
ð 
ð 
ðð ð ð_Ið _Ið _Ið _Ið _I�o xñ _Iô _Ið _IðDGLð GLð GLð GLð GL˜hñ GLô GLð GLðT`:ð `:ð `:ð `:ð `:˜o¨xñ `:ô `:ð `:ðF	 ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   