
    J/Ph>n                        d dl Z d dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZmZ d Zd Z G d d	e          Z G d
 de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Zedk    r e j                     dS dS )    N)voidfloat32float64int32int64jitguvectorize)TypingError)GUVectorize)tagTestCasec           
          | j         \  }}|j         \  }}t          |          D ]R}t          |          D ]@}d|||f<   t          |          D ]'}|||fxx         | ||f         |||f         z  z  cc<   (ASdS )zdocstring for matmulcorer   N)shaperange)	ABCmnpijks	            `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/npyufunc/test_gufunc.py
matmulcorer      s    7DAq7DAq1XX - -q 	- 	-AAadG1XX - -!Q$1QT7Qq!tW,,-	-- -    c                     | |z  |z   |d<   d S Nr    )axyouts       r   axpyr$      s    UaZCFFFr   c                   6    e Zd ZdZd Zd Zd Zd Zd Zd Z	dS )	
TestGUFunccpuc                 ~   d}t          j        |dz  dz  t           j                                      |dd          }t          j        |dz  dz  t           j                                      |dd          } |||          }t          j        ||          }t           j                            ||dd           d S 	Ni        dtype   h㈵>:0yE>rtolatolnparanger   reshapematmultestingassert_allclose)selfgufunc	matrix_ctr   r   r   Golds          r   check_matmul_gufunczTestGUFunc.check_matmul_gufunc   s    	Ii!ma'rz:::BB9aQRSSIi!ma'rz:::BB9aQRSSF1aLLyA

""1dD"AAAAAr   c                 &   t          t          d| j                  }|                    t          d d d d f         t          d d d d f         t          d d d d f         f           |                                }|                     |           d S N(m,n),(n,p)->(m,p)target)r   r   rD   addr   build_ufuncr?   r;   r<   s     r   test_gufunczTestGUFunc.test_gufunc(   s    Z)=$(K1 1 1

GAAAqqqDM7111aaa4='!!!QQQ$-@AAA##%%  (((((r   c                      t          t          t          d d d d f         t          d d d d f         t          d d d d f                   gd| j                  t                    }|                     |           d S rA   )r	   r   r   rD   r   r?   rG   s     r   test_guvectorize_decorz!TestGUFunc.test_guvectorize_decor0   s    1d7111QQQ3<111wqqqs|LLM1$(K1 1 11;= = 	  (((((r   c                 6   t          t          d| j                  }|                    d           |                                }t          j        dt
          j                  } ||||          }t
          j        	                    |||z  |z              d S )N(), (), () -> ()rC   z(intp, intp, intp, intp[:])
   r,   )
r   r$   rD   rE   rF   r5   r6   intpr9   assert_equal)r;   r<   r!   r#   s       r   test_ufunc_likezTestGUFunc.test_ufunc_like7   s     T#5dkJJJ

0111##%%Ib(((fQ1oo

QUQY/////r   c                 l   t          dgd          d             }t          j        d          } ||d          }t          j        |d          }t          j                            ||           t          j        |          } |||d           t          j                            ||           d S )Nzf8[:],f8[:](n)->(n)c                 d    d}t          | j        d                   D ]}|| |         z  }|||<   d S r   r   r   r!   resaccr   s       r   	my_cumsumz'TestGUFunc.test_axis.<locals>.my_cumsumF   F    C171:&&  qtA r         r   axisr#   r^   )r	   r5   onescumsumr9   rO   
zeros_like)r;   rX   r!   r"   expectedout_kws         r   	test_axiszTestGUFunc.test_axisD   s    	m_j	1	1	 	 
2	1	 GHIaa   9QQ'''

8,,,q!!	!a((((

11111r   c                 V   t          t          d d          t          t          d d          fgd          d             }|                     d|j                   |                     d|j                   |                     d|j                   |                     d|j                   d S )N(n),()->(n)c                 \    t          | j        d                   D ]}| |         |z   ||<   dS )docstring for gufuncr   NrT   r!   r"   rV   r   s       r   r<   z)TestGUFunc.test_docstring.<locals>.gufuncX   >     171:&& " "1A" "r   z numba.tests.npyufunc.test_gufuncr<   z)TestGUFunc.test_docstring.<locals>.gufuncri   )r	   r   assertEqual
__module____name____qualname____doc__rG   s     r   test_docstringzTestGUFunc.test_docstringW   s    	uQQQxaaa12M	B	B	" 	" 
C	B	"
 	;V=NOOO6?333DfFYZZZ/@@@@@r   N)
rn   rm   ro   rD   r?   rH   rJ   rP   re   rq   r   r   r   r&   r&      s{        FB B B) ) )) ) )0 0 02 2 2&
A 
A 
A 
A 
Ar   r&   c                   *    e Zd ZdZd Zd Zd Zd ZdS )TestMultipleOutputsr'   c                 t   t          d| j                  d             }t          j        dt          j                  dz   }t          j        |          }t          j        |          } ||||           t          j                            ||           t          j                            ||           d S )N(x)->(x),(x)rC   c                 `    t          |j                  D ]}| |         ||<   | |         ||<   d S Nr   sizer   r   r   r   s       r   copyzKTestMultipleOutputs.test_multiple_outputs_same_type_passed_in.<locals>.copyh   sA     16]]  t!t! r   rM   r,      r	   rD   r5   r6   r   rb   r9   r:   )r;   r{   r   r   r   s        r   )test_multiple_outputs_same_type_passed_inz=TestMultipleOutputs.test_multiple_outputs_same_type_passed_ing   s    	^ K
) 
) 
)	 	
) 
)	
 Ib
+++a/M!M!Q1

""1a(((

""1a(((((r   c                 z   t          d| j                  d             }t          j        dt          j                  dz   }t          j        |          }t          j        |          } ||||           t          j                            ||           t          j                            |dz  |           d S )Nru   rC   c                 f    t          |j                  D ]}| |         ||<   | |         dz  ||<   d S Nr*   rx   rz   s       r   copy_and_doublezRTestMultipleOutputs.test_multiple_outputs_distinct_values.<locals>.copy_and_doublex   sE     16]]    t!tax!   r   rM   r,   r|   r*   r}   )r;   r   r   r   r   s        r   %test_multiple_outputs_distinct_valuesz9TestMultipleOutputs.test_multiple_outputs_distinct_valuesv   s    	^ K
) 
) 
)	  	 
) 
)	 
 Ib
+++a/M!M!1a   

""1a(((

""1q5!,,,,,r   c                    t          d| j                  d             }t          j        dt          j                  dz   }t          j        |          }t          j        |t          j                  } ||||           t          j                            ||           t          j                            |t          j        d          z  |           d S )Nru   rC   c                 f    t          |j                  D ]}| |         ||<   | |         dz  ||<   d S )N      ?rx   rz   s       r   copy_and_multiplyzJTestMultipleOutputs.test_multiple_output_dtypes.<locals>.copy_and_multiply   sE     16]] " "t!tcz!" "r   rM   r,   r|   r   )	r	   rD   r5   r6   r   rb   r   r9   r:   )r;   r   r   r   r   s        r   test_multiple_output_dtypesz/TestMultipleOutputs.test_multiple_output_dtypes   s    	^ K
) 
) 
)	" 	"
) 
)	"
 Ib)))A-M!M!2:...!Q"""

""1a(((

""1rz##6:::::r   c                 $   t          d| j                  d             }t          j        dt          j                  }d}|                     t                    5 } ||           d d d            n# 1 swxY w Y   |                     |t          |j	                             |                     t                    5 } ||||||           d d d            n# 1 swxY w Y   |                     |t          |j	                             d S )Nz(m),(m)->(m),(m)rC   c                     d S rw   r   )r!   r"   zws       r   fz@TestMultipleOutputs.test_incorrect_number_of_pos_args.<locals>.f   s    Dr   r.   r,   z"Too few arguments for function 'f')
r	   rD   r5   r6   r   assertRaises	TypeErrorassertInstr	exception)r;   r   arrmsgtes        r   !test_incorrect_number_of_pos_argsz5TestMultipleOutputs.test_incorrect_number_of_pos_args   s   	'	<	<	<	 	 
=	<	 i*** 3y)) 	RAcFFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	c3r|,,--- y)) 	'RAc3S#&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'c3r|,,-----s$   A44A8;A8CC!$C!N)rn   rm   ro   rD   r~   r   r   r   r   r   r   rs   rs   d   sU        F) ) )- - - ; ; ; . . . . .r   rs   c                       e Zd ZdZdZdS )TestGUFuncParallelFparallelNrn   rm   ro   _numba_parallel_test_rD   r   r   r   r   r              !FFFr   r   c                   6    e Zd ZdZd Zd Zd Zd Zd Zd Z	dS )	TestDynamicGUFuncr'   c                    d }t          t          d| j        d          }d}t          j        |dz  dz  t          j                                      |dd          }t          j        |dz  d	z  t          j                                      |dd	          }t          j        |dz  d	z  t          j                                      |dd	          } |||||           t          j        |dz  dz  t          j                                      |dd          }t          j        |dz  d	z  t          j                                      |dd	          }t          j        |dz  d	z  t          j                                      |dd	          }	 |||||	           |                     t          |j
                  d           d S )
Nc                     t          j        ||          } | |||           t           j                            ||dd           d S )Nr/   r0   r1   )r5   r8   r9   r:   )r<   r   r   r   r>   s        r   r?   zBTestDynamicGUFunc.test_dynamic_matmul.<locals>.check_matmul_gufunc   sG    9Q??DF1aOOOJ&&q$T&EEEEEr   rB   TrD   
is_dynamicrM   r*   r+   r,   r.   )r   r   rD   r5   r6   r   r7   r   rl   lentypes)
r;   r?   r<   r=   Ai64Bi64Ci64r   r   r   s
             r   test_dynamic_matmulz%TestDynamicGUFunc.test_dynamic_matmul   s   	F 	F 	F
 Z)=$(KDB B B	yQ*"(;;;CCIqRSTTyQ*"(;;;CCIqRSTTyQ*"(;;;CCIqRSTTFD$555Ii!ma'rz:::BB9aQRSSIi!ma'rz:::BB9aQRSSIi!ma'rz:::BB9aQRSSFAq!,,,V\**A.....r   c                     d }t          t          d| j        d          }t          j        dt          j                  } |||           d S )Nc                 <   t          j        d|j                  }t          j        d|j                  } | ||||            | ||||           ||z  |z   }t           j                            ||           t           j                            ||           d S )NrM   r,   r#   )r5   zerosr-   r9   rO   )r<   r!   r#   rd   goldens        r   check_ufunc_outputzETestDynamicGUFunc.test_dynamic_ufunc_like.<locals>.check_ufunc_output   s    (2QW---CXb000FF1aC   F1a''''UQYFJ##C000J##FF33333r   rL   Tr   rM   r,   )r   r$   rD   r5   r6   rN   )r;   r   r<   r!   s       r   test_dynamic_ufunc_likez)TestDynamicGUFunc.test_dynamic_ufunc_like   sb    	4 	4 	4 T#5dk(,. . .Ib(((61%%%%%r   c                 ^   t          d| j        d          d             }|                     |j                   t	          j        dt          j                                      dd          }t	          j        dt          j                  } |||           t          |j
        d	                   D ]6}|                     ||         ||                                                    7d
}|                     t          |          5   ||           ddd           dS # 1 swxY w Y   dS )w
        Note that scalar output is a 0-dimension array that acts as
        a pointer to the output location.
        (n)->()TrD   nopythonc                 d    d}t          | j        d                   D ]}|| |         z  }||d<   d S Ng        r   r   rT   inpr#   tmpr   s       r   sum_rowz=TestDynamicGUFunc.test_dynamic_scalar_output.<locals>.sum_row   s@    C39Q<((  s1vCGGGr   0u  r,   '     r   z)Too few arguments for function 'sum_row'.N)r	   rD   
assertTruer   r5   r6   r   r7   r   r   r   rl   sumassertRaisesRegexr   )r;   r   r   r#   r   r   s         r   test_dynamic_scalar_outputz,TestDynamicGUFunc.test_dynamic_scalar_output   si    
Yt{T	B	B	B	 	 
C	B	 	*+++iRX...66ua@@huBH---S sy|$$ 	3 	3ASVSVZZ\\22229##Is33 	 	GCLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   	D""D&)D&c                    t          d          d             }t          j        d          }t          j        |d          }t          j        |          } |||d           t          j                            ||           t          j        |          } |||d           t          j                            ||           d S )NrR   c                 d    d}t          | j        d                   D ]}|| |         z  }|||<   d S r   rT   rU   s       r   rX   z.TestDynamicGUFunc.test_axis.<locals>.my_cumsum   rY   r   rZ   r   r]   r_   )r	   r5   r`   ra   rb   r9   rO   )r;   rX   r!   rc   r"   rd   s         r   re   zTestDynamicGUFunc.test_axis   s    	Z	 	 	 	 
!	 	 GH9QQ'''M(##	!QQ

8,,,q!!	!a((((

11111r   c                    t          d          d             }g d}|D ],}t          ||          }|                     |d|d           -t          j        g d          }t          j        g d          } |||           |                     |t          j        g d                     |                     |j        d           |                     t                    5 }|
                    |           d d d            n# 1 swxY w Y   |                     t          |j                  d	           |                     t                    5 }|                    |           d d d            n# 1 swxY w Y   |                     t          |j                  d	           |                     t                    5 }|                    |d
dg           d d d            n# 1 swxY w Y   |                     t          |j                  d	           |                     t                    5 }|                    ||           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )NrR   c                 d    d}t          | j        d                   D ]}|| |         z  }|||<   d S r   rT   rU   s       r   r<   z8TestDynamicGUFunc.test_gufunc_attributes.<locals>.gufunc  rY   r   )	signature
accumulateatouterreducereduceatzdynamic gufunc not exporting ""r|   r*   r   r+   r   r   r   r   r|   r      rM   z-Reduction not defined on ufunc with signaturer   r*   z?method outer is not allowed in ufunc with non-trivial signature)r	   hasattrr   r5   arrayassertPreciseEqualrl   r   r   RuntimeErrorr   r   r   r   r   r   r   )r;   r<   attrsattrcontainsr    rV   raisess           r   test_gufunc_attributesz(TestDynamicGUFunc.test_gufunc_attributes  s^   	Z	 	 	 	 
!	 	 QPP 	U 	UDvt,,HOOHHTTT&STTTTH\\\""h|||$$q#RXmmm%<%<===
 	):666|,, 	!a   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!V-..0_```|,, 	MM!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	V-..0_```|,, 	'OOA1v&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'V-..0_```y)) 	VLLA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	V-..0qrrrrrsH   #DD	D	E44E8;E8G&&G*-G*3IIIc                 F   t          d          d             }|                     |j                   t          j        g d          }t          j        g d          }t          j        g d          } ||||           |                     |t          j        g d                     |                     |j                   |                     |                    |          d           |                     |                    |          t          j        g d                     |                     |	                    d	d
gd
dg          t          j        d
dgddgg                     |                     |
                    |d	dg          t          j        ddg                     t          j        g d          }t          j        d
dg          }|                    |d	d
g|           |                     |t          j        g d                     d S )Nz	(),()->()c                     | |z   |d<   d S r   r   r!   r"   rV   s      r   rE   z6TestDynamicGUFunc.test_gufunc_attributes2.<locals>.add7  s    UCFFFr   r   )r+   r   r*   r|   r   )r.   r.   r.   r.   rM   r   r   r|   r*   r      )r*   r+   r   r+   )r	   assertIsNoner   r5   r   r   rl   r   r   r   r   r   )r;   rE   r    brV   r!   r"   s          r   test_gufunc_attributes2z)TestDynamicGUFunc.test_gufunc_attributes26  s   	[	!	!	 	 
"	!	 	#-(((H\\\""H\\\""h|||$$Aq#RXlll%;%;<<< 	#-(((A+++q 1 128MMM3J3JKKK		1a&1a& 9 928aVaQRVDT;U;UVVVQA 7 71a&9I9IJJJH\\\""HaVq1a&!28LLL#9#9:::::r   N)
rn   rm   ro   rD   r   r   r   re   r   r   r   r   r   r   r      sw        F/ / /.& & &(  <2 2 2(&s &s &sP; ; ; ; ;r   r   c                   4    e Zd ZdZdZd Zd Zd Zd Zd Z	dS )	TestGUVectorizeScalarz<
    Nothing keeps user from out-of-bound memory access
    r'   c                 j   t          dgd| j        d          d             }t          j        dt          j                                      dd	          } ||          }t          |j        d
                   D ]6}|                     ||         ||         	                                           7dS )r   zvoid(int32[:], int32[:])r   Tr   c                 d    d}t          | j        d                   D ]}|| |         z  }||d<   d S r   rT   r   s       r   r   z9TestGUVectorizeScalar.test_scalar_output.<locals>.sum_row]  sB     C39Q<((  s1vCGGGr   r   r,   r   r   r   N)
r	   rD   r5   r6   r   r7   r   r   rl   r   )r;   r   r   r#   r   s        r   test_scalar_outputz(TestGUVectorizeScalar.test_scalar_outputW  s     
019 K$
8 
8 
8	 	
8 
8	 iRX...66ua@@gcll sy|$$ 	3 	3ASVSVZZ\\2222	3 	3r   c                     t          dgd| j        d          d             }t          j        dt          j                                      dd	          } ||d
          }|                     |d
z  |           d S )Nzint32[:], int32[:], int32[:]rg   Tr   c                 h    t          | j        d                   D ]}| |         |d         z  ||<   d S r   rT   r   r   r#   r   s       r   fooz4TestGUVectorizeScalar.test_scalar_input.<locals>.foor  sB     39Q<(( ' 'Q!A$A' 'r   r\   r,   rM   r   r*   )r	   rD   r5   r6   r   r7   r   )r;   r   r   r#   s       r   test_scalar_inputz'TestGUVectorizeScalar.test_scalar_inputp  s    	45} K$
8 
8 
8	' 	'
8 
8	' ibh///77A>>c#qkk 	a-----r   c                    d } t          dgd| j                  |          }t          j        d                              t          j                  } ||d          }t          j        |          } ||d|           t          j                            ||           t          j        d                              t          j                  	                    dd          } ||d          }t          j        |          }t          |j        d                   D ]} |||         d||                    t          j                            ||           d S )	Nc                 V    t          | j                  D ]}|| |         dz   z  ||<   d S )Nr|   rx   r   s       r   pyfunczATestGUVectorizeScalar.test_scalar_input_core_type.<locals>.pyfunc  s;    38__ * *c!fqj)A* *r   int32[:], int32, int32[:]rg   rC   rM   r*   r[   r   )r	   rD   r5   r6   astyper   rb   r9   rO   r7   r   r   )r;   r   	my_gufuncr   gotrc   axs          r   test_scalar_input_core_typez1TestGUVectorizeScalar.test_scalar_input_core_type  sY   	* 	* 	*4K!< = -'+{4 4 44:< <	
 imm""28,,iQ=%%sAx   

X... imm""28,,44R;;iQ=%%q)** 	- 	-BF3r7Ax|,,,,

X.....r   c                     |                      t                    5 }t          dgd| j                  d             }d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nr   z(n),(n)->(n)rC   c                     d S rw   r   )r    r   cs      r   r   zGTestGUVectorizeScalar.test_scalar_input_core_type_error.<locals>.pyfunc  	     r   z2scalar type int32 given for non scalar argument #2r   r   r	   rD   rl   r   r   r;   r   r   s      r   !test_scalar_input_core_type_errorz7TestGUVectorizeScalar.test_scalar_input_core_type_error  s    y)) 	V56 $- - - - -	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	MV-..	0 	0 	0 	0 	0   "A		AAc                     |                      t                    5 }t          dgd| j                  d             }d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nzint32[:], int32[:]z
(m,n)->(n)rC   c                     d S rw   r   )r    r   s     r   r   z8TestGUVectorizeScalar.test_ndim_mismatch.<locals>.pyfunc  r   r   z,type and shape signature mismatch for arg #1r   r   s      r   test_ndim_mismatchz(TestGUVectorizeScalar.test_ndim_mismatch  s    y)) 	V./ $- - - - -	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	GV-..	0 	0 	0 	0 	0r   N)
rn   rm   ro   rp   rD   r   r   r   r   r   r   r   r   r   r   Q  sp          F3 3 32. . ./ / /80 0 00 0 0 0 0r   r   c                       e Zd ZdZdZdS )TestGUVectorizeScalarParallelFr   Nr   r   r   r   r   r     r   r   r   c                        e Zd Zd Zd Zd ZdS )TestGUVectorizePicklingc                    t          dgd          d             }t          j        |          }t          j        |          }|                     |j        |j                   |                     |j        |j                   |                     |j        |j                   |                     |j        j	        |j        j	                   | 
                    |j                   |                                 | 
                    |j                   |                      |d           |d                     t          j        d          }|                      ||           ||                     dS )zNon-dynamic gufunc.
        zf8,f8[:]()->()c                     | dz  |d d <   d S r   r   r!   r#   s     r   doublezFTestGUVectorizePickling.test_pickle_gufunc_non_dyanmic.<locals>.double      UCFFFr         ?rM   N)r	   pickledumpsloadsrl   _frozenidentityr   gufunc_builder_sigsr   disable_compiler   r5   r6   )r;   r  serclonedr   s        r   test_pickle_gufunc_non_dyanmicz6TestGUVectorizePickling.test_pickle_gufunc_non_dyanmic  sb    
j\8	,	,	 	 
-	,	 l6""c"" 	888&/:::*F,=>>>.4.4	6 	6 	6 	'''   ''' 	sVVC[[999immsVVC[[99999r   c                 Z   t          dd          d             }t          j        |          }t          j        |          }|                     |j        |j                   |                     |j        |j                   |                     |j        |j                   |                     |j        j	        |j        j	                   | 
                    |j                   t          j        d          }t          j        d          } |d|            |d|           |                     ||           t          j        d          }t          j        |          }t          j        |          } |||            |||           |                     ||           dS )	z:Dynamic gufunc w/o prepopulating before pickling.
        r  r|   r  c                     | dz  |d d <   d S r   r   r  s     r   r  zLTestGUVectorizePickling.test_pickle_gufunc_dyanmic_null_init.<locals>.double  r  r   r	  r   rM   N)r	   r
  r  r  rl   r  r  r   r  r  assertFalser5   r   r   r6   rb   )r;   r  r  r  expectr   r   s          r   $test_pickle_gufunc_dyanmic_null_initz<TestGUVectorizePickling.test_pickle_gufunc_dyanmic_null_init  s    
X	*	*	*	 	 
+	*	 l6""c"" 	888&/:::*F,=>>>.4.4	6 	6 	6 	((( !hqkkss,,,imms##mC  ss,,,,,r   c                    t          dd          d             }t          j        d          }t          j        d          } |d|           t          j        d          }t          j        |          }t          j        |          } |||           t          j        |          }t          j        |          }|                     |j	        |j	                   |                     |j
        |j
                   |                     |j        |j                   |                     |j        j        |j        j                   |                     |j	                   |                                 |                     |j	                   t          j        d          }t          j        d          } |d|            |d|           |                     ||           t          j        |          }t          j        |          } |||            |||           |                     ||           dS )	zDynamic gufunc prepopulated before pickling.

        Once unpickled, we disable compilation to verify that the gufunc
        compilation state is carried over.
        r  r|   r  c                     | dz  |d d <   d S r   r   r  s     r   r  zNTestGUVectorizePickling.test_pickle_gufunc_dynamic_initialized.<locals>.double  r  r   r	  r   rM   N)r	   r5   r   r6   rb   r
  r  r  rl   r  r  r   r  r  r  r  r   r   )r;   r  r  r   r   r  r  s          r   &test_pickle_gufunc_dynamic_initializedz>TestGUVectorizePickling.test_pickle_gufunc_dynamic_initialized  s5    
X	*	*	*	 	 
+	*	 !hqkksimms##mC  s l6""c"" 	888&/:::*F,=>>>.4.4	6 	6 	6 	((( 	   '''!hqkkss,,,s##mC  ss,,,,,r   N)rn   rm   ro   r  r  r  r   r   r   r  r    sB        : : :: -  -  -D/- /- /- /- /-r   r  c                       e Zd ZdZd Zd Zd Zd Zej	        d             Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd ZdS )TestGUVectorizeJitr'   c                 0   t          d          fd            }t          j        dd                              ddd	          }t          j        d
          }t          j        |          } ||||           |                     |||z              d S )NTr   c                 "     | ||           d S rw   r   r!   r"   rV   r<   s      r   jit_addz4TestGUVectorizeJit.check_add_gufunc.<locals>.jit_add)      F1ar   (   i8r,   r+   r*   r.   d   )r   r5   r6   r7   r   rb   r   )r;   r<   r$  r!   r"   rV   s    `    r   check_add_gufuncz#TestGUVectorizeJit.check_add_gufunc(  s    	d				 	 	 	 
		 Ib%%%--aA66HSMMmA1cQU+++++r   c                 p    t          dd| j                  d             }|                     |           d S )Nint64[:], int64, int64[:]rg   rC   c                 \    t          | j        d                   D ]}| |         |z   ||<   d S r   rT   rj   s       r   rE   z/TestGUVectorizeJit.test_add_static.<locals>.add4  rk   r   r	   rD   r)  r;   rE   s     r   test_add_staticz"TestGUVectorizeJit.test_add_static3  sS    	0- K
) 
) 
)	" 	"
) 
)	" 	c"""""r   c                 p    t          dd| j                  d             }|                     |           d S )Nr+  rg   rC   c                 \    t          | j        d                   D ]}| |         |z   ||<   d S r   rT   rj   s       r   rE   z9TestGUVectorizeJit.test_add_static_cast_args.<locals>.add>  rk   r   r-  r.  s     r   test_add_static_cast_argsz,TestGUVectorizeJit.test_add_static_cast_args<  sS    	0- K
) 
) 
)	" 	"
) 
)	" 	c"""""r   c                 n    t          d| j                  d             }|                     |           d S )Nrg   rC   c                 \    t          | j        d                   D ]}| |         |z   ||<   d S r   rT   rj   s       r   rE   z0TestGUVectorizeJit.test_add_dynamic.<locals>.addG  <    171:&& " "1A" "r   r-  r.  s     r   test_add_dynamicz#TestGUVectorizeJit.test_add_dynamicF  sG    	]4;	7	7	7	" 	" 
8	7	" 	c"""""r   c                 p    t          d| j        d          d             }|                     |           d S )Nrg   T)rD   forceobjc                 \    t          | j        d                   D ]}| |         |z   ||<   d S r   rT   rj   s       r   rE   z0TestGUVectorizeJit.test_object_mode.<locals>.addP  r5  r   r-  r.  s     r   test_object_modez#TestGUVectorizeJit.test_object_modeN  sJ    	]4;	F	F	F	" 	" 
G	F	" 	c"""""r   c                    d}t          j        |dz  dz  t           j                                      |dd          }t          j        |dz  dz  t           j                                      |dd          }t          j        |dz  dz  t           j                                      |dd          } ||||           t          j        ||          }t           j                            ||dd           d S r)   r4   )r;   jit_funcr=   r   r   r   r>   s          r   check_matmulzTestGUVectorizeJit.check_matmulW  s    	Ii!ma'rz:::BB9aQRSSIi!ma'rz:::BB9aQRSSIi!ma'rz:::BB9aQRSSAqyA

""1dD"AAAAAr   c                      t          d| j                  t                    t          d          fd            }|                     |           d S )NrB   rC   Tr!  c                      | ||          S rw   r   )r   r   r   r<   s      r   
matmul_jitz<TestGUVectorizeJit.test_njit_matmul_call.<locals>.matmul_jitg  s    6!Q??"r   )r	   rD   r   r   r=  )r;   r@  r<   s     @r   test_njit_matmul_callz(TestGUVectorizeJit.test_njit_matmul_callb  s}    11$(K1 1 11;= = 
d				# 	# 	# 	# 
		# 	*%%%%%r   c                 4   t          t          d| j        d          t          d          fd            }t	          j        dt          j                  }t	          j        |          } |||||           |                     |||z  |z              d S )Nz(),(),() -> ()Tr   r!  c                 $     | |||           d S rw   r   )r    r!   r"   r#   r<   s       r   axpy_jitz.TestGUVectorizeJit.test_axpy.<locals>.axpy_jitq  s    F1aC     r   rM   r,   )	r   r$   rD   r   r5   r6   rN   rb   r   )r;   rD  r!   r#   r<   s       @r   	test_axpyzTestGUVectorizeJit.test_axpym  s    T#3DK(,. . . 
d				! 	! 	! 	! 
		! Ib(((mAAq#QUQY/////r   c                    t          d          d             t          d          fd            }t          j        dd                              d	d
          }t          j        dd          }t          j        d	d          } ||||           t          j        |          } |||           |                     ||           d S )Nz(n),(m) -> ()c                 ^    |                                  |                                 z   |d<   d S r   )r   r   s      r   r<   z5TestGUVectorizeJit.test_output_scalar.<locals>.gufunc|  s$    UUWWquuww&CFFFr   Tr!  c                 "     | ||           d S rw   r   r#  s      r   r<  z7TestGUVectorizeJit.test_output_scalar.<locals>.jit_func  r%  r   r&  r'  r,   r+   rM   r[   )r	   r   r5   r6   r7   r   rb   r   )r;   r<  r!   r"   rV   rc   r<   s         @r   test_output_scalarz%TestGUVectorizeJit.test_output_scalarz  s    	_	%	%	' 	' 
&	%	' 
d				 	 	 	 
		 Ib%%%--a44Ib%%%hq%%%As=%%q!XX.....r   c                 p   t          d          d             t          d          fd            }t          j        dd                              d	d
d          }t          j        |          } |||           t          j        |          } ||           |                     ||           d S )Nz() -> ()c                     | dz   |d<   d S )Nr(  r   r   )r!   rV   s     r   r<   z4TestGUVectorizeJit.test_input_scalar.<locals>.gufunc  s    WCFFFr   Tr!  c                       | |           d S rw   r   )r!   rV   r<   s     r   r<  z6TestGUVectorizeJit.test_input_scalar.<locals>.jit_func  s    F1cNNNNNr   r&  r'  r,   r.   r*   r+   )r	   r   r5   r6   r7   rb   r   )r;   r<  r!   rV   rc   r<   s        @r   test_input_scalarz$TestGUVectorizeJit.test_input_scalar  s    	Z	 	 	 	 
!	 	 
d				 	 	 	 
		 Ib%%%--aA66mAC=%%q(X.....r   c                    d}t          |          d             t          d          fd            }d\  }}t          j        |dz                                ||          }t          j        |dz                                |||          }t          j        |          }t          j        |dz                                ||          }|                     t                    5 }	t          j        ||z            }
 ||
|||           d d d            n# 1 swxY w Y   d	| d
}|                     |t          |	j	                             |                     t                    5 }	t          j        ||z                                ||          } |||||           d d d            n# 1 swxY w Y   d| d}|                     |t          |	j	                             |                     t                    5 }	t          j
        d          } |||||           d d d            n# 1 swxY w Y   d| d}|                     |t          |	j	                             |                     t                    5 }	t          j        |          } |||||           d d d            n# 1 swxY w Y   d| d
}|                     |t          |	j	                             d S )Nz (n, m), (n, n, n) -> (m), (n, n)c                     d|d<   d|d<   d S N{   r   i  r   r!   r"   rV   r#   s       r   barz9TestGUVectorizeJit.test_gufunc_ndim_mismatch.<locals>.bar      CFCFFFr   Tr!  c                 $     | |||           d S rw   r   r!   r"   rV   r#   rS  s       r   r   z9TestGUVectorizeJit.test_gufunc_ndim_mismatch.<locals>.foo      C1c3r   )r*   r   r*   r   zXbar: Input operand 0 does not have enough dimensions (has 1, gufunc core with signature z requires 2)zXbar: Input operand 1 does not have enough dimensions (has 2, gufunc core with signature z requires 3)zYbar: Output operand 0 does not have enough dimensions (has 0, gufunc core with signature z requires 1)zYbar: Output operand 1 does not have enough dimensions (has 1, gufunc core with signature )r	   r   r5   r6   r7   r   r
   r   r   r   r   )r;   r   r   NMr!   r"   rV   r#   r   x_r   y_res_out_rS  s                  @r   test_gufunc_ndim_mismatchz,TestGUVectorizeJit.test_gufunc_ndim_mismatch  s   6		Y			 	 
 		 
d				  	  	  	  
		  1IadOO##Aq))IadOO##Aq!,,illi1oo%%a++ {++ 	!v1q5!!BCAsC   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!H09H H Hc3v/00111{++ 	!v1q5!!))!Q//BC2sC   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!H09H H Hc3v/00111{++ 	!v8A;;DC1dC   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!H09H H Hc3v/00111{++ 	!v9Q<<DC1c4   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!H09H H Hc3v/0011111sH   ,&DD"%D"1:F77F;>F;
#H99H= H=#J;;J?J?c                   
 t          d          d             
t          d          
fd            }d}d}t          j        dd|f          }t          j        |f          }t          j        d	          }|                     t                    5 } 
|||           d d d            n# 1 swxY w Y   d
}|                     |t          |j	                             |                     t                    5 }	 ||||           d d d            n# 1 swxY w Y   d}|                     |t          |	j	                             d S )N(n),(n) -> ()c                     d|d<   d S NrQ  r   r   r   s      r   rS  z>TestGUVectorizeJit.test_mismatch_inner_dimensions.<locals>.bar      CFFFr   Tr!  c                 "     | ||           d S rw   r   r!   r"   rV   rS  s      r   r   z>TestGUVectorizeJit.test_mismatch_inner_dimensions.<locals>.foo      C1cNNNNNr   r*   r   r.   r.   r   zxInput operand 1 has a mismatch in its core dimension 0, with gufunc signature (n),(n) -> () (size 3 is different from 2)4Operand has a mismatch in one of its core dimensions
r	   r   r5   emptyr   r   
ValueErrorr   r   r   r;   r   rX  rY  r!   r"   rV   	np_raisesr   r   rS  s             @r   test_mismatch_inner_dimensionsz1TestGUVectorizeJit.test_mismatch_inner_dimensions  s   	_	%	%	 	 
&	%	 
d				 	 	 	 
		 HaAYHaTNNhv z** 	iC1cNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	Mc3y233444z** 	fC1cNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	Ec3v/0011111$   B--B14B1<DDDc                   
 t          d          d             
t          d          
fd            }d}d}t          j        dd|f          }t          j        |f          }t          j        d	          }|                     t                    5 } 
|||           d d d            n# 1 swxY w Y   d
}|                     |t          |j	                             |                     t                    5 }	 ||||           d d d            n# 1 swxY w Y   d}|                     |t          |	j	                             d S )Nz(n),(m) -> (n)c                     d|d<   d S rb  r   r   s      r   rS  zKTestGUVectorizeJit.test_mismatch_inner_dimensions_input_output.<locals>.bar  rc  r   Tr!  c                 "     | ||           d S rw   r   re  s      r   r   zKTestGUVectorizeJit.test_mismatch_inner_dimensions_input_output.<locals>.foo  rf  r   r*   r   r.   rg  zzOutput operand 0 has a mismatch in its core dimension 0, with gufunc signature (n),(m) -> (n) (size 3 is different from 2)rh  ri  rl  s             @r   +test_mismatch_inner_dimensions_input_outputz>TestGUVectorizeJit.test_mismatch_inner_dimensions_input_output  s   	%	&	&	 	 
'	&	 
d				 	 	 	 
		 HaAYHaTNNhv z** 	iC1cNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	Nc3y233444z** 	fC1cNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	Ec3v/0011111ro  c                    t          d          d             t          d          fd            }d}d}t          j        |f          }t          j        |f          }t          j        |f          }t          j        |f          }|                     t                    5 } ||||           d d d            n# 1 swxY w Y   d}	|                     |	t          |j	                             |                     t                    5 }
 |||||           d d d            n# 1 swxY w Y   d	}	|                     |	t          |
j	                             d S )
Nz(n),(m) -> (m),(m)c                     d|d<   d|d<   d S rP  r   rR  s       r   rS  zETestGUVectorizeJit.test_mismatch_inner_dimensions_output.<locals>.bar  rT  r   Tr!  c                 $     | |||           d S rw   r   rV  s       r   r   zETestGUVectorizeJit.test_mismatch_inner_dimensions_output.<locals>.foo  rW  r   r*   r   z~Output operand 0 has a mismatch in its core dimension 0, with gufunc signature (n),(m) -> (m),(m) (size 2 is different from 3)rh  ri  )r;   r   rX  rY  r!   r"   rV   r#   rm  r   r   rS  s              @r   %test_mismatch_inner_dimensions_outputz8TestGUVectorizeJit.test_mismatch_inner_dimensions_output  s   	)	*	*	 	 
+	*	 
d				  	  	  	  
		  HaTNNHaTNNhtnnhtnn z** 	 iC1c3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 Rc3y233444z** 	 fC1c3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 Ec3v/0011111s$   'CC	CD,,D03D0c                    t          d          d             t          d          fd            }d}t          j        ddd	|f          }t          j        dd	|f          }t          j        d
          }|                     t                    5 } ||||           d d d            n# 1 swxY w Y   d}|                     |t          |j	                             d S )Nr`  c                     d|d<   d S rb  r   r   s      r   rS  z8TestGUVectorizeJit.test_mismatch_loop_shape.<locals>.bar  rc  r   Tr!  c                 "     | ||           d S rw   r   re  s      r   r   z8TestGUVectorizeJit.test_mismatch_loop_shape.<locals>.foo#  rf  r   r*   r|   r.   r   rg  &Loop and array shapes are incompatibleri  )	r;   r   rX  r!   r"   rV   r   r   rS  s	           @r   test_mismatch_loop_shapez+TestGUVectorizeJit.test_mismatch_loop_shape  s9   	_	%	%	 	 
&	%	 
d				 	 	 	 
		 HaAq]##HaAZ  hvz** 	fC1cNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	7c3v/0011111s   B..B25B2c                   
 t          d          d             
t          
fd            }d}t          j        d|z                                d|f          }t          j        |          }t          j        d          }t          j        d|f          }|                     t                    5 } 
||||           d d d            n# 1 swxY w Y   d}| 	                    |t          |j                             |                     t                    5 }	 |||||           d d d            n# 1 swxY w Y   d	}| 	                    |t          |	j                             d S )
Nz(n),(n) -> (), (n)c                     |                                  |d<   t          | j        d                   D ]-}||xx         | |         |                                 z   z  cc<   .d S r   )r   r   r   )r!   r"   rV   r#   r   s        r   r<   z=TestGUVectorizeJit.test_mismatch_loop_shape_2.<locals>.gufunc2  sb    UUWWCF171:&& ) )A!A$.() )r   c                 $     | |||           d S rw   r   )r!   r"   rV   r#   r<   s       r   r<  z?TestGUVectorizeJit.test_mismatch_loop_shape_2.<locals>.jit_func8  s    F1ac"""""r   r*   r+   )r   r   zoperands could not be broadcast together with remapped shapes [original->remapped]: (4,2)->(4,newaxis) (2,)->() (3,)->(3,newaxis) (3,2)->(3,2)  and requested shape (2)r{  )r	   r   r5   r6   r7   rj  r   r   rk  r   r   r   )r;   r<  rX  r!   r"   rV   r#   rm  r   r   r<   s             @r   test_mismatch_loop_shape_2z-TestGUVectorizeJit.test_mismatch_loop_shape_21  s   	)	*	*	) 	) 
+	*	)
 
	# 	# 	# 	# 
	# IacNN""Aq6**IaLLhtnnh1v z** 	#iF1ac"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#I 	c3y233444z** 	%fHQ3$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%7c3v/0011111s$   2CCCD77D;>D;N)rn   rm   ro   rD   r)  r/  r2  r6  unittestexpectedFailurer:  r=  rA  rE  rI  rM  r^  rn  rs  rw  r|  r  r   r   r   r  r  %  s       F	, 	, 	,# # ## # ## # # # # #	B 	B 	B	& 	& 	&0 0 0/ / /$/ / /",2 ,2 ,2\2 2 262 2 262 2 2:2 2 2&2 2 2 2 2r   r  __main__)r  r
  numpyr5   numbar   r   r   r   r   r   r	   numba.core.errorsr
   numba.np.ufuncr   numba.tests.supportr   r   r   r$   r&   rs   r   r   r   r   r  r  rn   mainr   r   r   <module>r     sh         H H H H H H H H H H H H H H H H H H ) ) ) ) ) ) & & & & & & - - - - - - - -- - -  FA FA FA FA FA FA FA FARB. B. B. B. B.( B. B. B.J       
`; `; `; `; `; `; `; `;FZ0 Z0 Z0 Z0 Z0H Z0 Z0 Z0z    $9   
o- o- o- o- o-h o- o- o-di2 i2 i2 i2 i2 i2 i2 i2V	 zHMOOOOO r   