Ë
    üÇ:j~p  ã                   ó^  — 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e«      Z G d
„ dee«      Z G d„ de«      Z G d„ dee«      Z G d„ dee«      Z G d„ de«      Z G d„ dee«      Z G d„ dee«      Zedk(  r e j<                  «        yy)é    N)ÚvoidÚfloat32Úfloat64Úint32Úint64ÚjitÚguvectorize)ÚTypingError)ÚGUVectorize)ÚTestCaseÚMemoryLeakMixinc           
      óæ   — | j                   \  }}|j                   \  }}t        |«      D ]E  }t        |«      D ]5  }d|||f<   t        |«      D ]  }|||fxx   | ||f   |||f   z  z  cc<   Œ  Œ7 ŒG y)zdocstring for matmulcorer   N)ÚshapeÚrange)	ÚAÚBÚCÚmÚnÚpÚiÚjÚks	            úu/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/numba/tests/npyufunc/test_gufunc.pyÚ
matmulcorer      s‰   € à�7‰7�D€A€qØ�7‰7�D€A€qÜ�1‹Xò -ˆÜ�q“ò 	-ˆAØˆAˆa�ˆd‰GÜ˜1“Xò -�Ø�!�Q�$“˜1˜Q ˜T™7 Q q¨! t¡WÑ,Ñ,”ñ-ñ	-ñ-ó    c                 ó   — | |z  |z   |d<   y ©Nr   © )ÚaÚxÚyÚouts       r   Úaxpyr$      s   € Ø�‰U�a‰Z€Cˆ‚Fr   c                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	Ú
TestGUFuncÚcpuc                 ó|  — d}t        j                  |dz  dz  t         j                  ¬«      j                  |dd«      }t        j                  |dz  dz  t         j                  ¬«      j                  |dd«      } |||«      }t        j                  ||«      }t         j
                  j                  ||dd¬«       y ©	Nié  é   é   ©Údtypeé   çñhãˆµøä>ç:Œ0âŽyE>©Ú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–   € Øˆ	Ü�I‰I�i !‘m aÑ'¬r¯z©zÔ:×BÑBÀ9ÈaÐQRÓSˆÜ�I‰I�i !‘m aÑ'¬r¯z©zÔ:×BÑBÀ9ÈaÐQRÓSˆá�1�a‹LˆÜ�y‰y˜˜A‹ˆä
�
‰
×"Ñ" 1 d°¸DÐ"ÕAr   c                 óô   — t        t        d| j                  ¬«      }|j                  t        d d …d d …f   t        d d …d d …f   t        d d …d d …f   f«       |j                  «       }| j                  |«       y ©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¡Kô1ˆà�
‰
”GšAšq˜D‘M¤7ª1ªa¨4¡=´'º!ºQ¸$±-Ð@Ô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        «      }| j                  |«       y rA   )r	   r   r   rD   r   r?   rG   s     r   Útest_guvectorize_decorz!TestGUFunc.test_guvectorize_decor0   sX   € ð1”œd¤7ª1ªQ¨3¡<´ºº1¸±¼wÂqÊÀs¹|ÓLÐMØ1Ø$(§K¡Kô1ä1;ó=ˆð 	× Ñ  Õ(r   c                 ó(  — t        t        d| j                  ¬«      }|j                  d«       |j	                  «       }t        j                  dt
        j                  ¬«      } ||||«      }t
        j                  j                  |||z  |z   «       y )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   so   € ô œTÐ#5¸d¿k¹kÔJˆØ�
‰
Ð0Ô1Ø×#Ñ#Ó%ˆä�I‰I�b¤§¡Ô(ˆÙ�Q˜˜1‹oˆä
�
‰
×Ñ  Q¨¡U¨Q¡YÕ/r   c                 óV  — t        dgd«      d„ «       }t        j                  d«      } ||d¬«      }t        j                  |d¬«      }t        j                  j                  ||«       t        j                  |«      } |||d¬«       t        j                  j                  ||«       y )Nzf8[:],f8[:]ú(n)->(n)c                 ó\   — d}t        | j                  d   «      D ]  }|| |   z  }|||<   Œ y r   ©r   r   ©r!   ÚresÚaccr   s       r   Ú	my_cumsumz'TestGUFunc.test_axis.<locals>.my_cumsumF   ó9   € àˆCÜ˜1Ÿ7™7 1™:Ó&ò �Ø�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ñ	ó 
2ð	ô �G‰G�HÓˆá�a˜aÔ ˆÜ—9‘9˜Q QÔ'ˆÜ
�
‰
×Ñ  8Ô,ä—‘˜qÓ!ˆÙ�!˜ aÕ(Ü
�
‰
×Ñ ¨Õ1r   c                 ó4  — t        t        d d  t        t        d d  fgd«      d„ «       }| j                  d|j                  «       | j                  d|j                  «       | j                  d|j
                  «       | j                  d|j                  «       y )Nú(n),()->(n)c                 óT   — t        | j                  d   «      D ]  }| |   |z   ||<   Œ y)údocstring for gufuncr   NrT   ©r!   r"   rV   r   s       r   r<   z)TestGUFunc.test_docstring.<locals>.gufuncX   ó1   € ô ˜1Ÿ7™7 1™:Ó&ò "�Ø˜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‡   € Ü	”u™Q�x¤¬©a¨Ð1Ð2°MÓ	Bñ	"ó 
Cð	"ð
 	×ÑÐ;¸V×=NÑ=NÔOØ×Ñ˜ 6§?¡?Ô3Ø×ÑÐDÀf×FYÑFYÔZØ×ÑÐ/°·±Õ@r   N)
rn   rm   ro   rD   r?   rH   rJ   rP   re   rq   r   r   r   r&   r&      s'   „ Ø€FòBò)ò)ò0ò2ó&
Ar   r&   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚTestMultipleOutputsr'   c                 óv  — t        d| j                  ¬«      d„ «       }t        j                  dt        j                  ¬«      dz   }t        j
                  |«      }t        j
                  |«      } ||||«       t        j                  j                  ||«       t        j                  j                  ||«       y )Nú(x)->(x),(x)rC   c                 óX   — t        |j                  «      D ]  }| |   ||<   | |   ||<   Œ y ©N©r   Úsize©r   r   r   r   s       r   ÚcopyzKTestMultipleOutputs.test_multiple_outputs_same_type_passed_in.<locals>.copyh   s5   € ô ˜1Ÿ6™6“]ò �Ø˜‘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™Kô
)ñ	ó
)ð	ô
 �I‰I�b¤§
¡
Ô+¨aÑ/ˆÜ�M‰M˜!ÓˆÜ�M‰M˜!ÓˆÙˆQ��1ŒÜ
�
‰
×"Ñ" 1 aÔ(Ü
�
‰
×"Ñ" 1 aÕ(r   c                 ó|  — t        d| j                  ¬«      d„ «       }t        j                  dt        j                  ¬«      dz   }t        j
                  |«      }t        j
                  |«      } ||||«       t        j                  j                  ||«       t        j                  j                  |dz  |«       y )Nru   rC   c                 ó^   — t        |j                  «      D ]  }| |   ||<   | |   dz  ||<   Œ y ©Nr*   rx   rz   s       r   Úcopy_and_doublezRTestMultipleOutputs.test_multiple_outputs_distinct_values.<locals>.copy_and_doublex   s9   € ô ˜1Ÿ6™6“]ò  �Ø˜‘t��!‘Ø˜‘t˜a‘x��!’ñ 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™Kô
)ñ	 ó
)ð	 ô
 �I‰I�b¤§
¡
Ô+¨aÑ/ˆÜ�M‰M˜!ÓˆÜ�M‰M˜!ÓˆÙ˜˜1˜aÔ Ü
�
‰
×"Ñ" 1 aÔ(Ü
�
‰
×"Ñ" 1 q¡5¨!Õ,r   c                 óÂ  — t        d| j                  ¬«      d„ «       }t        j                  dt        j                  ¬«      dz   }t        j
                  |«      }t        j
                  |t        j                  ¬«      } ||||«       t        j                  j                  ||«       t        j                  j                  |t        j                  d«      z  |«       y )Nru   rC   c                 ó^   — t        |j                  «      D ]  }| |   ||<   | |   dz  ||<   Œ y )Nç      ø?rx   rz   s       r   Úcopy_and_multiplyzJTestMultipleOutputs.test_multiple_output_dtypes.<locals>.copy_and_multiplyˆ   s9   € ô ˜1Ÿ6™6“]ò "�Ø˜‘t��!‘Ø˜‘t˜c‘z��!’ñ"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™Kô
)ñ	"ó
)ð	"ô
 �I‰I�b¤§¡Ô)¨AÑ-ˆÜ�M‰M˜!ÓˆÜ�M‰M˜!¤2§:¡:Ô.ˆÙ˜!˜Q Ô"Ü
�
‰
×"Ñ" 1 aÔ(Ü
�
‰
×"Ñ" 1¤r§z¡z°#£Ñ#6¸Õ:r   c                 óð  — t        d| j                  ¬«      d„ «       }t        j                  dt        j                  ¬«      }d}| j                  t        «      5 } ||«       d d d «       | j                  |t        j                  «      «       | j                  t        «      5 } ||||||«       d d d «       | j                  |t        |j                  «      «       y # 1 sw Y   Œ~xY w# 1 sw Y   Œ;xY w)Nz(m),(m)->(m),(m)rC   c                  ó   — y rw   r   )r!   r"   ÚzÚws       r   Úfz@TestMultipleOutputs.test_incorrect_number_of_pos_args.<locals>.f—   ó   € àr   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‰i˜¤§¡Ô*ˆð 3ˆØ×ÑœyÓ)ð 	¨RÙˆcŒF÷	à�‰�cœ3˜rŸ|™|Ó,Ô-ð ×ÑœyÓ)ð 	'¨RÙˆc�3˜˜S #Ô&÷	'à�‰�cœ3˜rŸ|™|Ó,Õ-÷	ð 	ú÷
	'ð 	'ús   Á	C Â%C,Ã C)Ã,C5N)rn   rm   ro   rD   r~   rƒ   rˆ   r—   r   r   r   rs   rs   d   s   „ Ø€Fò)ò-ò ;ó .r   rs   c                   ó   — e Zd ZdZdZy)ÚTestGUFuncParallelFÚparallelN©rn   rm   ro   Ú_numba_parallel_test_rD   r   r   r   r™   r™   ©   ó   „ Ø!ÐØ�Fr   r™   c                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestDynamicGUFuncr'   c                 óŽ  — d„ }t        t        d| j                  d¬«      }d}t        j                  |dz  dz  t        j
                  ¬«      j                  |dd«      }t        j                  |dz  d	z  t        j
                  ¬«      j                  |dd	«      }t        j                  |dz  d	z  t        j
                  ¬«      j                  |dd	«      } |||||«       t        j                  |dz  dz  t        j                  ¬«      j                  |dd«      }t        j                  |dz  d	z  t        j                  ¬«      j                  |dd	«      }t        j                  |dz  d	z  t        j                  ¬«      j                  |dd	«      }	 |||||	«       | j                  t        |j                  «      d«       y )
Nc                 óŠ   — t        j                  ||«      } | |||«       t         j                  j                  ||dd¬«       y )Nr/   r0   r1   )r5   r8   r9   r:   )r<   r   r   r   r>   s        r   r?   zBTestDynamicGUFunc.test_dynamic_matmul.<locals>.check_matmul_gufunc³   s7   € Ü—9‘9˜Q “?ˆDÙ�1�a˜ŒOÜ�J‰J×&Ñ& q¨$°TÀÐ&Õ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±   sk  € ò	Fô
 œZÐ)=Ø$(§K¡K¸DôBˆàˆ	Ü�y‰y˜ Q™¨Ñ*´"·(±(Ô;×CÑCÀIÈqÐRSÓTˆÜ�y‰y˜ Q™¨Ñ*´"·(±(Ô;×CÑCÀIÈqÐRSÓTˆÜ�y‰y˜ Q™¨Ñ*´"·(±(Ô;×CÑCÀIÈqÐRSÓTˆÙ˜F D¨$°Ô5ä�I‰I�i !‘m aÑ'¬r¯z©zÔ:×BÑBÀ9ÈaÐQRÓSˆÜ�I‰I�i !‘m aÑ'¬r¯z©zÔ:×BÑBÀ9ÈaÐQRÓSˆÜ�I‰I�i !‘m aÑ'¬r¯z©zÔ:×BÑBÀ9ÈaÐQRÓSˆÙ˜F A q¨!Ô,à×Ñœ˜VŸ\™\Ó*¨AÕ.r   c                 ó    — d„ }t        t        d| j                  d¬«      }t        j                  dt        j
                  ¬«      } |||«       y )Nc                 óF  — t        j                  d|j                  ¬«      }t        j                  d|j                  ¬«      } | ||||«        | ||||¬«       ||z  |z   }t         j                  j	                  ||«       t         j                  j	                  ||«       y )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{   € Ü—(‘(˜2 Q§W¡WÔ-ˆCÜ—X‘X˜b¨¯©Ô0ˆFÙ�1�a˜˜CÔ Ù�1�a˜ Õ'Ø˜‘U˜Q‘YˆFÜ�J‰J×#Ñ# C¨Ô0Ü�J‰J×#Ñ# F¨FÕ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È   s?   € ò	4ô œTÐ#5¸d¿k¹kØ(,ô.ˆä�I‰I�b¤§¡Ô(ˆÙ˜6 1Õ%r   c                 ó,  — t        d| j                  d¬«      d„ «       }| j                  |j                  «       t	        j
                  dt        j                  ¬«      j                  dd«      }t	        j                  dt        j                  ¬«      } |||«       t        |j                  d	   «      D ](  }| j                  ||   ||   j                  «       «       Œ* d
}| j                  t        |«      5   ||«       ddd«       y# 1 sw Y   yxY w)úw
        Note that scalar output is a 0-dimension array that acts as
        a pointer to the output location.
        ú(n)->()T©rD   Únopythonc                 ó\   — d}t        | j                  d   «      D ]
  }|| |   z  }Œ ||d<   y ©Ng        r   r   rT   ©Úinpr#   Útmpr   s       r   Úsum_rowz=TestDynamicGUFunc.test_dynamic_scalar_output.<locals>.sum_rowâ   s9   € àˆCÜ˜3Ÿ9™9 Q™<Ó(ò �Ø�s˜1‘v‘‘ðàˆC�ŠGr   é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Ü   sæ   € ô 
�Y t§{¡{¸TÔ	Bñ	ó 
Cð	ð 	�‰˜×*Ñ*Ô+Ü�i‰i˜¤R§X¡XÔ.×6Ñ6°u¸aÓ@ˆÜ�h‰h�u¤B§H¡HÔ-ˆÙ��SÔô �s—y‘y ‘|Ó$ò 	3ˆAØ×Ñ˜S ™V S¨¡V§Z¡Z£\Õ2ð	3ð :ˆØ×#Ñ#¤I¨sÓ3ñ 	Ù�CŒL÷	÷ 	ñ 	ús   Ã8	D
Ä
Dc                 ó~  — t        d«      d„ «       }t        j                  d«      }t        j                  |d¬«      }t        j                  |«      } |||d¬«       t        j
                  j                  ||«       t        j                  |«      } |||d¬«       t        j
                  j                  ||«       y )NrR   c                 ó\   — d}t        | j                  d   «      D ]  }|| |   z  }|||<   Œ y 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Ó	 ñ	ó 
!ð	ô �G‰G�HÓˆÜ—9‘9˜Q QÔ'ˆä�M‰M˜(Ó#ˆÙ�!�Q˜QÕÜ
�
‰
×Ñ  8Ô,ä—‘˜qÓ!ˆÙ�!˜ aÕ(Ü
�
‰
×Ñ ¨Õ1r   c                 ó~  — t        d«      d„ «       }g d¢}|D ]$  }t        ||«      }| j                  |d|›d�«       Œ& t        j                  g d¢«      }t        j                  g d¢«      } |||«       | j                  |t        j                  g d¢«      «       | j                  |j                  d«       | j                  t        «      5 }|j                  |«       d d d «       | j                  t        j                  «      d	«       | j                  t        «      5 }|j                  |«       d d d «       | j                  t        |j                  «      d	«       | j                  t        «      5 }|j                  |d
dg«       d d d «       | j                  t        |j                  «      d	«       | j                  t        «      5 }|j!                  ||«       d d d «       | j                  t        |j                  «      d«       y # 1 sw Y   �Œ0xY w# 1 sw Y   ŒèxY w# 1 sw Y   Œ�xY w# 1 sw Y   ŒTxY w)NrR   c                 ó\   — d}t        | j                  d   «      D ]  }|| |   z  }|||<   Œ y 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ˆØò 	UˆDÜ˜v tÓ,ˆHØ�O‰O™HÊTÐ&SÕTð	Uô �H‰H’\Ó"ˆÜ�h‰h’|Ó$ˆÙˆq�#ŒØ×Ñ ¤R§X¡XªmÓ%<Ô=ð
 	×Ñ˜×)Ñ)¨:Ô6à×Ñœ|Ó,ð 	!°Ø×Ñ˜aÔ ÷	!à×Ñœ˜V×-Ñ-Ó.Ð0_Ô`à×Ñœ|Ó,ð 	°Ø�M‰M˜!Ô÷	à×Ñœ˜V×-Ñ-Ó.Ð0_Ô`à×Ñœ|Ó,ð 	'°Ø�O‰O˜A  1˜vÔ&÷	'à×Ñœ˜V×-Ñ-Ó.Ð0_Ô`à×ÑœyÓ)ð 	¨VØ�L‰L˜˜AÔ÷	à×Ñœ˜V×-Ñ-Ó.Ð0qÕr÷	!ñ 	!ú÷	ð 	ú÷	'ð 	'ú÷	ð 	ús0   ÃHÄ"HÅ6H'ÇH3ÈHÈH$È'H0È3H<c                 óð  — t        d«      d„ «       }| j                  |j                  «       t        j                  g d¢«      }t        j                  g d¢«      }t        j                  g d¢«      } ||||«       | j                  |t        j                  g d¢«      «       | j                  |j                  «       | j                  |j                  |«      d«       | j                  |j                  |«      t        j                  g d¢«      «       | j                  |j                  d	d
gd
dg«      t        j                  d
dgddgg«      «       | j                  |j                  |d	dg«      t        j                  ddg«      «       t        j                  g d¢«      }t        j                  d
dg«      }|j                  |d	d
g|«       | j                  |t        j                  g d¢«      «       y )Nz	(),()->()c                 ó   — | |z   |d<   y r   r   ©r!   r"   rV   s      r   rE   z6TestDynamicGUFunc.test_gufunc_attributes2.<locals>.add7  s   € à˜‘UˆC�ŠFr   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‰H’\Ó"ˆÜ�h‰h’|Ó$ˆÙˆAˆq�#ŒØ×Ñ ¤R§X¡XªlÓ%;Ô<ð 	×Ñ˜#Ÿ-™-Ô(Ø×Ñ˜Ÿ™ A›¨Ô+Ø×Ñ §¡¨qÓ 1´2·8±8ºMÓ3JÔKØ×Ñ §	¡	¨1¨a¨&°1°a°&Ó 9¼2¿8¹8ÀaÈÀVÈaÐQRÈVÐDTÓ;UÔVØ×Ñ §¡¨Q°°A°Ó 7¼¿¹À1ÀaÀ&Ó9IÔJä�H‰H’\Ó"ˆÜ�H‰H�a˜�VÓˆØ�‰ˆq�1�a�&˜!ÔØ×Ñ ¤2§8¡8ªLÓ#9Õ:r   N)
rn   rm   ro   rD   r©   r°   rÂ   re   rÚ   rá   r   r   r   rŸ   rŸ   ®   s'   „ Ø€Fò/ò.&ò(ò<2ò(&sóP;r   rŸ   c                   ó2   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestGUVectorizeScalarz<
    Nothing keeps user from out-of-bound memory access
    r'   c                 óD  — t        dgd| j                  d¬«      d„ «       }t        j                  dt        j                  ¬«      j                  dd	«      } ||«      }t        |j                  d
   «      D ](  }| j                  ||   ||   j                  «       «       Œ* y)r²   zvoid(int32[:], int32[:])r³   Tr´   c                 ó\   — d}t        | j                  d   «      D ]
  }|| |   z  }Œ ||d<   y r·   rT   r¸   s       r   r»   z9TestGUVectorizeScalar.test_scalar_output.<locals>.sum_row]  s;   € ð ˆCÜ˜3Ÿ9™9 Q™<Ó(ò �Ø�s˜1‘v‘‘ðàˆC�ŠGr   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Ð1°9Ø ŸK™K°$ô
8ñ	ó
8ð	ô �i‰i˜¤R§X¡XÔ.×6Ñ6°u¸aÓ@ˆÙ�c‹lˆô �s—y‘y ‘|Ó$ò 	3ˆAØ×Ñ˜S ™V S¨¡V§Z¡Z£\Õ2ñ	3r   c                 óê   — t        dgd| j                  d¬«      d„ «       }t        j                  dt        j                  ¬«      j                  dd	«      } ||d
«      }| j                  |d
z  |«       y )Nzint32[:], int32[:], int32[:]rg   Tr´   c                 óZ   — t        | j                  d   «      D ]  }| |   |d   z  ||<   Œ y r   rT   ©r¹   r   r#   r   s       r   Úfooz4TestGUVectorizeScalar.test_scalar_input.<locals>.foor  s5   € ô ˜3Ÿ9™9 Q™<Ó(ò '�Ø˜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  sn   € ä	Ð4Ð5°}Ø ŸK™K°$ô
8ñ	'ó
8ð	'ô �i‰i˜¤b§h¡hÔ/×7Ñ7¸¸AÓ>ˆá�#�q‹kˆð 	×Ñ  a¡¨Õ-r   c                 ó–  — d„ } t        dgd| j                  ¬«      |«      }t        j                  d«      j	                  t        j
                  «      } ||d«      }t        j                  |«      } ||d|«       t        j                  j                  ||«       t        j                  d«      j	                  t        j
                  «      j                  dd«      } ||d«      }t        j                  |«      }t        |j                  d   «      D ]  } |||   d||   «       Œ t        j                  j                  ||«       y )	Nc                 óT   — t        | j                  «      D ]  }|| |   dz   z  ||<   Œ y )Nr|   rx   ré   s       r   ÚpyfunczATestGUVectorizeScalar.test_scalar_input_core_type.<locals>.pyfunc€  s/   € Ü˜3Ÿ8™8“_ò *�Ø˜c !™f q™jÑ)��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  s  € ò	*ð4”KÐ!<Ð =Ø -Ø'+§{¡{ô4à4:ó<ˆ	ô
 �i‰i˜‹m×"Ñ"¤2§8¡8Ó,ˆÙ˜˜QÓˆä—=‘= Ó%ˆÙˆs�A�xÔ ä
�
‰
×Ñ  XÔ.ô �i‰i˜‹m×"Ñ"¤2§8¡8Ó,×4Ñ4°R¸Ó;ˆÙ˜˜QÓˆä—=‘= Ó%ˆÜ˜Ÿ™ qÑ)Ó*ò 	-ˆBÙ�3�r‘7˜A˜x¨™|Õ,ð	-ô 	�
‰
×Ñ  XÕ.r   c                 óà   — | j                  t        «      5 }t        dgd| j                  ¬«      d„ «       }d d d «       | j	                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nrï   z(n),(n)->(n)rC   c                  ó   — y 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›  sn   € Ø×ÑœyÓ)ð 	¨VÜÐ5Ð6¸Ø $§¡ô-ñó-ð÷	ð
 	×ÑÐMÜ˜V×-Ñ-Ó.õ	0÷	ð 	úó   – A$Á$A-c                 óà   — | j                  t        «      5 }t        dgd| j                  ¬«      d„ «       }d d d «       | j	                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nzint32[:], int32[:]z
(m,n)->(n)rC   c                  ó   — y 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¤  sn   € Ø×ÑœyÓ)ð 	¨VÜÐ.Ð/°Ø $§¡ô-ñó-ð÷	ð
 	×ÑÐGÜ˜V×-Ñ-Ó.õ	0÷	ð 	úrü   N)
rn   rm   ro   rp   rD   ræ   rë   rô   rû   rÿ   r   r   r   rã   rã   Q  s'   „ ñð €Fò3ò2.ò/ò80ó0r   rã   c                   ó   — e Zd ZdZdZy)ÚTestGUVectorizeScalarParallelFrš   Nr›   r   r   r   r  r  ®  r�   r   r  c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestGUVectorizePicklingc                 ó  — t        dgd«      d„ «       }t        j                  |«      }t        j                  |«      }| j	                  |j
                  |j
                  «       | j	                  |j                  |j                  «       | j	                  |j                  |j                  «       | j	                  |j                  j                  |j                  j                  «       | j                  |j
                  «       |j                  «        | j                  |j
                  «       | j                   |d«       |d«      «       t        j                  d«      }| j                   ||«       ||«      «       y)zNon-dynamic gufunc.
        zf8,f8[:]ú()->()c                 ó   — | dz  |d d  y r�   r   ©r!   r#   s     r   ÚdoublezFTestGUVectorizePickling.test_pickle_gufunc_non_dyanmic.<locals>.double·  ó   € à˜‘UˆC‘‰Fr   ç      à?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´  s#  € ô 
�j�\ 8Ó	,ñ	ó 
-ð	ô �l‰l˜6Ó"ˆÜ—‘˜cÓ"ˆð 	×Ñ˜Ÿ™¨¯©Ô8Ø×Ñ˜Ÿ™¨&¯/©/Ô:Ø×Ñ˜×*Ñ*¨F×,=Ñ,=Ô>Ø×Ñ˜×.Ñ.×4Ñ4Ø×.Ñ.×4Ñ4ô	6ð 	�‰˜Ÿ™Ô'à×ÑÔ Ø�‰˜Ÿ™Ô'ð 	×Ñ¡ s£©V°C«[Ô9ä�i‰i˜‹mˆØ×Ñ¡ s£©V°C«[Õ9r   c                 óv  — t        dd¬«      d„ «       }t        j                  |«      }t        j                  |«      }| j	                  |j
                  |j
                  «       | j	                  |j                  |j                  «       | j	                  |j                  |j                  «       | j	                  |j                  j                  |j                  j                  «       | j                  |j
                  «       t        j                  d«      }t        j                  d«      } |d|¬«        |d|¬«       | j                  ||«       t        j                  d«      }t        j                  |«      }t        j                  |«      } |||¬«        |||¬«       | j                  ||«       y)	z:Dynamic gufunc w/o prepopulating before pickling.
        r  r|   ©r  c                 ó   — | dz  |d d  y 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Ñ  sU  € ô 
�X¨Ô	*ñ	ó 
+ð	ô �l‰l˜6Ó"ˆÜ—‘˜cÓ"ˆð 	×Ñ˜Ÿ™¨¯©Ô8Ø×Ñ˜Ÿ™¨&¯/©/Ô:Ø×Ñ˜×*Ñ*¨F×,=Ñ,=Ô>Ø×Ñ˜×.Ñ.×4Ñ4Ø×.Ñ.×4Ñ4ô	6ð 	×Ñ˜Ÿ™Ô(ô —‘˜!“ˆÜ�h‰h�q‹kˆÙˆs˜ÕÙˆs˜ÕØ×Ñ ¨Ô,ä�i‰i˜‹mˆÜ—‘˜sÓ#ˆÜ�m‰m˜CÓ ˆÙˆ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                  |j                  j                  «       | j                  |j                  «       |j                  «        | j!                  |j                  «       t        j                  d«      }t        j                  d«      } |d|¬«        |d|¬«       | j#                  ||«       t        j                  |«      }t        j                  |«      } |||¬«        |||¬«       | j#                  ||«       y)	zªDynamic 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  y 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ó  s½  € ô 
�X¨Ô	*ñ	ó 
+ð	ô —‘˜!“ˆÜ�h‰h�q‹kˆÙˆs˜Õä�i‰i˜‹mˆÜ—‘˜sÓ#ˆÜ�m‰m˜CÓ ˆÙˆs˜Õô �l‰l˜6Ó"ˆÜ—‘˜cÓ"ˆð 	×Ñ˜Ÿ™¨¯©Ô8Ø×Ñ˜Ÿ™¨&¯/©/Ô:Ø×Ñ˜×*Ñ*¨F×,=Ñ,=Ô>Ø×Ñ˜×.Ñ.×4Ñ4Ø×.Ñ.×4Ñ4ô	6ð 	×Ñ˜Ÿ™Ô(ð 	×ÑÔ Ø�‰˜Ÿ™Ô'ä—‘˜!“ˆÜ�h‰h�q‹kˆÙˆs˜ÕÙˆs˜ÕØ×Ñ ¨Ô,ä—‘˜sÓ#ˆÜ�m‰m˜CÓ ˆÙˆs˜ÕÙˆs˜ÕØ×Ñ ¨Õ,r   N)rn   rm   ro   r  r  r  r   r   r   r  r  ³  s   „ ò:ò: -ó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„ Zy)ÚTestGUVectorizeJitr'   c                 ó  ‡— t        d¬«      ˆfd„«       }t        j                  dd¬«      j                  ddd	«      }t        j                  d
«      }t        j
                  |«      } ||||«       | j                  |||z   «       y )NT©rµ   c                 ó   •—  ‰| ||«       y rw   r   ©r!   r"   rV   r<   s      €r   Újit_addz4TestGUVectorizeJit.check_add_gufunc.<locals>.jit_add)  ó   ø€ á�1�a˜Õ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(  sv   ø€ Ü	�dÔ	ó	ó 
ð	ô �I‰I�b Ô%×-Ñ-¨a°°AÓ6ˆÜ�H‰H�S‹MˆÜ�m‰m˜AÓˆÙ��1�cÔØ×Ñ  Q¨¡UÕ+r   c                 ób   — t        dd| j                  ¬«      d„ «       }| j                  |«       y )Núint64[:], int64, int64[:]rg   rC   c                 óT   — t        | j                  d   «      D ]  }| |   |z   ||<   Œ y 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  s5   € Ü	Ð0°-Ø ŸK™Kô
)ñ	"ó
)ð	"ð 	×Ñ˜cÕ"r   c                 ób   — t        dd| j                  ¬«      d„ «       }| j                  |«       y )Nr,  rg   rC   c                 óT   — t        | j                  d   «      D ]  }| |   |z   ||<   Œ y 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<  s5   € ä	Ð0°-Ø ŸK™Kô
)ñ	"ó
)ð	"ð 	×Ñ˜cÕ"r   c                 ó`   — t        d| j                  ¬«      d„ «       }| j                  |«       y )Nrg   rC   c                 óT   — t        | j                  d   «      D ]  }| |   |z   ||<   Œ y r   rT   rj   s       r   rE   z0TestGUVectorizeJit.test_add_dynamic.<locals>.addG  ó/   € ä˜1Ÿ7™7 1™:Ó&ò "�Ø˜1™ ™��A’ñ"r   r.  r/  s     r   Útest_add_dynamicz#TestGUVectorizeJit.test_add_dynamicF  s/   € Ü	�]¨4¯;©;Ô	7ñ	"ó 
8ð	"ð 	×Ñ˜cÕ"r   c                 ób   — t        d| j                  d¬«      d„ «       }| j                  |«       y )Nrg   T)rD   Úforceobjc                 óT   — t        | j                  d   «      D ]  }| |   |z   ||<   Œ y r   rT   rj   s       r   rE   z0TestGUVectorizeJit.test_object_mode.<locals>.addP  r6  r   r.  r/  s     r   Útest_object_modez#TestGUVectorizeJit.test_object_modeN  s2   € ä	�]¨4¯;©;ÀÔ	Fñ	"ó 
Gð	"ð 	×Ñ˜cÕ"r   c                 óö  — d}t        j                  |dz  dz  t         j                  ¬«      j                  |dd«      }t        j                  |dz  dz  t         j                  ¬«      j                  |dd«      }t        j                  |dz  dz  t         j                  ¬«      j                  |dd«      } ||||«       t        j                  ||«      }t         j
                  j                  ||dd¬«       y r)   r4   )r;   Újit_funcr=   r   r   r   r>   s          r   Úcheck_matmulzTestGUVectorizeJit.check_matmulW  sÄ   € Øˆ	Ü�I‰I�i !‘m aÑ'¬r¯z©zÔ:×BÑBÀ9ÈaÐQRÓSˆÜ�I‰I�i !‘m aÑ'¬r¯z©zÔ:×BÑBÀ9ÈaÐQRÓSˆÜ�I‰I�i !‘m aÑ'¬r¯z©zÔ:×BÑBÀ9ÈaÐQRÓSˆá��A�qÔÜ�y‰y˜˜A‹ˆä
�
‰
×"Ñ" 1 d°¸DÐ"ÕAr   c                 ó’   ‡—  t        d| j                  ¬«      t        «      Št        d¬«      ˆfd„«       }| j	                  |«       y )NrB   rC   Tr"  c                 ó   •—  ‰| ||«      S rw   r   )r   r   r   r<   s      €r   Ú
matmul_jitz<TestGUVectorizeJit.test_njit_matmul_call.<locals>.matmul_jitg  s   ø€ á˜!˜Q “?Ð"r   )r	   rD   r   r   r>  )r;   rA  r<   s     @r   Útest_njit_matmul_callz(TestGUVectorizeJit.test_njit_matmul_callb  sL   ø€ ð1”Ð1Ø$(§K¡Kô1Ü1;ó=ˆô 
�dÔ	ó	#ó 
ð	#ð 	×Ñ˜*Õ%r   c                 ó"  ‡— t        t        d| j                  d¬«      Št        d¬«      ˆfd„«       }t	        j
                  dt        j                  ¬«      }t	        j                  |«      } |||||«       | j                  |||z  |z   «       y )Nz(),(),() -> ()Tr¢   r"  c                 ó   •—  ‰| |||«       y rw   r   )r    r!   r"   r#   r<   s       €r   Úaxpy_jitz.TestGUVectorizeJit.test_axpy.<locals>.axpy_jitq  s   ø€ á�1�a˜˜CÕ r   rM   r,   )	r   r$   rD   r   r5   r6   rN   rb   rÔ   )r;   rE  r!   r#   r<   s       @r   Ú	test_axpyzTestGUVectorizeJit.test_axpym  s~   ø€ ÜœTÐ#3¸D¿K¹KØ(,ô.ˆô 
�dÔ	ó	!ó 
ð	!ô �I‰I�b¤§¡Ô(ˆÜ�m‰m˜AÓˆÙ��A�q˜#ÔØ×Ñ  Q¨¡U¨Q¡YÕ/r   c                 óp  ‡— t        d«      d„ «       Št        d¬«      ˆfd„«       }t        j                  dd¬«      j	                  d	d
«      }t        j                  dd¬«      }t        j
                  d	d¬«      } ||||«       t        j                  |«      } ‰|||«       | j                  ||«       y )Nz(n),(m) -> ()c                 óL   — | j                  «       |j                  «       z   |d<   y r   )rÀ   rÝ   s      r   r<   z5TestGUVectorizeJit.test_output_scalar.<locals>.gufunc|  s   € à—U‘U“W˜qŸu™u›wÑ&ˆC�ŠFr   Tr"  c                 ó   •—  ‰| ||«       y 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Ô	ó	ó 
ð	ô �I‰I�b Ô%×-Ñ-¨a°Ó4ˆÜ�I‰I�b Ô%ˆÜ�h‰h�q Ô%ˆÙ��A�sÔÜ—=‘= Ó%ˆÙˆq�!�XÔØ×Ñ  XÕ.r   c                 ó<  ‡— t        d«      d„ «       Št        d¬«      ˆfd„«       }t        j                  dd¬«      j	                  d	d
d«      }t        j
                  |«      } |||«       t        j
                  |«      } ‰||«       | j                  ||«       y )Nz() -> ()c                 ó   — | dz   |d<   y )Nr)  r   r   )r!   rV   s     r   r<   z4TestGUVectorizeJit.test_input_scalar.<locals>.gufuncŽ  s   € à˜‘WˆC�ŠFr   Tr"  c                 ó   •—  ‰| |«       y rw   r   )r!   rV   r<   s     €r   r=  z6TestGUVectorizeJit.test_input_scalar.<locals>.jit_func’  s   ø€ á�1�c�Nr   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Ô	ó	ó 
ð	ô �I‰I�b Ô%×-Ñ-¨a°°AÓ6ˆÜ�m‰m˜AÓˆÙ��CÔÜ—=‘= Ó%ˆÙˆq�(ÔØ×Ñ  XÕ.r   c                 óR  ‡— d}t        |«      d„ «       Št        d¬«      ˆfd„«       }d\  }}t        j                  |dz  «      j	                  ||«      }t        j                  |dz  «      j	                  |||«      }t        j                  |«      }t        j                  |dz  «      j	                  ||«      }| j                  t        «      5 }	t        j                  ||z  «      }
 ||
|||«       d d d «       d	|› d
�}| j                  |t        	j                  «      «       | j                  t        «      5 }	t        j                  ||z  «      j	                  ||«      } |||||«       d d d «       d|› d�}| j                  |t        |	j                  «      «       | j                  t        «      5 }	t        j                  d«      } |||||«       d d d «       d|› d�}| j                  |t        |	j                  «      «       | j                  t        «      5 }	t        j                  |«      } |||||«       d d d «       d|› d
�}| j                  |t        |	j                  «      «       y # 1 sw Y   �Œ„xY w# 1 sw Y   �ŒxY w# 1 sw Y   Œ¸xY w# 1 sw Y   Œ[xY w)Nz (n, m), (n, n, n) -> (m), (n, n)c                 ó   — d|d<   d|d<   y ©Né{   r   iÈ  r   ©r!   r"   rV   r#   s       r   Úbarz9TestGUVectorizeJit.test_gufunc_ndim_mismatch.<locals>.barŸ  ó   € àˆC�‰FØˆC�ŠFr   Tr"  c                 ó   •—  ‰| |||«       y rw   r   ©r!   r"   rV   r#   rT  s       €r   rê   z9TestGUVectorizeJit.test_gufunc_ndim_mismatch.<locals>.foo¤  ó   ø€ á��1�c˜3Õ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_rT  s                  @r   Útest_gufunc_ndim_mismatchz,TestGUVectorizeJit.test_gufunc_ndim_mismatch�  sy  ø€ Ø6ˆ	Ü	�YÓ	ñ	ó 
 ð	ô 
�dÔ	ó	 ó 
ð	 ð ‰ˆˆ1Ü�I‰I�a˜‘d‹O×#Ñ# A qÓ)ˆÜ�I‰I�a˜‘d‹O×#Ñ# A q¨!Ó,ˆÜ�i‰i˜‹lˆÜ�i‰i˜˜1™‹o×%Ñ% a¨Ó+ˆð ×Ñœ{Ó+ð 	!¨vÜ—‘˜1˜q™5Ó!ˆBÙ��A�s˜CÔ ÷	!ð0Ø09¨{¸,ðHˆà�‰�cœ3˜v×/Ñ/Ó0Ô1à×Ñœ{Ó+ð 	!¨vÜ—‘˜1˜q™5Ó!×)Ñ)¨!¨QÓ/ˆBÙ��2�s˜CÔ ÷	!ð0Ø09¨{¸,ðHˆà�‰�cœ3˜v×/Ñ/Ó0Ô1à×Ñœ{Ó+ð 	!¨vÜ—8‘8˜A“;ˆDÙ��1�d˜CÔ ÷	!ð0Ø09¨{¸,ðHˆà�‰�cœ3˜v×/Ñ/Ó0Ô1à×Ñœ{Ó+ð 	!¨vÜ—9‘9˜Q“<ˆDÙ��1�c˜4Ô ÷	!ð0Ø09¨{¸,ðHˆà�‰�cœ3˜v×/Ñ/Ó0Õ1÷5	!ñ 	!ú÷	!ñ 	!ú÷	!ð 	!ú÷	!ð 	!ús0   Ã$I7Ä=4JÆ9!JÈ"!JÉ7JÊJÊJÊJ&c                 óJ  ‡
— t        d«      d„ «       Š
t        d¬«      ˆ
fd„«       }d}d}t        j                  dd|f«      }t        j                  |f«      }t        j                  d	«      }| j                  t        «      5 } ‰
|||«       d d d «       d
}| j                  |t        j                  «      «       | j                  t        «      5 }	 ||||«       d d d «       d}| j                  |t        	j                  «      «       y # 1 sw Y   Œ€xY w# 1 sw Y   Œ=xY w)Nú(n),(n) -> ()c                 ó   — d|d<   y ©NrR  r   r   rÝ   s      r   rT  z>TestGUVectorizeJit.test_mismatch_inner_dimensions.<locals>.barÌ  ó   € àˆC�ŠFr   Tr"  c                 ó   •—  ‰| ||«       y rw   r   ©r!   r"   rV   rT  s      €r   rê   z>TestGUVectorizeJit.test_mismatch_inner_dimensions.<locals>.fooÐ  ó   ø€ á��1�c�Nr   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ê   rY  rZ  r!   r"   rV   Ú	np_raisesr•   rÙ   rT  s             @r   Útest_mismatch_inner_dimensionsz1TestGUVectorizeJit.test_mismatch_inner_dimensionsË  s  ø€ Ü	�_Ó	%ñ	ó 
&ð	ô 
�dÔ	ó	ó 
ð	ð ˆØˆÜ�H‰H�a˜˜A�YÓˆÜ�H‰H�a�T‹NˆÜ�h‰h�vÓˆð ×ÑœzÓ*ð 	¨iÙ��1�cŒN÷	ðMˆà�‰�cœ3˜y×2Ñ2Ó3Ô4à×ÑœzÓ*ð 	¨fÙ��1�cŒN÷	àEˆØ�‰�cœ3˜v×/Ñ/Ó0Õ1÷	ð 	ú÷	ð 	úó   ÂDÃDÄDÄD"c                 óJ  ‡
— t        d«      d„ «       Š
t        d¬«      ˆ
fd„«       }d}d}t        j                  dd|f«      }t        j                  |f«      }t        j                  d	«      }| j                  t        «      5 } ‰
|||«       d d d «       d
}| j                  |t        j                  «      «       | j                  t        «      5 }	 ||||«       d d d «       d}| j                  |t        	j                  «      «       y # 1 sw Y   Œ€xY w# 1 sw Y   Œ=xY w)Nz(n),(m) -> (n)c                 ó   — d|d<   y rc  r   rÝ   s      r   rT  zKTestGUVectorizeJit.test_mismatch_inner_dimensions_input_output.<locals>.barç  rd  r   Tr"  c                 ó   •—  ‰| ||«       y rw   r   rf  s      €r   rê   zKTestGUVectorizeJit.test_mismatch_inner_dimensions_input_output.<locals>.fooë  rg  r   r*   r¾   r.   rh  zzOutput operand 0 has a mismatch in its core dimension 0, with gufunc signature (n),(m) -> (n) (size 3 is different from 2)ri  rj  rm  s             @r   Ú+test_mismatch_inner_dimensions_input_outputz>TestGUVectorizeJit.test_mismatch_inner_dimensions_input_outputæ  s  ø€ Ü	Ð%Ó	&ñ	ó 
'ð	ô 
�dÔ	ó	ó 
ð	ð ˆØˆÜ�H‰H�a˜˜A�YÓˆÜ�H‰H�a�T‹NˆÜ�h‰h�vÓˆð ×ÑœzÓ*ð 	¨iÙ��1�cŒN÷	ðNˆà�‰�cœ3˜y×2Ñ2Ó3Ô4à×ÑœzÓ*ð 	¨fÙ��1�cŒN÷	àEˆØ�‰�cœ3˜v×/Ñ/Ó0Õ1÷	ð 	ú÷	ð 	úrp  c                 óx  ‡— t        d«      d„ «       Št        d¬«      ˆfd„«       }d}d}t        j                  |f«      }t        j                  |f«      }t        j                  |f«      }t        j                  |f«      }| j                  t        «      5 } ‰||||«       d d d «       d}	| j                  |	t        j                  «      «       | j                  t        «      5 }
 |||||«       d d d «       d	}	| j                  |	t        
j                  «      «       y # 1 sw Y   Œ�xY w# 1 sw Y   Œ=xY w)
Nz(n),(m) -> (m),(m)c                 ó   — d|d<   d|d<   y rQ  r   rS  s       r   rT  zETestGUVectorizeJit.test_mismatch_inner_dimensions_output.<locals>.bar  rU  r   Tr"  c                 ó   •—  ‰| |||«       y rw   r   rW  s       €r   rê   zETestGUVectorizeJit.test_mismatch_inner_dimensions_output.<locals>.foo  rX  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)ri  rj  )r;   rê   rY  rZ  r!   r"   rV   r#   rn  r•   rÙ   rT  s              @r   Ú%test_mismatch_inner_dimensions_outputz8TestGUVectorizeJit.test_mismatch_inner_dimensions_output  s#  ø€ Ü	Ð)Ó	*ñ	ó 
+ð	ô 
�dÔ	ó	 ó 
ð	 ð ˆØˆÜ�H‰H�a�T‹NˆÜ�H‰H�a�T‹NˆÜ�h‰h˜�t‹nˆÜ�h‰h˜�t‹nˆð ×ÑœzÓ*ð 	 ¨iÙ��1�c˜3Ô÷	 ðRˆà�‰�cœ3˜y×2Ñ2Ó3Ô4à×ÑœzÓ*ð 	 ¨fÙ��1�c˜3Ô÷	 àEˆØ�‰�cœ3˜v×/Ñ/Ó0Õ1÷	 ð 	 ú÷	 ð 	 ús   ÂD$Ã(D0Ä$D-Ä0D9c                 ó–  ‡— t        d«      d„ «       Št        d¬«      ˆfd„«       }d}t        j                  ddd	|f«      }t        j                  dd	|f«      }t        j                  d
«      }| j                  t        «      5 } ||||«       d d d «       d}| j                  |t        j                  «      «       y # 1 sw Y   Œ1xY w)Nra  c                 ó   — d|d<   y rc  r   rÝ   s      r   rT  z8TestGUVectorizeJit.test_mismatch_loop_shape.<locals>.bar  rd  r   Tr"  c                 ó   •—  ‰| ||«       y rw   r   rf  s      €r   rê   z8TestGUVectorizeJit.test_mismatch_loop_shape.<locals>.foo#  rg  r   r*   r|   r.   r¾   rh  ú&Loop and array shapes are incompatiblerj  )	r;   rê   rY  r!   r"   rV   rÙ   r•   rT  s	           @r   Útest_mismatch_loop_shapez+TestGUVectorizeJit.test_mismatch_loop_shape  sÀ   ø€ Ü	�_Ó	%ñ	ó 
&ð	ô 
�dÔ	ó	ó 
ð	ð ˆÜ�H‰H�a˜˜A˜q�]Ó#ˆÜ�H‰H�a˜˜A�ZÓ ˆÜ�h‰h�vÓˆà×ÑœzÓ*ð 	¨fÙ��1�cŒN÷	à7ˆØ�‰�cœ3˜v×/Ñ/Ó0Õ1÷	ð 	ús   ÂB?Â?Cc                 óŒ  ‡
— t        d«      d„ «       Š
t        ˆ
fd„«       }d}t        j                  d|z  «      j	                  d|f«      }t        j                  |«      }t        j
                  d«      }t        j                  d|f«      }| j                  t        «      5 } ‰
||||«       d d d «       d}| j                  |t        j                  «      «       | j                  t        «      5 }	 |||||«       d d d «       d	}| j                  |t        	j                  «      «       y # 1 sw Y   Œ�xY w# 1 sw Y   Œ=xY w)
Nz(n),(n) -> (), (n)c                 ó¦   — | j                  «       |d<   t        | j                  d   «      D ]#  }||xx   | |   |j                  «       z   z  cc<   Œ% y r   )rÀ   r   r   )r!   r"   rV   r#   r   s        r   r<   z=TestGUVectorizeJit.test_mismatch_loop_shape_2.<locals>.gufunc2  sI   € à—U‘U“WˆC�‰FÜ˜1Ÿ7™7 1™:Ó&ò )�Ø�A“˜!˜A™$ §¡£™.Ñ(”ñ)r   c                 ó   •—  ‰| |||«       y rw   r   )r!   r"   rV   r#   r<   s       €r   r=  z?TestGUVectorizeJit.test_mismatch_loop_shape_2.<locals>.jit_func8  s   ø€ á�1�a˜˜cÕ"r   r*   r+   )r¾   r¾   z§operands 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   rk  r­   r�   rl  r‘   r’   r“   )r;   r=  rY  r!   r"   rV   r#   rn  r•   rÙ   r<   s             @r   Útest_mismatch_loop_shape_2z-TestGUVectorizeJit.test_mismatch_loop_shape_21  s+  ø€ Ü	Ð)Ó	*ñ	)ó 
+ð	)ô
 
ó	#ó 
ð	#ð ˆä�I‰I�a˜‘c‹N×"Ñ" A q 6Ó*ˆÜ�I‰I�a‹LˆÜ�h‰h�t‹nˆÜ�h‰h˜˜1�vÓˆð ×ÑœzÓ*ð 	#¨iÙ�1�a˜˜cÔ"÷	#ðIˆð 	�‰�cœ3˜y×2Ñ2Ó3Ô4à×ÑœzÓ*ð 	%¨fÙ�Q˜˜3 Ô$÷	%à7ˆØ�‰�cœ3˜v×/Ñ/Ó0Õ1÷	#ð 	#ú÷	%ð 	%ús   Â"D.Ã2D:Ä.D7Ä:Ec                 ó:  ‡— t        t        d d  t        t        d d  fgd«      d„ «       Št        ˆfd„«       }t        j
                  j                  d«      }t        d«      D ]7  }|j                  d«      }t	        j                  |d    dd¬	«      } ||d
«       Œ9 y )Nrg   c                  ó   — y rw   r   )r!   r   rV   s      r   Úguvez1TestGUVectorizeJit.test_issue_10287.<locals>.guveQ  rŽ   r   c                 óF   •— t        j                  | «      } ‰| ||«       |S rw   )r5   rb   )r!   r   rV   r„  s      €r   Ú	njit_guvez6TestGUVectorizeJit.test_issue_10287.<locals>.njit_guveV  s!   ø€ ä—-‘- Ó"ˆCÙ��A�sŒOØˆJr   éE   i N  éA   é‚   r   r]   r.   )	r	   r   r   r   r5   ÚrandomÚdefault_rngr   Úrepeat)r;   r†  ÚrngÚ_r!   r"   r„  s         @r   Útest_issue_10287z#TestGUVectorizeJit.test_issue_10287P  s˜   ø€ Ü	”w™q�z¤5¬'±!¨*Ð5Ð6¸Ó	Fñ	ó 
Gð	ô 
ó	ó 
ð	ô �i‰i×#Ñ# BÓ'ˆä�u“ò 	ˆAØ—
‘
˜2“ˆAÜ—	‘	˜!˜D™' 3¨QÔ/ˆAÙ�a˜�Oñ	r   N)rn   rm   ro   rD   r*  r0  r3  r7  ÚunittestÚexpectedFailurer;  r>  rB  rF  rJ  rN  r_  ro  rt  rx  r}  r�  r�  r   r   r   r   r   %  ss   „ Ø€Fò	,ò#ò#ò#ð ×Ññ#ó ð#ò	Bò	&ò0ò/ò$/ò",2ò\2ò62ò62ò:2ò&2ó>r   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™     sÅ   ðÛ Û ã ç H× HÑ HÝ )Ý &ß 9ò-òôFA� (ô FAôRB.˜/¨8ô B.ôJ˜ô ô
`;˜¨ô `;ôFZ0˜O¨Xô Z0ôzÐ$9ô ô
o-˜o¨xô o-ôd}˜¨(ô }ð@
 ˆzÒØ€H‡M�M…Oð r   