
    J/Phc                        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                              dd	          Ze                                Ze                    d
          Z ej        de                              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                     dS dS )    N)float32jitnjit)	Vectorize)TypingError)TestCaseP   )dtype   
   F)orderi@           c                     | |z   S N )abs     _/var/www/html/test/jupyter/venv/lib/python3.11/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                 l    d}t          | j        d                   D ]}|| |         ||         z  z  }|S )Ng        r   )rangeshape)r   r   resultis       r   
gufunc_addr#      sA    F171:  !A$1+Mr   c                 ^    t          |j                  D ]}|                     |          }|S r   )r   ndimreduce)ufuncargr"   s      r   ufunc_reducer)   !   s1    38__    ll3Jr   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	
TestUFuncsc                     |t           g|R  }|                     t          t          t                               |                                }||j        f}|                      |||          ||z   |           |                     t          ||          t          j        |          |           |                     |                    |          t          j                             |          |           |                     |	                    ||          t          j         	                    ||          |           dS )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$   S_t___
ww00111&&((QV}aQU===UA 6 6q		tLLL 0 0 3 3RV5F5Fq5I5I$( 	  	* 	* 	*Aq 1 126<<13E3E4PPPPPr   c                 ,    |t                     }|                    t          t          t          t          t                               |                                }||j        f}|                      |||||          ||z   |z   |z   |           dS )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?   s    S*++
ww'BBCCC&&((QW~aAq 1 11q519q=dKKKKKr   c           
      |   t           D ]/}|                     |t          d         t          d                    0t           D ]#}|                     |t          t                     $t           D ]Q}|                     |t          d d t          j        d d f         t          t          j        d d d d f                    Rd S Nr   )vectorizersr:   r   r   r1   newaxisr5   vs     r   test_ufunc_attributesz TestUFuncs.test_ufunc_attributesH   s     	7 	7A''1Q416666 	1 	1A''1a0000 	= 	=A''1QQQ
AAA-=+>()"*aaa*:(;= = = =	= 	=r   c                 8   t           D ]G}|                     |t          d         t          d         t          d         t
          d                    Ht           D ]/}|                     |t          t          t          t
                     0t           D ]}|                     |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                    d S r>   )r?   r<   r   r   r   r   r1   r@   rA   s     r   test_broadcastingzTestUFuncs.test_broadcastingQ   s    	? 	?A##AqtQqT1Q41>>>> 	3 	3A##Aq!Q2222 	N 	NA##AqBJ)9':Abj!!!QQQ>N<O$%aaaQQQ&6$72:qqq!!!;K9LN N N N	N 	Nr   c                 ~   t           D ]} |t                    }|                    t          t          t                               |                                }t          t
          j        d d t
          j        t
          j        d d f         }|                      |t          |          t          |z              d S r   )	r?   r   r   r/   r   r1   r@   r0   r   )r5   rB   r8   r'   broadcasting_bs        r   test_implicit_broadcastingz%TestUFuncs.test_implicit_broadcastingZ   s     	8 	8A3JNN77G44555**,,Erz111bj"*aaaGHN##EE!^$<$<$%$68 8 8 8	8 	8r   c                    t          j        d          }d|j        _        g }d}|                    t          d          t          |f           |                    t          d          t          df           |D ]r\  }}}d }|                     |          5 }  ||          |           d d d            n# 1 swxY w Y   | 	                    |t          |j                             sd S )	Nr   Fz<ufunc 'sin' called with an explicit output that is read-onlyT)nopython)forceobjzoutput array is read-onlyc                 n    t          j        | j        | j                  }t          j        ||            d S r   )r1   onesr    r
   sin)xr   s     r   testzBTestUFuncs.test_ufunc_exception_on_write_to_readonly.<locals>.testo   s*    GAGQW--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   sE   GBKK!Oc4(((+v>???c4(((*13 	4 	4 	4 # 	6 	6MCc   ""3'' 6D		!               MM#s6#3445555	6 	6s   B<<C 	C 	c                    t           d             }|                      |t          j        d          d          t          j        dd                              t          j                             |                     t                    5 } |t          j        d          d           d d d            n# 1 swxY w Y   d}|                     |t          |j
                             d S )Nc                 f    |dk    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/    1uuGAJJ6!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    
	  	  
	  	billA 6 6 "	!Q 6 6rz B B	D 	D 	D y)) 	#V E")A,,"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#
 9c3v/0011111s   B88B<?B<N)
__name__
__module____qualname__r:   r<   rC   rE   rH   r_   rl   r   r   r   r+   r+   0   s        Q Q QL L L= = =N N N8 8 86 6 6(2 2 2 2 2r   r+   c                       e Zd Zd Zd ZdS )TestUFuncsMiscc                     t           d             }t          j        t          j        fD ]C} |d          }|                    |          } ||          }|                     ||           Dd S )Nc                 *    t          j        |           S r   )r1   exp2rO   s    r   fooz%TestUFuncsMisc.test_exp2.<locals>.foo       71::r   r   r   r1   int8uint16py_funcr0   r5   rv   tyrO   expectedgots         r   	test_exp2zTestUFuncsMisc.test_exp2       		 	 
	 7BI& 	3 	3B1A{{1~~H#a&&C##Hc2222		3 	3r   c                     t           d             }t          j        t          j        fD ]C} |d          }|                    |          } ||          }|                     ||           Dd S )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      s2        
3 
3 
3
3 
3 
3 
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       $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ) ) ) ) ) ) ( ( ( ( ( (  	
BIb&&q"--FFHHFFFBIgU###++B33CCaC1H=         ]2 ]2 ]2 ]2 ]2 ]2 ]2 ]2@3 3 3 3 3X 3 3 38 zHMOOOOO r   