o
    i                     @   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rde  dS dS )    N)compile_isolated)jit)types)TestCasetagc                 C      t | S N)boola r   j/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/numba/tests/test_numberctor.pydobool      r   c                 C   r   r   )intr
   r   r   r   doint   r   r   c                 C   r   r   )floatr
   r   r   r   dofloat   r   r   c                 C   r   r   complexr
   r   r   r   	docomplex   r   r   c                 C   s
   t | |S r   r   )r   br   r   r   
docomplex2      
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*   r   zconverter.<locals>.fr   )r#   r$   r   r"   r   	converter)   s   r%   c                  c       dD ]} | V  qd S )N)Zint8Z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   r&   )N)	complex64
complex128r   r+   r   r   r   complex_np_types6   s   r0   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      |  t d S r   )rC   r   r;   r   r   r   	test_boolK      zTestScalarNumberCtor.test_boolc                 C   rD   r   )rC   r   rE   r   r   r   test_intN   rG   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 r1dndd qd S )Nr2   r3   r4   r5   singleexactprec)
r   r   r'   r(   r)   r*   r7   r   r8   r9   r:   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 ](\}}t	||g}|j
}||}||}	| j|||||tju r=dndd qt}d}t	|tjg}|j
}| ||d t	|tjg}|j
}| ||d d S )N)r2   r3   r4   r5   y      ?      y      ?      rJ   rK   rL        ?      ?)r   r   r'   r(   r)   r*   r.   r/   r7   r   r8   r9   r    assertGreater)
r;   r<   r=   r>   r?   r@   rA   rB   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 ]$\}}}t|||g}|j}	| j	||||	|||tju r=dndd qt
}d}t|tjtjg}|j}	| 	|	||d t|tjtjg}|j}	| |	||d d S )	NrI   c                 S   s   g | ]}|d  qS )   r   ).0r@   r   r   r   
<listcomp>   s    z6TestScalarNumberCtor.test_complex2.<locals>.<listcomp>rJ   rK   rL   rO   g       @)r   r   r'   r(   r)   r*   r7   r   r8   r9   r!   rQ   )
r;   r<   r=   r>   Zy_valuesr?   r@   yrA   rB   r   r   r   test_complex2|   s&   z"TestScalarNumberCtor.test_complex2c                    s   t |}tdd|}t tjr fdd}n }t }|D ]%}|jdkr2t|tr2|dk r2q!||}	||}
| j	|
|	d |f d q!d S )	NTZnopythonc                    s    t | S r   )npr(   )r@   np_typer   r   <lambda>   s    z;TestScalarNumberCtor.check_type_converter.<locals>.<lambda>ug        zfor type %s with arg %s)msg)
r%   r   
issubclassr[   integerdtypekind
isinstancer   r9   )r;   r#   r]   valuesr<   rB   Znp_converterrc   valrS   rR   r   r\   r   check_type_converter   s   

z)TestScalarNumberCtor.check_type_converterc                 C   sn   g d}t  D ]}tt|}||}| ||| q|d t D ]}tt|}||}| ||| q"d S )N)	r   r2   i l    a$i]yl a$g      ?g      y      ?      @)r-   getattrr[   rh   appendr0   )r;   
tp_factoryrf   r,   r]   r#   r   r   r   check_number_types   s   




z'TestScalarNumberCtor.check_number_typesc                 C      dd }|  | dS )z>
        Test explicit casting to Numba number types.
        c                 S   
   t t| S r   )rj   r   r+   r   r   r   rl      r   z9TestScalarNumberCtor.test_numba_types.<locals>.tp_factoryNrm   r;   rl   r   r   r   test_numba_types      z%TestScalarNumberCtor.test_numba_typesc                 C   rn   )z>
        Test explicit casting to Numpy number types.
        c                 S   ro   r   )rj   r[   r+   r   r   r   rl      r   z9TestScalarNumberCtor.test_numpy_types.<locals>.tp_factoryNrp   rq   r   r   r   test_numpy_types   rs   z%TestScalarNumberCtor.test_numpy_typesN)__name__
__module____qualname____doc__rC   rF   rH   rN   rT   rY   rh   rm   rr   rt   r   r   r   r   r1   ;   s    r1   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 )NTrZ   )r%   r   r9   )r;   r]   rf   r<   rB   rg   rS   rR   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|}| || q"d S )NrP         @)r2   r|   rP   r|   r   )y              ?r|   r-   rj   r[   rz   r0   r;   rf   r,   r]   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|}| || q$d S )	N)r{   )      @   r{   )r         @rP   r|   r   r   r   r}   r~   r   r   r   test_2d   s   



zTestArrayNumberCtor.test_2dN)ru   rv   rw   rx   rz   r   r   r   r   r   r   ry      s
    ry   __main__)numpyr[   Znumba.core.compilerr   Znumbar   Z
numba.corer   Znumba.tests.supportr   r   Zunittestr   r   r   r   r   r    r!   r%   r-   r0   r1   ry   ru   mainr   r   r   r   <module>   s,     .