o
    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   X/home/ubuntu/veenaModal/venv/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)int8int16int32int64uint8uint16uint32uint64intcuintcintpuintpfloat32float64bool_r   tp_namer   r   r   real_np_types.   s   r8   c                  c   r&   )N)	complex64
complex128r   r6   r   r   r   complex_np_types5   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   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*   r3   r4   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   )rL   r   rE   r   r   r   	test_boolI      zTestScalarNumberCtor.test_boolc                 C   rM   r   )rL   r   rN   r   r   r   test_intL   rP   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r=   r>   r?   r@   singleexactprec)	r   r   r)   r*   r3   r4   rB   r   rC   rD   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)r=   r>   r?   r@   y      ?      y      ?      rS   rT   rU        ?      ?)r   r   r)   r*   r3   r4   r9   r:   rB   r   rC   r    assertGreater)	rE   rF   rG   rH   rI   rJ   rK   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 )	NrR   c                 S   s   g | ]}|d  qS )   r   ).0rJ   r   r   r   
<listcomp>}   s    z6TestScalarNumberCtor.test_complex2.<locals>.<listcomp>rS   rT   rU   rX   g       @)r   r   r)   r*   r3   r4   rB   r   rC   r!   rZ   )	rE   rF   rG   rH   y_valuesrI   rJ   yrK   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nopythonc                    s    t | S r   )npr*   )rJ   np_typer   r   <lambda>   s    z;TestScalarNumberCtor.check_type_converter.<locals>.<lambda>ug        zfor type %s with arg %s)msg)
r%   r   
issubclassrf   integerdtypekind
isinstancer   rC   )rE   r#   rh   valuesrF   rK   np_converterrn   valr\   r[   r   rg   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   r=   i l    a$i]yl a$g      ?g      y      ?      @)r8   getattrrf   rt   appendr;   )rE   
tp_factoryrq   r7   rh   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   )rv   r   r6   r   r   r   rx      r   z9TestScalarNumberCtor.test_numba_types.<locals>.tp_factoryNry   rE   rx   r   r   r   test_numba_types      z%TestScalarNumberCtor.test_numba_typesc                 C   rz   )z>
        Test explicit casting to Numpy number types.
        c                 S   r{   r   )rv   rf   r6   r   r   r   rx      r   z9TestScalarNumberCtor.test_numpy_types.<locals>.tp_factoryNr|   r}   r   r   r   test_numpy_types   r   z%TestScalarNumberCtor.test_numpy_typesN)__name__
__module____qualname____doc__rL   rO   rQ   rW   r]   rc   rt   ry   r~   r   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 )NTrd   )r%   r   rC   )rE   rh   rq   rF   rK   rs   r\   r[   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rY         @)r=   r   rY   r   r   )y              ?r   r8   rv   rf   r   r;   rE   rq   r7   rh   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         @rY   r   r   r   r   r   r   r   r   r   test_2d   s   



zTestArrayNumberCtor.test_2dN)r   r   r   r   r   r   r   r   r   r   r   r      s
    r   __main__)numpyrf   numbar   r   
numba.corer   numba.tests.supportr   r   unittestr   r   r   r   r   r    r!   r%   r8   r;   r<   r   r   mainr   r   r   r   <module>   s*     	.