§
    1@Äjå&  ã                   óœ   — d dl Z d dlZd dlZd dlmZmZmZ d dlm	Z	 d dl
mZ d„ Z G d„ dee	¦  «        Zedk    r ej        ¦   «          dS dS )	é    N)ÚconfigÚcudaÚtypes)ÚTestCase)ÚBasicUFuncTestc                 ó  — i }d                      d„ t          | j        ¦  «        D ¦   «         ¦  «        }d|› d| j        › d|› d�}t	          |t          ¦   «         |¦  «         |d         }d                     | j        ¦  «        |_        |S )	Nú,c                 ó8   — g | ]}d                       |¦  «        ‘ŒS )za{0})Úformat)Ú.0Úis     úTC:\Projects\Historical\venv\Lib\site-packages\numba/cuda/tests/cudapy/test_ufuncs.pyú
<listcomp>z'_make_ufunc_usecase.<locals>.<listcomp>   s$   € ÐEÐEÐE¨Q˜Ÿš aÑ(Ô(ÐEÐEÐEó    zdef fn(z
):
    np.ú(ú)Úfnz{0}_usecase)ÚjoinÚrangeÚnargsÚ__name__ÚexecÚglobalsr   )ÚufuncÚldictÚarg_strÚfunc_strr   s        r   Ú_make_ufunc_usecaser   
   sŽ   € Ø€EØ�hŠhÐEÐEµ%¸¼Ñ2DÔ2DÐEÑEÔEÑFÔF€GØH˜ÐHÐH¨U¬^ÐHÐH¸gÐHÐHÐH€HÝˆ•7‘9”9˜eÑ$Ô$Ð$Ø	ˆtŒ€BØ×&Ò& u¤~Ñ6Ô6€B„KØ€Ir   c                   óP  — e Zd ZdZd„ Zd„ Zd„ Z ej        d¬¦  «        d„ ¦   «         Z	d1d„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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.d-„ Z/d.„ Z0d/„ Z1d0„ Z2dS )2Ú
TestUFuncsFc                 óØ	  — t          j        | ¦  «         | j                             t	          j        d¦  «        t          j        ft	          j        d¦  «        t          j        ft	          j        d¦  «        t          j        ft	          j        d¦  «        t          j        ft	          j        d¦  «        t          j        ft	          j        d¦  «        t          j        ft	          j        g d¢d¬¦  «        t          j	        t          j        dd¦  «        ft	          j        g d¢d	¬¦  «        t          j	        t          j        dd¦  «        fg¦  «         | j                             t	          j
        d
d¦  «                             d¦  «        t          j	        t          j        dd¦  «        ft	          j
        d
d¦  «                             d¦  «        t          j	        t          j        dd¦  «        ft	          j
        d
d¦  «                             dd¦  «        t          j	        t          j        dd¦  «        ft	          j        t	          j
        d
d¦  «                             d¦  «        ¦  «        t          j	        t          j        dd¦  «        fg¦  «         | j                             t	          j        d
¦  «        t          j        ft	          j        d¦  «        t          j        ft	          j        d¦  «        t          j        ft	          j        d
¦  «        t          j        ft	          j        d
¦  «        t          j        ft	          j        d¦  «        t          j        ft	          j        d¦  «        t          j        ft	          j        d
¦  «        t          j        ft	          j        d
¦  «        t          j        ft	          j        d¦  «        t          j        ft	          j        d¦  «        t          j        ft	          j        d
¦  «        t          j        ft	          j        d
dgt          j        ¬¦  «        t          j	        t          j        dd¦  «        ft	          j        d
dgt          j        ¬¦  «        t          j	        t          j        dd¦  «        fg¦  «         t(          j        | _        t(          j        | _        d
t(          _        d
t(          _        d S )Nù      à¿      à¿ç        ù      à?      à?)r"   r#   r$   Úc8)Údtypeé   ÚCÚc16r   )é   éÿÿÿÿé   )r,   r*   r+   é   y      ð?      ð?r*   r+   ÚF)r   ÚsetUpÚinputsÚextendÚnpÚ	complex64r   Ú
complex128ÚarrayÚArrayÚlinspaceÚreshapeÚfloat64ÚasfortranarrayÚuint8Úint8Úuint16Úint16Ú	ulonglongÚlonglongr   ÚCUDA_LOW_OCCUPANCY_WARNINGSÚ_low_occupancy_warningsÚCUDA_WARN_ON_IMPLICIT_COPYÚ_warn_on_implicit_copy©Úselfs    r   r/   zTestUFuncs.setUp   s¢  € ÝÔ˜TÑ"Ô"Ð"ð 	Œ×ÒÝŒ\˜+Ñ&Ô&­¬Ð8ÝŒ\˜#ÑÔ¥¤Ð0ÝŒ\˜*Ñ%Ô%¥u¤Ð7åŒ]˜;Ñ'Ô'­Ô)9Ð:ÝŒ]˜3ÑÔ¥Ô!1Ð2ÝŒ]˜:Ñ&Ô&­Ô(8Ð9åŒXÐ4Ð4Ð4¸DÐAÑAÔAÝŒ[�œ¨!¨SÑ1Ô1ð3åŒXÐ4Ð4Ð4¸EÐBÑBÔBÝŒ[�Ô)¨1¨cÑ2Ô2ð4ð
ñ 	ô 	ð 	ð  	Œ×ÒåŒ[˜˜AÑÔ×&Ò& wÑ/Ô/ÝŒ[�œ¨¨3Ñ/Ô/ð1åŒ[˜˜AÑÔ×&Ò& zÑ2Ô2ÝŒ[�œ¨¨3Ñ/Ô/ð1õ Œ[˜˜FÑ#Ô#×+Ò+¨A¨rÑ2Ô2ÝŒ[�Ô)¨1¨cÑ2Ô2ð4õ Ô�rœ{¨1¨aÑ0Ô0×8Ò8¸ÑAÔAÑBÔBÝŒ[�œ¨¨3Ñ/Ô/ð1ð
ñ 	ô 	ð 	ð 	Œ×ÒÝŒX�a‰[Œ[�%œ+Ð&ÝŒX�a‰[Œ[�%œ+Ð&ÝŒW�R‰[Œ[�%œ*Ð%ÝŒW�Q‰ZŒZ�œÐ$åŒY�q‰\Œ\�5œ<Ð(ÝŒY�q‰\Œ\�5œ<Ð(ÝŒX�b‰\Œ\�5œ;Ð'ÝŒX�a‰[Œ[�%œ+Ð&åŒ\˜!‰_Œ_�eœoÐ.ÝŒ\˜!‰_Œ_�eœoÐ.ÝŒ[˜‰_Œ_�eœnÐ-ÝŒ[˜‰^Œ^�Uœ^Ð,åŒX�q˜�e¥2¤<Ð0Ñ0Ô0ÝŒ[�œ¨!¨SÑ1Ô1ð3åŒX�q˜�e¥2¤;Ð/Ñ/Ô/ÝŒ[�œ¨¨CÑ0Ô0ð2ð%
ñ 	ô 	ð 	õ, (.Ô'IˆÔ$Ý&,Ô&GˆÔ#ð ./�Ô*à,-�Ô)Ð)Ð)r   c                 óJ   — | j         t          _        | j        t          _        d S ©N)rB   r   rA   rD   rC   rE   s    r   ÚtearDownzTestUFuncs.tearDown`   s   € à-1Ô-I�Ô*Ø,0Ô,G�Ô)Ð)Ð)r   c                 ó    — t          |¦  «        S rH   )r   )rF   r   s     r   r   zTestUFuncs._make_ufunc_usecasee   s   € Ý" 5Ñ)Ô)Ð)r   N)Úmaxsizec                 óH   —  t          j        |¦  «        |¦  «        d         S )N)r'   r'   )r   Újit)rF   ÚpyfuncÚargss      r   Ú_compilezTestUFuncs._compileh   s!   € ð �tŒx˜‰~Œ~˜fÑ%Ô% dÔ+Ð+r   c                 óü  — t           j        t           j        t          j        t           j        dd¦  «        t          j        t           j        dd¦  «        t          j        t           j        dd¦  «        t          j        t           j        dd¦  «        t          j        t           j        dd¦  «        t          j        t           j        dd¦  «        t           j        t           j        t          j        t           j        dd¦  «        t          j        t           j        dd¦  «        t          j        t           j        dd¦  «        t          j        t           j        dd¦  «        g}|                      ||¬¦  «         d S )Nr'   r(   r,   r-   r.   )Úskip_inputs)r   Úfloat32r9   r6   r3   r4   Úbasic_ufunc_test)rF   ÚnamerR   s      r   Úbasic_int_ufunc_testzTestUFuncs.basic_int_ufunc_testn   sÿ   € åŒMÝŒMÝŒK�œ q¨#Ñ.Ô.ÝŒK�œ q¨#Ñ.Ô.ÝŒK�œ q¨#Ñ.Ô.ÝŒK�œ q¨#Ñ.Ô.ÝŒK�œ q¨#Ñ.Ô.ÝŒK�œ q¨#Ñ.Ô.ÝŒOÝÔÝŒK�œ¨¨CÑ0Ô0ÝŒK�œ¨¨CÑ0Ô0ÝŒK�Ô(¨!¨SÑ1Ô1ÝŒK�Ô(¨!¨SÑ1Ô1ð
ˆð  	×Ò˜d°ÐÑ<Ô<Ð<Ð<Ð<r   c                 óH   — |                       t          j        d¬¦  «         d S ©NÚcf©Úkinds)rT   r2   ÚsinrE   s    r   Útest_sin_ufunczTestUFuncs.test_sin_ufunc„   ó#   € Ø×Ò�bœf¨DÐÑ1Ô1Ð1Ð1Ð1r   c                 óH   — |                       t          j        d¬¦  «         d S rX   )rT   r2   ÚcosrE   s    r   Útest_cos_ufunczTestUFuncs.test_cos_ufunc‡   r^   r   c                 óH   — |                       t          j        d¬¦  «         d S rX   )rT   r2   ÚtanrE   s    r   Útest_tan_ufunczTestUFuncs.test_tan_ufuncŠ   r^   r   c                 óH   — |                       t          j        d¬¦  «         d S rX   )rT   r2   ÚarcsinrE   s    r   Útest_arcsin_ufunczTestUFuncs.test_arcsin_ufunc�   ó#   € Ø×Ò�bœi¨tÐÑ4Ô4Ð4Ð4Ð4r   c                 óH   — |                       t          j        d¬¦  «         d S rX   )rT   r2   ÚarccosrE   s    r   Útest_arccos_ufunczTestUFuncs.test_arccos_ufunc�   rh   r   c                 óH   — |                       t          j        d¬¦  «         d S rX   )rT   r2   ÚarctanrE   s    r   Útest_arctan_ufunczTestUFuncs.test_arctan_ufunc“   rh   r   c                 óH   — |                       t          j        d¬¦  «         d S ©NÚfrZ   )rT   r2   Úarctan2rE   s    r   Útest_arctan2_ufunczTestUFuncs.test_arctan2_ufunc–   ó#   € Ø×Ò�bœj°ÐÑ4Ô4Ð4Ð4Ð4r   c                 óH   — |                       t          j        d¬¦  «         d S rp   )rT   r2   ÚhypotrE   s    r   Útest_hypot_ufunczTestUFuncs.test_hypot_ufunc™   s#   € Ø×Ò�bœh¨cÐÑ2Ô2Ð2Ð2Ð2r   c                 óH   — |                       t          j        d¬¦  «         d S rX   )rT   r2   ÚsinhrE   s    r   Útest_sinh_ufunczTestUFuncs.test_sinh_ufuncœ   ó#   € Ø×Ò�bœg¨TÐÑ2Ô2Ð2Ð2Ð2r   c                 óH   — |                       t          j        d¬¦  «         d S rX   )rT   r2   ÚcoshrE   s    r   Útest_cosh_ufunczTestUFuncs.test_cosh_ufuncŸ   r{   r   c                 óH   — |                       t          j        d¬¦  «         d S rX   )rT   r2   ÚtanhrE   s    r   Útest_tanh_ufunczTestUFuncs.test_tanh_ufunc¢   r{   r   c                 óH   — |                       t          j        d¬¦  «         d S rX   )rT   r2   ÚarcsinhrE   s    r   Útest_arcsinh_ufunczTestUFuncs.test_arcsinh_ufunc¥   ó#   € Ø×Ò�bœj°ÐÑ5Ô5Ð5Ð5Ð5r   c                 óH   — |                       t          j        d¬¦  «         d S rX   )rT   r2   ÚarccoshrE   s    r   Útest_arccosh_ufunczTestUFuncs.test_arccosh_ufunc¨   r…   r   c                 óž  — t          j        t           j        dd¦  «        t           j        t          j        t           j        dd¦  «        t           j        t          j        t           j        dd¦  «        t           j        t          j        t           j        dd¦  «        t           j        g}|                      t          j        |d¬¦  «         d S )Nr'   r(   rY   )rR   r[   )	r   r6   Úuint32Úint32Úuint64Úint64rT   r2   Úarctanh)rF   Úto_skips     r   Útest_arctanh_ufunczTestUFuncs.test_arctanh_ufunc«   s�   € õ ”;�uœ|¨Q°Ñ4Ô4µe´lÝ”;�uœ{¨A¨sÑ3Ô3µU´[Ý”;�uœ|¨Q°Ñ4Ô4µe´lÝ”;�uœ{¨A¨sÑ3Ô3µU´[ðBˆð
 	×Ò�bœj°gÀTÐÑJÔJÐJÐJÐJr   c                 óH   — |                       t          j        d¬¦  «         d S rp   )rT   r2   Údeg2radrE   s    r   Útest_deg2rad_ufunczTestUFuncs.test_deg2rad_ufunc»   rt   r   c                 óH   — |                       t          j        d¬¦  «         d S rp   )rT   r2   Úrad2degrE   s    r   Útest_rad2deg_ufunczTestUFuncs.test_rad2deg_ufunc¾   rt   r   c                 óH   — |                       t          j        d¬¦  «         d S rp   )rT   r2   ÚdegreesrE   s    r   Útest_degrees_ufunczTestUFuncs.test_degrees_ufuncÁ   rt   r   c                 óH   — |                       t          j        d¬¦  «         d S rp   )rT   r2   ÚradiansrE   s    r   Útest_radians_ufunczTestUFuncs.test_radians_ufuncÄ   rt   r   c                 óD   — |                       t          j        ¦  «         d S rH   )Úsigned_unsigned_cmp_testr2   ÚgreaterrE   s    r   Útest_greater_ufunczTestUFuncs.test_greater_ufuncÉ   s   € Ø×%Ò%¥b¤jÑ1Ô1Ð1Ð1Ð1r   c                 óD   — |                       t          j        ¦  «         d S rH   )rž   r2   Úgreater_equalrE   s    r   Útest_greater_equal_ufuncz#TestUFuncs.test_greater_equal_ufuncÌ   s   € Ø×%Ò%¥bÔ&6Ñ7Ô7Ð7Ð7Ð7r   c                 óD   — |                       t          j        ¦  «         d S rH   )rž   r2   ÚlessrE   s    r   Útest_less_ufunczTestUFuncs.test_less_ufuncÏ   s   € Ø×%Ò%¥b¤gÑ.Ô.Ð.Ð.Ð.r   c                 óD   — |                       t          j        ¦  «         d S rH   )rž   r2   Ú
less_equalrE   s    r   Útest_less_equal_ufuncz TestUFuncs.test_less_equal_ufuncÒ   s   € Ø×%Ò%¥b¤mÑ4Ô4Ð4Ð4Ð4r   c                 óD   — |                       t          j        ¦  «         d S rH   )rž   r2   Ú	not_equalrE   s    r   Útest_not_equal_ufunczTestUFuncs.test_not_equal_ufuncÕ   s   € Ø×%Ò%¥b¤lÑ3Ô3Ð3Ð3Ð3r   c                 óD   — |                       t          j        ¦  «         d S rH   )rž   r2   ÚequalrE   s    r   Útest_equal_ufunczTestUFuncs.test_equal_ufuncØ   s   € Ø×%Ò%¥b¤hÑ/Ô/Ð/Ð/Ð/r   c                 óD   — |                       t          j        ¦  «         d S rH   )rT   r2   Úlogical_andrE   s    r   Útest_logical_and_ufuncz!TestUFuncs.test_logical_and_ufuncÛ   ó   € Ø×Ò�bœnÑ-Ô-Ð-Ð-Ð-r   c                 óD   — |                       t          j        ¦  «         d S rH   )rT   r2   Ú
logical_orrE   s    r   Útest_logical_or_ufuncz TestUFuncs.test_logical_or_ufuncÞ   s   € Ø×Ò�bœmÑ,Ô,Ð,Ð,Ð,r   c                 óD   — |                       t          j        ¦  «         d S rH   )rT   r2   Úlogical_xorrE   s    r   Útest_logical_xor_ufuncz!TestUFuncs.test_logical_xor_ufuncá   r³   r   c                 óD   — |                       t          j        ¦  «         d S rH   )rT   r2   Úlogical_notrE   s    r   Útest_logical_not_ufuncz!TestUFuncs.test_logical_not_ufuncä   r³   r   c                 óD   — |                       t          j        ¦  «         d S rH   )rT   r2   ÚmaximumrE   s    r   Útest_maximum_ufunczTestUFuncs.test_maximum_ufuncç   ó   € Ø×Ò�bœjÑ)Ô)Ð)Ð)Ð)r   c                 óD   — |                       t          j        ¦  «         d S rH   )rT   r2   ÚminimumrE   s    r   Útest_minimum_ufunczTestUFuncs.test_minimum_ufuncê   rÀ   r   c                 óD   — |                       t          j        ¦  «         d S rH   )rT   r2   ÚfmaxrE   s    r   Útest_fmax_ufunczTestUFuncs.test_fmax_ufuncí   ó   € Ø×Ò�bœgÑ&Ô&Ð&Ð&Ð&r   c                 óD   — |                       t          j        ¦  «         d S rH   )rT   r2   ÚfminrE   s    r   Útest_fmin_ufunczTestUFuncs.test_fmin_ufuncð   rÇ   r   c                 óD   — |                       t          j        ¦  «         d S rH   )rV   r2   Úbitwise_andrE   s    r   Útest_bitwise_and_ufuncz!TestUFuncs.test_bitwise_and_ufuncó   ó   € Ø×!Ò!¥"¤.Ñ1Ô1Ð1Ð1Ð1r   c                 óD   — |                       t          j        ¦  «         d S rH   )rV   r2   Ú
bitwise_orrE   s    r   Útest_bitwise_or_ufuncz TestUFuncs.test_bitwise_or_ufuncö   s   € Ø×!Ò!¥"¤-Ñ0Ô0Ð0Ð0Ð0r   c                 óD   — |                       t          j        ¦  «         d S rH   )rV   r2   Úbitwise_xorrE   s    r   Útest_bitwise_xor_ufuncz!TestUFuncs.test_bitwise_xor_ufuncù   rÎ   r   c                 óD   — |                       t          j        ¦  «         d S rH   )rV   r2   ÚinvertrE   s    r   Útest_invert_ufunczTestUFuncs.test_invert_ufuncü   s   € Ø×!Ò!¥"¤)Ñ,Ô,Ð,Ð,Ð,r   c                 óD   — |                       t          j        ¦  «         d S rH   )rV   r2   Úbitwise_notrE   s    r   Útest_bitwise_not_ufuncz!TestUFuncs.test_bitwise_not_ufuncÿ   rÎ   r   c                 óH   — |                       t          j        d¬¦  «         d S rX   )rT   r2   ÚlogrE   s    r   Útest_log_ufunczTestUFuncs.test_log_ufunc
  r^   r   c                 óH   — |                       t          j        d¬¦  «         d S rX   )rT   r2   Úlog2rE   s    r   Útest_log2_ufunczTestUFuncs.test_log2_ufunc  r{   r   c                 óH   — |                       t          j        d¬¦  «         d S rX   )rT   r2   Úlog10rE   s    r   Útest_log10_ufunczTestUFuncs.test_log10_ufunc  s#   € Ø×Ò�bœh¨dÐÑ3Ô3Ð3Ð3Ð3r   rH   )3r   Ú
__module__Ú__qualname__Ú_numba_parallel_test_r/   rI   r   Ú	functoolsÚ	lru_cacherP   rV   r]   ra   rd   rg   rk   rn   rs   rw   rz   r~   r�   r„   rˆ   r�   r“   r–   r™   rœ   r    r£   r¦   r©   r¬   r¯   r²   r¶   r¹   r¼   r¿   rÃ   rÆ   rÊ   rÍ   rÑ   rÔ   r×   rÚ   rÝ   rà   rã   © r   r   r    r       sé  € € € € € Ø!Ðð@.ð @.ð @.ðDHð Hð Hð
*ð *ð *ð €YÔ Ð&Ñ&Ô&ð,ð ,ñ 'Ô&ð,ð
=ð =ð =ð =ð,2ð 2ð 2ð2ð 2ð 2ð2ð 2ð 2ð5ð 5ð 5ð5ð 5ð 5ð5ð 5ð 5ð5ð 5ð 5ð3ð 3ð 3ð3ð 3ð 3ð3ð 3ð 3ð3ð 3ð 3ð6ð 6ð 6ð6ð 6ð 6ðKð Kð Kð 5ð 5ð 5ð5ð 5ð 5ð5ð 5ð 5ð5ð 5ð 5ð
2ð 2ð 2ð8ð 8ð 8ð/ð /ð /ð5ð 5ð 5ð4ð 4ð 4ð0ð 0ð 0ð.ð .ð .ð-ð -ð -ð.ð .ð .ð.ð .ð .ð*ð *ð *ð*ð *ð *ð'ð 'ð 'ð'ð 'ð 'ð2ð 2ð 2ð1ð 1ð 1ð2ð 2ð 2ð-ð -ð -ð2ð 2ð 2ð2ð 2ð 2ð3ð 3ð 3ð4ð 4ð 4ð 4ð 4r   r    Ú__main__)rç   Únumpyr2   ÚunittestÚnumbar   r   r   Únumba.tests.supportr   Únumba.tests.test_ufuncsr   r   r    r   Úmainré   r   r   ú<module>rñ      sÒ   ðØ Ð Ð Ð Ø Ð Ð Ð Ø €€€à %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø (Ð (Ð (Ð (Ð (Ð (Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ðð ð ð"v4ð v4ð v4ð v4ð v4� ñ v4ô v4ð v4ðr ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   