o
    0 i                     @   s   d dl Zd dlmZ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r`e
  dS dS )    N)jitnjit)types)TestCasetagc                 C      t | S N)boola r   g/home/app/PaddleOCR-VL-test/.venv_paddleocr/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_types5   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   sZ   t jt jt jt jt jg}g d}t||D ]\}}t|f|}| |||| qd S )N)   r     ffffff(@ffffff7@)	r   booleanr'   r(   r)   r*   zipr   assertPreciseEqualselfpyfuncx_typesx_valuestyxcfuncr   r   r   check_int_constructor?   s   z*TestScalarNumberCtor.check_int_constructorc                 C      |  t d S r   )rA   r   r:   r   r   r   	test_boolI      zTestScalarNumberCtor.test_boolc                 C   rB   r   )rA   r   rC   r   r   r   test_intL   rE   zTestScalarNumberCtor.test_intc                 C   sl   t }tjtjtjtjg}g d}t||D ]\}}t|f|}| j|||||tju r/d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   
test_floatO   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	|f|}||}||}| j
|||||tju r;dndd qt}d}t	tjf|}| 
||d t	tjf|}| ||d d S )N)r2   r3   r4   r5   y      ?      y      ?      rH   rI   rJ        ?      ?)r   r   r'   r(   r)   r*   r.   r/   r7   r   r8   r    assertGreater)	r:   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 ]"\}}}t||f|}| j|||||||tju r;dndd qt	}d}ttjtjf|}| |||d ttjtjf|}| 
|||d d S )	NrG   c                 S   s   g | ]}|d  qS )   r   ).0r?   r   r   r   
<listcomp>}   s    z6TestScalarNumberCtor.test_complex2.<locals>.<listcomp>rH   rI   rJ   rM   g       @)r   r   r'   r(   r)   r*   r7   r   r8   r!   rO   )	r:   r;   r<   r=   Zy_valuesr>   r?   yr@   r   r   r   test_complex2v   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   
issubclassrY   integerdtypekind
isinstancer   r8   )r:   r#   r[   valuesr;   r@   Znp_converterra   valrQ   rP   r   rZ   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-   getattrrY   rf   appendr0   )r:   
tp_factoryrd   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   )rh   r   r+   r   r   r   rj      r   z9TestScalarNumberCtor.test_numba_types.<locals>.tp_factoryNrk   r:   rj   r   r   r   test_numba_types      z%TestScalarNumberCtor.test_numba_typesc                 C   rl   )z>
        Test explicit casting to Numpy number types.
        c                 S   rm   r   )rh   rY   r+   r   r   r   rj      r   z9TestScalarNumberCtor.test_numpy_types.<locals>.tp_factoryNrn   ro   r   r   r   test_numpy_types   rq   z%TestScalarNumberCtor.test_numpy_typesN)__name__
__module____qualname____doc__rA   rD   rF   rL   rR   rW   rf   rk   rp   rr   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 )NTrX   )r%   r   r8   )r:   r[   rd   r;   r@   re   rQ   rP   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rN         @)r2   rz   rN   rz   r   )y              ?rz   r-   rh   rY   rx   r0   r:   rd   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)ry   )      @   ry   )r~         @rN   rz   r~   r   r   r{   r|   r   r   r   test_2d   s   



zTestArrayNumberCtor.test_2dN)rs   rt   ru   rv   rx   r}   r   r   r   r   r   rw      s
    rw   __main__)numpyrY   Znumbar   r   Z
numba.corer   Znumba.tests.supportr   r   Zunittestr   r   r   r   r   r    r!   r%   r-   r0   r1   rw   rs   mainr   r   r   r   <module>   s*     	.