
    sh                         S r SSKrSSKJrJr  SSKJrJr  SSK	r	\" S5       " S S\5      5       r
\S:X  a  \	R                  " 5         gg)	zExample: sum each row using guvectorize

See Numpy documentation for detail about gufunc:
    http://docs.scipy.org/doc/numpy/reference/c-api.generalized-ufuncs.html
    N)guvectorizecuda)skip_on_cudasimCUDATestCasez&ufunc API unsupported in the simulatorc                   2    \ rS rSrS rS rS rS rS rSr	g)	TestGUFuncScalar   c                    [        S/SSS9S 5       n[        R                  " S[        R                  S9R	                  SS	5      n[        R
                  " SUR                  S9n[        R
                  " SUR                  S9n[        R                  " U5      n[        R                  " US
S9nU" XVS9  U" U5      nUR                  U5        UR                  U5        [        UR                  S   5       HO  nU R                  X8   X(   R                  5       :H  5        U R                  XH   X(   R                  5       :H  5        MQ     g )Nzvoid(int32[:], int32[:])z(n)->()r   targetc                 \    Sn[        U R                  S   5       H
  nX U   -  nM     X!S'   g )Ng        r   rangeshape)inpouttmpis       ~/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cuda/tests/cudapy/test_gufunc_scalar.pysum_row;TestGUFuncScalar.test_gufunc_scalar_output.<locals>.sum_row   s0    C399Q<(1v )F    i,  dtyped      F)copyr   r   )r   nparangeint32reshapeemptyr   r   	to_devicecopy_to_hostr   r   
assertTruesum)	selfr   r   out1out2dev_inpdev_out1dev_out2r   s	            r   test_gufunc_scalar_output*TestGUFuncScalar.test_gufunc_scalar_output   s    
019V	L	 
M	 ii288,44S!< xx399-xx399-..>>$U3&7#d#d# syy|$AOODGsvzz|34OODGsvzz|34 %r   c                     [        S/SSS9S 5       nU R                  U" S5      S5        [        R                  " S5      R	                  [        R
                  5      nU R                  U" U5      US-  5        g )	Nzvoid(int32, int32[:])z()->()r   r   c                     U S-  US'   g )N   r    )r   r   s     r   twice=TestGUFuncScalar.test_gufunc_scalar_output_bug.<locals>.twice:   s    1WCFr   
      r2   )r   assertEqualr   r    astyper!   assertPreciseEqual)r(   r4   args      r   test_gufunc_scalar_output_bug.TestGUFuncScalar.test_gufunc_scalar_output_bug8   sl    	-.	H	 
I	 	rB'iim""288,c
C!G4r   c           	         [        S/SSS9S 5       n[        R                  " S5      n[        R                  " S[        R                  S9R	                  S	S5      n[        R                  " S[        R                  S9R	                  S	S5      nU" X#U5      n[        S	5       H;  n[        S5       H)  nX#Xg4   -  XFU4   -   nU R                  XXg4   :H  5        M+     M=     [        R                  " S[        R                  S9n[        R                  " S[        R                  S9nU" X#U5      n[        S5       H*  nX#U   -  XF   -   nU R                  XU   :H  XU   45        M,     [        R                  " S	[        R                  S9n[        R                  " S[        R                  S9R	                  S	S5      n[        R                  " S[        R                  S9R	                  S	S5      nU" X#U5      n[        S	5       HD  n[        S5       H2  nX&   X6U4   -  XFU4   -   nU R                  XXg4   :H  XXg4   45        M4     MF     g )
Nz1void(float32, float32[:], float32[:], float32[:])z(),(t),(t)->(t)r   r   c                 ^    [        UR                  S   5       H  nXU   -  X$   -   X4'   M     g Nr   r   )axyr   r   s        r   saxpy>TestGUFuncScalar.test_gufunc_scalar_input_saxpy.<locals>.saxpyC   s.     399Q<(qTAD )r   r2   r6   r      )r   r   float32r    r"   r   r&   )	r(   rD   AXYr   jr   exps	            r   test_gufunc_scalar_input_saxpy/TestGUFuncScalar.test_gufunc_scalar_input_saxpyB   s   	IJ&v
7	)
7	) JJqMIIb

+33Aq9IIb

+33Aq9A!nqA1XAD'kAdG+14y 01  
 IIb

+IIb

+A!nrAd(QT/COOCq6MCQ=9  IIarzz*IIb

+33Aq9IIb

+33Aq9A!nqA1XdQ!tWnqAw.14y 03AD	2BC  r   c                 r   [        S/SSS9S 5       n[        R                  " S5      n[        R                  " S5      R	                  [        R
                  5      nU" X#5      n[        R                  R                  XBU-  5        [        R                  " U5      n[        R                  " U5      nU R                  UR                  [        R                  5        U R                  [        5       nU" XS5        S S S 5        U R                  S[!        WR"                  5      5        g ! , (       d  f       N4= f)	Nzvoid(int32, int32[:], int32[:])z(),(t)->(t)r   r   c                 N    [        UR                  5       H  nXU   -  X#'   M     g )N)r   size)rA   br   r   s       r   foo5TestGUFuncScalar.test_gufunc_scalar_cast.<locals>.foof   s#     166]qT #r   r2   r6   zdoes not support .astype())r   r   int64r    r9   r!   testingassert_equalarrayr   r$   r8   r   assertRaises	TypeErrorassertInstr	exception)r(   rS   rA   rR   r   daraisess          r   test_gufunc_scalar_cast(TestGUFuncScalar.test_gufunc_scalar_caste   s    	78-"
$	"
$	" HHQKIIbM  *!i


U+ HHQK^^A288,y)VJ * 	2C8H8H4IJ *)s   1	D((
D6c                    [        S/SSS9S 5       n[        R                  " / SQ[        R                  S9n[        R                  " S/[        R                  S9n[        R                  " S	[        R                  S9nUR                  5       nX#-   nU" X#US
9  [        R                  R                  XT5        [        R                  " / SQS-  [        R                  S9R                  SS	5      n[        R                  " SS/[        R                  S9n[        R                  " S[        R                  S9nUR                  5       nUS   US   -   US'   US   US   -   US'   U" X#U5        [        R                  R                  XT5        g )Nz void(int32[:],int32[:],int32[:])z(n),()->(n)r   r   c                 Z    [        U R                  S   5       H  nX   US   -   X#'   M     g r@   r   )rB   rC   resr   s       r   gufuncFTestGUFuncScalar.test_gufunc_old_style_scalar_as_array.<locals>.gufunc|   s,     1771:&! 'r   )   r2   r      r   r2   rh   r   r6   )r2   rh   r   rg   )	r   r   rX   r!   zerosr   rV   assert_almost_equalr"   )r(   re   rA   rR   rd   expecteds         r   %test_gufunc_old_style_scalar_as_array6TestGUFuncScalar.test_gufunc_old_style_scalar_as_arrayz   s7   	89="
$	%
$	%
 HH\2HHaS)hhq)88:5q


&&x5 HH\A%RXX6>>q!DHHaWBHH-hhvRXX.88:dQqTkdQqTkqS


&&x5r   r3   N)
__name__
__module____qualname____firstlineno__r.   r<   rM   r`   rl   __static_attributes__r3   r   r   r   r      s    (5T5!DFK*!6r   r   __main__)__doc__numpyr   numbar   r   numba.cuda.testingr   r   unittestr   rn   mainr3   r   r   <module>rz      sU   
  # <  9:N6| N6 ;N6b zMMO r   