U
    ร9%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   ๚i/var/www/html/Darija-Ai-API/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"   








	
