
    J/Ph                        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        s d 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j#        e          d             Z$ ee          d             Z% ee!           G d dej&                              Z' ee!dd            ee!dd            eee
j(        e
j(                  d             Z)ej*         G d de                      Z+ ee!d          d             Z, ed           G d de                      Z-e.dk    r ej/                     dS dS )    )skip_on_cudasimunittestCUDATestCaseN)configcudanjittypesc                   4    e Zd ZdZd Zd Zed             ZdS )Intervalz7
    A half-open interval on the real number line.
    c                 "    || _         || _        d S Nlohi)selfr   r   s      f/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/cuda/tests/cudapy/test_extending.py__init__zInterval.__init__   s        c                 $    d| j         | j        fz  S )NzInterval(%f, %f)r   r   s    r   __repr__zInterval.__repr__   s    !TWdg$666r   c                      | j         | j        z
  S r   )r   r   r   s    r   widthzInterval.width   s    w  r   N)__name__
__module____qualname____doc__r   r   propertyr    r   r   r   r      sW           7 7 7 ! ! X! ! !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"    AD14K---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                 L    t                                          d           d S )Nr   )name)superr   )r   	__class__s    r   r   zIntervalType.__init__+   s$    GG*-----r   )r   r   r   r   __classcell__)r7   s   @r   r3   r3   *   s8        	. 	. 	. 	. 	. 	. 	. 	. 	.r   r3   c                     t           S r   )interval_type)valcs     r   typeof_intervalr=   0   s    r   c                     d }|S )Nc                     t          | t          j                  r!t          |t          j                  r	t          S d S d S r   )
isinstancer	   Floatr:   r   s     r   typerztype_interval.<locals>.typer6   sC    "ek** %z"ek/J/J %$$% % % %r   r   )contextrB   s     r   type_intervalrD   4   s    	% 	% 	% r   c                       e Zd Zd ZdS )IntervalModelc                     dt           j        fdt           j        fg}t          j                            | |||           d S )Nr   r   )r	   float64r+   StructModelr   )r   dmmfe_typememberss       r   r   zIntervalModel.__init__=   sB    u}%u}%G ''c7GDDDDDr   N)r   r   r   r   r   r   r   rF   rF   ;   s(        	E 	E 	E 	E 	Er   rF   r   r   c                     |j         }|\  }} t          j        |          | |          }||_        ||_        |                                S r   )return_typer(   create_struct_proxyr   r   	_getvalue)rC   buildersigargstypr   r   r!   s           r   impl_intervalrU   G   sN    oB37.s33GWEE!!###r   c                       e Zd ZeZd ZdS )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                     |                     |d          }|                     |d          }|                    ||          S Nr      )extract_valuefsub)rC   rQ   rR   argr   r   s         r   cuda_Interval_widthrb   W   s@    ""3**""3**||B###r   z)Extensions not supported in the simulatorc                   &    e Zd Zd Zd Zd Zd ZdS )TestExtendingc                     t           j        d             }t          j        d          }t          j        |          } |d         ||           t          j                            ||           d S )Nc                 f    t          |d         |d                   }|j        | d<   |j        | d<   d S r]   r$   rxivs      r   fz(TestExtending.test_attributes.<locals>.fa   s3    !A$!%%B5AaD5AaDDDr         ?      @r^   r^   )r   jitnpasarray
zeros_liketestingassert_equalr   rk   ri   rh   s       r   test_attributeszTestExtending.test_attributes`   sn    		 	 
	
 Jz""M!$1

1%%%%%r   c                    t           j        d             }t          j        d          }t          j        d          } |d         ||           t          j                            |d         |d         |d         z
             d S )Nc                 R    t          |d         |d                   }|j        | d<   d S r]   )r   r   rg   s      r   rk   z&TestExtending.test_property.<locals>.fo   s(    !A$!%%B8AaDDDr   rl   r^   ro   r   r   rp   rq   rr   zerosrt   assert_allcloserv   s       r   test_propertyzTestExtending.test_propertyn   s|    		 	 
	 Jz""HQKK$1

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

""1Q41!55555r   c                 L   t           j        d             }t          j        d          }t          j        d          } |d         ||           t          j        |d         |d         z   |d         |d         z   f          }t          j                            ||           d S )Nc                     t          |d         |d                   }t          |d         |d                   }t          ||          }|j        | d<   |j        | d<   d S )Nr   r^         )r   r'   r   r   )rh   ri   iv1iv2iv_sums        r   rk   z8TestExtending.test_extension_type_as_retvalue.<locals>.f   sY    1Q41&&C1Q41&&C"3,,F9AaD9AaDDDr   )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    		 	 
	 J+,,HQKK$1:qtad{AaD1Q4K899

""1h/////r   N)r   r   r   rw   r}   r   r   r   r   r   rd   rd   ^   sP        & & &6 6 66 6 60 0 0 0 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      sN   F F F F F F F F F F     + + + + + + + + + + + +! ! ! ! ! ! ! !     . . .  :$""""""3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 >===========AAAAAA. . . . .uz . . . !LNNM[(##  $# ]8   ^L!!E E E E E* E E "!E <t444<t444]8U[%+66$ $ 76$  ! ! ! ! !* ! ! ! ! _\7++$ $ ,+$ <==80 80 80 80 80L 80 80 >=80v zHMOOOOO r   