§
    ƒÛg  ã                   óü  — 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      ú\/granary/edev/quantum/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   € Ø! T¤W¨d¬gÐ$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"   € å�A”D˜1œ4‘K ¤¨¬¡Ñ-Ô-Ð-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$   ø€ Ý‰GŒG×Ò *ÐÑ-Ô-Ð-Ð-Ð-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   € Ý˜"�eœkÑ*Ô*ð %­z¸"½e¼kÑ/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õ Ô×'Ò'¨¨c°7¸GÑ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Ø3•7Ô.¨sÑ3Ô3°G¸WÑ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Ø”5ˆAˆa‰DØ”5ˆAˆa‰DˆDˆDr   ©ç      ø?ç      @©r^   r^   )r   ÚjitÚnpÚasarrayÚ
zeros_likeÚtestingÚassert_equal©r   rk   ri   rh   s       r   Útest_attributeszTestExtending.test_attributes`   sn   € Ý	Œð	ð 	ñ 
Œð	õ
 ŒJ�zÑ"Ô"ˆÝŒ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Ø”8ˆAˆa‰DˆDˆDr   rl   r^   ro   r   ©r   rp   rq   rr   Úzerosrt   Úassert_allcloserv   s       r   Útest_propertyzTestExtending.test_propertyn   s|   € Ý	Œð	ð 	ñ 
Œð	õ ŒJ�zÑ"Ô"ˆÝŒH�Q‰KŒKˆàˆˆ$Œ��1‰Œˆå
Œ
×"Ò" 1 Q¤4¨¨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Ý! "Ñ%Ô%ˆAˆa‰DˆDˆDr   rl   r^   ro   r   rz   rv   s       r   Útest_extension_type_as_argz(TestExtending.test_extension_type_as_arg{   s|   € Ý	Œð	&ð 	&ñ 
Œð	&õ ŒJ�zÑ"Ô"ˆÝŒH�Q‰KŒKˆàˆˆ$Œ��1‰Œˆå
Œ
×"Ò" 1 Q¤4¨¨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   € å˜1˜Qœ4  1¤Ñ&Ô&ˆCÝ˜1˜Qœ4  1¤Ñ&Ô&ˆCÝ" 3¨Ñ,Ô,ˆFØ”9ˆAˆa‰DØ”9ˆAˆa‰DˆDˆDr   )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Ð+Ñ,Ô,ˆÝŒH�Q‰KŒKˆàˆˆ$Œ��1‰Œˆå”:˜q œt a¨¤d™{¨A¨a¬D°1°Q´4©KÐ8Ñ9Ô9ˆÝ
Œ
×"Ò" 1 hÑ/Ô/Ð/Ð/Ð/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ð.ð .ð .ð .ð .�u”zñ .ô .ð .ð !�L‘N”N€Mà€[Ô˜(Ñ#Ô#ðð ñ $Ô#ðð €]�8ÑÔðð ñ Ôðð €^�LÑ!Ô!ðEð Eð Eð Eð E˜Ô*ñ Eô Eñ "Ô!ðEð Ð˜<¨¨tÑ4Ô4Ð4ØÐ˜<¨¨tÑ4Ô4Ð4à€]�8˜Uœ[¨%¬+Ñ6Ô6ð$ð $ñ 7Ô6ð$ð Ô ð!ð !ð !ð !ð !Ð*ñ !ô !ñ !Ô ð!ð €_�\ 7Ñ+Ô+ð$ð $ñ ,Ô+ð$ð €Ð<Ñ=Ô=ð80ð 80ð 80ð 80ð 80�Lñ 80ô 80ñ >Ô=ð80ðv ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   