a
    
d                     @   s   d dl Zd dlmZ d dlmZ d dlmZ d dl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dd Zdd Zdd Zdd ZG dd de	ZG dd de	Zedkre  dS )    N)compile_isolated)jit)types)TestCasetagc                 C   s   t | S N)boola r   d/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/numba/tests/test_numberctor.pydobool   s    r   c                 C   s   t | S r   )intr	   r   r   r   doint   s    r   c                 C   s   t | S r   )floatr	   r   r   r   dofloat   s    r   c                 C   s   t | S r   complexr	   r   r   r   	docomplex   s    r   c                 C   s
   t | |S r   r   )r
   br   r   r   
docomplex2   s    r   c                 C   s   t | }|jd |jd  S N   r   realimag)r
   zr   r   r   complex_calc   s    r   c                 C   s   t | |}|jd |jd  S r   r   )r
   r   r   r   r   r   complex_calc2$   s    
r   c                    s    fdd}|S )Nc                    s    | S r   r   r	   tpr   r   f*   s    zconverter.<locals>.fr   )r    r!   r   r   r   	converter)   s    r"   c                  c   s   dD ]
} | V  qd S )N)Zint8int16int32int64Zuint8Zuint16Zuint32Zuint64ZintcZuintcZintpZuintpfloat32float64Zbool_r   tp_namer   r   r   real_np_types/   s    r*   c                  c   s   dD ]
} | V  qd S )N)	complex64
complex128r   r(   r   r   r   complex_np_types6   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d Z
dd Zdd Zdd ZdS )TestScalarNumberCtorz*
    Test <number class>(some scalar)
    c                 C   s^   t jt jt jt jt jg}g d}t||D ].\}}t||g}|j}| 	|||| q*d S )N)   r     ffffff(@ffffff7@)
r   booleanr$   r%   r&   r'   zipr   entry_pointassertPreciseEqualselfpyfuncx_typesx_valuestyxcrescfuncr   r   r   check_int_constructor@   s    z*TestScalarNumberCtor.check_int_constructorc                 C   s   |  t d S r   )r@   r   r8   r   r   r   	test_boolK   s    zTestScalarNumberCtor.test_boolc                 C   s   |  t d S r   )r@   r   rA   r   r   r   test_intN   s    zTestScalarNumberCtor.test_intc                 C   sp   t }tjtjtjtjg}g d}t||D ]@\}}t||g}|j}| j	|||||tju rbdndd q*d S )Nr/   r0   r1   r2   singleexactprec)
r   r   r$   r%   r&   r'   r4   r   r5   r6   r7   r   r   r   
test_floatQ   s    zTestScalarNumberCtor.test_floatc           
      C   s   t }tjtjtjtjtjtjg}g d}t||D ]P\}}t	||g}|j
}||}||}	| j|||||tju rzdndd q2t}d}t	|tjg}|j
}| ||d t	|tjg}|j
}| ||d d S )N)r/   r0   r1   r2   y      ?      y      ?      rE   rF   rG        ?      ?)r   r   r$   r%   r&   r'   r+   r,   r4   r   r5   r6   r   assertGreater)
r8   r9   r:   r;   r<   r=   r>   r?   gotexpectedr   r   r   test_complex_   s*    z!TestScalarNumberCtor.test_complexc           
      C   s   t }tjtjtjtjg}g d}dd |D }t|||D ]H\}}}t|||g}|j}	| j	||||	|||tju rzdndd q:t
}d}t|tjtjg}|j}	| 	|	||d t|tjtjg}|j}	| |	||d d S )	NrD   c                 S   s   g | ]}|d  qS )   r   ).0r=   r   r   r   
<listcomp>       z6TestScalarNumberCtor.test_complex2.<locals>.<listcomp>rE   rF   rG   rJ   g       @)r   r   r$   r%   r&   r'   r4   r   r5   r6   r   rL   )
r8   r9   r:   r;   Zy_valuesr<   r=   yr>   r?   r   r   r   test_complex2|   s&    z"TestScalarNumberCtor.test_complex2c                    s   t |}tdd|}t tjr0 fdd}n }t }|D ]J}|jdkrdt|trd|dk rdqB||}	||}
| j	|
|	d |f d qBd S )	NTZnopythonc                    s    t | S r   )npr%   )r=   np_typer   r   <lambda>   rS   z;TestScalarNumberCtor.check_type_converter.<locals>.<lambda>ug        zfor type %s with arg %s)msg)
r"   r   
issubclassrW   integerdtypekind
isinstancer   r6   )r8   r    rY   valuesr9   r?   Znp_converterr_   valrN   rM   r   rX   r   check_type_converter   s    

z)TestScalarNumberCtor.check_type_converterc                 C   sn   g d}t  D ]$}tt|}||}| ||| q|d t D ]$}tt|}||}| ||| qDd S )N)	r   r/   i l    a$i]yl a$g      ?g      y      ?      @)r*   getattrrW   rd   appendr-   )r8   
tp_factoryrb   r)   rY   r    r   r   r   check_number_types   s    




z'TestScalarNumberCtor.check_number_typesc                 C   s   dd }|  | dS )z>
        Test explicit casting to Numba number types.
        c                 S   s
   t t| S r   )rf   r   r(   r   r   r   rh      s    z9TestScalarNumberCtor.test_numba_types.<locals>.tp_factoryNri   r8   rh   r   r   r   test_numba_types   s    z%TestScalarNumberCtor.test_numba_typesc                 C   s   dd }|  | dS )z>
        Test explicit casting to Numpy number types.
        c                 S   s
   t t| S r   )rf   rW   r(   r   r   r   rh      s    z9TestScalarNumberCtor.test_numpy_types.<locals>.tp_factoryNrj   rk   r   r   r   test_numpy_types   s    z%TestScalarNumberCtor.test_numpy_typesN)__name__
__module____qualname____doc__r@   rB   rC   rI   rO   rU   rd   ri   rl   rm   r   r   r   r   r.   ;   s   r.   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	TestArrayNumberCtorz,
    Test <number class>(some sequence)
    c                 C   s@   t |}tdd|}|D ] }||}||}| || qd S )NTrV   )r"   r   r6   )r8   rY   rb   r9   r?   rc   rN   rM   r   r   r   check_type_constructor   s    z*TestArrayNumberCtor.check_type_constructorc                 C   sd   ddddgdg}t  D ]}tt|}| || qdddgg}t D ]}tt|}| || qDd S )NrK         @)r/   ru   rK   ru   r   )y              ?ru   r*   rf   rW   rs   r-   r8   rb   r)   rY   r   r   r   test_1d   s    



zTestArrayNumberCtor.test_1dc                 C   sh   dddgddgddgfddgg}t  D ]}tt|}| || q&t D ]}tt|}| || qHd S )	N)rt   )      @   rt   )ry         @rK   ru   ry   r{   r   rv   rw   r   r   r   test_2d   s    



zTestArrayNumberCtor.test_2dN)rn   ro   rp   rq   rs   rx   r|   r   r   r   r   rr      s   rr   __main__)numpyrW   Znumba.core.compilerr   Znumbar   Z
numba.corer   Znumba.tests.supportr   r   Zunittestr   r   r   r   r   r   r   r"   r*   r-   r.   rr   rn   mainr   r   r   r   <module>   s(    .