
    J/Ph                         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 Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Z G d de          Z G d de          Zedk    r e
j                     dS dS )    N)jitnjit)types)TestCasetagc                      t          |           S N)boolas    [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_numberctor.pydoboolr   
   s    77N    c                      t          |           S r	   )intr   s    r   dointr      s    q66Mr   c                      t          |           S r	   )floatr   s    r   dofloatr      s    88Or   c                      t          |           S r	   complexr   s    r   	docomplexr      s    1::r   c                 "    t          | |          S r	   r   )r   bs     r   
docomplex2r      s    1a==r   c                 J    t          |           }|j        dz  |j        dz  z   S N   r   realimag)r   zs     r   complex_calcr$      s$    

A6Q;1$$r   c                 L    t          | |          }|j        dz  |j        dz  z   S r   r    )r   r   r#   s      r   complex_calc2r&   #   s&    1A6Q;1$$r   c                       fd}|S )Nc                      |           S r	    )r   tps    r   fzconverter.<locals>.f)   s    r!uur   r)   )r*   r+   s   ` r   	converterr,   (   s!        Hr   c               #      K   dD ]} | V  d S )N)int8int16int32int64uint8uint16uint32uint64intcuintcintpuintpfloat32float64bool_r)   tp_names    r   real_np_typesr?   .   s.      3   	 r   c               #      K   dD ]} | V  d S )N)	complex64
complex128r)   r=   s    r   complex_np_typesrC   5   s*      .   r   c                   N    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TestScalarNumberCtorz*
    Test <number class>(some scalar)
    c                 .   t           j        t           j        t           j        t           j        t           j        g}g d}t          ||          D ]F\  }} t          |f          |          }|                      ||           ||                     Gd S )N)   r     ffffff(@ffffff7@)	r   booleanr0   r1   r:   r;   zipr   assertPreciseEqualselfpyfuncx_typesx_valuestyxcfuncs          r   check_int_constructorz*TestScalarNumberCtor.check_int_constructor?   s    M5;U]EM
 ,++(++ 	9 	9EBD"KK''E##FF1IIuuQxx8888	9 	9r   c                 :    |                      t                     d S r	   )rV   r   rO   s    r   	test_boolzTestScalarNumberCtor.test_boolI   s    ""6*****r   c                 :    |                      t                     d S r	   )rV   r   rX   s    r   test_intzTestScalarNumberCtor.test_intL   s    ""5)))))r   c                 J   t           }t          j        t          j        t          j        t          j        g}g d}t          ||          D ]X\  }} t          |f          |          }|                      ||           ||          |t          j        u rdnd           Yd S )NrG   rH   rI   rJ   singleexactprec)	r   r   r0   r1   r:   r;   rL   r   rM   rN   s          r   
test_floatzTestScalarNumberCtor.test_floatO   s     KemU]
 )(((++ 	C 	CEBD"KK''E##FF1IIuuQxx!#u}!4!4XX' $ C C C C	C 	Cr   c                    t           }t          j        t          j        t          j        t          j        t          j        t          j        g}g d}t          ||          D ]n\  }} t          |f          |          } ||          } ||          }| 
                     ||           ||          |t          j        u rdnd           ot          }d} t          t          j        f          |          }| 
                     ||          d            t          t          j        f          |          }|                      ||          d           d S )N)rG   rH   rI   rJ   y      ?      y      ?      r^   r_   r`        ?      ?)r   r   r0   r1   r:   r;   rA   rB   rL   r   rM   r$   assertGreater)	rO   rP   rQ   rR   rS   rT   rU   gotexpecteds	            r   test_complexz!TestScalarNumberCtor.test_complex\   s[    KemU]OU-
 :99(++ 	C 	CEBD"KK''E%((CvayyH##FF1IIuuQxx!#u}!4!4XX' $ C C C C
 &em%&&v..a#...&em%&&v..5588S)))))r   c                    t           }t          j        t          j        t          j        t          j        g}g d}d |D             }t          |||          D ]\\  }}} t          ||f          |          }|                      |||           |||          |t          j        u rdnd           ]t          }d} t          t          j        t          j        f          |          }|                      |||          d            t          t          j        t          j        f          |          }| 
                     |||          d           d S )Nr]   c                     g | ]}|d z
  S )   r)   ).0rT   s     r   
<listcomp>z6TestScalarNumberCtor.test_complex2.<locals>.<listcomp>}   s    ,,,aAE,,,r   r^   r_   r`   rd   g       @)r   r   r0   r1   r:   r;   rL   r   rM   r&   rf   )	rO   rP   rQ   rR   y_valuesrS   rT   yrU   s	            r   test_complex2z"TestScalarNumberCtor.test_complex2v   s`    KemU]
 )((,,8,,,GXx88 	C 	CHB1"D"bNN6**E##FF1aLL%%1++!#u}!4!4XX' $ C C C C
 4emU]344V<<aS1114emU]344V<<55A;;,,,,,r   c           	         t          |          } t          d          |          }t          t          j                  rfd}n}t          j                  }|D ]]}|j        dk    rt          |t                    r|dk     r) ||          }	 ||          }
| 	                    |
|	dd|           ^d S )	NTnopythonc                 >     t          j        |                     S r	   )npr1   )rT   np_types    r   <lambda>z;TestScalarNumberCtor.check_type_converter.<locals>.<lambda>   s    WWRXa[[%9%9 r   ug        z	for type z
 with arg )msg)
r,   r   
issubclassrv   integerdtypekind
isinstancer   rM   )rO   r*   rw   valuesrP   rU   np_converterr}   valrh   rg   s     `        r   check_type_converterz)TestScalarNumberCtor.check_type_converter   s    2"T"""6**grz** 	#
 :999LL"L!! 	T 	TCzS  ZU%;%; c		 #|C((H%**C##CELWWcc(R $ T T T T	T 	Tr   c                 X   g d}t                      D ]9}t          t          |          } ||          }|                     |||           :|                    d           t                      D ]9}t          t          |          } ||          }|                     |||           :d S )N)	r   rG   i l    a$i]yl a$g      ?g      y      ?      @)r?   getattrrv   r   appendrC   )rO   
tp_factoryr   r>   rw   r*   s         r   check_number_typesz'TestScalarNumberCtor.check_number_types   s      $ 	; 	;Gb'**GG$$B%%b'6::::f')) 	; 	;Gb'**GG$$B%%b'6::::	; 	;r   c                 6    d }|                      |           dS )z>
        Test explicit casting to Numba number types.
        c                 ,    t          t          |           S r	   )r   r   r=   s    r   r   z9TestScalarNumberCtor.test_numba_types.<locals>.tp_factory   s    5'***r   Nr   rO   r   s     r   test_numba_typesz%TestScalarNumberCtor.test_numba_types   s+    	+ 	+ 	+
+++++r   c                 6    d }|                      |           dS )z>
        Test explicit casting to Numpy number types.
        c                 ,    t          t          |           S r	   )r   rv   r=   s    r   r   z9TestScalarNumberCtor.test_numpy_types.<locals>.tp_factory   s    2w'''r   Nr   r   s     r   test_numpy_typesz%TestScalarNumberCtor.test_numpy_types   s+    	( 	( 	(
+++++r   N)__name__
__module____qualname____doc__rV   rY   r[   rb   ri   rq   r   r   r   r   r)   r   r   rE   rE   :   s         9 9 9+ + +* * *C C C* * *4- - -0T T T,; ; ;, , ,, , , , ,r   rE   c                   $    e Zd ZdZd Zd Zd ZdS )TestArrayNumberCtorz,
    Test <number class>(some sequence)
    c                     t          |          } t          d          |          }|D ].} ||          } ||          }|                     ||           /d S )NTrs   )r,   r   rM   )rO   rw   r   rP   rU   r   rh   rg   s           r   check_type_constructorz*TestArrayNumberCtor.check_type_constructor   su    7##"T"""6** 	3 	3Cws||H%**C##C2222	3 	3r   c                    ddddgdg}t                      D ]-}t          t          |          }|                     ||           .dddgg}t	                      D ]-}t          t          |          }|                     ||           .d S )Nre         @)rG   r   re   r   r)   )y              ?r   r?   r   rv   r   rC   rO   r   r>   rw   s       r   test_1dzTestArrayNumberCtor.test_1d   s    #J	 % 	9 	9Gb'**G''8888#J ()) 	9 	9Gb'**G''8888	9 	9r   c                    dddgddgddgfddgg}t                      D ]-}t          t          |          }|                     ||           .t	                      D ]-}t          t          |          }|                     ||           .d S )	N)r   )      @   r   )r         @re   r   r   r   r)   r   r   s       r   test_2dzTestArrayNumberCtor.test_2d   s    "$3Z#s$H	 % 	9 	9Gb'**G''8888')) 	9 	9Gb'**G''8888	9 	9r   N)r   r   r   r   r   r   r   r)   r   r   r   r      sK         3 3 39 9 9$9 9 9 9 9r   r   __main__)numpyrv   numbar   r   
numba.corer   numba.tests.supportr   r   unittestr   r   r   r   r   r$   r&   r,   r?   rC   rE   r   r   mainr)   r   r   <module>r      sv                     - - - - - - - -           % % %
% % %
      
E, E, E, E, E,8 E, E, E,P+9 +9 +9 +9 +9( +9 +9 +9\ zHMOOOOO r   