
    xKg                        d dl mZmZmZ d dlZd dlmZmZm	Z	m
Z
  G d d      Ze	d        Ze	d        Zej                  sd dlmZ d d	lmZmZmZmZmZmZ d d
lmZ d dlmZ d dlmZ  G d de
j@                        Z! e!       Z" ejF                  e      d        Z$ ee      d        Z% ee!       G d dejL                               Z' ee!dd        ee!dd        eee
jP                  e
jP                        d        Z)ejT                   G d de             Z+ ee!d      d        Z, ed       G d de             Z-e.dk(  r ej^                          yy)    )skip_on_cudasimunittestCUDATestCaseN)configcudanjittypesc                   ,    e Zd ZdZd Zd Zed        Zy)Intervalz7
    A half-open interval on the real number line.
    c                      || _         || _        y Nlohi)selfr   r   s      j/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/cuda/tests/cudapy/test_extending.py__init__zInterval.__init__   s        c                 8    d| j                   | j                  fz  S )NzInterval(%f, %f)r   r   s    r   __repr__zInterval.__repr__   s    !TWWdgg$666r   c                 4    | j                   | j                  z
  S r   )r   r   r   s    r   widthzInterval.width   s    ww  r   N)__name__
__module____qualname____doc__r   r   propertyr    r   r   r   r      s%    7 ! !r   r   c                     | j                   S r   )r   )intervals    r   interval_widthr"      s    >>r   c                 v    t        | j                  |j                  z   | j                  |j                  z         S r   r   r   r   )ijs     r   sum_intervalsr'      s'    ADD144K--r   )cgutils)lower_builtinmake_attribute_wrappermodelsregister_modeltype_callabletypeof_impl)AttributeTemplate)registry)
lower_attrc                        e Zd Z fdZ xZS )IntervalTypec                 &    t         |   d       y )Nr   )name)superr   )r   	__class__s    r   r   zIntervalType.__init__+   s    G*-r   )r   r   r   r   __classcell__)r7   s   @r   r3   r3   *   s    	. 	.r   r3   c                     t         S r   )interval_type)valcs     r   typeof_intervalr=   0   s    r   c                     d }|S )Nc                 z    t        | t        j                        r!t        |t        j                        rt        S y y r   )
isinstancer	   Floatr:   r   s     r   typerztype_interval.<locals>.typer6   s,    "ekk*z"ekk/J$$ 0K*r   r   )contextrB   s     r   type_intervalrD   4   s    	% r   c                       e Zd Zd Zy)IntervalModelc                     dt         j                  fdt         j                  fg}t        j                  j	                  | |||       y )Nr   r   )r	   float64r+   StructModelr   )r   dmmfe_typememberss       r   r   zIntervalModel.__init__=   s=    u}}%u}}%G ''c7GDr   N)r   r   r   r   r   r   r   rF   rF   ;   s    	Er   rF   r   r   c                     |j                   }|\  }} t        j                  |      | |      }||_        ||_        |j                         S r   )return_typer(   create_struct_proxyr   r   	_getvalue)rC   buildersigargstypr   r   r!   s           r   impl_intervalrU   G   sJ    ooB37..s3GWE!!##r   c                       e Zd ZeZd Zy)Interval_attrsc                 "    t         j                  S r   )r	   rH   )r   mods     r   resolve_widthzInterval_attrs.resolve_widthT   s    == r   N)r   r   r   r3   keyrZ   r   r   r   rW   rW   P   s    	!r   rW   r   c                 n    |j                  |d      }|j                  |d      }|j                  ||      S Nr      )extract_valuefsub)rC   rQ   rR   argr   r   s         r   cuda_Interval_widthrb   W   s7    ""3*""3*||B##r   z)Extensions not supported in the simulatorc                   $    e Zd Zd Zd Zd Zd Zy)TestExtendingc                     t         j                  d        }t        j                  d      }t        j                  |      } |d   ||       t        j
                  j                  ||       y )Nc                 d    t        |d   |d         }|j                  | d<   |j                  | d<   y r]   r$   rxivs      r   fz(TestExtending.test_attributes.<locals>.fa   s0    !A$!%B55AaD55AaDr         ?      @r^   r^   )r   jitnpasarray
zeros_liketestingassert_equalr   rk   ri   rh   s       r   test_attributeszTestExtending.test_attributes`   sY    		 
	
 JJz"MM!$1


1%r   c                     t         j                  d        }t        j                  d      }t        j                  d      } |d   ||       t        j
                  j                  |d   |d   |d   z
         y )Nc                 F    t        |d   |d         }|j                  | d<   y r]   )r   r   rg   s      r   rk   z&TestExtending.test_property.<locals>.fo   s#    !A$!%B88AaDr   rl   r^   ro   r   r   rp   rq   rr   zerosrt   assert_allcloserv   s       r   test_propertyzTestExtending.test_propertyn   sh    		 
	 JJz"HHQK$1


""1Q41!5r   c                     t         j                  d        }t        j                  d      }t        j                  d      } |d   ||       t        j
                  j                  |d   |d   |d   z
         y )Nc                 D    t        |d   |d         }t        |      | d<   y r]   )r   r"   rg   s      r   rk   z3TestExtending.test_extension_type_as_arg.<locals>.f|   s$    !A$!%B!"%AaDr   rl   r^   ro   r   rz   rv   s       r   test_extension_type_as_argz(TestExtending.test_extension_type_as_arg{   sh    		& 
	& JJz"HHQK$1


""1Q41!5r   c                 .   t         j                  d        }t        j                  d      }t        j                  d      } |d   ||       t        j                  |d   |d   z   |d   |d   z   f      }t        j
                  j                  ||       y )Nc                     t        |d   |d         }t        |d   |d         }t        ||      }|j                  | d<   |j                  | d<   y )Nr   r^         )r   r'   r   r   )rh   ri   iv1iv2iv_sums        r   rk   z8TestExtending.test_extension_type_as_retvalue.<locals>.f   sP    1Q41&C1Q41&C"3,F99AaD99AaDr   )rm   rn   g      @g      @r   ro   r   r^   r   rz   )r   rk   ri   rh   expecteds        r   test_extension_type_as_retvaluez-TestExtending.test_extension_type_as_retvalue   s    		 
	 JJ+,HHQK$1::qtad{AaD1Q4K89


""1h/r   N)r   r   r   rw   r}   r   r   r   r   r   rd   rd   ^   s    &660r   rd   __main__)0numba.cuda.testingr   r   r   numpyrq   numbar   r   r   r	   r   r"   r'   ENABLE_CUDASIM
numba.corer(   numba.core.extendingr)   r*   r+   r,   r-   r.   numba.core.typing.templatesr/   numba.cuda.cudadeclr0   cuda_registrynumba.cuda.cudaimplr1   cuda_lower_attrTyper3   r:   registerr=   rD   rI   rF   rA   rU   register_attrrW   rb   rd   r   mainr   r   r   <module>r      s   F F  + +! !    . . "3 3 >=A.uzz . !NM[(# $ 8  L!E** E "E <t4<t48U[[%++6$ 7$   !* ! !! \7+$ ,$ <=80L 80 >80v zHMMO r   