§
    ƒÛg¬6  ã                   ó$  — d dl Z d dlZd dlmZ d dlmZmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlmZ d dlZd„ Zd	„ Zd
„ Zd„ Z ed¬¦  «        d„ ¦   «         Z edgd¬¦  «        d„ ¦   «         Zd„ Zd„ Z G d„ d¦  «        Zd„ Zd„ Z G d„ de¦  «        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'e(d(k    r ej)        ¦   «          dS dS ))é    N)ÚGUFuncBuilder)Ú	vectorizeÚguvectorize)ÚPyUFunc_One)ÚDUFunc)ÚtagÚTestCase)Úconfigc                 ó   — | |z   S )úAn addition© ©ÚaÚbs     ú]/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyÚaddr      ó   € àˆq‰5€Ló    c                 ó   — | |k    S ©Nr   r   s     r   Úequalsr      s   € Ø�Š6€Mr   c                 ó   — | |z  S )zA multiplicationr   r   s     r   Úmulr      r   r   c                 ó–   — |j         \  }}t          |¦  «        D ].}t          |¦  «        D ]}| ||f         |||f         z   |||f<   ŒŒ/dS )úA generalized additionN)ÚshapeÚrange©r   r   ÚcÚxÚyÚiÚjs          r   Úguaddr$      sj   € àŒ7�D€A€qÝ�1‰XŒXð (ð (ˆÝ�q‘”ð 	(ð 	(ˆAØ˜˜1˜”g  ! Q $¤Ñ'ˆAˆa�ˆd‰GˆGð	(ð(ð (r   T©Únopythonc                 ó   — | |z   S r   r   r   s     r   Úinnerr(       r   r   úint64(int64, int64)c                 ó   — | |z   S r   r   r   s     r   Úinner_explicitr+   $   r   r   c                 ó"   — t          | |¦  «        S r   )r(   r   s     r   Úouterr-   (   s   € Ý��A‰;Œ;Ðr   c                 ó"   — t          | |¦  «        S r   )r+   r   s     r   Úouter_explicitr/   +   s   € Ý˜!˜QÑÔÐr   c                   ó   — e Zd ZdS )ÚDummyN©Ú__name__Ú
__module__Ú__qualname__r   r   r   r1   r1   /   s   € € € € € € € r   r1   c                 ó²   — t          ¦   «          |j        \  }}t          |¦  «        D ].}t          |¦  «        D ]}| ||f         |||f         z   |||f<   ŒŒ/d S r   ©r1   r   r   r   s          r   Ú	guadd_objr8   2   ss   € Ý	�G„G€GØŒ7�D€A€qÝ�1‰XŒXð (ð (ˆÝ�q‘”ð 	(ð 	(ˆAØ˜˜1˜”g  ! Q $¤Ñ'ˆAˆa�ˆd‰GˆGð	(ð(ð (r   c                 ó¢   — t          ¦   «          |j        \  }}t          |¦  «        D ]&}t          |¦  «        D ]}| ||f         |z   |||f<   ŒŒ'd S r   r7   r   s          r   Úguadd_scalar_objr:   9   sj   € Ý	�G„G€GØŒ7�D€A€qÝ�1‰XŒXð "ð "ˆÝ�q‘”ð 	"ð 	"ˆAØ˜˜1˜”g ‘kˆAˆa�ˆd‰GˆGð	"ð"ð "r   c                   ó   — e Zd ZdS )ÚMyExceptionNr2   r   r   r   r<   r<   A   s   € € € € € Ø€Dr   r<   c                 ó   — t           ‚r   )r<   )r   r   r   s      r   Úguerrorr>   E   s   € Ý
Ðr   c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestUfuncBuildingc                 ó<  ‡ ‡— t          t          ¦  «        }|                     d¦  «        }‰                      |j        ¦  «         |                     d¦  «        }‰                      |j        ¦  «         |                     ¦   «         Šˆ ˆfd„}t          j        dd¬¦  «        } ||¦  «         |d d d…         } ||¦  «         |                     d¦  «        } ||¦  «         ‰                      ‰j	        d	¦  «         ‰  
                    d
‰j        ¦  «         d S )Núint32(int32, int32)r)   c                 ó’   •—  ‰| | ¦  «        }‰                      | | z   |¦  «         ‰                     |j        | j        ¦  «         d S r   ©ÚassertPreciseEqualÚassertEqualÚdtype©r   r   ÚselfÚufuncs     €€r   Úcheckz1TestUfuncBuilding.test_basic_ufunc.<locals>.checkS   óL   ø€ Ø��a˜‘”ˆAØ×#Ò# A¨¡E¨1Ñ-Ô-Ð-Ø×Ò˜QœW a¤gÑ.Ô.Ð.Ð.Ð.r   é   Úint32©rG   é   ©rP   é   r   r   )ÚUFuncBuilderr   ÚassertFalseÚ
objectmodeÚbuild_ufuncÚnpÚarangeÚreshaperF   r3   ÚassertInÚ__doc__©rI   ÚufbÚcresrK   r   rJ   s   `    @r   Útest_basic_ufuncz"TestUfuncBuilding.test_basic_ufuncK   s!  øø€ Ý�3ÑÔˆØ�wŠwÐ,Ñ-Ô-ˆØ×Ò˜œÑ)Ô)Ð)Ø�wŠwÐ,Ñ-Ô-ˆØ×Ò˜œÑ)Ô)Ð)Ø—’Ñ!Ô!ˆð	/ð 	/ð 	/ð 	/ð 	/ð 	/õ
 ŒI�b Ð(Ñ(Ô(ˆØˆˆa‰Œˆàˆcˆc�ˆcŒFˆØˆˆa‰ŒˆØ�IŠI�fÑÔˆØˆˆa‰Œˆð 	×Ò˜œ¨Ñ/Ô/Ð/Ø�Š�m U¤]Ñ3Ô3Ð3Ð3Ð3r   c                 óx  ‡ ‡— t          t          ¦  «        }|                     d¦  «        }‰                      |j        ¦  «         |                     ¦   «         Šˆ ˆfd„}t          j        dd¬¦  «        dz   } ||¦  «         |d d d…         } ||¦  «         |                     d¦  «        } ||¦  «         d S )	Nzcomplex64(complex64, complex64)c                 ó’   •—  ‰| | ¦  «        }‰                      | | z   |¦  «         ‰                     |j        | j        ¦  «         d S r   rD   rH   s     €€r   rK   z2TestUfuncBuilding.test_ufunc_struct.<locals>.checkj   rL   r   rM   Ú	complex64rO   ù              ð?rP   rQ   )rS   r   rT   rU   rV   rW   rX   rY   r\   s   `    @r   Útest_ufunc_structz#TestUfuncBuilding.test_ufunc_structd   sÌ   øø€ Ý�3ÑÔˆØ�wŠwÐ8Ñ9Ô9ˆØ×Ò˜œÑ)Ô)Ð)Ø—’Ñ!Ô!ˆð	/ð 	/ð 	/ð 	/ð 	/ð 	/õ
 ŒI�b Ð,Ñ,Ô,¨rÑ1ˆØˆˆa‰Œˆàˆcˆc�ˆcŒFˆØˆˆa‰ŒˆØ�IŠI�fÑÔˆØˆˆa‰Œˆˆˆr   c                 ó2  — t          t          ddi¬¦  «        }|                     d¦  «        }|                      |j        ¦  «         |                     ¦   «         }t          j        dd¬¦  «        } |||¦  «        }|                      ||z   |¦  «         d S )NÚforceobjT©ÚtargetoptionsrB   é
   rN   rO   )rS   r   Ú
assertTruerU   rV   rW   rX   rE   )rI   r]   r^   rJ   r   r   s         r   Útest_ufunc_forceobjz%TestUfuncBuilding.test_ufunc_forceobjw   s‘   € Ý�3¨z¸4Ð.@ÐAÑAÔAˆØ�wŠwÐ,Ñ-Ô-ˆØ�Š˜œÑ(Ô(Ð(Ø—’Ñ!Ô!ˆåŒI�b Ð(Ñ(Ô(ˆØˆE�!�Q‰KŒKˆØ×Ò  A¡ qÑ)Ô)Ð)Ð)Ð)r   c                 óÈ   — t          t          ddi¬¦  «        }|                     d¦  «         |                     ¦   «         }|                       |dd¦  «        d¦  «         dS )	zA
        Check nested call to an implicitly-typed ufunc.
        r&   Trg   ú(int64, int64)éÿÿÿÿrR   rP   N)rS   r-   r   rV   rF   ©rI   ÚbuilderrJ   s      r   Útest_nested_callz"TestUfuncBuilding.test_nested_call�   so   € õ �uØ.8¸$Ð-?ðAñ Aô Aˆà�ŠÐ$Ñ%Ô%Ð%Ø×#Ò#Ñ%Ô%ˆØ×Ò˜˜˜r 1™œ qÑ)Ô)Ð)Ð)Ð)r   c                 óÈ   — t          t          ddi¬¦  «        }|                     d¦  «         |                     ¦   «         }|                       |dd¦  «        d¦  «         dS )	zA
        Check nested call to an explicitly-typed ufunc.
        r&   Trg   rm   rn   rR   rP   N)rS   r/   r   rV   rF   ro   s      r   Útest_nested_call_explicitz+TestUfuncBuilding.test_nested_call_explicit‹   so   € õ �~Ø.8¸$Ð-?ðAñ Aô Aˆà�ŠÐ$Ñ%Ô%Ð%Ø×#Ò#Ñ%Ô%ˆØ×Ò˜˜˜r 1™œ qÑ)Ô)Ð)Ð)Ð)r   N)r3   r4   r5   r_   rd   rk   rq   rs   r   r   r   r@   r@   I   s_   € € € € € ð4ð 4ð 4ð2ð ð ð&*ð *ð *ð*ð *ð *ð*ð *ð *ð *ð *r   r@   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚTestUfuncBuildingJitDisabledc                 ó@   — t           j        | _        dt           _        d S ©NF©r
   ÚDISABLE_JITÚold_disable_jit©rI   s    r   ÚsetUpz"TestUfuncBuildingJitDisabled.setUp˜   ó   € Ý%Ô1ˆÔØ"�ÔÐÐr   c                 ó(   — | j         t          _        d S r   ©rz   r
   ry   r{   s    r   ÚtearDownz%TestUfuncBuildingJitDisabled.tearDownœ   ó   € Ø!Ô1�ÔÐÐr   N©r3   r4   r5   r|   r€   r   r   r   ru   ru   –   ó2   € € € € € ð#ð #ð #ð2ð 2ð 2ð 2ð 2r   ru   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚTestGUfuncBuildingc                 ó  — t          t          d¦  «        }|                     d¦  «        }|                      |j        ¦  «         |                     ¦   «         }t          j        dd¬¦  «                             dd¦  «        } |||¦  «        }|  	                    ||z   |¦  «         |  
                    |j        t          j        d¦  «        ¦  «         |  
                    |j        d¦  «         |                      d	|j        ¦  «         d S )
Nú(x, y),(x, y)->(x, y)z(void(int32[:,:], int32[:,:], int32[:,:])ri   rN   rO   rP   é   r$   r   )r   r$   r   rT   rU   rV   rW   rX   rY   rE   rF   rG   r3   rZ   r[   ©rI   Úgufbr^   rJ   r   r   s         r   Útest_basic_gufuncz$TestGUfuncBuilding.test_basic_gufunc¢   sñ   € Ý�UÐ$;Ñ<Ô<ˆØ�xŠxÐBÑCÔCˆØ×Ò˜œÑ)Ô)Ð)Ø× Ò Ñ"Ô"ˆåŒI�b Ð(Ñ(Ô(×0Ò0°°AÑ6Ô6ˆØˆE�!�Q‰KŒKˆà×Ò  A¡ qÑ)Ô)Ð)Ø×Ò˜œ¥"¤(¨7Ñ"3Ô"3Ñ4Ô4Ð4ð 	×Ò˜œ¨Ñ1Ô1Ð1Ø�ŠÐ.°´Ñ>Ô>Ð>Ð>Ð>r   c                 óZ  — t          t          d¦  «        }|                     d¦  «        }|                      |j        ¦  «         |                     ¦   «         }t          j        dd¬¦  «                             dd¦  «        dz   } |||¦  «        }|  	                    ||z   |¦  «         d S )	Nr‡   ú4void(complex64[:,:], complex64[:,:], complex64[:,:])ri   rb   rO   rP   rˆ   rc   )
r   r$   r   rT   rU   rV   rW   rX   rY   rE   r‰   s         r   Útest_gufunc_structz%TestGUfuncBuilding.test_gufunc_struct²   s£   € Ý�UÐ$;Ñ<Ô<ˆØ�xŠxÐNÑOÔOˆØ×Ò˜œÑ)Ô)Ð)Ø× Ò Ñ"Ô"ˆåŒI�b Ð,Ñ,Ô,×4Ò4°Q¸Ñ:Ô:¸RÑ?ˆØˆE�!�Q‰KŒKˆà×Ò  A¡ qÑ)Ô)Ð)Ð)Ð)r   c                 óz  — t          t          dt          d¬¦  «        ¬¦  «        }|                     d¦  «        }|                      |j        ¦  «         |                     ¦   «         }t          j        dd¬¦  «         	                    d	d
¦  «        dz   } |||¦  «        }|  
                    ||z   |¦  «         d S )Nr‡   T©rf   rg   r�   ri   rb   rO   rP   rˆ   rc   )r   r$   Údictr   rj   rU   rV   rW   rX   rY   rE   r‰   s         r   Útest_gufunc_struct_forceobjz.TestGUfuncBuilding.test_gufunc_struct_forceobj½   sÁ   € Ý�UÐ$;Ý+/¸Ð+>Ñ+>Ô+>ð@ñ @ô @ˆà�xŠxð ñ ô ˆà�Š˜œÑ(Ô(Ð(Ø× Ò Ñ"Ô"ˆåŒI�b Ð,Ñ,Ô,×4Ò4°Q¸Ñ:Ô:¸RÑ?ˆØˆE�!�Q‰KŒKˆà×Ò  A¡ qÑ)Ô)Ð)Ð)Ð)r   N)r3   r4   r5   r‹   rŽ   r’   r   r   r   r…   r…       sA   € € € € € ð?ð ?ð ?ð 	*ð 	*ð 	*ð*ð *ð *ð *ð *r   r…   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚTestGUfuncBuildingJitDisabledc                 ó@   — t           j        | _        dt           _        d S rw   rx   r{   s    r   r|   z#TestGUfuncBuildingJitDisabled.setUpÍ   r}   r   c                 ó(   — | j         t          _        d S r   r   r{   s    r   r€   z&TestGUfuncBuildingJitDisabled.tearDownÑ   r�   r   Nr‚   r   r   r   r”   r”   Ë   rƒ   r   r”   c                   ój   — e Zd Zg 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d„ Zd„ ZdS )ÚTestVectorizeDecor)r   é   NÚreorderablec                 ó¸   —  t          dg¦  «        t          ¦  «        }t          j        dd¬¦  «        } |||¦  «        }|                      ||z   |¦  «         d S )NrB   ri   rN   rO   ©r   r   rW   rX   rE   ©rI   rJ   r   r   s       r   Útest_vectorizez!TestVectorizeDecor.test_vectorizeÙ   s`   € Ø2•	Ð0Ð1Ñ2Ô2µ3Ñ7Ô7ˆÝŒI�b Ð(Ñ(Ô(ˆØˆE�!�Q‰KŒKˆØ×Ò  A¡ qÑ)Ô)Ð)Ð)Ð)r   c                 ó¼   —  t          dgd¬¦  «        t          ¦  «        }t          j        dd¬¦  «        } |||¦  «        }|                      ||z   |¦  «         d S )NrB   Tr�   ri   rN   rO   rœ   r�   s       r   Útest_vectorize_objmodez)TestVectorizeDecor.test_vectorize_objmodeß   se   € ØA•	Ð0Ð1¸DÐAÑAÔAÅ#ÑFÔFˆÝŒI�b Ð(Ñ(Ô(ˆØˆE�!�Q‰KŒKˆØ×Ò  A¡ qÑ)Ô)Ð)Ð)Ð)r   c                 óø   —  t          dg¦  «        t          ¦  «        }t          j        dd¬¦  «        } |||¦  «        }|                      |t          j        |j        t          j        ¬¦  «        ¦  «         d S )Nzbool_(int32, int32)ri   rN   rO   )r   r   rW   rX   rE   Úonesr   Úbool_)rI   rJ   r   Úrs       r   Útest_vectorize_bool_returnz-TestVectorizeDecor.test_vectorize_bool_returnå   so   € Ø2•	Ð0Ð1Ñ2Ô2µ6Ñ:Ô:ˆÝŒI�b Ð(Ñ(Ô(ˆØˆE�!�A‰JŒJˆØ×Ò ¥2¤7¨1¬7½"¼(Ð#CÑ#CÔ#CÑDÔDÐDÐDÐDr   c                 ód  — d}| j         D ]G} t          |g|¬¦  «        t          ¦  «        }|dk    rd n|}|                      |j        |¦  «         ŒH t          |g¦  «        t          ¦  «        }|                      |j        d ¦  «         |                      t          ¦  «        5   t          |gd¬¦  «        t          ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      t          ¦  «        5   t          |gd¬¦  «        t          ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrB   )Úidentityrš   ÚnonerP   )Ú_supported_identitiesr   r   rF   r§   ÚassertIsÚassertRaisesÚ
ValueError)rI   Úsigr§   rJ   Úexpecteds        r   Útest_vectorize_identityz*TestVectorizeDecor.test_vectorize_identityë   s³  € Ø#ˆØÔ2ð 	7ð 	7ˆHØ7•I˜s˜e¨hÐ7Ñ7Ô7½Ñ<Ô<ˆEØ'¨=Ò8Ð8�t�t¸hˆHØ×Ò˜Uœ^¨XÑ6Ô6Ð6Ð6à •	˜3˜%Ñ Ô ¥Ñ%Ô%ˆØ�Š�e”n dÑ+Ô+Ð+à×Ò�zÑ*Ô*ð 	3ð 	3Ø-�I�s�e fÐ-Ñ-Ô-­cÑ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3à×Ò�zÑ*Ô*ð 	.ð 	.Ø(�I�s�e aÐ(Ñ(Ô(­Ñ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 	.ð 	.s$   Â%!CÃCÃCÃ7!D%Ä%D)Ä,D)c                 óh  — t          j        ddd¦  «        }t          j        ddd¦  «        }t          t          ¦  «        }|                       |||¦  «        ||z   ¦  «         t          t          ¦  «        }t          j        d¦  «        } ||||¦  «         |                      |||z   ¦  «         d S )Nr   r™   ri   rP   )rW   Úlinspacer   r   rE   Úempty)rI   r   r   rJ   Úufunc2r   s         r   Útest_vectorize_no_argsz)TestVectorizeDecor.test_vectorize_no_argsú   s    € ÝŒK˜˜!˜BÑÔˆÝŒK˜˜!˜BÑÔˆÝ�#‘”ˆØ×Ò   a¨¡
¤
¨A°©EÑ2Ô2Ð2Ý�3‘”ˆÝŒH�R‰LŒLˆØˆˆq�!�Q‰ŒˆØ×Ò  1 q¡5Ñ)Ô)Ð)Ð)Ð)r   c                 óì   — t          j        ddd¦  «        }t          j        ddd¦  «        } t          t          d¬¦  «        t          ¦  «        }|                       |||¦  «        ||z  ¦  «         d S )Nr   r™   ri   rP   T)r§   r&   )rW   r±   r   r   r   rE   )rI   r   r   rJ   s       r   Útest_vectorize_only_kwsz*TestVectorizeDecor.test_vectorize_only_kws  sn   € ÝŒK˜˜!˜BÑÔˆÝŒK˜˜!˜BÑÔˆØ>•	¥;¸Ð>Ñ>Ô>½sÑCÔCˆØ×Ò   a¨¡
¤
¨A°©EÑ2Ô2Ð2Ð2Ð2r   c                 óÐ   ‡ — ˆ fd„} t          dgd¬¦  «        t          ¦  «        } ||¦  «          t          d¬¦  «        t          ¦  «        } ||¦  «          ||¦  «         dS )zO
        Passing the output array as a keyword argument (issue #1867).
        c                 óZ  •— t          j        ddd¬¦  «        }t          j        |¦  «        } | |||¬¦  «        }‰                     ||¦  «         ‰                     |||z   ¦  «         ‰                     t          ¦  «        5   | |||¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nri   é   rN   rO   )Úout)Úzzz)rW   rX   Ú
zeros_likerª   rE   r«   Ú	TypeError)rJ   r   rº   ÚgotrI   s       €r   rK   z=TestVectorizeDecor.test_vectorize_output_kwarg.<locals>.check  sû   ø€ Ý”	˜"˜b¨Ð0Ñ0Ô0ˆAÝ”- Ñ"Ô"ˆCØ�%˜˜1 #Ð&Ñ&Ô&ˆCØ�MŠM˜#˜sÑ#Ô#Ð#Ø×#Ò# C¨¨Q©Ñ/Ô/Ð/Ø×"Ò"¥9Ñ-Ô-ð %ð %Ø��a˜ Ð$Ñ$Ô$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð %ð %s   ÂB Â B$Â'B$rB   Tr%   N)r   r   )rI   rK   rJ   s   `  r   Útest_vectorize_output_kwargz.TestVectorizeDecor.test_vectorize_output_kwarg
  s„   ø€ ð	%ð 	%ð 	%ð 	%ð 	%ð B•	Ð0Ð1¸DÐAÑAÔAÅ#ÑFÔFˆØˆˆe‰Œˆà(•	 4Ð(Ñ(Ô(­Ñ-Ô-ˆØˆˆe‰ŒˆØˆˆe‰Œˆˆˆr   c                 óâ   —  t          dgd¦  «        t          ¦  «        }t          j        dd¬¦  «                             dd¦  «        } |||¦  «        }|                      ||z   |¦  «         d S ©Nú$(int32[:,:], int32[:,:], int32[:,:])ú(x,y),(x,y)->(x,y)ri   rN   rO   rP   rˆ   )r   r$   rW   rX   rY   rE   r�   s       r   Útest_guvectorizez#TestVectorizeDecor.test_guvectorize  s~   € ð2•ÐCÐDØ0ñ2ô 2Ý27ñ9ô 9ˆåŒI�b Ð(Ñ(Ô(×0Ò0°°AÑ6Ô6ˆØˆE�!�Q‰KŒKˆØ×Ò  A¡ qÑ)Ô)Ð)Ð)Ð)r   c                 ó  —  t          dgd¦  «        t          ¦  «        }t          j        dd¬¦  «                             dd¦  «        }t          j        |¦  «        } ||||¦  «         |                      ||z   |¦  «         d S )NrÂ   z(x,y),(x,y),(x,y)ri   rN   rO   rP   rˆ   )r   r$   rW   rX   rY   r¼   rE   )rI   rJ   r   rº   s       r   Útest_guvectorize_no_outputz-TestVectorizeDecor.test_guvectorize_no_output&  s’   € ð1•ÐCÐDØ/ñ1ô 1Ý16ñ8ô 8ˆåŒI�b Ð(Ñ(Ô(×0Ò0°°AÑ6Ô6ˆÝŒm˜AÑÔˆØˆˆa��CÑÔÐØ×Ò  A¡ sÑ+Ô+Ð+Ð+Ð+r   c                 óâ   —  t          dgd¦  «        t          ¦  «        }t          j        dd¬¦  «                             dd¦  «        } |||¦  «        }|                      ||z   |¦  «         d S rÁ   )r   r8   rW   rX   rY   rE   r�   s       r   Útest_guvectorize_objectmodez.TestVectorizeDecor.test_guvectorize_objectmode.  s~   € ð2•ÐCÐDØ0ñ2ô 2Ý2;ñ=ô =ˆåŒI�b Ð(Ñ(Ô(×0Ò0°°AÑ6Ô6ˆØˆE�!�Q‰KŒKˆØ×Ò  A¡ qÑ)Ô)Ð)Ð)Ð)r   c                 óâ   —  t          dgd¦  «        t          ¦  «        }t          j        dd¬¦  «                             dd¦  «        } ||d¦  «        }|                      |dz   |¦  «         d	S )
zA
        Test passing of scalars to object mode gufuncs.
        z(int32[:,:], int32, int32[:,:])z(x,y),()->(x,y)ri   rN   rO   rP   rˆ   rR   N)r   r:   rW   rX   rY   rE   r�   s       r   Ú"test_guvectorize_scalar_objectmodez5TestVectorizeDecor.test_guvectorize_scalar_objectmode5  s€   € ð/•Ð>Ð?Ø-ñ/ô /Ý/?ñAô AˆåŒI�b Ð(Ñ(Ô(×0Ò0°°AÑ6Ô6ˆØˆE�!�Q‰KŒKˆØ×Ò  A¡ qÑ)Ô)Ð)Ð)Ð)r   c                 ó  —  t          dgdd¬¦  «        t          ¦  «        }t          j        dd¬¦  «                             dd	¦  «        }|                      t          ¦  «        5   |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
NrÂ   rÃ   Tr�   ri   rN   rO   rP   rˆ   )r   r>   rW   rX   rY   r«   r<   )rI   rJ   r   s      r   Ú$test_guvectorize_error_in_objectmodez7TestVectorizeDecor.test_guvectorize_error_in_objectmode?  sã   € ðA•ÐCÐDØ0¸4ðAñ Aô AÝAHñJô JˆåŒI�b Ð(Ñ(Ô(×0Ò0°°AÑ6Ô6ˆØ×Ò�{Ñ+Ô+ð 	ð 	ØˆE�!�Q‰KŒKˆKð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á&B Â BÂBc                 ó8  — dgdf}| j         D ]A} t          |d|iŽt          ¦  «        }|dk    rd n|}|                      |j        |¦  «         ŒB t          |Ž t          ¦  «        }|                      |j        d ¦  «         |                      t          ¦  «        5   t          |ddiŽt          ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      t          ¦  «        5   t          |ddiŽt          ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrÂ   rÃ   r§   rš   r¨   rP   )	r©   r   r$   rF   r§   rª   r«   r¬   r   )rI   Úargsr§   rJ   r®   s        r   Útest_guvectorize_identityz,TestVectorizeDecor.test_guvectorize_identityF  s±  € Ø7Ð8Ð:NÐOˆØÔ2ð 	7ð 	7ˆHØ9•K Ð9°Ð9Ð9½%Ñ@Ô@ˆEØ'¨=Ò8Ð8�t�t¸hˆHØ×Ò˜Uœ^¨XÑ6Ô6Ð6Ð6à"•˜TÐ"¥5Ñ)Ô)ˆØ�Š�e”n dÑ+Ô+Ð+à×Ò�zÑ*Ô*ð 	5ð 	5Ø/�K˜Ð/¨Ð/Ð/µÑ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5à×Ò�zÑ*Ô*ð 	0ð 	0Ø*�K˜Ð*¨Ð*Ð*­3Ñ/Ô/Ð/ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð 	0ð 	0s$   ÂCÃCÃ	CÃ'DÄDÄDc                 óŽ  — dg}|                       t          ¦  «        5 } t          |d¦  «        t          ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         |                       t          ¦  «        5 } t          |d¦  «        t          ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      t          |j        ¦  «        d¦  «         |                       t          ¦  «        5 } t          |d¦  «        t          ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrÂ   z)-:zbad token in signaturez(x,y),(x,y)->(x,z,v)zundefined output symbols: v,zz(x,y),(x,y),(x,y)->)	r«   r¬   r   r$   rZ   ÚstrÚ	exceptionÚ	NameErrorrF   )rI   ÚsigsÚraisess      r   Útest_guvectorize_invalid_layoutz2TestVectorizeDecor.test_guvectorize_invalid_layoutU  så  € Ø6Ð7ˆà×Ò�zÑ*Ô*ð 	,¨fØ$�K˜˜eÑ$Ô$¥UÑ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,à�ŠÐ.µ°FÔ4DÑ0EÔ0EÑFÔFÐFà×Ò�yÑ)Ô)ð 	=¨VØ5�K˜Ð4Ñ5Ô5µeÑ<Ô<Ð<ð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=à×Ò�˜VÔ-Ñ.Ô.Ø8ñ	:ô 	:ð 	:ð ×Ò�zÑ*Ô*ð 	<¨fØ4�K˜Ð3Ñ4Ô4µUÑ;Ô;Ð;ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<ð 	<ð 	<s5   žA	Á	AÁAÂCÃCÃCÄD:Ä:D>ÅD>N)r3   r4   r5   r©   rž   r    r¥   r¯   r´   r¶   r¿   rÄ   rÆ   rÈ   rÊ   rÌ   rÏ   rÖ   r   r   r   r˜   r˜   Õ   sõ   € € € € € à7Ð7Ð7Ðð*ð *ð *ð*ð *ð *ðEð Eð Eð.ð .ð .ð*ð *ð *ð3ð 3ð 3ðð ð ð**ð *ð *ð,ð ,ð ,ð*ð *ð *ð*ð *ð *ðð ð ð0ð 0ð 0ð<ð <ð <ð <ð <r   r˜   c                   ó   — e Zd Zd„ ZdS )ÚTestNEP13WithoutSignaturec                 óT  ‡	— t          d¬¦  «        d„ ¦   «         } G ˆ	fd„d¦  «        Š	t          j        g d¢t          j        ¬¦  «        }t          j        g d¢t          j        ¬¦  «        }t          j        g d	¢t          j        ¬¦  «        } ||||¦  «        }|                      |t          j        ¦  «         |                      |                     ¦   «         g d
¢¦  «          | ‰	|¦  «        ||¦  «        }|                      |‰	¦  «         |                      |                     ¦   «         g d
¢¦  «          || ‰	|¦  «        |¦  «        }|                      |‰	¦  «         |                      |                     ¦   «         g d
¢¦  «          ||| ‰	|¦  «        ¦  «        }|                      |‰	¦  «         |                      |                     ¦   «         g d
¢¦  «         t          j        g d¢t          j        ¬¦  «        }t          j        g d¢t          j        ¬¦  «        }t          j        g d¢t          j        ¬¦  «        } ||||¦  «        }|                      |t          j        ¦  «         |                      |                     ¦   «         g d¢¦  «          | ‰	|¦  «        ||¦  «        }|                      |‰	¦  «         |                      |                     ¦   «         g d¢¦  «          || ‰	|¦  «        |¦  «        }|                      |‰	¦  «         |                      |                     ¦   «         g d¢¦  «          ||| ‰	|¦  «        ¦  «        }|                      |‰	¦  «         |                      |                     ¦   «         g d¢¦  «         d S )NTr%   c                 ó   — d| z  d|z  z   |z   S )Néd   ri   r   )ÚhundredsÚtensr¢   s      r   Ú	new_ufuncz5TestNEP13WithoutSignature.test_all.<locals>.new_ufunck  s   € à�x‘< " T¡'Ñ)¨DÑ0Ð0r   c                   ó,   •— e Zd Zd„ Zd„ Zd„ Zˆ fd„ZdS )ú6TestNEP13WithoutSignature.test_all.<locals>.NEP13Arrayc                 ó   — || _         d S r   ©Úarray)rI   rã   s     r   Ú__init__z?TestNEP13WithoutSignature.test_all.<locals>.NEP13Array.__init__q  s   € Ø"�”
�
�
r   c                 ó   — | j         S r   râ   r{   s    r   Ú	__array__z@TestNEP13WithoutSignature.test_all.<locals>.NEP13Array.__array__t  s
   € Ø”zÐ!r   c                 ó4   — | j                              ¦   «         S r   )rã   Útolistr{   s    r   rè   z=TestNEP13WithoutSignature.test_all.<locals>.NEP13Array.tolistw  s   € Ø”z×(Ò(Ñ*Ô*Ð*r   c                 óT   •— |dk    rt           S  ‰ |d„ |D ¦   «         i |¤Ž¦  «        S )NÚ__call__c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r   )rW   Úasarray)Ú.0r    s     r   ú
<listcomp>zZTestNEP13WithoutSignature.test_all.<locals>.NEP13Array.__array_ufunc__.<locals>.<listcomp>~  s    € Ð)FÐ)FÐ)F¸A­"¬*°Q©-¬-Ð)FÐ)FÐ)Fr   )ÚNotImplemented)rI   rJ   ÚmethodrÎ   ÚkwargsÚ
NEP13Arrays        €r   Ú__array_ufunc__zFTestNEP13WithoutSignature.test_all.<locals>.NEP13Array.__array_ufunc__z  sB   ø€ Ø˜ZÒ'Ð'Ý)Ð)à!�z % %Ð)FÐ)FÀÐ)FÑ)FÔ)FÐ"QÈ&Ð"QÐ"QÑRÔRÐRr   N)r3   r4   r5   rä   ræ   rè   ró   )rò   s   €r   rò   rà   p  sb   ø€ € € € € ð#ð #ð #ð"ð "ð "ð+ð +ð +ðSð Sð Sð Sð Sð Sð Sr   rò   )r™   rP   rR   rO   )é   rˆ   é   )é   é   é	   )é“   i  iq  )gš™™™™™ñ?gš™™™™™@gffffff
@)gš™™™™™@g      @gffffff@)gÍÌÌÌÌÌ@gš™™™™™!@gÍÌÌÌÌÌ#@)gfffff6d@gÍÌÌÌÌ¼q@gfffff^y@)	r   rW   rã   Úint64ÚassertIsInstanceÚndarrayrF   rè   Úfloat64)
rI   rÞ   r   r   r   Úall_npÚnep13_1Únep13_2Únep13_3rò   s
            @r   Útest_allz"TestNEP13WithoutSignature.test_allh  s°  ø€ õ 
˜DÐ	!Ñ	!Ô	!ð	1ð 	1ñ 
"Ô	!ð	1ð	Sð 	Sð 	Sð 	Sð 	Sð 	Sð 	Sñ 	Sô 	Sð 	Sõ" ŒH�Y�Y�Y¥b¤hÐ/Ñ/Ô/ˆÝŒH�Y�Y�Y¥b¤hÐ/Ñ/Ô/ˆÝŒH�Y�Y�Y¥b¤hÐ/Ñ/Ô/ˆà�˜1˜a Ñ#Ô#ˆØ×Ò˜f¥b¤jÑ1Ô1Ð1Ø×Ò˜Ÿš™œ¨/¨/¨/Ñ:Ô:Ð:à�)˜J˜J q™MœM¨1¨aÑ0Ô0ˆØ×Ò˜g zÑ2Ô2Ð2Ø×Ò˜ŸšÑ)Ô)¨?¨?¨?Ñ;Ô;Ð;à�)˜A˜z˜z¨!™}œ}¨aÑ0Ô0ˆØ×Ò˜g zÑ2Ô2Ð2Ø×Ò˜ŸšÑ)Ô)¨?¨?¨?Ñ;Ô;Ð;à�)˜A˜q * *¨Q¡-¤-Ñ0Ô0ˆØ×Ò˜g zÑ2Ô2Ð2Ø×Ò˜ŸšÑ)Ô)¨?¨?¨?Ñ;Ô;Ð;õ ŒH�_�_�_­B¬JÐ7Ñ7Ô7ˆÝŒH�_�_�_­B¬JÐ7Ñ7Ô7ˆÝŒH�_�_�_­B¬JÐ7Ñ7Ô7ˆà�˜1˜a Ñ#Ô#ˆØ×Ò˜f¥b¤jÑ1Ô1Ð1Ø×Ò˜Ÿš™œÐ*?Ð*?Ð*?Ñ@Ô@Ð@à�)˜J˜J q™MœM¨1¨aÑ0Ô0ˆØ×Ò˜g zÑ2Ô2Ð2Ø×Ò˜ŸšÑ)Ô)Ð+@Ð+@Ð+@ÑAÔAÐAà�)˜A˜z˜z¨!™}œ}¨aÑ0Ô0ˆØ×Ò˜g zÑ2Ô2Ð2Ø×Ò˜ŸšÑ)Ô)Ð+@Ð+@Ð+@ÑAÔAÐAà�)˜A˜q * *¨Q¡-¤-Ñ0Ô0ˆØ×Ò˜g zÑ2Ô2Ð2Ø×Ò˜ŸšÑ)Ô)Ð+@Ð+@Ð+@ÑAÔAÐAÐAÐAr   N)r3   r4   r5   r  r   r   r   rØ   rØ   f  s-   € € € € € ð@Bð @Bð @Bð @Bð @Br   rØ   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚTestVectorizeDecorJitDisabledc                 ó@   — t           j        | _        dt           _        d S rw   rx   r{   s    r   r|   z#TestVectorizeDecorJitDisabled.setUp­  r}   r   c                 ó(   — | j         t          _        d S r   r   r{   s    r   r€   z&TestVectorizeDecorJitDisabled.tearDown±  r�   r   Nr‚   r   r   r   r  r  «  rƒ   r   r  Ú__main__)*ÚsysÚnumpyrW   Únumba.np.ufunc.ufuncbuilderr   Únumbar   r   Únumba.np.ufuncr   Únumba.np.ufunc.dufuncr   rS   Únumba.tests.supportr   r	   Ú
numba.corer
   Úunittestr   r   r   r$   r(   r+   r-   r/   r1   r8   r:   Ú	Exceptionr<   r>   r@   ru   r…   r”   r˜   rØ   r  r3   Úmainr   r   r   ú<module>r     s1  ðØ 
€
€
€
à Ð Ð Ð à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø &Ð &Ð &Ð &Ð &Ð &Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð Ð Ð Ø €€€ðð ð ðð ð ðð ð ð(ð (ð (ð €�DÐÑÔðð ñ Ôðð €Ð!Ð"¨TÐ2Ñ2Ô2ðð ñ 3Ô2ððð ð ð ð  ð  ð Ð Ð Ð Ð Ñ Ô Ð ð(ð (ð (ð"ð "ð "ð	ð 	ð 	ð 	ð 	�)ñ 	ô 	ð 	ðð ð ðJ*ð J*ð J*ð J*ð J*˜ñ J*ô J*ð J*ðZ2ð 2ð 2ð 2ð 2Ð#4ñ 2ô 2ð 2ð(*ð (*ð (*ð (*ð (*˜ñ (*ô (*ð (*ðV2ð 2ð 2ð 2ð 2Ð$6ñ 2ô 2ð 2ðM<ð M<ð M<ð M<ð M<˜ñ M<ô M<ð M<ðbBBð BBð BBð BBð BB ñ BBô BBð BBðJ2ð 2ð 2ð 2ð 2Ð$6ñ 2ô 2ð 2ð ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   