
    ܙd-                     "   d dl Z d dlZd dlZd dlZd dlmZmZmZ d dlm	Z	 d dl
mZmZ ddlT d dlZ e            Zde_         e            Z G d d	e          Z G d
 dee          Z G d dee          Zedk    r ej                     dS dS )    N)compile_isolatedFlagsutils)types)TestCasetag   )*Tc                   :    e Zd Zd Zd Zd ZddefdZdefdZdS )BaseComplexTestc           
          ddddddt          d          t          d          g}t          j        d	k    r|t          d
          gz  }d t          j        ||          D             S )N               r	         ?g      -inf+infwin32nanc                 4    g | ]\  }}t          ||          S  complex.0xys      8lib/python3.11/site-packages/numba/tests/test_complex.py
<listcomp>z0BaseComplexTest.basic_values.<locals>.<listcomp>   $    JJJ$!Q1JJJ    )floatsysplatform	itertoolsproductselfrealss     r   basic_valueszBaseComplexTest.basic_values   sg    tQD$vf/<7""eEll^#EJJ)*;E5*I*IJJJJr!   c           
          ddddt           j         t           j        
 t          d          t          d          g}t          j        dk    r|t          d          gz  }d	 t          j        ||          D             S )
Nr   r   r	   r   r   r   r   r   c                 4    g | ]\  }}t          ||          S r   r   r   s      r   r   z/BaseComplexTest.more_values.<locals>.<listcomp>    r    r!   )mathpir"   r#   r$   r%   r&   r'   s     r   more_valueszBaseComplexTest.more_values   so    tQTWHtwhvf/<7""eEll^#EJJ)*;E5*I*IJJJJr!   c           
          ddddt           j         t           j        
 t          d          t          d          g}d t          j        ||          D             S )Nr   r   r	   r   infr   c                 4    g | ]\  }}t          ||          S r   r   r   s      r   r   z2BaseComplexTest.non_nan_values.<locals>.<listcomp>%   r    r!   )r-   r.   r"   r%   r&   r'   s     r   non_nan_valueszBaseComplexTest.non_nan_values"   sP    tQTWHtwhuuV}}.JJ)*;E5*I*IJJJJr!   r	   Nc           
      t   |D ]}t          ||g|          }|j        }	|t          j        t          j        fv rdnd}
|D ]w}	  ||          }n:# t
          $ r-}|                     dt          |                     Y d }~Ad }~ww xY w |	|          }d|d|
}|                     |||
|||           xd S )Nflagssingledoublemath domain error
for input  with prec )preculpsabs_tolmsg)	r   entry_pointr   float32	complex64
ValueErrorassertInstrassertPreciseEqual)r(   pyfuncx_typesx_valuesr=   r>   r6   txcrcfuncr<   vxexpectedegotr?   s                   r   	run_unaryzBaseComplexTest.run_unary'   s    	M 	MB!&2$e<<<BNE!emU_%EEE888D 	M 	M%vbzzHH!   MM"5s1vv>>>HHHH eBii57RR>''XD-17 ( M M M M	M		M 	Ms   A
B#B  Bc           	         |D ]\  }}t          |||g|          }|j        }	t          ||g          t          t          j        t          j        g          z  rdnd}
|D ]\  }}	  |||          }nE# t          $ r-}|                     dt          |                     Y d }~Ed }~wt          $ r Y Tw xY w |	||          }d||fd|
}| 
                    |||
||           d S )Nr5   r7   r8   r9   r:   r;   )r<   r=   r?   )r   r@   setr   rA   rB   rC   rD   rE   ZeroDivisionErrorrF   )r(   rG   value_typesvaluesr=   r6   rJ   tyrK   rL   r<   rM   vyrN   rO   rP   r?   s                    r   
run_binaryzBaseComplexTest.run_binary8   sP   ! 	< 	<FB!&2r(%@@@BNEB8}}sEM5?+K'L'LL"HH!  ! < <B%vb"~~HH!   MM"5s1vv>>>HHHH(   HeBmm68"XXXttD''XD-1s ( < < < <<	< 	<s   &A33
B5=#B%%B54B5)	__name__
__module____qualname__r*   r/   r3   enable_pyobj_flagsrQ   rY   r   r!   r   r   r      s        K K KK K KK K K
 9:4*M M M M" <=+< < < < < <r!   r   c                   N    e Zd ZefdZd ZefdZd ZefdZd Z	efdZ
d Zd	S )
TestComplexc                 j   |                      t          t          j        t          j        g|                                 |           |                      t          t          j        t          j        gg d|           |                      t          t          j        t          j	        gddg|           d S Nr5   )r	   r   r   g      )
rQ   real_usecaser   rB   
complex128r*   int8int64rA   float64r(   r6   s     r   	test_realzTestComplex.test_realP       |eou7G%H((**% 	 	9 	9 	9|ej%+%>!zz 	 	0 	0 	0|emU]%CT{% 	 	1 	1 	1 	1 	1r!   c                 <    |                      t                     d S Nr5   )ri   no_pyobj_flagsr(   s    r   test_real_npmzTestComplex.test_real_npmX       ^,,,,,r!   c                 j   |                      t          t          j        t          j        g|                                 |           |                      t          t          j        t          j        gg d|           |                      t          t          j        t          j	        gddg|           d S ra   )
rQ   imag_usecaser   rB   rd   r*   re   rf   rA   rg   rh   s     r   	test_imagzTestComplex.test_imag[   rj   r!   c                 <    |                      t                     d S rl   )rs   rm   rn   s    r   test_imag_npmzTestComplex.test_imag_npmc   rp   r!   c                 j   |                      t          t          j        t          j        g|                                 |           |                      t          t          j        t          j        gg d|           |                      t          t          j        t          j	        gddg|           d S ra   )
rQ   conjugate_usecaser   rB   rd   r*   re   rf   rA   rg   rh   s     r   test_conjugatezTestComplex.test_conjugatef   s    (5?E<L*M((**% 	 	9 	9 	9(5:u{*C!zz 	 	0 	0 	0(5=%-*HT{% 	 	1 	1 	1 	1 	1r!   c                 <    |                      t                     d S rl   )rx   rm   rn   s    r   test_conjugate_npmzTestComplex.test_conjugate_npmn   s    .11111r!   c                 .   t          t          j        |                                 |                                                     }t          j        t          j        ft          j        t          j        fg}|                     t          |||           dS )zN
        Test complex.__div__ implementation with non-trivial values.
        r5   N)	listr%   r&   r/   r   rd   rB   rY   div_usecaser(   r6   rV   rU   s       r   test_divzTestComplex.test_divq   sw    
 i'(8(8(:(:D<L<L<N<NOOPP(%*:;9;[&FFFFFr!   c                 <    |                      t                     d S rl   )r   rm   rn   s    r   test_div_npmzTestComplex.test_div_npm{   s    N+++++r!   N)rZ   r[   r\   r]   ri   ro   rs   ru   rx   rz   r   r   r   r!   r   r_   r_   N   s        0 1 1 1 1- - - 1 1 1 1 1- - - $6 1 1 1 12 2 2 0 G G G G, , , , ,r!   r_   c                   L   e Zd ZdZd Z	 	 d4dZd Zd Zd Zd	 Z	e
fd
Zd Ze
fdZd Ze
fdZd Ze
fdZd Zd Zd Zd Zd Ze
f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" 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/ Z0d0 Z1d1 Z2d2 Z3d3 Z4dS )5	TestCMathz)
    Tests for cmath module support.
    c                     |                      |t          j        t          j        g|                                 |           d S rl   )rQ   r   rd   rB   r*   )r(   rG   r6   s      r   check_predicate_funczTestCMath.check_predicate_func   sF    v 0%/B((**% 	 	9 	9 	9 	9 	9r!   r	   Nc                     |                      |t          j        g|p|                                 |||           |                      |t          j        g|p|                                 |||           d S )N)r6   r=   r>   )rQ   r   rd   r/   rB   r*   )r(   rG   r6   r=   r>   rV   s         r   check_unary_funczTestCMath.check_unary_func   s    v 013!1!1!3!35t& 	 	( 	( 	( 	v04!2!2!4!4E& 	 	( 	( 	( 	( 	(r!   c                 F    |                      t          t                     d S N)r   phase_usecaser]   rn   s    r   
test_phasezTestCMath.test_phase       m-?@@@@@r!   c                 F    |                      t          t                     d S r   )r   r   rm   rn   s    r   test_phase_npmzTestCMath.test_phase_npm       m^<<<<<r!   c                 F    |                      t          t                     d S r   )r   polar_usecaser]   rn   s    r   
test_polarzTestCMath.test_polar   r   r!   c                 F    |                      t          t                     d S r   )r   r   rm   rn   s    r   test_polar_npmzTestCMath.test_polar_npm   r   r!   c                       fd} |t           j                                                     |t           j                                                    d S )Nc                 b    d |D             }                     t          | | fg|           d S )Nc                 r    g | ]4}t          j        |j                  r|j        d k    &|j        |j        f5S )r   )r-   isinfimagreal)r   zs     r   r   z8TestCMath.test_rect.<locals>.do_test.<locals>.<listcomp>   sK     @ @ @1!Z//@346Q;; vqv&3>;;r!   r5   )rY   rect_usecase)tpseed_valuesrV   r6   r(   s      r   do_testz$TestCMath.test_rect.<locals>.do_test   sK    @ @ @ @ @FOOLB8*fEOJJJJJr!   )r   rg   r/   rA   r*   )r(   r6   r   s   `` r   	test_rectzTestCMath.test_rect   sp    	K 	K 	K 	K 	K 	K 	t//11222t002233333r!   c                 <    |                      t                     d S rl   )r   rm   rn   s    r   test_rect_npmzTestCMath.test_rect_npm   rp   r!   c                 F    |                      t          t                     d S r   )r   isnan_usecaser]   rh   s     r   
test_isnanzTestCMath.test_isnan       !!-1CDDDDDr!   c                 F    |                      t          t                     d S r   )r   r   rm   rn   s    r   test_isnan_npmzTestCMath.test_isnan_npm       !!-@@@@@r!   c                 F    |                      t          t                     d S r   )r   isinf_usecaser]   rh   s     r   
test_isinfzTestCMath.test_isinf   r   r!   c                 F    |                      t          t                     d S r   )r   r   rm   rn   s    r   test_isinf_npmzTestCMath.test_isinf_npm   r   r!   c                 F    |                      t          t                     d S r   )r   isfinite_usecaser]   rh   s     r   test_isfinitezTestCMath.test_isfinite   s     !!"24FGGGGGr!   c                 F    |                      t          t                     d S r   )r   r   rm   rn   s    r   test_isfinite_npmzTestCMath.test_isfinite_npm   s    !!"2NCCCCCr!   c                 J    |                      t          t          d           d S N   )r=   )r   exp_usecaser]   rn   s    r   test_expzTestCMath.test_exp   $    k+=AFFFFFr!   c                 J    |                      t          t          d           d S r   )r   r   rm   rn   s    r   test_exp_npmzTestCMath.test_exp_npm   s%     	k>BBBBBr!   c                 F    |                      t          t                     d S r   )r   log_usecaser]   rn   s    r   test_logzTestCMath.test_log   s    k+=>>>>>r!   c                 F    |                      t          t                     d S r   )r   r   rm   rn   s    r   test_log_npmzTestCMath.test_log_npm   s    k>:::::r!   c                 0   t          t          j        |                                 |                                                     }t          j        t          j        ft          j        t          j        fg}|                     t          |||d           d S )N   )r6   r=   )	r|   r%   r&   r/   r   rd   rB   rY   log_base_usecaser~   s       r   test_log_basezTestCMath.test_log_base   s    i'(8(8(:(:D<L<L<N<NOOPP(%*:;9;(+vU 	 	  	  	  	  	 r!   c                 <    |                      t                     d S rl   )r   rm   rn   s    r   test_log_base_npmzTestCMath.test_log_base_npm   s    00000r!   c                 F    |                      t          t                     d S r   )r   log10_usecaser]   rn   s    r   
test_log10zTestCMath.test_log10   r   r!   c                 F    |                      t          t                     d S r   )r   r   rm   rn   s    r   test_log10_npmzTestCMath.test_log10_npm   r   r!   c                 F    |                      t          t                     d S r   )r   sqrt_usecaser]   rn   s    r   	test_sqrtzTestCMath.test_sqrt   s    l,>?????r!   c                     |                      t          t                     d t          dd          D             }|                     t          t
          j        g|t                     d S )Nc                     g | ]}d |z   	S )
   r   )r   is     r   r   z+TestCMath.test_sqrt_npm.<locals>.<listcomp>   s    222q27(222r!   $   )   r5   )r   r   rm   rangerQ   r   rd   )r(   rV   s     r   test_sqrt_npmzTestCMath.test_sqrt_npm   si    lN;;; 32E"bMM222|e&6%7^ 	 	5 	5 	5 	5 	5r!   c                 J    |                      t          t          d           d S r   )r   acos_usecaser]   rn   s    r   	test_acoszTestCMath.test_acos   $    l,>QGGGGGr!   c                 J    |                      t          t          d           d S r   )r   r   rm   rn   s    r   test_acos_npmzTestCMath.test_acos_npm   #    lNCCCCCr!   c                 J    |                      t          t          d           d S r   )r   asin_usecaser]   rn   s    r   	test_asinzTestCMath.test_asin   r   r!   c                 J    |                      t          t          d           d S r   )r   r   rm   rn   s    r   test_asin_npmzTestCMath.test_asin_npm   r   r!   c                 J    |                      t          t          d           d S r   )r   atan_usecaser]   rn   s    r   	test_atanzTestCMath.test_atan   s$    l,>QHHHHHr!   c                 J    |                      t          t          d           d S r   )r   r   rm   rn   s    r   test_atan_npmzTestCMath.test_atan_npm   s#    lNDDDDDr!   c                 J    |                      t          t          d           d S r   )r   cos_usecaser]   rn   s    r   test_coszTestCMath.test_cos   r   r!   c                 J    |                      t          t          d           d S r   )r   r   rm   rn   s    r   test_cos_npmzTestCMath.test_cos_npm  s#    k>BBBBBr!   c                 J    |                      t          t          d           d S Neps)r>   )r   sin_usecaser]   rn   s    r   test_sinzTestCMath.test_sin  s$    k+=uMMMMMr!   c                 J    |                      t          t          d           d S r   )r   r   rm   rn   s    r   test_sin_npmzTestCMath.test_sin_npm
  s#    k>5IIIIIr!   c                 J    |                      t          t          d           d S r   r   tan_usecaser]   rn   s    r   test_tanzTestCMath.test_tan  r   r!   c                 J    |                      t          t          d           d S r   r   rn   s    r   test_tan_npmzTestCMath.test_tan_npm  r   r!   c                 F    |                      t          t                     d S r   )r   acosh_usecaser]   rn   s    r   
test_acoshzTestCMath.test_acosh  r   r!   c                 F    |                      t          t                     d S r   )r   r   rm   rn   s    r   test_acosh_npmzTestCMath.test_acosh_npm  r   r!   c                 J    |                      t          t          d           d S r   )r   asinh_usecaser]   rn   s    r   
test_asinhzTestCMath.test_asinh  $    m-?aHHHHHr!   c                 J    |                      t          t          d           d S r   )r   r   rm   rn   s    r   test_asinh_npmzTestCMath.test_asinh_npm  #    m^!DDDDDr!   c                 J    |                      t          t          d           d S r   )r   atanh_usecaser]   rn   s    r   
test_atanhzTestCMath.test_atanh!  r  r!   c                 J    |                      t          t          d           d S r   )r   r  rm   rn   s    r   test_atanh_npmzTestCMath.test_atanh_npm$  r  r!   c                 J    |                      t          t          d           d S r   )r   cosh_usecaser]   rn   s    r   	test_coshzTestCMath.test_cosh'  r   r!   c                 J    |                      t          t          d           d S r   )r   r  rm   rn   s    r   test_cosh_npmzTestCMath.test_cosh_npm*  r   r!   c                 J    |                      t          t          d           d S r   )r   sinh_usecaser]   rn   s    r   	test_sinhzTestCMath.test_sinh-  s$    l,>NNNNNr!   c                 J    |                      t          t          d           d S r   )r   r  rm   rn   s    r   test_sinh_npmzTestCMath.test_sinh_npm0  s#    lNEJJJJJr!   c                 J    |                      t          t          d           d S r   r   tanh_usecaser]   rn   s    r   	test_tanhzTestCMath.test_tanh3  r   r!   c                 J    |                      t          t          d           d S r   r  rn   s    r   test_tanh_npmzTestCMath.test_tanh_npm6  r   r!   )r	   NN)5rZ   r[   r\   __doc__r   r   r   r   r   r   r]   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r
  r  r  r  r  r  r  r   r!   r   r   r      s        9 9 9 ?C $( ( ( (A A A= = =A A A= = = 1 4 4 4 4- - -
  2 E E E EA A A  2 E E E EA A A #5 H H H HD D D
G G GC C C? ? ?; ; ; #5        1 1 1A A A= = =@ @ @5 5 5H H HD D DH H HD D DI I IE E EG G GC C CN N NJ J JG G GG G G
A A A= = =I I IE E EI I IE E EH H HD D DO O OK K KH H HH H H H Hr!   r   __main__)cmathr%   r-   r#   numba.core.compilerr   r   r   
numba.corer   numba.tests.supportr   r   complex_usecasesunittestr]   enable_pyobjectrm   objectr   r_   r   rZ   mainr   r!   r   <module>r&     sd         



 > > > > > > > > > >       - - - - - - - -     UWW %)  "9< 9< 9< 9< 9<f 9< 9< 9<x., ., ., ., .,/8 ., ., .,bxH xH xH xH xH xH xH xHv zHMOOOOO r!   