a
    
d                     @   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Zdevicec                 C   s$   | dk r| S t | d t | d  S N      )fib1n r   s/var/www/html/stable-diffusion-webui/venv/lib/python3.9/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 d S )Nr   r   )type_change_self)xyr   r   r   r   !   s    r   c                 C   s$   | dk r| S t | d t | d  S 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n| dkr&t| d S 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   | 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 d S )N   r   r   r   r   r   r   fooH   s    z&make_optional_return_case.<locals>.fooc                    s0   | }|d u r|S |dk r |S |  | S d 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   s   | S 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__Znumbar   r   r   r   r   r   r   r   r   r   r&   r)   r   r   r   r   <module>   s"   








	
