U
    Η-eυ  γ                   @   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   ϊk/var/www/html/Darija-Ai-Train/env/lib/python3.8/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 k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"   








	
