§
    2@Äj'  ã                   óÖ   — d dl Z d dlZd dlZd dlmZmZ d dlmZm	Z	m
Z
 d dlZd„ Zd„ Zd„ Zd„ Zd„ Zd	„ Z G d
„ de¦  «        Z G d„ dee	¦  «        Zedk    r ej        ¦   «          dS dS )é    N)Ú	vectorizeÚguvectorize)ÚTestCaseÚCheckWarningsMixinÚskip_macos_fenv_errorsc                 ó6   — | dk     rt          d¦  «        ‚| dz  S )Nç        úValue must be positiveg      à?)Ú
ValueError)Úvals    úQC:\Projects\Historical\venv\Lib\site-packages\numba/tests/npyufunc/test_errors.pyÚsqrtr      s$   € Ø
ˆS‚y€yÝÐ1Ñ2Ô2Ð2Ø�#‰:Ðó    c                 óž   — t          | j        d         ¦  «        D ]1}| |         dk     rt          d¦  «        ‚| |         |d         z  ||<   Œ2d S )Nr   r
   )ÚrangeÚshaper   )ÚinpÚnÚoutÚis       r   Ú
gufunc_foor      s\   € Ý�3”9˜Q”<Ñ Ô ð ð ˆØˆqŒ6�AŠ:ˆ:ÝÐ5Ñ6Ô6Ð6Ø�Q”˜!˜Aœ$‘ˆˆA‰ˆðð r   c                 ó   — | |z  S ©N© ©ÚaÚbs     r   Útruedivr      ó   € Øˆq‰5€Lr   c                 ó   — | |z  S r   r   r   s     r   Úfloordivr!      ó   € Ø�‰6€Mr   c                 ó   — | |z  S r   r   r   s     r   Ú	remainderr$      r   r   c                 ó   — | |z  S r   r   r   s     r   Úpowerr&   "   r"   r   c                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚTestExceptionsz0
    Test raising exceptions inside ufuncs.
    c                 óÀ  —  t          dgfi |¤Žt          ¦  «        }t          j        g d¢t          j        ¬¦  «        }t          j        |¦  «        }|                      t          ¦  «        5 } |||¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j
        ¦  «        ¦  «         |                      t          |¦  «        g d¢¦  «         d S )Nzfloat64(float64))é   é   éþÿÿÿé	   éÿÿÿÿé   ©Údtyper
   )r*   é   r   é   r   r+   )r   r   ÚnpÚarrayÚfloat64Ú
zeros_likeÚassertRaisesr   ÚassertInÚstrÚ	exceptionÚassertEqualÚlist©ÚselfÚvectorize_argsÚfÚarrr   Úcms         r   Úcheck_ufunc_raisez TestExceptions.check_ufunc_raise+   s  € Ø=�IÐ)Ð*Ð=Ð=¨nÐ=Ð=½dÑCÔCˆÝŒhÐ,Ð,Ð,µB´JÐ?Ñ?Ô?ˆÝŒm˜CÑ Ô ˆØ×Ò�zÑ*Ô*ð 	¨bØˆAˆc�3‰KŒKˆKð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à�ŠÐ.µ°B´LÑ0AÔ0AÑBÔBÐBà×Ò�˜c™œÐ$6Ð$6Ð$6Ñ7Ô7Ð7Ð7Ð7s   Á-BÂB
ÂB
c                 ó2   — |                       d¬¦  «         d S ©NT©Únopython©rD   ©r?   s    r   Útest_ufunc_raisezTestExceptions.test_ufunc_raise5   ó   € Ø×Ò¨ÐÑ-Ô-Ð-Ð-Ð-r   c                 ó2   — |                       d¬¦  «         d S ©NT)ÚforceobjrI   rJ   s    r   Útest_ufunc_raise_objmodez'TestExceptions.test_ufunc_raise_objmode8   rL   r   c                 ót  —  t          dgdfi |¤Žt          ¦  «        }t          j        g d¢t          j        ¬¦  «        }t          j        |¦  «        }|                      t          ¦  «        5 } ||d|¦  «         d d d ¦  «         n# 1 swxY w Y   |                      t          |¦  «        g d¢¦  «         d S )Nzint32[:], int32[:], int32[:]z(n),()->(n))r*   r2   éýÿÿÿr+   r0   r2   )r2   r+   r   r   )
r   r   r4   r5   Úint32r7   r8   r   r<   r=   r>   s         r   Úcheck_gufunc_raisez!TestExceptions.check_gufunc_raise;   sÿ   € ð*�KÐ7Ð8¸-ð *ð *Ø(ð*ð *Ý*4ñ6ô 6ˆåŒh�}�}�}­B¬HÐ5Ñ5Ô5ˆÝŒm˜CÑ Ô ˆØ×Ò�zÑ*Ô*ð 	¨bØˆAˆc�1�c‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	×Ò�˜c™œ L L LÑ1Ô1Ð1Ð1Ð1s   Á.BÂBÂBc                 ó2   — |                       d¬¦  «         d S rF   ©rT   rJ   s    r   Útest_gufunc_raisez TestExceptions.test_gufunc_raiseE   ó   € Ø×Ò¨ÐÑ.Ô.Ð.Ð.Ð.r   c                 ó2   — |                       d¬¦  «         d S rN   rV   rJ   s    r   Útest_gufunc_raise_objmodez(TestExceptions.test_gufunc_raise_objmodeH   rX   r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__rD   rK   rP   rT   rW   rZ   r   r   r   r(   r(   &   sx   € € € € € ðð ð8ð 8ð 8ð.ð .ð .ð.ð .ð .ð2ð 2ð 2ð/ð /ð /ð/ð /ð /ð /ð /r   r(   c                   ód   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Ze	d„ ¦   «         Z
d„ Zd	„ Zd
„ Zd„ Zd„ ZdS )ÚTestFloatingPointExceptionsz{
    Test floating-point exceptions inside ufuncs.

    Note the warnings emitted by Numpy reflect IEEE-754 semantics.
    c                 óª  —  t          d¬¦  «        t          ¦  «        }t          j        g d¢|¬¦  «        }t          j        g d¢|¬¦  «        }t          j        dt	          d¦  «        t	          d¦  «        d	g¦  «        }|                      d
dg¦  «        5   |||¦  «        }|                      ||¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z'
        Test 1 / 0 and 0 / 0.
        TrG   )ç      @ç      @r	   ç       @r0   ©ç      ð?r	   r	   ç      @rb   ÚinfÚnanç       @údivide by zero encounteredúinvalid value encounteredN)r   r   r4   r5   ÚfloatÚcheck_warningsÚassertPreciseEqual©r?   r1   rA   r   r   ÚexpectedÚress          r   Úcheck_truediv_realz.TestFloatingPointExceptions.check_truediv_realR   s$  € ð %�I˜tÐ$Ñ$Ô$¥WÑ-Ô-ˆÝŒHÐ%Ð%Ð%¨UÐ3Ñ3Ô3ˆÝŒHÐ%Ð%Ð%¨UÐ3Ñ3Ô3ˆÝ”8˜R¥ u¡¤­u°U©|¬|¸RÐ@ÑAÔAˆØ× Ò Ð">Ø"=ð"?ñ @ô @ð 	3ð 	3à�!�A�q‘'”'ˆCØ×#Ò# C¨Ñ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3s   Â#CÃCÃCc                 óD   — |                       t          j        ¦  «         d S r   )rs   r4   r6   rJ   s    r   Útest_truediv_floatz.TestFloatingPointExceptions.test_truediv_float_   s   € Ø×Ò¥¤
Ñ+Ô+Ð+Ð+Ð+r   c                 óD   — |                       t          j        ¦  «         d S r   )rs   r4   rS   rJ   s    r   Útest_truediv_integerz0TestFloatingPointExceptions.test_truediv_integerb   s   € Ø×Ò¥¤Ñ)Ô)Ð)Ð)Ð)r   c                 óX  —  t          d¬¦  «        |¦  «        }t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          j        |¦  «        }|                      |¦  «        5   |||¦  «        }|                      ||¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z)
        Test 1 // 0 and 0 // 0.
        TrG   )rb   rc   r	   g      "@re   N©r   r4   r5   rn   ro   )	r?   ÚpyfuncÚvaluesÚmessagesrA   r   r   rq   rr   s	            r   Úcheck_divmod_floatz.TestFloatingPointExceptions.check_divmod_floate   sö   € ð %�I˜tÐ$Ñ$Ô$ VÑ,Ô,ˆÝŒHÐ%Ð%Ð%Ñ&Ô&ˆÝŒHÐ%Ð%Ð%Ñ&Ô&ˆÝ”8˜FÑ#Ô#ˆØ× Ò  Ñ*Ô*ð 	3ð 	3Ø�!�A�q‘'”'ˆCØ×#Ò# C¨Ñ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ó   Á/#BÂB#Â&B#c                 ó~   — |                       t          dt          d¦  «        t          d¦  «        dgddg¦  «         d S )Nrb   rh   ri   rj   rk   rl   )r}   r!   rm   rJ   s    r   Útest_floordiv_floatz/TestFloatingPointExceptions.test_floordiv_floatq   sI   € Ø×Ò¥Ø!$¥e¨E¡l¤lµE¸%±L´LÀ#Ð FØ!=Ø!<ð!>ñ	?ô 	?ð 	?ð 	?ð 	?r   c                 ó|   — |                       t          dt          d¦  «        t          d¦  «        dgdg¦  «         d S )Nr	   ri   rf   rl   )r}   r$   rm   rJ   s    r   Útest_remainder_floatz0TestFloatingPointExceptions.test_remainder_floatw   sD   € à×Ò¥	Ø!$¥e¨E¡l¤lµE¸%±L´LÀ#Ð FØ!<Ð =ñ	?ô 	?ð 	?ð 	?ð 	?r   c                 óX  —  t          d¬¦  «        |¦  «        }t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          j        |¦  «        }|                      g ¦  «        5   |||¦  «        }|                      ||¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z'
        Test 1 % 0 and 0 % 0.
        TrG   )é   é   r   r-   )r*   r   r   r+   Nry   )r?   rz   r{   rA   r   r   rq   rr   s           r   Úcheck_divmod_intz,TestFloatingPointExceptions.check_divmod_int}   sð   € ð %�I˜tÐ$Ñ$Ô$ VÑ,Ô,ˆÝŒH�\�\�\Ñ"Ô"ˆÝŒH�\�\�\Ñ"Ô"ˆÝ”8˜FÑ#Ô#ˆà× Ò  Ñ$Ô$ð 	3ð 	3Ø�!�A�q‘'”'ˆCØ×#Ò# C¨Ñ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3r~   c                 ó@   — |                       t          g d¢¦  «         d S )N)r„   r   r   r2   )r†   r!   rJ   s    r   Útest_floordiv_intz-TestFloatingPointExceptions.test_floordiv_intŠ   s"   € Ø×Ò�h¨¨¨Ñ5Ô5Ð5Ð5Ð5r   c                 ó@   — |                       t          g d¢¦  «         d S )N)r   r   r   r*   )r†   r$   rJ   s    r   Útest_remainder_intz.TestFloatingPointExceptions.test_remainder_int�   s"   € Ø×Ò�i¨¨¨Ñ6Ô6Ð6Ð6Ð6r   c                 ó¢  —  t          d¬¦  «        t          ¦  «        }t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          j        dt	          d¦  «        t	          d¦  «        dg¦  «        }|                      dd	g¦  «        5   |||¦  «        }|                      ||¦  «         d
d
d
¦  «         d
S # 1 swxY w Y   d
S )z5
        Test 0 ** -1 and 2 ** <big number>.
        TrG   )rb   r	   rj   rd   )rf   g      ð¿g@Œµx¯Drg   rb   rh   g      °@rk   zoverflow encounteredN)r   r&   r4   r5   rm   rn   ro   )r?   rA   r   r   rq   rr   s         r   Útest_power_floatz,TestFloatingPointExceptions.test_power_float�   s  € ð %�I˜tÐ$Ñ$Ô$¥UÑ+Ô+ˆÝŒHÐ%Ð%Ð%Ñ&Ô&ˆÝŒHÐ(Ð(Ð(Ñ)Ô)ˆÝ”8˜R¥ u¡¤­u°U©|¬|¸UÐCÑDÔDˆØ× Ò Ð">Ø"8ð":ñ ;ô ;ð 	3ð 	3à�!�A�q‘'”'ˆCØ×#Ò# C¨Ñ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3s   Â#CÃCÃCc                 óŽ  — t           j        } t          dgd¬¦  «        t          ¦  «        }t          j        g d¢|¬¦  «        }t          j        g d¢|¬¦  «        }t          j        g d¢|¬¦  «        }|                      g ¦  «        5   |||¦  «        }|                      ||¦  «         ddd¦  «         dS # 1 swxY w Y   dS )	z
        Test 0 ** -1.
        Note 2 ** <big number> returns an undefined value (depending
        on the algorithm).
        zint64(int64, int64)TrG   )r„   r   r…   r0   )r*   r.   r2   )r„   lûÿÿÿ         é$   N)r4   Úint64r   r&   r5   rn   ro   rp   s          r   Útest_power_integerz.TestFloatingPointExceptions.test_power_integer�   s  € õ ”ˆØ=�IÐ,Ð-¸Ð=Ñ=Ô=½eÑDÔDˆÝŒH�Y�Y�Y eÐ,Ñ,Ô,ˆÝŒH�Z�Z�Z uÐ-Ñ-Ô-ˆÝ”8˜O˜O˜O°5Ð9Ñ9Ô9ˆØ× Ò  Ñ$Ô$ð 	3ð 	3Ø�!�A�q‘'”'ˆCØ×#Ò# C¨Ñ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3s   Â
#B:Â:B>ÃB>N)r[   r\   r]   r^   rs   ru   rw   r}   r€   r   r‚   r†   rˆ   rŠ   rŒ   r�   r   r   r   r`   r`   K   sÐ   € € € € € ðð ð3ð 3ð 3ð,ð ,ð ,ð*ð *ð *ð
3ð 
3ð 
3ð?ð ?ð ?ð ð?ð ?ñ Ôð?ð
3ð 3ð 3ð6ð 6ð 6ð7ð 7ð 7ð3ð 3ð 3ð3ð 3ð 3ð 3ð 3r   r`   Ú__main__)Ú
contextlibÚsysÚnumpyr4   Únumbar   r   Únumba.tests.supportr   r   r   Úunittestr   r   r   r!   r$   r&   r(   r`   r[   Úmainr   r   r   ú<module>r™      sZ  ðØ Ð Ð Ð Ø 
€
€
€
à Ð Ð Ð à (Ð (Ð (Ð (Ð (Ð (Ð (Ð (ð9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9à €€€ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð#/ð #/ð #/ð #/ð #/�Xñ #/ô #/ð #/ðJ_3ð _3ð _3ð _3ð _3 (Ð,>ñ _3ô _3ð _3ðD ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   