o
    Y۷i                     @   s   d Z ddlmZ ejddddd Zdd	 Ze Zejd
d Zejdddd Zejdddd Z	ejdddd Z
ejddddd Zdd fddZdd fd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                 C   $   | dk r| S t | d t | d  S N      )fib1n r   `/home/ubuntu/vllm_env/lib/python3.10/site-packages/numba/cuda/tests/cudapy/recursion_usecases.pyr
      s   r
   c                      s   t jddd fdd  S )Nr   Tr   c                    s$   | dk r| S  | d  | d  S r   r   r   fib2r   r   r      s   zmake_fib2.<locals>.fib2)r   jitr   r   r   r   	make_fib2   s   r   c                 C   s&   | dkr|dkr| t | | | S |S )Nr	   r   )type_change_self)xyr   r   r   r   !   s   r   c                 C   r   r   )fib3r   r   r   r   r   *   s   r   c                 C   s   t | S N)runaway_selfr   r   r   r   r   3   s   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   8   s
   r   F)debugoptc                 C   s   t |  d S r   )r   r   r   r   r   raise_self_kernelB   s   r   c                 C      | S r   r   r   r   r   r   <lambda>G       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   fooH   s   z&make_optional_return_case.<locals>.fooc                    s,   | }|d u r
|S |dk r|S |  | S )N   r   )r   outbarr#   r   r   r'   O   s   z&make_optional_return_case.<locals>.barr   r   r   r&   r   make_optional_return_caseG   s
   
	r)   c                 C   r   r   r   r   r   r   r   r    \   r!   c                    s   |  fdd  S )Nc                    s   | dkrd S |  | d fS )Nr   r	   r   r   	make_listr   r   r+   ^   s   z*make_growing_tuple_case.<locals>.make_listr   r(   r   r*   r   make_growing_tuple_case\   s   r,   N)__doc__numbar   r   r
   r   r   r   r   r   r   r   r)   r,   r   r   r   r   <module>   s$    








	
