§
    1@ÄjY  ã                   óp  — d Z ddlmZ  ej        dd¬¦  «        d„ ¦   «         Zd„ Z e¦   «         Zej        d„ ¦   «         Z ej        d¬¦  «        d	„ ¦   «         Z ej        d¬¦  «        d
„ ¦   «         Z	 ej        d¬¦  «        d„ ¦   «         Z
 ej        dd¬¦  «        d„ ¦   «         Zd„ fd„Zd„ f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                 ó\   — | dk     r| S t          | dz
  ¦  «        t          | dz
  ¦  «        z   S ©Né   é   )Úfib1©Úns    ú[C:\Projects\Historical\venv\Lib\site-packages\numba/cuda/tests/cudapy/recursion_usecases.pyr   r      s1   € àˆ1‚u€uØˆõ ��A‘‰;Œ;�˜a !™e™œÑ$Ð$ó    c                  óJ   ‡ — t          j        dd¬¦  «        ˆ fd„¦   «         Š ‰ S )Nr   Tr   c                 óN   •— | dk     r| S  ‰| dz
  ¦  «         ‰| dz
  ¦  «        z   S r   © )r   Úfib2s    €r   r   zmake_fib2.<locals>.fib2   s4   ø€ àˆqŠ5ˆ5ØˆHØˆt�A˜‘E‰{Œ{˜T˜T ! a¡%™[œ[Ñ(Ð(r   )r   Újit)r   s   @r   Ú	make_fib2r      s=   ø€ Ý	„Xˆh˜tÐ$Ñ$Ô$ð)ð )ð )ð )ñ %Ô$ð)ð
 €Kr   c                 óJ   — | dk    r|dk    r| t          | |z
  |¦  «        z   S |S )Nr
   r   )Útype_change_self)ÚxÚys     r   r   r   !   s2   € àˆ1‚u€u��Q’�ØÕ# A¨¡E¨1Ñ-Ô-Ñ-Ð-àˆr   c                 ó\   — | dk     r| S t          | dz
  ¦  «        t          | dz
  ¦  «        z   S r   )Úfib3r   s    r   r   r   *   s/   € àˆ1‚u€uØˆå��A‘‰;Œ;�˜a !™e™œÑ$Ð$r   c                 ó    — t          | ¦  «        S ©N)Úrunaway_self©r   s    r   r   r   3   s   € å˜‰?Œ?Ðr   c                 ó`   — | dk    rt          d¦  «        ‚| dk    rt          | dz
  ¦  «        S dS )Nr
   Ú
raise_selfr   )Ú
ValueErrorr!   r   s    r   r!   r!   8   s9   € àˆA‚v€vÝ˜Ñ&Ô&Ð&Ø	
ˆQŠˆÝ˜!˜a™%Ñ Ô Ð àˆqr   F)ÚdebugÚoptc                 ó$   — t          | ¦  «         d S r   )r!   r   s    r   Úraise_self_kernelr&   B   s   € åˆq�M„M€M€M€Mr   c                 ó   — | S r   r   r   s    r   ú<lambda>r(   G   s   € ¨A€ r   c                 ó<   ‡‡— | d„ ¦   «         Š| ˆˆfd„¦   «         Š‰S )Nc                 ó   — | dk    r| dz
  S d S )Né   r
   r   r   s    r   Úfooz&make_optional_return_case.<locals>.fooH   s   € àˆqŠ5ˆ5Ø�q‘5ˆLàˆFr   c                 óN   •—  ‰| ¦  «        }|€|S |dk     r|S |  ‰|¦  «        z  S )Né   r   )r   ÚoutÚbarr,   s     €€r   r0   z&make_optional_return_case.<locals>.barO   s:   ø€ àˆc�!‰fŒfˆØˆ;ØˆJØ�1ŠWˆWØˆJà�s�s˜3‘x”x‘<Ðr   r   )r   r0   r,   s    @@r   Úmake_optional_return_caser1   G   sN   øø€ Øðð ñ 	„Sðð 	ð ð  ð  ð  ð  ñ 	„Sð ð €Jr   c                 ó   — | S r   r   r   s    r   r(   r(   \   s   € ¨!€ r   c                 ó"   ‡— | ˆfd„¦   «         Š‰S )Nc                 ó4   •— | dk    rd S |  ‰| dz
  ¦  «        fS )Nr   r
   r   )r   Ú	make_lists    €r   r5   z*make_growing_tuple_case.<locals>.make_list^   s*   ø€ à�Š6ˆ6Ø�4à�9�9˜Q ™UÑ#Ô#Ð$Ð$r   r   )r   r5   s    @r   Úmake_growing_tuple_caser6   \   s.   ø€ àð%ð %ð %ð %ñ 	„Sð%ð
 Ðr   N)Ú__doc__Únumbar   r   r   r   r   r   r   r   r!   r&   r1   r6   r   r   r   ú<module>r9      sw  ððð ð Ð Ð Ð Ð Ð ð 
€„ˆ(˜4Ð Ñ Ô ð%ð %ñ !Ô ð%ðð ð ð €y�{„{€ð „ðð ñ 
„ðð 
€„�ÐÑÔð%ð %ñ Ôð%ð 
€„�ÐÑÔðð ñ Ôðð 
€„�ÐÑÔðð ñ Ôðð 
€„�˜%Ð Ñ Ô ðð ñ !Ô ðð #. +ð ð ð ð ð* !, ð ð ð ð ð ð r   