
    sh2(                     N   S SK r S SKrS SKrS SKJrJr  S SKJr  S SK	J
r
  S SKJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%  S SK&J'r'  S r( " S S	\5      r) " S
 S\)5      r* " S S\)5      r+ " S S\5      r,\-S:X  a  \R\                  " 5         gg)    N)unittestCUDATestCase)types)cuda)real_usecaseimag_usecaseconjugate_usecasephase_usecasepolar_as_complex_usecaserect_usecaseisnan_usecaseisinf_usecaseisfinite_usecaseexp_usecaselog_usecaselog_base_usecaselog10_usecasesqrt_usecaseasin_usecaseacos_usecaseatan_usecasecos_usecasesin_usecasetan_usecaseacosh_usecaseasinh_usecaseatanh_usecasecosh_usecasesinh_usecasetanh_usecase)numpy_supportc                   ^^^^ [        S T 5       5      (       a   e[        T[        R                  5      (       a   e[        R
                  " T" T6 SS9" U 5      mT/[        T5      -    Vs/ s H  n[        R                  " USS5      PM     nn[        T5      S:X  a  U4S jnO[        T5      S:X  a  U4S jnO e[        R
                  " [        U5      5      " U5      mUUU4S	 jnU$ s  snf )
Nc              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7fN)
isinstancer   Array).0tps     x/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cuda/tests/cudapy/test_complex.py	<genexpr>&compile_scalar_func.<locals>.<genexpr>   s     B2:b%++..s   ')T)device   Cc                 p   > [         R                  " S5      nX R                  S   :  a  T" X   5      X'   g g Nr-   r   r   gridshape)outaidevice_funcs      r)   kernel_func(compile_scalar_func.<locals>.kernel_func$   s1    		!A99Q<$QT*         c                 v   > [         R                  " S5      nX0R                  S   :  a  T" X   X#   5      X'   g g r0   r1   )r4   r5   br6   r7   s       r)   r8   r9   )   s5    		!A99Q<$QT140  r:   c           	        > [        U 5      nT
 Vs/ s H,  n[        R                  " U[        R                  " U5      S9PM.     nn[        R                  " U[        R                  " T5      S9n[        U 5       H  u  pV[        Xc5       H	  u  pxXxU'   M     M     U/U-   n	T[        [        R                  " US-  5      5      S4   " U	6   [        U5      $ s  snf )N)dtype   )lennpemptyr!   as_dtype	enumeratezipintmathceillist)valuesnr(   inputsoutputr6   vsvinpargsargtypeskernelrestypes             r)   kernel_wrapper+compile_scalar_func.<locals>.kernel_wrapper2   s    K$&$b ((1M$:$:2$>?$ 	 &!=#9#9'#BCv&EAb/A * ' x& s499QW%&+,d3F|&s   3C)	anyr%   r   r&   r   jitrJ   rA   tuple)	pyfuncrS   rU   r(   kernel_typesr8   rV   r7   rT   s	    ``    @@r)   compile_scalar_funcr]      s    BBBBBB'5;;////((7H-d;FCK  'i$x.8:8 KKAs+8  : 8}	+ 
X!		1
 	qXXeL)*;7F
 ;:s   ."C/c                   8    \ rS rSrS rS rS rSS jr\r\r	Sr
g)	BaseComplexTest@   c                     SSSSSS[        S5      [        S5      [        S	5      /	n[        R                  " X5       VVs/ s H  u  p#[        X#5      PM     snn$ s  snnf )
N               r-   g      ?g      -inf+infnan)float	itertoolsproductcomplexselfrealsxys       r)   basic_valuesBaseComplexTest.basic_valuesB   sT    tQD$vfuU|=*3*;*;E*IJ*I$!*IJJJs    Ac                     SSSS[         R                  * [         R                  7[        S5      [        S5      [        S5      /	n[        R                  " X5       VVs/ s H  u  p#[        X#5      PM     snn$ s  snnf )Nrc   r-   rd   re   rf   rg   rH   pirh   ri   rj   rk   rl   s       r)   more_valuesBaseComplexTest.more_valuesG   s`    dArDGG8dggXvfuU|=*3*;*;E*IJ*I$!*IJJJs   A9c           
          SSSS[         R                  * [         R                  7[        S5      [        S5      /n[        R                  " X5       VVs/ s H  u  p#[        X#5      PM     snn$ s  snnf )Nrb   rc   r-   rd   infre   rt   rl   s       r)   non_nan_valuesBaseComplexTest.non_nan_valuesL   sZ    tQTWWHtwwhuuV}.*3*;*;E*IJ*I$!*IJJJs   A/c                    U GH$  n[        U[        R                  5      (       a  U4n[        U[        5      (       a  US   " U6 nUR                  S   [        R
                  [        R                  4;   a  SOSn[        XR                  UR                  5      n/ n	/ n
U HG  n[        U[        [        45      (       d  U4n U
R                  U" U6 5        U	R                  U5        MI     U" U	5      n[        XU	5       H#  u  pnSU< SU< 3nU R                  XUUUUS9  M%     GM'     g ! [         a&  nU R                  S[        U5      5         S nAM  S nAff = f)Nr   singledoublezmath domain errorz
for input z with prec )preculpsignore_sign_on_zeromsg)r%   r   TyperZ   rR   float32	complex64r]   return_typerJ   append
ValueErrorassertInstrrF   assertPreciseEqual)rm   r[   sigsrK   r   r   sigr   cudafunc	ok_valuesexpected_listrR   egot_listgotexpectedr   s                    r)   run_funcBaseComplexTest.run_funcQ   sD   C#uzz**d#u%%!fclxx{u}}eoo&FF !  +688S__MHIM!$u665D!((7$$T*   	*H'*8I'N#t594@''D-1<O,/ ( 1 (O- $ " MM"5s1v>s   %D--
E7EE N)r-   F)__name__
__module____qualname____firstlineno__rq   rv   rz   r   	run_unary
run_binary__static_attributes__r   r:   r)   r_   r_   @   s%    K
K
K
1< IJr:   r_   c                   ,    \ rS rSrS rS rS rS rSrg)TestComplexs   c           	          U R                  5       nU R                  U[        R                  [        R                  4 Vs/ s H  nUR                  U5      PM     snU5        g s  snf r$   )rq   r   r   r   
complex128underlying_float)rm   r[   rK   r(   s       r)   check_real_imageTestComplex.check_real_imageu   s^    ""$v#(??E4D4D"EG"EB ++B/"EG	Gs   A#
c                 .    U R                  [        5        g r$   )r   r   rm   s    r)   	test_realTestComplex.test_real|       l+r:   c                 .    U R                  [        5        g r$   )r   r   r   s    r)   	test_imagTestComplex.test_imag   r   r:   c                     [         nU R                  5       nU R                  U[        R                  [        R
                  /U5        g r$   )r	   rq   r   r   r   r   )rm   r[   rK   s      r)   test_conjugateTestComplex.test_conjugate   s8    """$v)9)9:	r:   r   N)	r   r   r   r   r   r   r   r   r   r   r:   r)   r   r   s   s    ,,r:   r   c                       \ rS rSrSrS r  SS jrS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)	TestCMath   z!
Tests for cmath module support.
c           	          U R                  U[        R                  [        R                  4 Vs/ s H  n[        R                  " U5      PM     snU R                  5       5        g s  snf r$   )r   r   r   r   booleanrq   )rm   r[   r(   s      r)   check_predicate_funcTestCMath.check_predicate_func   sW    v#(#3#3U__"EG"EB b)"EG((*	,Gs    A&
Nc                    U(       a  S nOS nU R                  X" [        R                  5      /U=(       d    U R                  5       UUS9  U R                  X" [        R                  5      /U=(       d    U R                  5       UUS9  g )Nc                 $    U R                  U 5      $ r$   )r   r(   s    r)   r   'TestCMath.check_unary_func.<locals>.sig   s    **2..r:   c                     U " U 5      $ r$   r   r   s    r)   r   r      s    "vr:   r   r   )r   r   r   rv   r   rq   )rm   r[   r   rK   returns_floatr   r   s          r)   check_unary_funcTestCMath.check_unary_func   s    /vE$4$4 563!1!1!3$+> 	 	@ 	vEOO 454!2!2!44+> 	 	@r:   c                 ,    U R                  [        SS9  g )NT)r   )r   r
   r   s    r)   
test_phaseTestCMath.test_phase   s    m4@r:   c                 .    U R                  [        5        g r$   )r   r   r   s    r)   
test_polarTestCMath.test_polar   s    67r:   c                    ^  U 4S jnU" [         R                  T R                  5       5        U" [         R                  T R	                  5       5        g )Nc                 "  > U Vs/ s HR  n[         R                  " UR                  5      (       a  UR                  S:X  d  M:  UR                  UR                  4PMT     nnU R                  nTR                  [        U " XD5      /U5        g s  snf )Nr   )rH   isinfimagrealr   r   r   )r(   seed_valueszrK   
float_typerm   s        r)   do_test$TestCMath.test_rect.<locals>.do_test   sx    0; @1!ZZ//166Q; 'qvvqvv&F @,,JOOL2j+E*F"$@s   9BB)r   r   rv   r   rq   )rm   r   s   ` r)   	test_rectTestCMath.test_rect   s:    	$ 	  $"2"2"45!2!2!45r:   c                 .    U R                  [        5        g r$   )r   r   r   s    r)   
test_isnanTestCMath.test_isnan       !!-0r:   c                 .    U R                  [        5        g r$   )r   r   r   s    r)   
test_isinfTestCMath.test_isinf   r   r:   c                 .    U R                  [        5        g r$   )r   r   r   s    r)   test_isfiniteTestCMath.test_isfinite   s    !!"23r:   c                 ,    U R                  [        SS9  g Nr;   r   )r   r   r   s    r)   test_expTestCMath.test_exp       k2r:   c                 .    U R                  [        5        g r$   )r   r   r   s    r)   test_logTestCMath.test_log   s    k*r:   c                 &   [        [        R                  " U R                  5       U R                  5       5      5      n[        R
                  [        R
                  4[        R                  [        R                  4/nU R                  [        X!SS9  g )N   r   )	rJ   ri   rj   rv   r   r   r   r   r   )rm   rK   value_typess      r)   test_log_baseTestCMath.test_log_base   so    i''(8(8(:D<L<L<NOP((%*:*:;9;(+ 	 	 r:   c                 .    U R                  [        5        g r$   )r   r   r   s    r)   
test_log10TestCMath.test_log10       m,r:   c                 .    U R                  [        5        g r$   )r   r   r   s    r)   	test_sqrtTestCMath.test_sqrt   r   r:   c                 ,    U R                  [        SS9  g r   )r   r   r   s    r)   	test_acosTestCMath.test_acos       l3r:   c                 ,    U R                  [        SS9  g r   )r   r   r   s    r)   	test_asinTestCMath.test_asin   r   r:   c                 J    U R                  [        SU R                  5       S9  g )Nr;   )r   rK   )r   r   rz   r   s    r)   	test_atanTestCMath.test_atan   s%    l%)%8%8%: 	 	<r:   c                 ,    U R                  [        SS9  g r   )r   r   r   s    r)   test_cosTestCMath.test_cos   r   r:   c                 ,    U R                  [        SS9  g r   )r   r   r   s    r)   test_sinTestCMath.test_sin   s    k2r:   c                 .    U R                  [        SSS9  g Nr;   Tr   )r   r   r   s    r)   test_tanTestCMath.test_tan   s    k26 	 	8r:   c                 .    U R                  [        5        g r$   )r   r   r   s    r)   
test_acoshTestCMath.test_acosh   r   r:   c                 ,    U R                  [        SS9  g r   )r   r   r   s    r)   
test_asinhTestCMath.test_asinh   s    m!4r:   c                 .    U R                  [        SSS9  g r  )r   r   r   s    r)   
test_atanhTestCMath.test_atanh   s    m!26 	 	8r:   c                 ,    U R                  [        SS9  g r   )r   r   r   s    r)   	test_coshTestCMath.test_cosh   r   r:   c                 ,    U R                  [        SS9  g r   )r   r   r   s    r)   	test_sinhTestCMath.test_sinh   r   r:   c                 .    U R                  [        SSS9  g r  )r   r    r   s    r)   	test_tanhTestCMath.test_tanh  s    l26 	 	8r:   r   )r-   NFF)r   r   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      s    , 7;BG@$A8	6114
3+ -,
44<338-58448r:   r   c                        \ rS rSrS rS rSrg)TestAtomicOnComplexComponentsi  c                    [         R                  S 5       nSn[        R                  " U5      [        R                  " U5      S-  -   nUR	                  5       nUSU4   " U5        [        R
                  R                  US-   U5        g )Nc                     [         R                  " S5      n[         R                  R                  U R                  US5        g Nr-   )r   r2   atomicaddr   rK   r6   s     r)   atomic_add_oneITestAtomicOnComplexComponents.test_atomic_on_real.<locals>.atomic_add_one  '    		!AKKOOFKKA.r:                     ?r-   r   rY   rB   arangecopytestingassert_equal)rm   r"  Narr1arr2s        r)   test_atomic_on_real1TestAtomicOnComplexComponents.test_atomic_on_real  sr    		/ 
	/ yy|biilR//yy{q!tT"


q$/r:   c                    [         R                  S 5       nSn[        R                  " U5      [        R                  " U5      S-  -   nUR	                  5       nUSU4   " U5        [        R
                  R                  US-   U5        g )Nc                     [         R                  " S5      n[         R                  R                  U R                  US5        g r  )r   r2   r  r   r   r!  s     r)   atomic_add_one_jKTestAtomicOnComplexComponents.test_atomic_on_imag.<locals>.atomic_add_one_j  r$  r:   r%  r&  r-   r'  )rm   r3  r,  r-  r.  s        r)   test_atomic_on_imag1TestAtomicOnComplexComponents.test_atomic_on_imag  sr    		/ 
	/ yy|biilR//yy{At$


r	40r:   r   N)r   r   r   r   r/  r5  r   r   r:   r)   r  r    s    
0
1r:   r  __main__)/rH   ri   numpyrB   numba.cuda.testingr   r   
numba.corer   numbar   numba.tests.complex_usecasesr   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    numba.npr!   r]   r_   r   r   r  r   mainr   r:   r)   <module>r?     s       5  8 8 8 8 8 8 8 ##L0l 0f/ .y8 y8x1L 1B zMMO r:   