U
    -es                     @   s   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d Zdd Zdd	 Zd
d Zdd Zdd ZG dd deZG dd dee	Zedkre  dS )    N)	vectorizeguvectorize)TestCaseCheckWarningsMixinskip_m1_fenv_errorsc                 C   s   | dk rt d| d S )N        Value must be positiveg      ?)
ValueError)val r   a/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/numba/tests/npyufunc/test_errors.pysqrt   s    r   c                 C   s@   t | jd D ],}| | dk r&td| | |d  ||< qd S )Nr   r   )rangeshaper	   )Zinpnoutir   r   r   
gufunc_foo   s    r   c                 C   s   | | S Nr   abr   r   r   truediv   s    r   c                 C   s   | | S r   r   r   r   r   r   floordiv   s    r   c                 C   s   | | S r   r   r   r   r   r   	remainder   s    r   c                 C   s   | | S r   r   r   r   r   r   power"   s    r   c                   @   s@   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dS )TestExceptionsz0
    Test raising exceptions inside ufuncs.
    c              	   K   s   t dgf|t}tjddddddgtjd}t|}| t}||| W 5 Q R X | d	t	|j
 | t|dd
ddddg d S )Nzfloat64(float64)      	      dtyper      r      )r   r   nparrayfloat64
zeros_likeassertRaisesr	   ZassertInstr	exceptionassertEquallistselfZvectorize_argsfZarrr   cmr   r   r   check_ufunc_raise+   s    
z TestExceptions.check_ufunc_raisec                 C   s   | j dd d S NTZnopythonr4   r1   r   r   r   test_ufunc_raise5   s    zTestExceptions.test_ufunc_raisec                 C   s   | j dd d S NT)Zforceobjr7   r8   r   r   r   test_ufunc_raise_objmode8   s    z'TestExceptions.test_ufunc_raise_objmodec              	   K   st   t dgdf|t}tjddddgtjd}t|}| t}||d| W 5 Q R X | t	|ddddg d S )	Nzint32[:], int32[:], int32[:]z(n),()->(n)r   r%   r   r#   r   )
r   r   r'   r(   int32r*   r+   r	   r.   r/   r0   r   r   r   check_gufunc_raise;   s    

z!TestExceptions.check_gufunc_raisec                 C   s   | j dd d S r5   r>   r8   r   r   r   test_gufunc_raiseE   s    z TestExceptions.test_gufunc_raisec                 C   s   | j dd d S r:   r?   r8   r   r   r   test_gufunc_raise_objmodeH   s    z(TestExceptions.test_gufunc_raise_objmodeN)
__name__
__module____qualname____doc__r4   r9   r;   r>   r@   rA   r   r   r   r   r   &   s   

r   c                   @   sl   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Ze	dd Z
dd Zdd Zdd Zdd Zdd ZdS )TestFloatingPointExceptionsz{
    Test floating-point exceptions inside ufuncs.

    Note the warnings emitted by Numpy reflect IEEE-754 semantics.
    c              	   C   s   t ddt}tjddddg|d}tjdddd	g|d}tdtd
tddg}| ddg |||}| || W 5 Q R X dS )z'
        Test 1 / 0 and 0 / 0.
        Tr6         @      @r          @r#         ?      @infnan       @divide by zero encounteredinvalid value encounteredN)r   r   r'   r(   floatcheck_warningsassertPreciseEqualr1   r$   r2   r   r   expectedresr   r   r   check_truediv_realR   s    
z.TestFloatingPointExceptions.check_truediv_realc                 C   s   |  tj d S r   )rW   r'   r)   r8   r   r   r   test_truediv_float_   s    z.TestFloatingPointExceptions.test_truediv_floatc                 C   s   |  tj d S r   )rW   r'   r=   r8   r   r   r   test_truediv_integerb   s    z0TestFloatingPointExceptions.test_truediv_integerc           	   	   C   sl   t dd|}tddddg}tddddg}t|}| | |||}| || W 5 Q R X d	S )
z)
        Test 1 // 0 and 0 // 0.
        Tr6   rG   rH   r   g      "@rJ   rK   Nr   r'   r(   rR   rS   )	r1   pyfuncvaluesmessagesr2   r   r   rU   rV   r   r   r   check_divmod_floate   s    

z.TestFloatingPointExceptions.check_divmod_floatc                 C   s&   |  tdtdtddgddg d S )NrG   rL   rM   rN   rO   rP   )r^   r   rQ   r8   r   r   r   test_floordiv_floatq   s    z/TestFloatingPointExceptions.test_floordiv_floatc                 C   s$   |  tdtdtddgdg d S )Nr   rM   rJ   rP   )r^   r   rQ   r8   r   r   r   test_remainder_floatw   s    z0TestFloatingPointExceptions.test_remainder_floatc              	   C   sl   t dd|}tddddg}tddddg}t|}| g  |||}| || W 5 Q R X d	S )
z'
        Test 1 % 0 and 0 % 0.
        Tr6         r   r    r   r   NrZ   )r1   r[   r\   r2   r   r   rU   rV   r   r   r   check_divmod_int}   s    

z,TestFloatingPointExceptions.check_divmod_intc                 C   s   |  tddddg d S )Nra   r   r%   )rc   r   r8   r   r   r   test_floordiv_int   s    z-TestFloatingPointExceptions.test_floordiv_intc                 C   s   |  tddddg d S )Nr   r   )rc   r   r8   r   r   r   test_remainder_int   s    z.TestFloatingPointExceptions.test_remainder_intc              	   C   s   t ddt}tddddg}tddd	d
g}tdtdtddg}| ddg |||}| || W 5 Q R X dS )z5
        Test 0 ** -1 and 2 ** <big number>.
        Tr6   rG   r   rN   rI   rJ   g      g@xDrK   rL   g      @rO   zoverflow encounteredN)r   r   r'   r(   rQ   rR   rS   )r1   r2   r   r   rU   rV   r   r   r   test_power_float   s    
z,TestFloatingPointExceptions.test_power_floatc              	   C   s   t j}tdgddt}t jdddg|d}t jdd	d
g|d}t jdddg|d}| g  |||}| || W 5 Q R X dS )z
        Test 0 ** -1.
        Note 2 ** <big number> returns an undefined value (depending
        on the algorithm).
        zint64(int64, int64)Tr6   ra   r   rb   r#   r   r!   r%   l         $   N)r'   Zint64r   r   r(   rR   rS   rT   r   r   r   test_power_integer   s    
z.TestFloatingPointExceptions.test_power_integerN)rB   rC   rD   rE   rW   rX   rY   r^   r_   r   r`   rc   rd   re   rf   rh   r   r   r   r   rF   K   s   
rF   __main__)
contextlibsysnumpyr'   Znumbar   r   Znumba.tests.supportr   r   r   Zunittestr   r   r   r   r   r   r   rF   rB   mainr   r   r   r   <module>   s   %b