§
    ƒÛga	  ã                   ó”   — d dl Zd dlZd dlmZmZmZmZ d„ Zd„ Z	d„ Z
 G d„ dej        ¦  «        Zedk    r ej        ¦   «          dS dS )	é    N)ÚtypesÚutilsÚcompilerÚregistryc                 ó   — | S ©N© ©Úxs    úN/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_wrapper.pyÚoverheadr      s   € Ø€Hó    c                 ó   — d| d<   d| d<   d S )Né   r   é   r	   r
   s    r   Úarray_overheadr      s   € Ø€A€a�DØ€A€a�D€D€Dr   c                 ó   — | | z   | z   | z   | z   S r   r	   r
   s    r   Úaddr      s   € Øˆq‰5�1‰9�q‰=˜1ÑÐr   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚTestWrapperc                 óà  ‡‡‡— t          j        t          t          j        g¦  «        }|j        Št          j        t          ¦  «        Š‰                     |¦  «         dŠˆfd„}ˆˆfd„}ˆˆfd„}t          t          ¦  «         t          t          j        |d¬¦  «        ¦  «         t          t          j        |d¬¦  «        ¦  «         t          t          j        |d¬¦  «        ¦  «         dS )zW
        This will show higher overhead due to unboxing in the native version.
        éA  c                  ó&   •— t          ‰ ¦  «         d S r   )r   r
   s   €r   Úpythonz)TestWrapper.test_overhead.<locals>.python    s   ø€ Ý�Q‰KŒKˆKˆKˆKr   c                  ó   •—  ‰ ‰¦  «         d S r   r	   ©Úcfuncr   s   €€r   Úpycfuncz*TestWrapper.test_overhead.<locals>.pycfunc#   ó   ø€ ØˆE�!‰HŒHˆHˆHˆHr   c                  ó   •—  ‰ ‰¦  «         d S r   r	   ©Údispr   s   €€r   Ú
overloadedz-TestWrapper.test_overhead.<locals>.overloaded&   ó   ø€ ØˆD�‰GŒGˆGˆGˆGr   ç      à?©ÚmaxsecN)r   Úcompile_isolatedr   r   Úint32Úentry_pointr   ÚCPUDispatcherÚadd_overloadÚprintr   Ú	benchmark©ÚselfÚcrr   r   r#   r   r"   r   s        @@@r   Útest_overheadzTestWrapper.test_overhead   s  øøø€ õ Ô&¥xµ%´+°Ñ?Ô?ˆØ”ˆÝÔ%¥hÑ/Ô/ˆØ×Ò˜"ÑÔÐàˆð	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð 	õ 	�h‰ŒˆÝ�eŒo˜f¨RÐ0Ñ0Ô0Ñ1Ô1Ð1Ý�eŒo˜g¨bÐ1Ñ1Ô1Ñ2Ô2Ð2Ý�eŒo˜j°Ð4Ñ4Ô4Ñ5Ô5Ð5Ð5Ð5r   c                 óp  ‡‡‡— t          j        t          t          j        ddd…         g¦  «        }|j        Št          j        t          ¦  «        Š‰                     |¦  «         |  	                    |j
        j        d         j        d¦  «         t          j        dd¬¦  «        Šˆfd„}ˆˆfd	„}ˆˆfd
„}t          t          ¦  «         t          t!          j        |d¬¦  «        ¦  «         t          t!          j        |d¬¦  «        ¦  «         t          t!          j        |d¬¦  «        ¦  «         dS )z€
        The time to set two array element seems to be more expensive than
        the overhead of the overloaded call.
        Nr   r   ÚCr   r)   )ÚshapeÚdtypec                  ó&   •— t          ‰ ¦  «         d S r   )r   r
   s   €r   r   z/TestWrapper.test_array_overhead.<locals>.python<   s   ø€ Ý˜1ÑÔÐÐÐr   c                  ó   •—  ‰ ‰¦  «         d S r   r	   r   s   €€r   r   z0TestWrapper.test_array_overhead.<locals>.pycfunc?   r   r   c                  ó   •—  ‰ ‰¦  «         d S r   r	   r!   s   €€r   r#   z3TestWrapper.test_array_overhead.<locals>.overloadedB   r$   r   r%   r&   )r   r(   r   r   r)   r*   r   r+   r,   ÚassertEqualÚ	signatureÚargsÚlayoutÚnpÚzerosr-   r   r.   r/   s        @@@r   Útest_array_overheadzTestWrapper.test_array_overhead.   sM  øøø€ õ
 Ô&¥~½¼ÀCÀCÀaÀCÔ8HÐ7IÑJÔJˆØ”ˆÝÔ%¥nÑ5Ô5ˆØ×Ò˜"ÑÔÐà×Ò˜œÔ*¨1Ô-Ô4°cÑ:Ô:Ð:åŒH˜1 GÐ,Ñ,Ô,ˆð	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð 	õ 	�nÑÔÐÝ�eŒo˜f¨RÐ0Ñ0Ô0Ñ1Ô1Ð1Ý�eŒo˜g¨bÐ1Ñ1Ô1Ñ2Ô2Ð2Ý�eŒo˜j°Ð4Ñ4Ô4Ñ5Ô5Ð5Ð5Ð5r   c                 óà  ‡‡‡— t          j        t          t          j        g¦  «        }|j        Št          j        t          ¦  «        Š‰                     |¦  «         dŠˆfd„}ˆˆfd„}ˆˆfd„}t          t          ¦  «         t          t          j        |d¬¦  «        ¦  «         t          t          j        |d¬¦  «        ¦  «         t          t          j        |d¬¦  «        ¦  «         dS )zu
        This seems to be about the amount of work to balance out the overhead
        by the overloaded one
        r   c                  ó&   •— t          ‰ ¦  «         d S r   )r   r
   s   €r   r   z$TestWrapper.test_add.<locals>.pythonW   s   ø€ Ý�‰FŒFˆFˆFˆFr   c                  ó   •—  ‰ ‰¦  «         d S r   r	   r   s   €€r   r   z%TestWrapper.test_add.<locals>.pycfuncZ   r   r   c                  ó   •—  ‰ ‰¦  «         d S r   r	   r!   s   €€r   r#   z(TestWrapper.test_add.<locals>.overloaded]   r$   r   r%   r&   N)r   r(   r   r   r)   r*   r   r+   r,   r-   r   r.   r/   s        @@@r   Útest_addzTestWrapper.test_addK   s  øøø€ õ
 Ô&¥s­U¬[¨MÑ:Ô:ˆØ”ˆÝÔ%¥cÑ*Ô*ˆØ×Ò˜"ÑÔÐàˆð	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð 	õ 	�c‰
Œ
ˆ
Ý�eŒo˜f¨RÐ0Ñ0Ô0Ñ1Ô1Ð1Ý�eŒo˜g¨bÐ1Ñ1Ô1Ñ2Ô2Ð2Ý�eŒo˜j°Ð4Ñ4Ô4Ñ5Ô5Ð5Ð5Ð5r   N)Ú__name__Ú
__module__Ú__qualname__r2   r@   rE   r	   r   r   r   r      sA   € € € € € ð6ð 6ð 6ð26ð 6ð 6ð:6ð 6ð 6ð 6ð 6r   r   Ú__main__)Únumpyr>   ÚunittestÚ
numba.corer   r   r   r   r   r   r   ÚTestCaser   rF   Úmainr	   r   r   ú<module>rO      sÇ   ðØ Ð Ð Ð à €€€Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7ðð ð ðð ð ð
ð ð ðO6ð O6ð O6ð O6ð O6�(Ô#ñ O6ô O6ð O6ðf ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   