§
    2@Äj	  ã                   óâ  — d Z ddlmZ  edd¬¦  «        d„ ¦   «         Zd„ Z e¦   «         Zd„ fd	„Z ed¬¦  «        d
„ ¦   «         Z ed¬¦  «        d„ ¦   «         Z ed¬¦  «        d„ ¦   «         Z	 ed¬¦  «        d„ ¦   «         Z
 ed¬¦  «        d„ ¦   «         Zd„ fd„Z ed¬¦  «        d„ ¦   «         Z ed¬¦  «        d„ ¦   «         Zd„ fd„Zd„ fd„Zd„ fd„Zd„ fd„Zd„ fd„Zd„ fd„ZdS ) zh
Usecases of recursive functions.

Some functions are compiled at import time, hence a separate module.
é    ©Újitúi8(i8)T©Únopythonc                 ó^   — | dk     r| S t          | dz
  ¦  «        t          | dz
  ¬¦  «        z   S ©Né   é   ©Ún)Úfib1r   s    úOC:\Projects\Historical\venv\Lib\site-packages\numba/tests/recursion_usecases.pyr   r   
   s1   € àˆ1‚u€uØˆå��A‘‰;Œ;�  A¡˜™œÑ&Ð&ó    c                  ó@   ‡ — t          dd¬¦  «        ˆ fd„¦   «         Š ‰ S )Nr   Tr   c                 óP   •— | dk     r| S  ‰| dz
  ¦  «         ‰| dz
  ¬¦  «        z   S r	   © )r   Úfib2s    €r   r   zmake_fib2.<locals>.fib2   s6   ø€ àˆqŠ5ˆ5ØˆHØˆt�A˜‘E‰{Œ{˜T˜T A¨¡E˜]™]œ]Ñ*Ð*r   r   )r   s   @r   Ú	make_fib2r      s;   ø€ Ýˆ˜DÐ!Ñ!Ô!ð+ð +ð +ð +ñ "Ô!ð+ð
 €Kr   c                 ó   — | S ©Nr   ©Úxs    r   ú<lambda>r      s   € ¨€ r   c                 ó"   ‡— | ˆfd„¦   «         Š‰S )Nc                 óD   •— | dk    r|dk    r|  ‰| |z
  |¦  «        z   S |S ©Nr   r   r   )r   ÚyÚtype_change_selfs     €r   r   z/make_type_change_self.<locals>.type_change_self   s6   ø€ àˆqŠ5ˆ5�Q˜’U�UØÐ'Ð'¨¨A©¨qÑ1Ô1Ñ1Ð1àˆHr   r   )r   r   s    @r   Úmake_type_change_selfr       s.   ø€ Øðð ð ð ñ 	„Sðð
 Ðr   c                 ó\   — | dk     r| S t          | dz
  ¦  «        t          | dz
  ¦  «        z   S ©Nr
   r   )Úfib3r   s    r   r#   r#   )   s/   € àˆ1‚u€uØˆÝ��A‘‰;Œ;�˜a !™e™œÑ$Ð$r   c                 ó    — t          | ¦  «        S r   )Úrunaway_selfr   s    r   r%   r%   1   s   € å˜‰?Œ?Ðr   c                 ó`   — | dk    rt          d¦  «        ‚| dk    rt          | dz
  ¦  «        S dS )Nr   Ú
raise_selfr   )Ú
ValueErrorr'   r   s    r   r'   r'   6   s9   € àˆA‚v€vÝ˜Ñ&Ô&Ð&Ø	
ˆQŠˆÝ˜!˜a™%Ñ Ô Ð àˆqr   c                 ó<   — | dk     rdS | t          | dz
  ¦  «        z  S ©Nr   )Ú	inner_facr   s    r   Ú	outer_facr,   A   ó'   € àˆ1‚u€uØˆqØ�y˜˜Q™ÑÔÑÐr   c                 ó<   — | dk     rdS | t          | dz
  ¦  «        z  S r*   )r,   r   s    r   r+   r+   H   r-   r   c                 ó   — | S r   r   r   s    r   r   r   P   s   € ˜q€ r   c                 óB   ‡‡— | ˆfd„¦   «         Š| ˆfd„¦   «         Š‰‰fS )Nc                 ó:   •— | dk    rd ‰d| ¬¦  «        z  S d| z   S )Nr   r
   r   )Úzr   r   )r   Úbars    €r   Úfoozmake_mutual2.<locals>.fooQ   s,   ø€ àˆqŠ5ˆ5Ø�s�s˜Q !�}‘}”}Ñ$Ð$Ø�1‰uˆr   c                 ó"   •—  ‰| |z
  ¬¦  «        S )Nr   r   )r   r2   r4   s     €r   r3   zmake_mutual2.<locals>.barW   s   ø€ àˆs�Q˜‘Uˆ|‰|Œ|Ðr   r   ©r   r3   r4   s    @@r   Úmake_mutual2r7   P   sW   øø€ Øðð ð ð ñ 	„Sðð
 	ðð ð ð ñ 	„Sðð �ˆ8€Or   c                 ó    — t          | ¦  «        S r   )Úrunaway_mutual_innerr   s    r   Úrunaway_mutualr:   `   s   € å Ñ"Ô"Ð"r   c                 ó    — t          | ¦  «        S r   )r:   r   s    r   r9   r9   e   s   € å˜!ÑÔÐr   c                 ó   — | S r   r   r   s    r   r   r   l   ó   € ¨!€ r   c                 ó>   ‡‡— | ˆfd„¦   «         Š| ˆfd„¦   «         Š‰S )Nc                 óD   •— | dk    r|dk    r|  ‰| |z
  |¦  «        z   S |S r   r   )r   r   r3   s     €r   r4   z$make_type_change_mutual.<locals>.foom   s4   ø€ àˆqŠ5ˆ5�Q˜’U�Uð �s�s˜1˜q™5 !‘}”}Ñ$Ð$àˆHr   c                 óD   •— | dk    r|dk    r|  ‰| |z
  |¦  «        z   S |S r   r   )r   r   r4   s     €r   r3   z$make_type_change_mutual.<locals>.barw   s2   ø€ àˆqŠ5ˆ5�Q˜’U�UØ�s�s˜1˜q™5 !‘}”}Ñ$Ð$àˆHr   r   r6   s    @@r   Úmake_type_change_mutualrA   l   sS   øø€ Øðð ð ð ñ 	„Sðð 	ðð ð ð ñ 	„Sðð €Jr   c                 ó   — | S r   r   r   s    r   r   r   ‚   s   €  !€ r   c                 óv   ‡‡‡‡— | ˆfd„¦   «         Š| ˆfd„¦   «         Š| ˆfd„¦   «         Š| ˆfd„¦   «         Š‰S )Nc                 ó0   •— | dk    r ‰| ¦  «        dz  S dS )Nr   r
   r   r   )r   Úseconds    €r   Úfirstzmake_four_level.<locals>.firstƒ   s%   ø€ ð ˆqŠ5ˆ5Ø�6˜!‘9”9˜q‘=Ð à�1r   c                 ó    •—  ‰| ¦  «        dz  S )Né   r   )r   Úthirds    €r   rE   zmake_four_level.<locals>.second‹   s   ø€ àˆu�Q‰xŒx˜!‰|Ðr   c                 ó    •—  ‰| ¦  «        dz  S )Né   r   )r   Úfourths    €r   rI   zmake_four_level.<locals>.third�   s   ø€ àˆv�a‰yŒy˜1‰}Ðr   c                 ó&   •—  ‰| dz  dz
  ¦  «        S r"   r   )r   rF   s    €r   rL   zmake_four_level.<locals>.fourth“   s   ø€ àˆu�Q˜‘U˜Q‘YÑÔÐr   r   )r   rF   rL   rE   rI   s    @@@@r   Úmake_four_levelrN   ‚   sŸ   øøøø€ Øðð ð ð ñ 	„Sðð 	ðð ð ð ñ 	„Sðð 	ðð ð ð ñ 	„Sðð 	ð ð  ð  ð  ñ 	„Sð ð €Lr   c                 ó   — | S r   r   r   s    r   r   r   š   s   €  1€ r   c                 óX   ‡‡‡— | ˆfd„¦   «         Š| ˆˆfd„¦   «         Š| d„ ¦   «         Š‰S )Nc                 ó*   •— | dk    r ‰| ¦  «        S dS ©Nr   r   r   ©r   Úinners    €r   Úouterzmake_inner_error.<locals>.outer›   s    ø€ àˆqŠ5ˆ5Ø�5˜‘8”8ˆOð �1r   c                 óB   •— | dk    r ‰| dz
  ¦  «        S  ‰| ¦  «        S rR   r   )r   Ú	error_funrU   s    €€r   rT   zmake_inner_error.<locals>.inner£   s.   ø€ àˆqŠ5ˆ5Ø�5˜˜Q™‘<”<Ðð �9˜Q‘<”<Ðr   c                 ó   — | j         S r   )Úndimr   s    r   rW   z#make_inner_error.<locals>.error_fun«   s   € ð Œvˆr   r   )r   rW   rT   rU   s    @@@r   Úmake_inner_errorrZ   š   st   øøø€ Øðð ð ð ñ 	„Sðð 	ð ð  ð  ð  ð  ñ 	„Sð ð 	ðð ñ 	„Sðð €Lr   c                 ó   — | S r   r   r   s    r   r   r   ³   s   €  A€ r   c                 ó>   ‡‡— | ˆfd„¦   «         Š| ˆfd„¦   «         Š‰S )Nc                 ó*   •— | dk    r ‰| ¦  «        S dS rR   r   rS   s    €r   rU   z make_raise_mutual.<locals>.outer´   s   ø€ àˆqŠ5ˆ5Ø�5˜‘8”8ˆOà�1r   c                 óZ   •— | dk    rt          d¦  «        ‚| dk    r ‰| dz
  ¦  «        S dS )Nr   Úraise_mutualr   )r(   )r   rU   s    €r   rT   z make_raise_mutual.<locals>.inner»   s:   ø€ à�Š6ˆ6Ý˜^Ñ,Ô,Ð,Ø�ŠUˆUØ�5˜˜Q™‘<”<Ðà�1r   r   )r   rT   rU   s    @@r   Úmake_raise_mutualr`   ³   sS   øø€ Øðð ð ð ñ 	„Sðð 	ðð ð ð ñ 	„Sðð €Lr   c                 ó   — | S r   r   r   s    r   r   r   Ç   s   € ¨A€ r   c                 ó<   ‡‡— | d„ ¦   «         Š| ˆˆfd„¦   «         Š‰S )Nc                 ó   — | dk    r| dz
  S d S )Né   r   r   r   s    r   r4   z&make_optional_return_case.<locals>.fooÈ   s   € àˆqŠ5ˆ5Ø�q‘5ˆLàˆFr   c                 óN   •—  ‰| ¦  «        }|€|S |dk     r|S |  ‰|¦  «        z  S )Né   r   )r   Úoutr3   r4   s     €€r   r3   z&make_optional_return_case.<locals>.barÏ   s:   ø€ àˆc�!‰fŒfˆØˆ;ØˆJØ�1ŠWˆWØˆJà�s�s˜3‘x”x‘<Ðr   r   r6   s    @@r   Úmake_optional_return_caserh   Ç   sN   øø€ Øðð ñ 	„Sðð 	ð ð  ð  ð  ð  ñ 	„Sð ð €Jr   c                 ó   — | S r   r   r   s    r   r   r   Ü   r=   r   c                 ó"   ‡— | ˆfd„¦   «         Š‰S )Nc                 ó4   •— | dk    rd S |  ‰| dz
  ¦  «        fS rR   r   )r   Ú	make_lists    €r   rl   z*make_growing_tuple_case.<locals>.make_listÞ   s*   ø€ à�Š6ˆ6Ø�4à�9�9˜Q ™UÑ#Ô#Ð$Ð$r   r   )r   rl   s    @r   Úmake_growing_tuple_caserm   Ü   s.   ø€ àð%ð %ð %ð %ñ 	„Sð%ð
 Ðr   N)Ú__doc__Únumbar   r   r   r   r    r#   r%   r'   r,   r+   r7   r:   r9   rA   rN   rZ   r`   rh   rm   r   r   r   ú<module>rp      sk  ððð ð Ð Ð Ð Ð Ð ð €€X˜ÐÑÔð'ð 'ñ Ôð'ðð ð ð €y�{„{€ð *˜kð ð ð ð ð €ˆdÐÑÔð%ð %ñ Ôð%ð €ˆdÐÑÔðð ñ Ôðð €ˆdÐÑÔðð ñ Ôðð €ˆdÐÑÔð ð  ñ Ôð ð €ˆdÐÑÔð ð  ñ Ôð ð !�[ð ð ð ð ð  €ˆdÐÑÔð#ð #ñ Ôð#ð €ˆdÐÑÔðð ñ Ôðð !, ð ð ð ð ð, $˜ð ð ð ð ð0 %˜ð ð ð ð ð2 &˜+ð ð ð ð ð( #. +ð ð ð ð ð* !, ð ð ð ð ð ð r   