
    xKg%                     z   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y) zh
Usecases of recursive functions.

Some functions are compiled at import time, hence a separate module.
    jiti8(i8)Tnopythonc                 L    | dk  r| S t        | dz
        t        | dz
        z   S N      n)fib1r   s    b/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/recursion_usecases.pyr   r   
   s)    1uA;A&&    c                  2     t        dd       fd         S )Nr   Tr   c                 B    | dk  r| S  | dz
         | dz
        z   S r	    )r   fib2s    r   r   zmake_fib2.<locals>.fib2   s*    q5HAE{TA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kD  r|dkD  r|  | |z
  |      z   S |S Nr   r   r   )r   ytype_change_selfs     r   r   z/make_type_change_self.<locals>.type_change_self   s,    q5QU'Aq111Hr   r   )r   r   s    @r   make_type_change_selfr       s     	
 r   c                 J    | dk  r| S t        | dz
        t        | dz
        z   S Nr
   r   )fib3r   s    r   r#   r#   )   s)    1uA;a!e$$r   c                     t        |       S r   )runaway_selfr   s    r   r%   r%   1   s    ?r   c                 J    | dk(  rt        d      | dkD  rt        | dz
        S y)Nr   
raise_selfr   )
ValueErrorr'   r   s    r   r'   r'   6   s-    Av&&	
Q!a%  r   c                 0    | dk  ry| t        | dz
        z  S Nr   )	inner_facr   s    r   	outer_facr,   A        1uyQr   c                 0    | dk  ry| 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    qr   c                 6    | fd       | fd       fS )Nc                 2    | dkD  rd d|       z  S d| z   S )Nr   r
   r   )zr   r   )r   bars    r   foozmake_mutual2.<locals>.fooQ   s$    q5sQ!}$$1ur   c                      | |z
        S )Nr   r   )r   r2   r4   s     r   r3   zmake_mutual2.<locals>.barW   s    QU|r   r   r   r3   r4   s    @@r   make_mutual2r7   P   s4     	
 	 	 8Or   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                 2    | fd       | fd       S )Nc                 :    | dkD  r|dkD  r|  | |z
  |      z   S |S r   r   )r   r   r3   s     r   r4   z$make_type_change_mutual.<locals>.foom   s,    q5QU s1q5!}$$Hr   c                 :    | dkD  r|dkD  r|  | |z
  |      z   S |S r   r   )r   r   r4   s     r   r3   z$make_type_change_mutual.<locals>.barw   s*    q5QUs1q5!}$$Hr   r   r6   s    @@r   make_type_change_mutualrA   l   s0     	 	 	 Jr   c                     | S r   r   r   s    r   r   r      s    !r   c                 ^    | fd       | fd       | fd       | fd       S )Nc                 &    | dkD  r |       dz  S y)Nr   r
   r   r   )r   seconds    r   firstzmake_four_level.<locals>.first   s     q5!9q= r   c                      |       dz  S )N   r   )r   thirds    r   rE   zmake_four_level.<locals>.second   s    Qx!|r   c                      |       dz  S )N   r   )r   fourths    r   rI   zmake_four_level.<locals>.third   s    ay1}r   c                       | dz  dz
        S r"   r   )r   rF   s    r   rL   zmake_four_level.<locals>.fourth   s    QUQYr   r   )r   rF   rL   rE   rI   s    @@@@r   make_four_levelrN      sX     	 	 	 	 	 	  	  Lr   c                     | S r   r   r   s    r   r   r      s    1r   c                 F    | fd       | fd       | d        S )Nc                      | dkD  r |       S yNr   r   r   r   inners    r   outerzmake_inner_error.<locals>.outer   s    q58O r   c                 4    | dkD  r | dz
        S  |       S rR   r   )r   	error_funrU   s    r   rT   zmake_inner_error.<locals>.inner   s$    q5Q< Q<r   c                     | j                   S r   )ndimr   s    r   rW   z#make_inner_error.<locals>.error_fun   s     vvr   r   )r   rW   rT   rU   s    @@@r   make_inner_errorrZ      sD     	 	  	  	 	 Lr   c                     | S r   r   r   s    r   r   r      s    Ar   c                 2    | fd       | fd       S )Nc                      | dkD  r |       S yrR   r   rS   s    r   rU   z make_raise_mutual.<locals>.outer   s    q58Or   c                 F    | dk(  rt        d      | dkD  r | dz
        S y)Nr   raise_mutualr   )r(   )r   rU   s    r   rT   z make_raise_mutual.<locals>.inner   s-    6^,,UQ<r   r   )r   rT   rU   s    @@r   make_raise_mutualr`      s0     	 	 	 Lr   c                     | S r   r   r   s    r   r   r      s    Ar   c                 0    | d        | fd       S )Nc                     | dkD  r| dz
  S y )N   r   r   r   s    r   r4   z&make_optional_return_case.<locals>.foo   s    q5q5Lr   c                 @     |       }||S |dk  r|S |  |      z  S )N   r   )r   outr3   r4   s     r   r3   z&make_optional_return_case.<locals>.bar   s0    !f;J1WJs3x<r   r   r6   s    @@r   make_optional_return_caserh      s0     	 	  	  Jr   c                     | S r   r   r   s    r   r   r      r=   r   c                     | fd       S )Nc                 *    | dk  ry |  | dz
        fS rR   r   )r   	make_lists    r   rl   z*make_growing_tuple_case.<locals>.make_list   s!    69QU#$$r   r   )r   rl   s    @r   make_growing_tuple_caserm      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      s7    X' ' { *  d% % d  d  d    d    !   d# # d  !, , $ 0 % 2 & ( #. * !, r   