
    xKg                         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
j0                          yy)    N)jitnjit)types)TestCasetagc                     t        |       S N)boolas    _/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_numberctor.pydoboolr   
   s    7N    c                     t        |       S r	   )intr   s    r   dointr      s    q6Mr   c                     t        |       S r	   )floatr   s    r   dofloatr      s    8Or   c                     t        |       S r	   complexr   s    r   	docomplexr      s    1:r   c                     t        | |      S r	   r   )r   bs     r   
docomplex2r      s    1a=r   c                 V    t        |       }|j                  dz  |j                  dz  z   S N   r   realimag)r   zs     r   complex_calcr$      s&    
A66Q;1$$r   c                 X    t        | |      }|j                  dz  |j                  dz  z   S r   r    )r   r   r#   s      r   complex_calc2r&   #   s(    1A66Q;1$$r   c                       fd}|S )Nc                      |       S r	    )r   tps    r   fzconverter.<locals>.f)   s    !ur   r)   )r*   r+   s   ` r   	converterr,   (   s    Hr   c               #   "   K   dD ]  } |   y w)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 	3   c               #   "   K   dD ]  } |   y w)N)	complex64
complex128r)   r=   s    r   complex_np_typesrD   5   s     . /r@   c                   L    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y)TestScalarNumberCtorz*
    Test <number class>(some scalar)
    c                 .   t         j                  t         j                  t         j                  t         j                  t         j
                  g}g d}t        ||      D ]5  \  }} t        |f      |      }| j                   ||       ||             7 y )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?   sn    MM5;;U]]EMM
 ,(+EBD"K'E##F1IuQx8 ,r   c                 .    | j                  t               y r	   )rW   r   rP   s    r   	test_boolzTestScalarNumberCtor.test_boolI   s    ""6*r   c                 .    | j                  t               y r	   )rW   r   rY   s    r   test_intzTestScalarNumberCtor.test_intL   s    ""5)r   c                 H   t         }t        j                  t        j                  t        j                  t        j
                  g}g d}t        ||      D ]K  \  }} t        |f      |      }| j                   ||       ||      |t        j                  u rdnd       M y )NrH   rI   rJ   rK   singleexactprec)	r   r   r0   r1   r:   r;   rM   r   rN   rO   s          r   
test_floatzTestScalarNumberCtor.test_floatO   s     KKemmU]]
 )(+EBD"K'E##F1IuQx!#u}}!4X' $ C ,r   c                    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       ] t        }d} t        t        j                  f      |      }| j                   ||      d        t        t        j
                  f      |      }| j                   ||      d       y )N)rH   rI   rJ   rK   y      ?      y      ?      r_   r`   ra        ?      ?)r   r   r0   r1   r:   r;   rB   rC   rM   r   rN   r$   assertGreater)	rP   rQ   rR   rS   rT   rU   rV   gotexpecteds	            r   test_complexz!TestScalarNumberCtor.test_complex\   s    KKemmU]]OOU--
 :(+EBD"K'E(CayH##F1IuQx!#u}}!4X' $ C	 , &emm%&v.a#.&emm%&v.58S)r   c                    t         }t        j                  t        j                  t        j                  t        j
                  g}g d}|D cg c]  }|dz
  	 }}t        |||      D ]O  \  }}} t        ||f      |      }| j                   |||       |||      |t        j                  u rdnd       Q t        }d} t        t        j                  t        j                  f      |      }| j                   |||      d        t        t        j
                  t        j                  f      |      }| j                   |||      d       y c c}w )Nr^      r_   r`   ra   re   g       @)r   r   r0   r1   r:   r;   rM   r   rN   r&   rg   )	rP   rQ   rR   rS   rU   y_valuesrT   yrV   s	            r   test_complex2z"TestScalarNumberCtor.test_complex2v   s"    KKemmU]]
 )#+,8aAE8,GXx8HB1"D"bN6*E##F1aL%1+!#u}}!4X' $ C 9 4emmU]]34V<aS14emmU]]34V<5A;, -s   Ec           	      Z   t        |      } t        d      |      }t        t        j                        rfd}n}t        j
                        }|D ]Q  }|j                  dk(  rt        |t              r|dk  r( ||      }	 ||      }
| j                  |
|	dd|       S y )	NTnopythonc                 :     t        j                  |             S r	   )npr1   )rU   np_types    r   <lambda>z;TestScalarNumberCtor.check_type_converter.<locals>.<lambda>   s    WRXXa[%9r   ug        z	for type z
 with arg )msg)
r,   r   
issubclassrt   integerdtypekind
isinstancer   rN   )rP   r*   ru   valuesrQ   rV   np_converterr{   valri   rh   s     `        r   check_type_converterz)TestScalarNumberCtor.check_type_converter   s    2"T"6*grzz*
 :L"L!CzzS ZU%;c	 #C(H*C##CELc(R $ T r   c                    g d}t               D ]-  }t        t        |      } ||      }| j                  |||       / |j	                  d       t               D ]-  }t        t        |      } ||      }| j                  |||       / y )N)	r   rH   i l    a$i]yl a$g      ?g      y      ?      @)r?   getattrrt   r   appendrD   )rP   
tp_factoryr~   r>   ru   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                 ,    d }| j                  |       y)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                 ,    d }| j                  |       y)z>
        Test explicit casting to Numpy number types.
        c                 "    t        t        |       S r	   )r   rt   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__rW   rZ   r\   rc   rj   ro   r   r   r   r   r)   r   r   rF   rF   :   s;    9+*C*4-0T,;,,r   rF   c                   "    e Zd ZdZd Zd Zd Zy)TestArrayNumberCtorz,
    Test <number class>(some sequence)
    c                     t        |      } t        d      |      }|D ]$  } ||      } ||      }| j                  ||       & y )NTrq   )r,   r   rN   )rP   ru   r~   rQ   rV   r   ri   rh   s           r   check_type_constructorz*TestArrayNumberCtor.check_type_constructor   sI    7#"T"6*Cs|H*C##C2 r   c                     ddddgdg}t               D ]$  }t        t        |      }| j                  ||       & dddgg}t	               D ]$  }t        t        |      }| j                  ||       & y )Nrf         @)rH   r   rf   r   r)   )y              ?r   r?   r   rt   r   rD   rP   r~   r>   ru   s       r   test_1dzTestArrayNumberCtor.test_1d   s    #J	 %Gb'*G''8 ' #J ()Gb'*G''8 *r   c                     dddgddgddgfddgg}t               D ]$  }t        t        |      }| j                  ||       & t	               D ]$  }t        t        |      }| j                  ||       & y )	N)r   )      @   r   )r         @rf   r   r   r   r)   r   r   s       r   test_2dzTestArrayNumberCtor.test_2d   s    "$3Z#s$H	 %Gb'*G''8 ' ()Gb'*G''8 *r   N)r   r   r   r   r   r   r   r)   r   r   r   r      s    39$9r   r   __main__)numpyrt   numbar   r   
numba.corer   numba.tests.supportr   r   unittestr   r   r   r   r   r$   r&   r,   r?   rD   rF   r   r   mainr)   r   r   <module>r      s|       - %
%

E,8 E,P+9( +9\ zHMMO r   