
    J/Ph                     p   d Z ddlmZ  ej        dd          d             Zd Z e            Zej        d             Z ej        d          d	             Z ej        d          d
             Z	 ej        d          d             Z
 ej        dd          d             Zd fdZd fdZdS )z
Usecases of recursive functions in the CUDA target, many derived from
numba/tests/recursion_usecases.py.

Some functions are compiled at import time, hence a separate module.
    )cudai8(i8)Tdevicec                 \    | dk     r| S t          | dz
            t          | dz
            z   S N      )fib1ns    j/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/cuda/tests/cudapy/recursion_usecases.pyr   r      s1    1uu A;;a!e$$    c                  J     t          j        dd           fd              S )Nr   Tr   c                 N    | dk     r| S  | dz
             | dz
            z   S r    )r   fib2s    r   r   zmake_fib2.<locals>.fib2   s4    q55HtAE{{TT!a%[[((r   )r   jit)r   s   @r   	make_fib2r      s=    	Xht$$$) ) ) ) %$)
 Kr   c                 J    | dk    r|dk    r| t          | |z
  |          z   S |S )Nr
   r   )type_change_self)xys     r   r   r   !   s2    1uuQ#AE1----r   c                 \    | dk     r| S t          | dz
            t          | dz
            z   S r   )fib3r   s    r   r   r   *   s/    1uuA;;a!e$$r   c                      t          |           S N)runaway_selfr   s    r   r   r   3   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!   8   s9    Avv&&&	
Q!a%   qr   F)debugoptc                 $    t          |            d S r   )r!   r   s    r   raise_self_kernelr&   B   s    qMMMMMr   c                     | S r   r   r   s    r   <lambda>r(   G   s    A r   c                 <    | d             | fd            S )Nc                     | dk    r| dz
  S d S )N   r
   r   r   s    r   fooz&make_optional_return_case.<locals>.fooH   s    q55q5LFr   c                 N     |           }||S |dk     r|S |  |          z  S )N   r   )r   outbarr,   s     r   r0   z&make_optional_return_case.<locals>.barO   s:    c!ff;J1WWJss3xx<r   r   )r   r0   r,   s    @@r   make_optional_return_caser1   G   sN      	S 	          	S  Jr   c                     | S r   r   r   s    r   r(   r(   \   s    ! r   c                 "    | fd            S )Nc                 4    | dk    rd S |  | dz
            fS )Nr   r
   r   )r   	make_lists    r   r5   z*make_growing_tuple_case.<locals>.make_list^   s*    66499QU##$$r   r   )r   r5   s    @r   make_growing_tuple_caser6   \   s.    % % % % 	S%
 r   N)__doc__numbar   r   r   r   r   r   r   r   r!   r&   r1   r6   r   r   r   <module>r9      sw          
(4   % % ! %   y{{   
 
% % % 
   
   
%     !  #.+    * !,      r   