
    xKg=,                         d dl Z d dlZd dlZd dlmZmZ d dlmZ ddl d dl	Z	ddiZ
ddiZ G d	 d
e      Z G d dee      Z G d dee      Zedk(  r e	j"                          yy)    N)jittypes)TestCase   )*forceobjTnopythonc                   8    e Zd Zd Zd Zd ZddefdZdefdZy)BaseComplexTestc           
          ddddddt        d      t        d      g}t        j                  d	k7  r|t        d
      gz  }t        j                  ||      D cg c]  \  }}t        ||       c}}S c c}}w )N               r         ?g      -inf+infwin32nan)floatsysplatform	itertoolsproductcomplexselfrealsxys       \/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_complex.pybasic_valueszBaseComplexTest.basic_values   sp    tQD$vf/<<7"eEl^#E*3*;*;E5*IJ*I$!Q1*IJJJs   A2c           
      ,   ddddt         j                   t         j                  t        d      t        d      g}t        j                  dk7  r|t        d      gz  }t        j                  ||      D cg c]  \  }}t        ||       c}}S c c}}w )	Nr   r   r   r   r   r   r   r   )mathpir   r   r   r   r   r   r   s       r    more_valueszBaseComplexTest.more_values   s|    tQTWWHtwwhvf/<<7"eEl^#E*3*;*;E5*IJ*I$!Q1*IJJJs   6Bc           
          ddddt         j                   t         j                  t        d      t        d      g}t        j                  ||      D cg c]  \  }}t        ||       c}}S c c}}w )Nr   r   r   r   infr   )r#   r$   r   r   r   r   r   s       r    non_nan_valueszBaseComplexTest.non_nan_values   s`    tQTWWHtwwhuuV}.*3*;*;E5*IJ*I$!Q1*IJJJs   A.r   Nc           
      T   |D ]r  } t        |ffi ||      }|t        j                  t        j                  fv rdnd}	|D ]2  }
	  ||
      } ||
      }d|
d|	}| j                  |||	|||       4 t y # t        $ r%}| j                  dt        |             Y d }~ad }~ww xY w)Nsingledoublemath domain error
for input  with prec )preculpsabs_tolmsg)r   r   float32	complex64
ValueErrorassertInstrassertPreciseEqual)r   pyfuncx_typesx_valuesr0   r1   flagstxcfuncr/   vxexpectedegotr2   s                  r    	run_unaryzBaseComplexTest.run_unary#   s    B'C''/E!emmU__%EE88D%bzH Bi57>''XD-17 ( M   " MM"5s1v>s   A99	B'B""B'c           	         |D ]  \  }} t        ||ffi ||      }t        ||g      t        t        j                  t        j                  g      z  rdnd}	|D ]8  \  }
}	  ||
|      } ||
|      }d|
|fd|	}| j                  |||	||       :  y # t
        $ r%}| j                  dt        |             Y d }~gd }~wt        $ r Y uw xY w)Nr*   r+   r,   r-   r.   )r/   r0   r2   )
r   setr   r3   r4   r5   r6   r7   ZeroDivisionErrorr8   )r   r9   value_typesvaluesr0   r<   r=   tyr>   r/   r?   vyr@   rA   rB   r2   s                   r    
run_binaryzBaseComplexTest.run_binary3   s    !FB*CR*E*62EB8}sEMM5??+K'LL !  !B%b"~H Bm68"XtD''XD-1s ( < ! " " MM"5s1v>( s   !	B	C!CCC)	__name__
__module____qualname__r!   r%   r(   enable_pyobj_flagsrC   rK        r    r   r      s1    KKK
 9:4*M  <=+<rQ   r   c                   L    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y	)
TestComplexc                 r   | j                  t        t        j                  t        j                  g| j                         |       | j                  t        t        j                  t        j                  gg d|       | j                  t        t        j                  t        j                  gddg|       y Nr<   )r   r   r   g      )
rC   real_usecaser   r4   
complex128r!   int8int64r3   float64r   r<   s     r    	test_realzTestComplex.test_realJ       |eoou7G7G%H((*% 	 	9|ejj%++%>! 	 	0|emmU]]%CT{% 	 	1rQ   c                 0    | j                  t               y NrV   )r^   no_pyobj_flagsr   s    r    test_real_npmzTestComplex.test_real_npmR       ^,rQ   c                 r   | j                  t        t        j                  t        j                  g| j                         |       | j                  t        t        j                  t        j                  gg d|       | j                  t        t        j                  t        j                  gddg|       y rU   )
rC   imag_usecaser   r4   rY   r!   rZ   r[   r3   r\   r]   s     r    	test_imagzTestComplex.test_imagU   r_   rQ   c                 0    | j                  t               y ra   )rh   rb   rc   s    r    test_imag_npmzTestComplex.test_imag_npm]   re   rQ   c                 r   | j                  t        t        j                  t        j                  g| j                         |       | j                  t        t        j                  t        j                  gg d|       | j                  t        t        j                  t        j                  gddg|       y rU   )
rC   conjugate_usecaser   r4   rY   r!   rZ   r[   r3   r\   r]   s     r    test_conjugatezTestComplex.test_conjugate`   s    (5??E<L<L*M((*% 	 	9(5::u{{*C! 	 	0(5==%--*HT{% 	 	1rQ   c                 0    | j                  t               y ra   )rm   rb   rc   s    r    test_conjugate_npmzTestComplex.test_conjugate_npmh   s    .1rQ   c                 ,   t        t        j                  | j                         | j                                     }t        j
                  t        j
                  ft        j                  t        j                  fg}| j                  t        |||       y)zN
        Test complex.__div__ implementation with non-trivial values.
        rV   N)	listr   r   r%   r   rY   r4   rK   div_usecaser   r<   rH   rG   s       r    test_divzTestComplex.test_divk   sl    
 i''(8(8(:D<L<L<NOP((%*:*:;9;[&FrQ   c                 0    | j                  t               y ra   )rt   rb   rc   s    r    test_div_npmzTestComplex.test_div_npmu   s    N+rQ   N)rL   rM   rN   rO   r^   rd   rh   rj   rm   ro   rt   rv   rP   rQ   r    rS   rS   H   s=    0 1- 1 1- $6 12 0 G,rQ   rS   c                   J   e Zd ZdZd Z	 	 d3d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. Z0d/ Z1d0 Z2d1 Z3d2 Z4y)4	TestCMathz)
    Tests for cmath module support.
    c                     | j                  |t        j                  t        j                  g| j	                         |       y ra   )rC   r   rY   r4   r!   )r   r9   r<   s      r    check_predicate_funczTestCMath.check_predicate_func~   s4    v 0 0%//B((*% 	 	9rQ   Nc                     | j                  |t        j                  g|xs | j                         |||       | j                  |t        j                  g|xs | j                         |||       y )N)r<   r0   r1   )rC   r   rY   r%   r4   r!   )r   r9   r<   r0   r1   rH   s         r    check_unary_funczTestCMath.check_unary_func   sn    v 0 013!1!1!35t& 	 	( 	v04!2!2!4E& 	 	(rQ   c                 8    | j                  t        t               y N)r|   phase_usecaserO   rc   s    r    
test_phasezTestCMath.test_phase       m-?@rQ   c                 8    | j                  t        t               y r~   )r|   r   rb   rc   s    r    test_phase_npmzTestCMath.test_phase_npm       m^<rQ   c                 8    | j                  t        t               y r~   )r|   polar_usecaserO   rc   s    r    
test_polarzTestCMath.test_polar   r   rQ   c                 8    | j                  t        t               y r~   )r|   r   rb   rc   s    r    test_polar_npmzTestCMath.test_polar_npm   r   rQ   c                       fd} |t         j                   j                                 |t         j                   j	                                y )Nc                     |D cg c]H  }t        j                  |j                        r|j                  dk(  r|j                  |j                  fJ }}j	                  t
        | | fg|       y c c}w )Nr   rV   )r#   isinfimagrealrK   rect_usecase)tpseed_valueszrH   r<   r   s       r    do_testz$TestCMath.test_rect.<locals>.do_test   sg    0; @1!ZZ/166Q; vvqvv&F @OOLB8*fEOJ@s   AA2)r   r\   r%   r3   r!   )r   r<   r   s   `` r    	test_rectzTestCMath.test_rect   s9    	K 	t//12t0023rQ   c                 0    | j                  t               y ra   )r   rb   rc   s    r    test_rect_npmzTestCMath.test_rect_npm   re   rQ   c                 8    | j                  t        t               y r~   )rz   isnan_usecaserO   r]   s     r    
test_isnanzTestCMath.test_isnan       !!-1CDrQ   c                 8    | j                  t        t               y r~   )rz   r   rb   rc   s    r    test_isnan_npmzTestCMath.test_isnan_npm       !!-@rQ   c                 8    | j                  t        t               y r~   )rz   isinf_usecaserO   r]   s     r    
test_isinfzTestCMath.test_isinf   r   rQ   c                 8    | j                  t        t               y r~   )rz   r   rb   rc   s    r    test_isinf_npmzTestCMath.test_isinf_npm   r   rQ   c                 8    | j                  t        t               y r~   )rz   isfinite_usecaserO   r]   s     r    test_isfinitezTestCMath.test_isfinite   s    !!"24FGrQ   c                 8    | j                  t        t               y r~   )rz   r   rb   rc   s    r    test_isfinite_npmzTestCMath.test_isfinite_npm   s    !!"2NCrQ   c                 <    | j                  t        t        d       y N   )r0   )r|   exp_usecaserO   rc   s    r    test_expzTestCMath.test_exp       k+=AFrQ   c                 <    | j                  t        t        d       y r   )r|   r   rb   rc   s    r    test_exp_npmzTestCMath.test_exp_npm   s     	k>BrQ   c                 8    | j                  t        t               y r~   )r|   log_usecaserO   rc   s    r    test_logzTestCMath.test_log   s    k+=>rQ   c                 8    | j                  t        t               y r~   )r|   r   rb   rc   s    r    test_log_npmzTestCMath.test_log_npm   s    k>:rQ   c                 .   t        t        j                  | j                         | j                                     }t        j
                  t        j
                  ft        j                  t        j                  fg}| j                  t        |||d       y )N   )r<   r0   )	rq   r   r   r%   r   rY   r4   rK   log_base_usecasers   s       r    test_log_basezTestCMath.test_log_base   ss    i''(8(8(:D<L<L<NOP((%*:*:;9;(+vU 	 	 rQ   c                 0    | j                  t               y ra   )r   rb   rc   s    r    test_log_base_npmzTestCMath.test_log_base_npm   s    0rQ   c                 8    | j                  t        t               y r~   )r|   log10_usecaserO   rc   s    r    
test_log10zTestCMath.test_log10   r   rQ   c                 8    | j                  t        t               y r~   )r|   r   rb   rc   s    r    test_log10_npmzTestCMath.test_log10_npm   r   rQ   c                 8    | j                  t        t               y r~   )r|   sqrt_usecaserO   rc   s    r    	test_sqrtzTestCMath.test_sqrt   s    l,>?rQ   c                     | j                  t        t               t        dd      D cg c]  }d|z   
 }}| j	                  t        t
        j                  g|t               y c c}w )N$   )   
   rV   )r|   r   rb   rangerC   r   rY   )r   irH   s      r    test_sqrt_npmzTestCMath.test_sqrt_npm   s\    lN; %*"bM2Mq27(M2|e&6&6%7^ 	 	5 3s   A%c                 <    | j                  t        t        d       y r   )r|   acos_usecaserO   rc   s    r    	test_acoszTestCMath.test_acos       l,>QGrQ   c                 <    | j                  t        t        d       y r   )r|   r   rb   rc   s    r    test_acos_npmzTestCMath.test_acos_npm       lNCrQ   c                 <    | j                  t        t        d       y r   )r|   asin_usecaserO   rc   s    r    	test_asinzTestCMath.test_asin   r   rQ   c                 <    | j                  t        t        d       y r   )r|   r   rb   rc   s    r    test_asin_npmzTestCMath.test_asin_npm   r   rQ   c                 <    | j                  t        t        d       y r   )r|   atan_usecaserO   rc   s    r    	test_atanzTestCMath.test_atan   s    l,>QHrQ   c                 <    | j                  t        t        d       y r   )r|   r   rb   rc   s    r    test_atan_npmzTestCMath.test_atan_npm   s    lNDrQ   c                 <    | j                  t        t        d       y r   )r|   cos_usecaserO   rc   s    r    test_coszTestCMath.test_cos   r   rQ   c                 <    | j                  t        t        d       y r   )r|   r   rb   rc   s    r    test_cos_npmzTestCMath.test_cos_npm   s    k>BrQ   c                 <    | j                  t        t        d       y Neps)r1   )r|   sin_usecaserO   rc   s    r    test_sinzTestCMath.test_sin   s    k+=uMrQ   c                 <    | j                  t        t        d       y r   )r|   r   rb   rc   s    r    test_sin_npmzTestCMath.test_sin_npm  s    k>5IrQ   c                 <    | j                  t        t        d       y r   r|   tan_usecaserO   rc   s    r    test_tanzTestCMath.test_tan  r   rQ   c                 <    | j                  t        t        d       y r   r   rc   s    r    test_tan_npmzTestCMath.test_tan_npm
  r   rQ   c                 8    | j                  t        t               y r~   )r|   acosh_usecaserO   rc   s    r    
test_acoshzTestCMath.test_acosh  r   rQ   c                 8    | j                  t        t               y r~   )r|   r   rb   rc   s    r    test_acosh_npmzTestCMath.test_acosh_npm  r   rQ   c                 <    | j                  t        t        d       y r   )r|   asinh_usecaserO   rc   s    r    
test_asinhzTestCMath.test_asinh      m-?aHrQ   c                 <    | j                  t        t        d       y r   )r|   r   rb   rc   s    r    test_asinh_npmzTestCMath.test_asinh_npm      m^!DrQ   c                 <    | j                  t        t        d       y r   )r|   atanh_usecaserO   rc   s    r    
test_atanhzTestCMath.test_atanh  r   rQ   c                 <    | j                  t        t        d       y r   )r|   r   rb   rc   s    r    test_atanh_npmzTestCMath.test_atanh_npm  r   rQ   c                 <    | j                  t        t        d       y r   )r|   cosh_usecaserO   rc   s    r    	test_coshzTestCMath.test_cosh!  r   rQ   c                 <    | j                  t        t        d       y r   )r|   r   rb   rc   s    r    test_cosh_npmzTestCMath.test_cosh_npm$  r   rQ   c                 <    | j                  t        t        d       y r   )r|   sinh_usecaserO   rc   s    r    	test_sinhzTestCMath.test_sinh'  s    l,>NrQ   c                 <    | j                  t        t        d       y r   )r|   r  rb   rc   s    r    test_sinh_npmzTestCMath.test_sinh_npm*  s    lNEJrQ   c                 <    | j                  t        t        d       y r   r|   tanh_usecaserO   rc   s    r    	test_tanhzTestCMath.test_tanh-  r   rQ   c                 <    | j                  t        t        d       y r   r	  rc   s    r    test_tanh_npmzTestCMath.test_tanh_npm0  r   rQ   )r   NN)5rL   rM   rN   __doc__rz   r|   r   r   r   r   rO   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  rP   rQ   r    rx   rx   y   s<   9 ?C $(A=A= 1 4-
  2 EA  2 EA #5 HD
GC?; #5  1A=@5HDHDIEGCNJGG
A=IEIEHDOKHHrQ   rx   __main__)r   r#   r   numbar   r   numba.tests.supportr   complex_usecasesunittestrO   rb   objectr   rS   rx   rL   mainrP   rQ   r    <module>r     sx      
  (   $' d#7<f 7<t.,/8 .,bxH xHv zHMMO rQ   