
    xKgc                        d dl Zd dlmZmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlZej                  Z ej                  de      j                  dd	      Zej#                         Zej#                  d
      Z ej                  de      j                  dd      ddddddf   Zd Zd Zd Zd ZegZ G d de      Z G d de      Zedk(  r ej:                          yy)    N)float32jitnjit)	Vectorize)TypingError)TestCaseP   )dtype   
   F)orderi@           c                     | |z   S N )abs     c/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/npyufunc/test_ufunc.pyaddr      s    q5L    c                     | |z   |z   |z   S r   r   )r   r   cds       r   add_multiple_argsr      s    q519q=r   c                 `    d}t        | j                  d         D ]  }|| |   ||   z  z  } |S )Ng        r   )rangeshape)r   r   resultis       r   
gufunc_addr#      s;    F1771:!A$1+  Mr   c                 \    t        |j                        D ]  }| j                  |      } |S r   )r   ndimreduce)ufuncargr"   s      r   ufunc_reducer)   !   s'    388_ll3 Jr   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	
TestUFuncsc                 B    |t         g| }|j                  t        t        t                     |j                         }||j                  f}| j	                   |||      ||z   |       | j	                  t        ||      t        j                  |      |       | j	                  |j                  |      t        j                   j                  |      |       | j	                  |j                  ||      t        j                   j                  ||      |       y)zTest ufunc attributesmsgN)
r   r   build_ufuncr%   assertPreciseEqualr)   npsum
accumulateouter)selfclsr   r   args
vectorizerr'   infos           r   _test_ufunc_attributesz!TestUFuncs._test_ufunc_attributes2   s    _t_
ww01&&(QVV}aQU=UA 6q	tL 0 0 3RVV5F5Fq5I$( 	  	*Aq 1266<<13E4Pr   c                      |t               }|j                  t        t        t        t        t                     |j                         }||j                  f}| j                   |||||      ||z   |z   |z   |       y)zTest multiple argsr-   N)r   r   r   r/   r    r0   )	r5   r6   r   r   r   r   r8   r'   r9   s	            r   _test_broadcastingzTestUFuncs._test_broadcasting?   sk    *+
ww'BC&&(QWW~aAq 11q519q=dKr   c           
      T   t         D ]#  }| j                  |t        d   t        d          % t         D ]  }| j                  |t        t                t         D ]M  }| j                  |t        d d t        j
                  d d f   t        t        j
                  d d d d f          O y Nr   )vectorizersr:   r   r   r1   newaxisr5   vs     r   test_ufunc_attributesz TestUFuncs.test_ufunc_attributesH   s    A''1Q416 A''1a0 A''1Q

A-=+>()"**a*:(;= r   c                    t         D ]3  }| j                  |t        d   t        d   t        d   t
        d          5 t         D ]'  }| j                  |t        t        t        t
               ) t         D ]  }| j                  |t        d d t        j                  d d f   t        t        j                  d d d d f   t        d d t        j                  d d f   t
        t        j                  d d d d f           y r>   )r?   r<   r   r   r   r   r1   r@   rA   s     r   test_broadcastingz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                 X   t         D ]  } |t              }|j                  t        t        t                     |j                         }t        t
        j                  d d t
        j                  t
        j                  d d f   }| j                   |t        |      t        |z           y r   )	r?   r   r   r/   r   r1   r@   r0   r   )r5   rB   r8   r'   broadcasting_bs        r   test_implicit_broadcastingz%TestUFuncs.test_implicit_broadcastingZ   sv    A3JNN77G45**,Erzz1bjj"**aGHN##E!^$<$%$68 r   c                    t        j                  d      }d|j                  _        g }d}|j	                  t        d      t        |f       |j	                  t        d      t        df       |D ]V  \  }}}d }| j                  |      5 }  ||      |       d d d        | j                  |t        j                               X y # 1 sw Y   1xY w)	Nr   Fz<ufunc 'sin' called with an explicit output that is read-onlyT)nopython)forceobjzoutput array is read-onlyc                     t        j                  | j                  | j                        }t        j                  ||        y r   )r1   onesr    r
   sin)xr   s     r   testzBTestUFuncs.test_ufunc_exception_on_write_to_readonly.<locals>.testo   s'    GGAGGQWW-q!r   )r1   rM   flags	writeableappendr   r   
ValueErrorassertRaisesassertInstr	exception)	r5   ztestsexpectdecexcr.   rP   raisess	            r   )test_ufunc_exception_on_write_to_readonlyz4TestUFuncs.test_ufunc_exception_on_write_to_readonlyd   s    GGBK!Oc4(+v>?c4(*13 	4 #MCc ""3'6D	! ( MM#s6#3#345 #
 ('s   CC	c                    t         d        }| j                   |t        j                  d      d      t        j                  dd      j	                  t        j
                               | j                  t              5 } |t        j                  d      d       d d d        d}| j                  |t        j                               y # 1 sw Y   1xY w)Nc                 h    |dkD  rd }nt        j                  d      }t        j                  | |      S )Nr      )r1   rM   r   )rO   yrY   s      r   innerz5TestUFuncs.test_optional_type_handling.<locals>.inner{   s+    1uGGAJ66!Q<r   rb            z(expected array(float64, 1d, C), got None)r   r0   r1   arangeastypefloat64rU   	TypeErrorrV   rW   rX   )r5   rd   r^   r.   s       r   test_optional_type_handlingz&TestUFuncs.test_optional_type_handlingx   s     
	  
	  	biilA 6 "		!Q 6 6rzz B	D y)V "))A," *
 9c3v//01 *)s   ?CCN)
__name__
__module____qualname__r:   r<   rC   rE   rH   r_   rl   r   r   r   r+   r+   0   s(    QL=N86(2r   r+   c                       e Zd Zd Zd Zy)TestUFuncsMiscc                     t         d        }t        j                  t        j                  fD ]5  } |d      }|j	                  |      } ||      }| j                  ||       7 y )Nc                 ,    t        j                  |       S r   )r1   exp2rO   s    r   fooz%TestUFuncsMisc.test_exp2.<locals>.foo       771:r   r   r   r1   int8uint16py_funcr0   r5   rv   tyrO   expectedgots         r   	test_exp2zTestUFuncsMisc.test_exp2   \    		 
	 77BII&B1A{{1~Ha&C##Hc2	 'r   c                     t         d        }t        j                  t        j                  fD ]5  } |d      }|j	                  |      } ||      }| j                  ||       7 y )Nc                 ,    t        j                  |       S r   )r1   log2ru   s    r   rv   z%TestUFuncsMisc.test_log2.<locals>.foo   rw   r   r   rx   r|   s         r   	test_log2zTestUFuncsMisc.test_log2   r   r   N)rm   rn   ro   r   r   r   r   r   rq   rq      s    
3
3r   rq   __main__)numpyr1   numbar   r   r   numba.np.ufuncr   numba.core.errorsr   numba.tests.supportr   unittestr
   rh   reshaper   copyr   r   r   r   r   r#   r)   r?   r+   rq   rm   mainr   r   r   <module>r      s     $ $ $ ) (  	

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