o
    i%  γ                   @   s4  d Z ddlmZ eddddd Zdd	 Ze Zd
d fddZedddd Zedddd Zedddd Z	edddd Z
edddd Zdd fddZedddd Zedddd Zdd fd d!Zd"d fd#d$Zd%d fd&d'Zd(d fd)d*Zd+d fd,d-Zd.d fd/d0Zd1S )2zh
Usecases of recursive functions.

Some functions are compiled at import time, hence a separate module.
ι    ©Ϊjitϊi8(i8)T©Znopythonc                 C   s&   | dk r| S t | d t | d d S ©Nι   ι   ©Ϊn)Ϊfib1r	   © r   ϊm/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/numba/tests/recursion_usecases.pyr   
   s   r   c                      s   t ddd fdd  S )Nr   Tr   c                    s&   | dk r| S  | d  | d d S r   r   r	   ©Ϊfib2r   r   r      s   zmake_fib2.<locals>.fib2r   r   r   r   r   Ϊ	make_fib2   s   
r   c                 C   σ   | S ©Nr   ©Ϊxr   r   r   Ϊ<lambda>   σ    r   c                    σ   |  fdd  S )Nc                    σ&   | dkr|dkr|  | | | S |S ©Nr   r   r   ©r   Ϊy©Ϊtype_change_selfr   r   r      σ   z/make_type_change_self.<locals>.type_change_selfr   r   r   r   r   Ϊmake_type_change_self   s   r   c                 C   s$   | dk r| S t | d t | d  S ©Nr   r   )Ϊfib3r	   r   r   r   r!   )   s   r!   c                 C   σ   t | S r   )Ϊrunaway_selfr   r   r   r   r#   1   σ   r#   c                 C   s(   | dkrt d| dkrt| d S dS )Nr   Ϊ
raise_selfr   )Ϊ
ValueErrorr%   r   r   r   r   r%   6   σ
   r%   c                 C   σ   | dk rdS | t | d  S ©Nr   )Ϊ	inner_facr	   r   r   r   Ϊ	outer_facA   σ   r+   c                 C   r(   r)   )r+   r	   r   r   r   r*   H   r,   r*   c                 C   r   r   r   r   r   r   r   r   P   r   c                    s(   |  fdd| fdd  fS )Nc                    s    | dkrd d| d S d|  S )Nr   r   r   )Ϊzr   r   r   ©Ϊbarr   r   ΪfooQ   s   zmake_mutual2.<locals>.fooc                    s    | | dS )Nr   r   )r   r-   ©r0   r   r   r/   W   s   zmake_mutual2.<locals>.barr   r   r   ©r/   r0   r   Ϊmake_mutual2P   s
   r3   c                 C   r"   r   )Ϊrunaway_mutual_innerr   r   r   r   Ϊrunaway_mutual`   r$   r5   c                 C   r"   r   )r5   r   r   r   r   r4   e   r$   r4   c                 C   r   r   r   r   r   r   r   r   l   r   c                    σ$   |  fdd| fdd S )Nc                    r   r   r   r   r.   r   r   r0   m   s   z$make_type_change_mutual.<locals>.fooc                    r   r   r   r   r1   r   r   r/   w   r   z$make_type_change_mutual.<locals>.barr   r   r   r2   r   Ϊmake_type_change_mutuall   s
   	r7   c                 C   r   r   r   r   r   r   r   r      r   c                    sD   | fdd | fdd| fdd|  fdd S )	Nc                    s   | dkr
 | d S dS )Nr   r   r   r   r   )Ϊsecondr   r   Ϊfirst   s   zmake_four_level.<locals>.firstc                    σ    | d S )Nι   r   r   )Ϊthirdr   r   r8      σ   zmake_four_level.<locals>.secondc                    r:   )Nι   r   r   )Ϊfourthr   r   r<      r=   zmake_four_level.<locals>.thirdc                    s    | d d S r    r   r   )r9   r   r   r?      s   zmake_four_level.<locals>.fourthr   r   r   )r9   r?   r8   r<   r   Ϊmake_four_level   s   r@   c                 C   r   r   r   r   r   r   r   r      r   c                    s2   | fdd|  fdd| dd  S )Nc                    σ   | dkr | S dS ©Nr   r   r   r   ©Ϊinnerr   r   Ϊouter   s   zmake_inner_error.<locals>.outerc                    s   | dkr
| d S  | S rB   r   r   )Ϊ	error_funrE   r   r   rD   £   s   zmake_inner_error.<locals>.innerc                 S   s   | j S r   )Ϊndimr   r   r   r   rF   «   s   z#make_inner_error.<locals>.error_funr   r   r   )rF   rD   rE   r   Ϊmake_inner_error   s   
rH   c                 C   r   r   r   r   r   r   r   r   ³   r   c                    r6   )Nc                    rA   rB   r   r   rC   r   r   rE   ΄   σ   z make_raise_mutual.<locals>.outerc                    s(   | dkrt d| dkr | d S dS )Nr   Zraise_mutualr   )r&   r   )rE   r   r   rD   »   r'   z make_raise_mutual.<locals>.innerr   r   r   )rD   rE   r   Ϊmake_raise_mutual³   s
   rJ   c                 C   r   r   r   r   r   r   r   r   Η   r   c                    s"   | dd |  fdd  S )Nc                 S   s   | dkr| d S d S )Nι   r   r   r   r   r   r   r0   Θ   rI   z&make_optional_return_case.<locals>.fooc                    s,   | }|d u r
|S |dk r|S |  | S )Nι   r   )r   Ϊoutr2   r   r   r/   Ο   s   z&make_optional_return_case.<locals>.barr   r   r   r2   r   Ϊmake_optional_return_caseΗ   s
   
	rN   c                 C   r   r   r   r   r   r   r   r   ά   r   c                    r   )Nc                    s   | dkrd S |  | d fS rB   r   r	   ©Ϊ	make_listr   r   rP   ή   s   z*make_growing_tuple_case.<locals>.make_listr   r   r   rO   r   Ϊmake_growing_tuple_caseά   s   rQ   N)Ϊ__doc__Znumbar   r   r   r   r   r!   r#   r%   r+   r*   r3   r5   r4   r7   r@   rH   rJ   rN   rQ   r   r   r   r   Ϊ<module>   s8    

	







