
    sh                     H   S r SSKJr  \R                  " SSS9S 5       rS r\" 5       r\R                  S 5       r\R                  " SS9S	 5       r\R                  " SS9S
 5       r	\R                  " SS9S 5       r
\R                  " SSS9S 5       rS 4S jrS 4S jrg)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                 L    U S:  a  U $ [        U S-
  5      [        U S-
  5      -   $ N      )fib1ns    ~/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cuda/tests/cudapy/recursion_usecases.pyr   r      s+    1u A;a!e$$    c                  D   ^  [         R                  " SSS9U 4S j5       m T $ )Nr   Tr   c                 B   > U S:  a  U $ T" U S-
  5      T" U S-
  5      -   $ r    )r   fib2s    r   r   make_fib2.<locals>.fib2   s*    q5HAE{T!a%[((r   )r   jit)r   s   @r   	make_fib2r      s'    	XXht$) %)
 Kr   c                 @    U S:  a  US:  a  U [        X-
  U5      -   $ U$ )Nr
   r   )type_change_self)xys     r   r   r   !   s)    1uQ#AE1---r   c                 L    U S:  a  U $ [        U S-
  5      [        U S-
  5      -   $ r   )fib3r   s    r   r   r   *   s)    1uA;a!e$$r   c                     [        U 5      $ N)runaway_selfr   s    r   r   r   3   s    ?r   c                 N    U S:X  a  [        S5      eU S:  a  [        U S-
  5      $ g)Nr
   
raise_selfr   )
ValueErrorr"   r    s    r   r"   r"   8   s-    Av&&	
Q!a%  r   F)debugoptc                     [        U 5        g r   )r"   r    s    r   raise_self_kernelr'   B   s	    qMr   c                     U $ r   r   r    s    r   <lambda>r)   G   s    Ar   c                 2   ^^ U S 5       mU UU4S j5       mT$ )Nc                     U S:  a  U S-
  $ g )N   r
   r   r    s    r   foo&make_optional_return_case.<locals>.fooH   s    q5q5Lr   c                 D   > T" U 5      nUc  U$ US:  a  U$ U T" U5      -  $ )N   r   )r   outbarr-   s     r   r2   &make_optional_return_case.<locals>.barO   s0    !f;J1WJs3x<r   r   )r   r2   r-   s    @@r   make_optional_return_caser4   G   s0     	 	  	  Jr   c                     U $ r   r   r    s    r   r)   r)   \   s    !r   c                    ^ U U4S j5       mT$ )Nc                 ,   > U S::  a  g U T" U S-
  5      4$ )Nr   r
   r   )r   	make_lists    r   r8   *make_growing_tuple_case.<locals>.make_list^   s!    69QU#$$r   r   )r   r8   s    @r   make_growing_tuple_caser:   \   s    % 	%
 r   N)__doc__numbar   r   r   r   r   r   r   r   r"   r'   r4   r:   r   r   r   <module>r=      s     (4 % !% {  
 % %     %  ! #. * !, r   