
    shc                        S SK rS SKJrJrJr  S SKJr  S SKJ	r	  S SK
Jr  S SKr\R                  r\R                  " S\S9R                  SS	5      r\R#                  5       r\R#                  S
S9r\R                  " S\S9R                  SS5      SSS2SSS24   rS rS rS rS r\/r " S S\5      r " S S\5      r\S:X  a  \R:                  " 5         gg)    N)float32jitnjit)	Vectorize)TypingError)TestCaseP   )dtype   
   F)orderi@           c                 
    X-   $ N )abs     s/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/npyufunc/test_ufunc.pyaddr      s	    5L    c                     X-   U-   U-   $ r   r   )r   r   cds       r   add_multiple_argsr      s    519q=r   c                 `    Sn[        U R                  S   5       H  nX U   X   -  -  nM     U$ )Ng        r   )rangeshape)r   r   resultis       r   
gufunc_addr#      s7    F1771:A$+  Mr   c                 `    [        UR                  5       H  nU R                  U5      nM     U$ r   )r   ndimreduce)ufuncargr"   s      r   ufunc_reducer)   !   s'    388_ll3 Jr   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)
TestUFuncs0   c                     U" [         /UQ76 nUR                  [        [        [        5      5        UR                  5       nXR                  4nU R	                  U" X#5      X#-   US9  U R	                  [        Xb5      [        R                  " U5      US9  U R	                  UR                  U5      [        R                   R                  U5      US9  U R	                  UR                  X#5      [        R                   R                  X#5      US9  g)zTest ufunc attributesmsgN)
r   r   build_ufuncr%   assertPreciseEqualr)   npsum
accumulateouter)selfclsr   r   args
vectorizerr'   infos           r   _test_ufunc_attributes!TestUFuncs._test_ufunc_attributes2   s    _t_
ww01&&(VV}aQU=U 6q	tL 0 0 3RVV5F5Fq5I$( 	  	*A 1266<<3E4Pr   c                     U" [         5      nUR                  [        [        [        [        [        5      5        UR                  5       nXR                  4nU R                  U" X#XE5      X#-   U-   U-   US9  g)zTest multiple argsr.   N)r   r   r   r0   r    r1   )	r6   r7   r   r   r   r   r9   r'   r:   s	            r   _test_broadcastingTestUFuncs._test_broadcasting?   sc    *+
ww'BC&&(WW~aA 11519q=dKr   c           
      `   [          H$  nU R                  U[        S   [        S   5        M&     [          H  nU R                  U[        [        5        M      [          HN  nU R                  U[        S S 2[        R
                  S S 24   [        [        R
                  S S 2S S 24   5        MP     g Nr   )vectorizersr;   r   r   r2   newaxisr6   vs     r   test_ufunc_attributes TestUFuncs.test_ufunc_attributesH   s    A''1Q416 A''1a0 A''1Q

A-=+>()"**a*:(;= r   c                    [          H4  nU R                  U[        S   [        S   [        S   [
        S   5        M6     [          H(  nU R                  U[        [        [        [
        5        M*     [          H  nU R                  U[        S S 2[        R                  S S 24   [        [        R                  S S 2S S 24   [        S S 2[        R                  S S 24   [
        [        R                  S S 2S S 24   5        M     g rA   )rB   r>   r   r   r   r   r2   rC   rD   s     r   test_broadcastingTestUFuncs.test_broadcastingQ   s    A##AqtQqT1Q41> A##Aq!Q2 A##AqBJJ)9':Abjj!Q>N<O$%aQ&6$72::q!;K9LN r   c                 \   [          H  nU" [        5      nUR                  [        [        [        5      5        UR                  5       n[        [
        R                  S S 2[
        R                  [
        R                  S S 24   nU R                  U" [        U5      [        U-   5        M     g r   )	rB   r   r   r0   r   r2   rC   r1   r   )r6   rE   r9   r'   broadcasting_bs        r   test_implicit_broadcasting%TestUFuncs.test_implicit_broadcastingZ   sv    A3JNN77G45**,Erzz1bjj"**aGHN##E!^$<$%$68 r   c                    [         R                  " S5      nSUR                  l        / nSnUR	                  [        SS9[        U45        UR	                  [        SS9[        S45        U HV  u  pEnS nU R                  U5       nU" U5      " U5        S S S 5        U R                  U[        WR                  5      5        MX     g ! , (       d  f       N8= f)	Nr   Fz<ufunc 'sin' called with an explicit output that is read-onlyT)nopython)forceobjzoutput array is read-onlyc                     [         R                  " U R                  U R                  5      n[         R                  " X5        g r   )r2   onesr    r
   sin)xr   s     r   testBTestUFuncs.test_ufunc_exception_on_write_to_readonly.<locals>.testo   s%    GGAGGQWW-qr   )r2   rS   flags	writeableappendr   r   
ValueErrorassertRaisesassertInstr	exception)	r6   ztestsexpectdecexcr/   rV   raisess	            r   )test_ufunc_exception_on_write_to_readonly4TestUFuncs.test_ufunc_exception_on_write_to_readonlyd   s    GGBK!Oc4(+v>?c4(*13 	4 #MCc ""3'6D	! ( MM#s6#3#345 #
 ('s   C
C	c                    [         S 5       nU R                  U" [        R                  " S5      S5      [        R                  " SS5      R	                  [        R
                  5      5        U R                  [        5       nU" [        R                  " S5      S5        S S S 5        SnU R                  U[        WR                  5      5        g ! , (       d  f       N6= f)Nc                 l    US:  a  S nO[         R                  " S5      n[         R                  " X5      $ )Nr      )r2   rS   r   )rU   yr`   s      r   inner5TestUFuncs.test_optional_type_handling.<locals>.inner{   s)    1uGGAJ66!<r   rj            z(expected array(float64, 1d, C), got None)r   r1   r2   arangeastypefloat64r\   	TypeErrorr]   r^   r_   )r6   rl   re   r/   s       r   test_optional_type_handling&TestUFuncs.test_optional_type_handlingx   s     
	  
	  	biilA 6 "		!Q 6 6rzz B	D y)V "))A," *
 9c3v//01 *)s   C
Cr   N)__name__
__module____qualname____firstlineno__r;   r>   rF   rI   rM   rf   ru   __static_attributes__r   r   r   r+   r+   0   s(    QL=N86(2r   r+   c                        \ rS rSrS rS rSrg)TestUFuncsMisc   c                     [         S 5       n[        R                  [        R                  4 H5  nU" S5      nUR	                  U5      nU" U5      nU R                  XE5        M7     g )Nc                 .    [         R                  " U 5      $ r   )r2   exp2rU   s    r   foo%TestUFuncsMisc.test_exp2.<locals>.foo       771:r   r   r   r2   int8uint16py_funcr1   r6   r   tyrU   expectedgots         r   	test_exp2TestUFuncsMisc.test_exp2   Z    		 
	 77BII&B1A{{1~Ha&C##H2	 'r   c                     [         S 5       n[        R                  [        R                  4 H5  nU" S5      nUR	                  U5      nU" U5      nU R                  XE5        M7     g )Nc                 .    [         R                  " U 5      $ r   )r2   log2r   s    r   r   %TestUFuncsMisc.test_log2.<locals>.foo   r   r   r   r   r   s         r   	test_log2TestUFuncsMisc.test_log2   r   r   r   N)rw   rx   ry   rz   r   r   r{   r   r   r   r}   r}      s    
3
3r   r}   __main__)numpyr2   numbar   r   r   numba.np.ufuncr   numba.core.errorsr   numba.tests.supportr   unittestr
   rq   reshaper   copyr   r   r   r   r   r#   r)   rB   r+   r}   rw   mainr   r   r   <module>r      s     $ $ $ ) (  	

IIb&&q"-FFHFFFIIgU#++B3CaC1H= ]2 ]2@3X 38 zMMO r   