
    sh                        S SK JrJrJr  S SKrS SKJrJrJ	r	J
r
   " S S5      r\	S 5       r\	S 5       r\R                  (       d  S SKJr  S S	KJrJrJrJrJrJr  S S
KJr  S SKJr  S SKJr   " S S\
R@                  5      r!\!" 5       r"\RF                  " \5      S 5       r$\" \5      S 5       r%\" \!5       " S S\RL                  5      5       r'\" \!SS5        \" \!SS5        \" \\
RP                  \
RP                  5      S 5       r)\RT                   " S S\5      5       r+\" \!S5      S 5       r,\" S5       " S S\5      5       r-\.S:X  a  \R^                  " 5         gg)    )skip_on_cudasimunittestCUDATestCaseN)configcudanjittypesc                   4    \ rS rSrSrS rS r\S 5       rSr	g)Interval   z/
A half-open interval on the real number line.
c                     Xl         X l        g Nlohi)selfr   r   s      z/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cuda/tests/cudapy/test_extending.py__init__Interval.__init__   s        c                 8    SU R                   U R                  4-  $ )NzInterval(%f, %f)r   r   s    r   __repr__Interval.__repr__   s    !TWWdgg$666r   c                 4    U R                   U R                  -
  $ r   r   r   r   s    r   widthInterval.width   s    ww  r   r   N)
__name__
__module____qualname____firstlineno____doc__r   r   propertyr   __static_attributes__ r   r   r   r      s%    7 ! !r   r   c                     U R                   $ r   )r   )intervals    r   interval_widthr)      s    >>r   c                 v    [        U R                  UR                  -   U R                  UR                  -   5      $ 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                   (   ^  \ rS rSrU 4S jrSrU =r$ )IntervalType*   c                     > [         TU ]  SS9  g )Nr   )name)superr   )r   	__class__s    r   r   IntervalType.__init__+   s    G*-r   r&   )r   r    r!   r"   r   r%   __classcell__)r?   s   @r   r:   r:   *   s    	. 	.r   r:   c                     [         $ r   )interval_type)valcs     r   typeof_intervalrF   0   s    r   c                     S nU$ )Nc                     [        U [        R                  5      (       a&  [        U[        R                  5      (       a  [        $ g g r   )
isinstancer	   FloatrC   r   s     r   typertype_interval.<locals>.typer6   s2    "ekk**z"ekk/J/J$$ 0K*r   r&   )contextrK   s     r   type_intervalrN   4   s    	% r   c                       \ rS rSrS rSrg)IntervalModel;   c                     S[         R                  4S[         R                  4/n[        R                  R	                  XX#5        g )Nr   r   )r	   float64r2   StructModelr   )r   dmmfe_typememberss       r   r   IntervalModel.__init__=   s9    u}}%u}}%G ''7Dr   r&   N)r   r    r!   r"   r   r%   r&   r   r   rP   rP   ;   s    	Er   rP   r   r   c                     UR                   nUu  pV[        R                  " U5      " X5      nXWl        Xgl        UR                  5       $ r   )return_typer/   create_struct_proxyr   r   	_getvalue)rM   buildersigargstypr   r   r(   s           r   impl_intervalra   G   s@    oo..s3GE!!##r   c                       \ rS rSr\rS rSrg)Interval_attrsP   c                 "    [         R                  $ r   )r	   rS   )r   mods     r   resolve_widthInterval_attrs.resolve_widthT   s    == r   r&   N)r   r    r!   r"   r:   keyrg   r%   r&   r   r   rc   rc   P   s    	!r   rc   r   c                 l    UR                  US5      nUR                  US5      nUR                  XT5      $ Nr      )extract_valuefsub)rM   r]   r^   argr   r   s         r   cuda_Interval_widthrp   W   s5    ""3*""3*||B##r   z)Extensions not supported in the simulatorc                   ,    \ rS rSrS rS rS rS rSrg)TestExtending^   c                     [         R                  S 5       n[        R                  " S5      n[        R                  " U5      nUS   " X25        [        R
                  R                  X25        g )Nc                 d    [        US   US   5      nUR                  U S'   UR                  U S'   g rk   r+   rxivs      r   f(TestExtending.test_attributes.<locals>.fa   s0    !A$!%B55AaD55AaDr         ?      @rl   rl   )r   jitnpasarray
zeros_liketestingassert_equalr   rz   rx   rw   s       r   test_attributesTestExtending.test_attributes`   sS    		 
	
 JJz"MM!	$


%r   c                     [         R                  S 5       n[        R                  " S5      n[        R                  " S5      nUS   " X25        [        R
                  R                  US   US   US   -
  5        g )Nc                 F    [        US   US   5      nUR                  U S'   g rk   )r   r   rv   s      r   rz   &TestExtending.test_property.<locals>.fo   s#    !A$!%B88AaDr   r|   rl   r   r   r   r   r   r   zerosr   assert_allcloser   s       r   test_propertyTestExtending.test_propertyn   sd    		 
	 JJz"HHQK	$


""1Q41!5r   c                     [         R                  S 5       n[        R                  " S5      n[        R                  " S5      nUS   " X25        [        R
                  R                  US   US   US   -
  5        g )Nc                 D    [        US   US   5      n[        U5      U S'   g rk   )r   r)   rv   s      r   rz   3TestExtending.test_extension_type_as_arg.<locals>.f|   s$    !A$!%B!"%AaDr   r|   rl   r   r   r   r   s       r   test_extension_type_as_arg(TestExtending.test_extension_type_as_arg{   sd    		& 
	& JJz"HHQK	$


""1Q41!5r   c                 0   [         R                  S 5       n[        R                  " S5      n[        R                  " S5      nUS   " X25        [        R                  " US   US   -   US   US   -   45      n[        R
                  R                  X45        g )Nc                     [        US   US   5      n[        US   US   5      n[        X#5      nUR                  U S'   UR                  U S'   g )Nr   rl         )r   r.   r   r   )rw   rx   iv1iv2iv_sums        r   rz   8TestExtending.test_extension_type_as_retvalue.<locals>.f   sN    1Q41&C1Q41&C"3,F99AaD99AaDr   )r}   r~   g      @g      @r   r   r   rl   r   r   )r   rz   rx   rw   expecteds        r   test_extension_type_as_retvalue-TestExtending.test_extension_type_as_retvalue   s~    		 
	 JJ+,HHQK	$::qtad{AaD1Q4K89


""1/r   r&   N)	r   r    r!   r"   r   r   r   r   r%   r&   r   r   rr   rr   ^   s    &660r   rr   __main__)0numba.cuda.testingr   r   r   numpyr   numbar   r   r   r	   r   r)   r.   ENABLE_CUDASIM
numba.corer/   numba.core.extendingr0   r1   r2   r3   r4   r5   numba.core.typing.templatesr6   numba.cuda.cudadeclr7   cuda_registrynumba.cuda.cudaimplr8   cuda_lower_attrTyper:   rC   registerrF   rN   rT   rP   rJ   ra   register_attrrc   rp   rr   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MMO r   