§
    1@Äjc#  ã                   óH  — d dl Zd dlmZ d dlmZmZmZ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mZmZ d dlmZmZ d dlZd dlZd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z, G d„ de¦  «        Z-e.dk    r ej/        ¦   «          dS dS )é    N)Úcompile_ptx)	Úf2Úi1Úi2Úi4Úi8Úu1Úu2Úu4Úu8)Úcuda)Útypes)ÚCUDATestCaseÚskip_on_cudasimÚskip_unless_cc_53)Úfloat16Úfloat32c                 ó    — t          | ¦  «        S ©N)Úfloat©Úxs    úUC:\Projects\Historical\venv\Lib\site-packages\numba/cuda/tests/cudapy/test_casting.pyÚnative_castr      s   € Ý�‰8Œ8€Oó    c                 ó*   — t          j        | ¦  «        S r   )ÚnpÚint8r   s    r   Úto_int8r      s   € ÝŒ7�1‰:Œ:Ðr   c                 ó*   — t          j        | ¦  «        S r   )r   Úint16r   s    r   Úto_int16r"      ó   € ÝŒ8�A‰;Œ;Ðr   c                 ó*   — t          j        | ¦  «        S r   )r   Úint32r   s    r   Úto_int32r&      r#   r   c                 ó*   — t          j        | ¦  «        S r   )r   Úint64r   s    r   Úto_int64r)      r#   r   c                 ó*   — t          j        | ¦  «        S r   )r   Úuint8r   s    r   Úto_uint8r,   "   r#   r   c                 ó*   — t          j        | ¦  «        S r   )r   Úuint16r   s    r   Ú	to_uint16r/   &   s   € ÝŒ9�Q‰<Œ<Ðr   c                 ó*   — t          j        | ¦  «        S r   )r   Úuint32r   s    r   Ú	to_uint32r2   *   ó   € ÝŒ<˜‰?Œ?Ðr   c                 ó*   — t          j        | ¦  «        S r   )r   Úuint64r   s    r   Ú	to_uint64r6   .   r3   r   c                 óT   — t          j        | ¦  «        t          j        d¦  «        z  S )Ng      à?©r   r   r   s    r   Ú
to_float16r9   2   s   € õ ŒJ�q‰MŒM�BœJ s™OœOÑ+Ð,r   c                 óT   — t          j        | ¦  «        t          j        d¦  «        z  S ©Né   )r   r   r   s    r   Ú
to_float32r=   8   ó   € ÝŒ:�a‰=Œ=�2œ: a™=œ=Ñ(Ð(r   c                 óT   — t          j        | ¦  «        t          j        d¦  «        z  S r;   )r   Úfloat64r   s    r   Ú
to_float64rA   <   r>   r   c                 ó*   — t          j        | ¦  «        S r   )r   Ú	complex64r   s    r   Úto_complex64rD   @   s   € ÝŒ<˜‰?Œ?Ðr   c                 ó*   — t          j        | ¦  «        S r   )r   Ú
complex128r   s    r   Úto_complex128rG   D   s   € ÝŒ=˜ÑÔÐr   c                 óf   — t           j                             t          j        | ¦  «        d¦  «        S r;   ©r   Úfp16Úhmulr   r   r   s    r   Úcuda_int_literal_to_float16rL   O   s"   € õ Œ9�>Š>�"œ* Q™-œ-¨Ñ+Ô+Ð+r   c                 óT   — t          j        | ¦  «        t          j        d¦  «        z  S r;   r8   r   s    r   Ú reference_int_literal_to_float16rN   U   r>   r   c                 óf   — t           j                             t          j        | ¦  «        d¦  «        S ©Ng      @rI   r   s    r   Úcuda_float_literal_to_float16rQ   Y   s"   € õ Œ9�>Š>�"œ* Q™-œ-¨Ñ-Ô-Ð-r   c                 óT   — t          j        | ¦  «        t          j        d¦  «        z  S rP   r8   r   s    r   Ú"reference_float_literal_to_float16rS   _   s   € ÝŒ:�a‰=Œ=�2œ: c™?œ?Ñ*Ð*r   c                   óˆ  — e Zd Zd„ Zed„ ¦   «         Z ed¦  «        d„ ¦   «         Zed„ ¦   «         Z ed¦  «        d„ ¦   «         Z	ed„ ¦   «         Z
ed„ ¦   «         Z ed¦  «        d	„ ¦   «         Z ed¦  «        d
„ ¦   «         Zed„ ¦   «         Z ed¦  «        d„ ¦   «         Zed„ ¦   «         Z ed¦  «        d„ ¦   «         ZdS )ÚTestCastingc                 ó†   ‡‡‡‡—  t          j        d¬¦  «        |¦  «        Št           j        ˆfd„¦   «         Šˆˆˆfd„}|S )NT©Údevicec                 ó0   •—  ‰| d         ¦  «        |d<   d S )Nr   © )ÚargÚresÚwrapped_funcs     €r   Úcuda_wrapper_fnz4TestCasting._create_wrapped.<locals>.cuda_wrapper_fng   s   ø€ à!�\ # a¤&Ñ)Ô)ˆC�‰FˆFˆFr   c                 óš   •— t          j        d‰¬¦  «        }| |d<   t          j        d‰¬¦  «        } ‰d         ||¦  «         |d         S )Né   )Údtyper   )r`   r`   )r   Úzeros)r[   ÚargarrayÚresarrayr^   ÚintypeÚouttypes      €€€r   Ú
wrapper_fnz/TestCasting._create_wrapped.<locals>.wrapper_fnk   sU   ø€ Ý”x ¨Ð0Ñ0Ô0ˆHØˆH�Q‰KÝ”x ¨Ð1Ñ1Ô1ˆHØ!ˆO˜DÔ! (¨HÑ5Ô5Ð5Ø˜A”;Ðr   )r   Újit)ÚselfÚpyfuncre   rf   rg   r^   r]   s     `` @@r   Ú_create_wrappedzTestCasting._create_wrappedd   sr   øøøø€ Ø,•t”x tÐ,Ñ,Ô,¨VÑ4Ô4ˆå	Œð	*ð 	*ð 	*ð 	*ñ 
Œð	*ð	ð 	ð 	ð 	ð 	ð 	ð 	ð Ðr   c           	      óî  — t           t          t          t          f}t          j        t          j        t          j        t          j        f}t          j	        t          j
        t          j        f}t          ||¦  «        D ]ø\  }}|D ]ð}|                      ||¬¦  «        5  |                      |||¦  «        }|                       |d¦  «         |d¦  «        ¦  «         |                       |d¦  «        t!          d¦  «        ¦  «         |                       |d¦  «         |d¦  «        ¦  «         |                       |d¦  «        t!          d¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   ŒñŒùd S )N©ÚfromtyÚtotyçš™™™™™(@çš™™™™™(À)r   r"   r&   r)   r   r   r!   r%   r(   r   r   r@   ÚzipÚsubTestrk   ÚassertEqualÚint©ri   ÚpyfuncsÚtotysÚfromtysrj   ro   rn   Úcfuncs           r   Útest_float_to_intzTestCasting.test_float_to_intt   sŠ  € å�H¥hµÐ9ˆÝ”�"œ(¥B¤H­b¬hÐ7ˆÝ”:�rœz­2¬:Ð6ˆå ¨Ñ/Ô/ð 	?ð 	?‰LˆF�DØ!ð ?ð ?�Ø—\’\¨°d�\Ñ;Ô;ð ?ð ?Ø ×0Ò0°¸ÀÑFÔF�EØ×$Ò$ U U¨4¡[¤[°&°&¸±,´,Ñ?Ô?Ð?Ø×$Ò$ U U¨4¡[¤[µ#°d±)´)Ñ<Ô<Ð<Ø×$Ò$ U U¨5¡\¤\°6°6¸%±=´=ÑAÔAÐAØ×$Ò$ U U¨5¡\¤\µ3°u±:´:Ñ>Ô>Ð>ð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?øð?ð	?ð 	?s   ÂC E(Å(E,Å/E,z(Compilation unsupported in the simulatorc                 óÔ   — t           t          t          t          f}d}t	          ||¦  «        D ]:\  }}t          |t          fd¬¦  «        \  }}|                      d|› d�|¦  «         Œ;d S )N©é   é   é    é@   TrW   z	cvt.rni.sú.f16)r   r"   r&   r)   rr   r   r   ÚassertIn©ri   rw   Úsizesrj   ÚsizeÚptxÚ_s          r   Útest_float16_to_int_ptxz#TestCasting.test_float16_to_int_ptxƒ   sy   € å�H¥hµÐ9ˆØˆå ¨Ñ/Ô/ð 	7ð 	7‰LˆF�DÝ  ­"¨°tÐ<Ñ<Ô<‰FˆC�Ø�MŠMÐ0 dÐ0Ð0Ð0°#Ñ6Ô6Ð6Ð6ð	7ð 	7r   c           	      óF  — t           t          t          t          f}t          j        t          j        t          j        t          j        f}t          j	        t          j
        t          j        f}t          ||¦  «        D ]¤\  }}|D ]œ}|                      ||¬¦  «        5  |                      |||¦  «        }|                       |d¦  «         |d¦  «        ¦  «         |                       |d¦  «        t!          d¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   Œ�Œ¥d S )Nrm   rp   )r   r"   r&   r)   r   r+   r.   r1   r5   r   r   r@   rr   rs   rk   rt   ru   rv   s           r   Útest_float_to_uintzTestCasting.test_float_to_uintŒ   s@  € å�H¥hµÐ9ˆÝ”�2œ9¥b¤iµ´Ð;ˆÝ”:�rœz­2¬:Ð6ˆå ¨Ñ/Ô/ð 	=ð 	=‰LˆF�DØ!ð =ð =�Ø—\’\¨°d�\Ñ;Ô;ð =ð =Ø ×0Ò0°¸ÀÑFÔF�EØ×$Ò$ U U¨4¡[¤[°&°&¸±,´,Ñ?Ô?Ð?Ø×$Ò$ U U¨4¡[¤[µ#°d±)´)Ñ<Ô<Ð<ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =øð=ð	=ð 	=s   ÂA,DÄDÄDc                 óÔ   — t           t          t          t          f}d}t	          ||¦  «        D ]:\  }}t          |t          fd¬¦  «        \  }}|                      d|› d�|¦  «         Œ;d S )Nr}   TrW   z	cvt.rni.ur‚   )r,   r/   r2   r6   rr   r   r   rƒ   r„   s          r   Útest_float16_to_uint_ptxz$TestCasting.test_float16_to_uint_ptx™   sy   € å�Y­	µ9Ð=ˆØˆå ¨Ñ/Ô/ð 	7ð 	7‰LˆF�DÝ  ­"¨°tÐ<Ñ<Ô<‰FˆC�Ø�MŠMÐ0 dÐ0Ð0Ð0°#Ñ6Ô6Ð6Ð6ð	7ð 	7r   c                 óŽ  — t           t          t          f}t          j        t          j        t          j        f}t          ||¦  «        D ]|\  }}|                      |¬¦  «        5  |  	                    |t          j
        |¦  «        }|                       |d¦  «         |d¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   Œ}d S )N)ro   éA  )r9   r=   rA   r   r   r   r@   rr   rs   rk   r(   rt   )ri   rw   rx   rj   ro   rz   s         r   Útest_int_to_floatzTestCasting.test_int_to_float¢   sð   € å�z­:Ð6ˆÝ”�RœZ­¬Ð4ˆå ¨Ñ/Ô/ð 	:ð 	:‰LˆF�DØ—’ 4�Ñ(Ô(ð :ð :Ø×,Ò,¨VµR´X¸tÑDÔD�Ø× Ò    s¡¤¨V¨V°C©[¬[Ñ9Ô9Ð9ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :øð	:ð 	:s   Á#A
B9Â9B=	Ã B=	c                 ól  — t           t          f}t          t          f}t	          ||¦  «        D ]†\  }}|                      |¬¦  «        5  |                      |t          j        t          j        ¦  «        }|  	                     |d¦  «         |d¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   Œ‡d S )N)Úfuncr�   )
rL   rQ   rN   rS   rr   rs   rk   r   r   rt   )ri   Ú	cudafuncsÚ	hostfuncsÚcudafuncÚhostfuncrz   s         r   Útest_literal_to_float16z#TestCasting.test_literal_to_float16¬   sñ   € å0Ý2ð4ˆ	å5Ý7ð9ˆ	õ #& i°Ñ";Ô";ð 	<ð 	<ÑˆH�hØ—’ 8�Ñ,Ô,ð <ð <Ø×,Ò,¨Xµr´zÅ2Ä:ÑNÔN�Ø× Ò    s¡¤¨X¨X°c©]¬]Ñ;Ô;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <øð	<ð 	<s   ÁAB(Â(B,	Â/B,	c                 óÒ   — t           t          t          t          f}d}t	          ||¦  «        D ]9\  }}t          t          |fd¬¦  «        \  }}|                      d|› �|¦  «         Œ:d S )Nr}   TrW   zcvt.rn.f16.s)r   r   r   r   rr   r   r9   rƒ   ©ri   ry   r…   Útyr†   r‡   rˆ   s          r   Útest_int_to_float16_ptxz#TestCasting.test_int_to_float16_ptx¸   óv   € å•r�2�rÐ"ˆØˆå˜G UÑ+Ô+ð 	6ð 	6‰HˆB�Ý ¥¨b¨U¸4Ð@Ñ@Ô@‰FˆC�Ø�MŠMÐ/¨Ð/Ð/°Ñ5Ô5Ð5Ð5ð	6ð 	6r   c                 óÒ   — t           t          t          t          f}d}t	          ||¦  «        D ]9\  }}t          t          |fd¬¦  «        \  }}|                      d|› �|¦  «         Œ:d S )Nr}   TrW   zcvt.rn.f16.u)r	   r
   r   r   rr   r   r9   rƒ   r™   s          r   Útest_uint_to_float16_ptxz$TestCasting.test_uint_to_float16_ptxÁ   rœ   r   c           	      óX  — t           t          t          f}t          j        t          j        t          j        f}t          j        t          ||¦  «        |¦  «        D ]Î\  \  }}}|  
                    ||¬¦  «        5  |                      |||¦  «        }t          j                              |d¦  «         |d¦  «         |d¦  «        z  d¬¦  «         t          j                              |d¦  «         |d¦  «         |d¦  «        z  d¬¦  «         d d d ¦  «         n# 1 swxY w Y   ŒÏd S )Nrm   rp   r<   ga2U0*©3?)Úrtolrq   )r9   r=   rA   r   r   r   r@   Ú	itertoolsÚproductrr   rs   rk   ÚtestingÚassert_allclose)ri   rw   Útysrj   rn   ro   rz   s          r   Útest_float_to_floatzTestCasting.test_float_to_floatÊ   s€  € å�z­:Ð6ˆÝŒz�2œ:¥r¤zÐ2ˆå&/Ô&7½¸GÀSÑ8IÔ8IÈ3Ñ&OÔ&Oð 
	Oð 
	OÑ"ÑˆV�V˜dØ—’ V°$�Ñ7Ô7ð 	Oð 	OØ×,Ò,¨V°V¸TÑBÔB�õ
 ”
×*Ò*¨5¨5°©;¬;Ø+/¨4°©:¬:¸¸¸Q¹¼Ñ+?Àfð +ñ Nô Nð Nå”
×*Ò*¨5¨5°©<¬<Ø+/¨4°©;¬;¸¸¸a¹¼Ñ+@Àvð +ñ Oô Oð Oð	Oð 	Oð 	Oñ 	Oô 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oøøøð 	Oð 	Oð 	Oð 	Oøð
	Oð 
	Os   Á:BDÄD"	Ä%D"	c                 ó¼   — t           t          f}d}t          ||¦  «        D ]:\  }}t          |t          fd¬¦  «        \  }}|                      d|› d�|¦  «         Œ;d S )N)Úf32Úf64TrW   zcvt.r‚   )r=   rA   rr   r   r   rƒ   )ri   rw   Ú	postfixesrj   Úpostfixr‡   rˆ   s          r   Útest_float16_to_float_ptxz%TestCasting.test_float16_to_float_ptxÛ   su   € å�zÐ*ˆØ"ˆ	å" 7¨IÑ6Ô6ð 	5ð 	5‰OˆF�GÝ  ­"¨°tÐ<Ñ<Ô<‰FˆC�Ø�MŠMÐ. Ð.Ð.Ð.°Ñ4Ô4Ð4Ð4ð	5ð 	5r   c                 óL  — t           t          f}t          j        t          j        f}t          j        t          j        t          j        f}t          ||¦  «        D ]É\  }}|D ]Á}|  	                    ||¬¦  «        5  |  
                    |||¦  «        }t          j                              |d¦  «         | |d¦  «        ¦  «        ¦  «         t          j                              |d¦  «         | |d¦  «        ¦  «        dz   ¦  «         d d d ¦  «         n# 1 swxY w Y   ŒÂŒÊd S )Nrm   g®Gáz®	@g®Gáz®	Ày                )rD   rG   r   rC   rF   r   r   r@   rr   rs   rk   r£   r¤   rv   s           r   Útest_float_to_complexz!TestCasting.test_float_to_complexä   s�  € å¥Ð/ˆÝ”�rœ}Ð-ˆÝ”:�rœz­2¬:Ð6ˆå ¨Ñ/Ô/ð 	Kð 	K‰LˆF�DØ!ð 
Kð 
K�Ø—\’\¨°d�\Ñ;Ô;ð 	Kð 	KØ ×0Ò0°¸ÀÑFÔF�Eõ
 ”J×.Ò.¨u¨u°T©{¬{Ø/5¨v°f°f¸T±l´lÑ/CÔ/CñEô Eð Eå”J×.Ò.¨u¨u°U©|¬|Ø/5¨v°f°f¸U±m´mÑ/DÔ/DÀrÑ/IñKô Kð Kð	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Køð
Kð	Kð 	Ks   Á:BDÄDÄDc                 óò   — t          j        t          t          fd¬¦  «        \  }}|                      d|¦  «         t          j        t          t
          fd¬¦  «        \  }}|                      d|¦  «         d S )NTrW   zst.f32zst.u16)r   r   r   r   rƒ   r   )ri   Úfloat32_ptxrˆ   Úfloat16_ptxs       r   Útest_native_castzTestCasting.test_native_cast÷   sj   € åÔ)­+½°zÈ$ÐOÑOÔO‰ˆ�QØ�Š�h Ñ,Ô,Ð,åÔ)­+½°zÈ$ÐOÑOÔO‰ˆ�QØ�Š�h Ñ,Ô,Ð,Ð,Ð,r   N)Ú__name__Ú
__module__Ú__qualname__rk   r   r{   r   r‰   r‹   r�   r�   r—   r›   rž   r¦   r¬   r®   r²   rZ   r   r   rU   rU   c   sÁ  € € € € € ðð ð ð  ð?ð ?ñ Ôð?ð €_Ð?Ñ@Ô@ð7ð 7ñ AÔ@ð7ð ð
=ð 
=ñ Ôð
=ð €_Ð?Ñ@Ô@ð7ð 7ñ AÔ@ð7ð ð:ð :ñ Ôð:ð ð	<ð 	<ñ Ôð	<ð €_Ð?Ñ@Ô@ð6ð 6ñ AÔ@ð6ð €_Ð?Ñ@Ô@ð6ð 6ñ AÔ@ð6ð ðOð Oñ ÔðOð  €_Ð?Ñ@Ô@ð5ð 5ñ AÔ@ð5ð ðKð Kñ ÔðKð$ €_Ð?Ñ@Ô@ð-ð -ñ AÔ@ð-ð -ð -r   rU   Ú__main__)0Únumpyr   Ú
numba.cudar   Únumba.core.typesr   r   r   r   r   r	   r
   r   r   Únumbar   Ú
numba.corer   Únumba.cuda.testingr   r   r   Únumba.typesr   r   r¡   Úunittestr   r   r"   r&   r)   r,   r/   r2   r6   r9   r=   rA   rD   rG   rL   rN   rQ   rS   rU   r³   ÚmainrZ   r   r   ú<module>rÀ      sO  ðØ Ð Ð Ð à "Ð "Ð "Ð "Ð "Ð "Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3à (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ø €€€ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð-ð -ð -ð)ð )ð )ð)ð )ð )ðð ð ðð ð ð,ð ,ð ,ð)ð )ð )ð.ð .ð .ð+ð +ð +ðZ-ð Z-ð Z-ð Z-ð Z-�,ñ Z-ô Z-ð Z-ðz ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   