
    xKgs                         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*                          yy)    N)	vectorizeguvectorize)TestCaseCheckWarningsMixinskip_m1_fenv_errorsc                 ,    | dk  rt        d      | dz  S )N        Value must be positiveg      ?)
ValueError)vals    d/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/npyufunc/test_errors.pysqrtr      s    
Sy122#:    c                     t        | j                  d         D ]#  }| |   dk  rt        d      | |   |d   z  ||<   % y )Nr   r
   )rangeshaper   )inpnoutis       r   
gufunc_foor      sE    399Q< q6A:566Q!A$A !r   c                     | |z  S N abs     r   truedivr          q5Lr   c                     | |z  S r   r   r   s     r   floordivr!          6Mr   c                     | |z  S r   r   r   s     r   	remainderr$      r   r   c                     | |z  S r   r   r   s     r   powerr&   "   r"   r   c                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	TestExceptionsz0
    Test raising exceptions inside ufuncs.
    c                     t        dgfi |t              }t        j                  g dt        j                        }t        j
                  |      }| j                  t              5 } |||       d d d        | j                  dt        j                               | j                  t        |      g d       y # 1 sw Y   LxY w)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hh,BJJ?mmC z*bc3K +.BLL0ABc$67	 +*s   )
B>>Cc                 (    | j                  d       y NTnopythonrD   r?   s    r   test_ufunc_raisezTestExceptions.test_ufunc_raise5       -r   c                 (    | j                  d       y NT)forceobjrI   rJ   s    r   test_ufunc_raise_objmodez'TestExceptions.test_ufunc_raise_objmode8   rL   r   c                 N    t        dgdfi |t              }t        j                  g dt        j                        }t        j
                  |      }| j                  t              5 } ||d|       d d d        | j                  t        |      g d       y # 1 sw Y   'xY w)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hh}BHH5mmC z*bc1cN + 	cL1 +*s   *BB$c                 (    | j                  d       y rF   rT   rJ   s    r   test_gufunc_raisez TestExceptions.test_gufunc_raiseE       .r   c                 (    | j                  d       y 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(   &   s%    8..2//r   r(   c                   \    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y)TestFloatingPointExceptionsz{
    Test floating-point exceptions inside ufuncs.

    Note the warnings emitted by Numpy reflect IEEE-754 semantics.
    c                 p    t        d      t              }t        j                  g d|      }t        j                  g d|      }t        j                  dt	        d      t	        d      d	g      }| j                  d
dg      5   |||      }| j                  ||       ddd       y# 1 sw Y   yxY w)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     %It$W-HH%U3HH%U388RuuU|R@A  ">"="? @Aq'C##C2@ @ @s   B,,B5c                 B    | j                  t        j                         y r   )rs   r4   r6   rJ   s    r   test_truediv_floatz.TestFloatingPointExceptions.test_truediv_float_   s    

+r   c                 B    | j                  t        j                         y r   )rs   r4   rS   rJ   s    r   test_truediv_integerz0TestFloatingPointExceptions.test_truediv_integerb   s    )r   c                 0    t        d      |      }t        j                  g d      }t        j                  g d      }t        j                  |      }| j                  |      5   |||      }| j	                  ||       ddd       y# 1 sw Y   yxY w)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   sv     %It$V,HH%&HH%&88F#  *Aq'C##C2 +**   'BBc                 b    | j                  t        dt        d      t        d      dgddg       y )Nrb   rh   ri   rj   rk   rl   )r}   r!   rm   rJ   s    r   test_floordiv_floatz/TestFloatingPointExceptions.test_floordiv_floatq   s1    !$eElE%L# F!=!<!>	?r   c                 `    | j                  t        dt        d      t        d      dgdg       y )Nr	   ri   rf   rl   )r}   r$   rm   rJ   s    r   test_remainder_floatz0TestFloatingPointExceptions.test_remainder_floatw   s,    	!$eElE%L# F!< =	?r   c                 0    t        d      |      }t        j                  g d      }t        j                  g d      }t        j                  |      }| j                  g       5   |||      }| j	                  ||       ddd       y# 1 sw Y   yxY w)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}   st     %It$V,HH\"HH\"88F#  $Aq'C##C2 %$$r~   c                 4    | j                  t        g d       y )N)r   r   r   r2   )r   r!   rJ   s    r   test_floordiv_intz-TestFloatingPointExceptions.test_floordiv_int   s    h5r   c                 4    | j                  t        g d       y )N)r   r   r   r*   )r   r$   rJ   s    r   test_remainder_intz.TestFloatingPointExceptions.test_remainder_int   s    i6r   c                 h    t        d      t              }t        j                  g d      }t        j                  g d      }t        j                  dt	        d      t	        d      dg      }| j                  dd	g      5   |||      }| j                  ||       d
d
d
       y
# 1 sw Y   y
xY w)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     %It$U+HH%&HH()88RuuU|UCD  ">"8": ;Aq'C##C2; ; ;s   B((B1c                 l   t         j                  } t        dgd      t              }t        j                  g d|      }t        j                  g d|      }t        j                  g d|      }| j                  g       5   |||      }| j                  ||       ddd       y# 1 sw Y   yxY w)	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HHYe,HHZu-88O59  $Aq'C##C2 %$$s   B**B3N)r[   r\   r]   r^   rs   ru   rw   r}   r   r   r   r   r   r   r   r   r   r   r   r`   r`   K   sM    3,*
3? ? ?
367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      su     
  (6 6 #/X #/J_3(,> _3D zHMMO r   