
    ܙd                         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 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)compile_isolated)jit)types)TestCasetagc                      t          |           S N)boolas    ;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   6   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 ]E\  }}t          ||g          }|j        }| 	                     ||           ||                     Fd S )N)   r     ffffff(@ffffff7@)
r   booleanr0   r1   r:   r;   zipr   entry_pointassertPreciseEqualselfpyfuncx_typesx_valuestyxcrescfuncs           r   check_int_constructorz*TestScalarNumberCtor.check_int_constructor@   s    M5;U]EM
 ,++(++ 	9 	9EB#FRD11D$E##FF1IIuuQxx8888	9 	9r   c                 :    |                      t                     d S r	   )rX   r   rP   s    r   	test_boolzTestScalarNumberCtor.test_boolK   s    ""6*****r   c                 :    |                      t                     d S r	   )rX   r   rZ   s    r   test_intzTestScalarNumberCtor.test_intN   s    ""5)))))r   c                 H   t           }t          j        t          j        t          j        t          j        g}g d}t          ||          D ]W\  }}t          ||g          }|j        }| 	                     ||           ||          |t          j        u rdnd           Xd S )NrG   rH   rI   rJ   singleexactprec)
r   r   r0   r1   r:   r;   rL   r   rM   rN   rO   s           r   
test_floatzTestScalarNumberCtor.test_floatQ   s     KemU]
 )(((++ 	C 	CEB#FRD11D$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 ]m\  }}t          ||g          }|j
        } ||          } ||          }	|                      ||           ||          |t          j        u rdnd           nt          }d}t          |t          j        g          }|j
        }|                      ||          d           t          |t          j        g          }|j
        }|                      ||          d           d S )N)rG   rH   rI   rJ   y      ?      y      ?      r`   ra   rb        ?      ?)r   r   r0   r1   r:   r;   rA   rB   rL   r   rM   rN   r$   assertGreater)
rP   rQ   rR   rS   rT   rU   rV   rW   gotexpecteds
             r   test_complexz!TestScalarNumberCtor.test_complex_   s[    KemU]OU-
 :99(++ 	C 	CEB#FRD11D$E%((CvayyH##FF1IIuuQxx!#u}!4!4XX' $ C C C C
 88 a#...88 5588S)))))r   c                    t           }t          j        t          j        t          j        t          j        g}g d}d |D             }t          |||          D ][\  }}}t          |||g          }|j        }	| 	                     |||           |	||          |t          j        u rdnd           \t          }d}t          |t          j        t          j        g          }|j        }	| 	                     |	||          d           t          |t          j        t          j        g          }|j        }	|                      |	||          d           d S )Nr_   c                     g | ]}|d z
  S )   r)   ).0rU   s     r   
<listcomp>z6TestScalarNumberCtor.test_complex2.<locals>.<listcomp>   s    ,,,aAE,,,r   r`   ra   rb   rf   g       @)r   r   r0   r1   r:   r;   rL   r   rM   rN   r&   rh   )
rP   rQ   rR   rS   y_valuesrT   rU   yrV   rW   s
             r   test_complex2z"TestScalarNumberCtor.test_complex2|   sb    KemU]
 )((,,8,,,GXx88 	C 	CHB1#FRH55D$E##FF1aLL%%1++!#u}!4!4XX' $ C C C C
 (FGG aS111(FGG 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   )rU   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   
issubclassrx   integerdtypekind
isinstancer   rN   )rP   r*   ry   valuesrQ   rW   np_converterr   valrj   ri   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?   getattrrx   r   appendrC   )rP   
tp_factoryr   r>   ry   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   rP   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   rx   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__rX   r[   r]   rd   rk   rs   r   r   r   r   r)   r   r   rE   rE   ;   s         	9 	9 	9+ + +* * *C C C* * *:- - -6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 )NTru   )r,   r   rN   )rP   ry   r   rQ   rW   r   rj   ri   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rg         @)rG   r   rg   r   r)   )y              ?r   r?   r   rx   r   rC   rP   r   r>   ry   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         @rg   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__)numpyrx   numba.core.compilerr   numbar   
numba.corer   numba.tests.supportr   r   unittestr   r   r   r   r   r$   r&   r,   r?   rC   rE   r   r   mainr)   r   r   <module>r      s       0 0 0 0 0 0             - - - - - - - -           % % %
% % %
      
M, M, M, M, M,8 M, M, M,`+9 +9 +9 +9 +9( +9 +9 +9\ zHMOOOOO r   