o
    บ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   ๚g/home/ubuntu/veenaModal/venv/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$    








	
