§
    ƒÛg  ã                   óè  — d dl Zd dlmZmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlZej        Z ej        de¬¦  «                             dd	¦  «        Ze                     ¦   «         Ze                     d
¬¦  «        Z ej        de¬¦  «                             dd¦  «        ddd…ddd…f         Zd„ Zd„ Zd„ Zd„ ZegZ G d„ de¦  «        Z G d„ de¦  «        Zedk    r ej        ¦   «          dS dS )é    N)Úfloat32ÚjitÚnjit)Ú	Vectorize)ÚTypingError)ÚTestCaseéP   )Údtypeé   é
   ÚF)Úorderi@  é   é   é   c                 ó   — | |z   S ©N© )ÚaÚbs     úU/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/npyufunc/test_ufunc.pyÚaddr      s   € Øˆq‰5€Ló    c                 ó   — | |z   |z   |z   S r   r   )r   r   ÚcÚds       r   Úadd_multiple_argsr      s   € Øˆq‰5�1‰9�q‰=Ðr   c                 ól   — d}t          | j        d         ¦  «        D ]}|| |         ||         z  z  }Œ|S )Ng        r   )ÚrangeÚshape)r   r   ÚresultÚis       r   Ú
gufunc_addr#      sA   € Ø€FÝ�1”7˜1”:ÑÔð ð ˆØ�!�A”$˜˜1œ‘+Ñˆˆà€Mr   c                 ó^   — t          |j        ¦  «        D ]}|                      |¦  «        }Œ|S r   )r   ÚndimÚreduce)ÚufuncÚargr"   s      r   Úufunc_reducer)   !   s1   € Ý�3”8‰_Œ_ð  ð  ˆØ�lŠl˜3ÑÔˆˆØ€Jr   c                   ó8   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	Ú
TestUFuncsc                 ó”  —  |t           g|¢R Ž }|                      t          t          t          ¦  «        ¦  «         |                     ¦   «         }||j        f}|                       |||¦  «        ||z   |¬¦  «         |                      t          ||¦  «        t          j        |¦  «        |¬¦  «         |                      |                     |¦  «        t          j                              |¦  «        |¬¦  «         |                      | 	                    ||¦  «        t          j          	                    ||¦  «        |¬¦  «         dS )zTest ufunc attributes©ÚmsgN)
r   r   Úbuild_ufuncr%   ÚassertPreciseEqualr)   ÚnpÚsumÚ
accumulateÚouter)ÚselfÚclsr   r   ÚargsÚ
vectorizerr'   Úinfos           r   Ú_test_ufunc_attributesz!TestUFuncs._test_ufunc_attributes2   s$  € à�S��_˜t�_�_�_ˆ
Ø�Š•w�w­Ñ0Ô0Ñ1Ô1Ð1Ø×&Ò&Ñ(Ô(ˆà�Q”Vˆ}ˆØ×Ò   a¨¡¤¨Q°©U¸ÐÑ=Ô=Ð=Ø×Ò¥¨U°AÑ 6Ô 6½¼¸q¹	¼	ÀtÐÑLÔLÐLØ×Ò × 0Ò 0°Ñ 3Ô 3µR´V×5FÒ5FÀqÑ5IÔ5IØ$(ð 	 ñ 	*ô 	*ð 	*à×Ò §¢¨A¨qÑ 1Ô 1µ2´6·<²<ÀÀ1Ñ3EÔ3EÈ4ÐÑPÔPÐPÐPÐPr   c                 ó,  —  |t           ¦  «        }|                     t          t          t          t          t          ¦  «        ¦  «         |                     ¦   «         }||j        f}|                       |||||¦  «        ||z   |z   |z   |¬¦  «         dS )zTest multiple argsr-   N)r   r   r   r/   r    r0   )	r5   r6   r   r   r   r   r8   r'   r9   s	            r   Ú_test_broadcastingzTestUFuncs._test_broadcasting?   s‹   € à�SÕ*Ñ+Ô+ˆ
Ø�Š•w�w­µ½'ÑBÔBÑCÔCÐCØ×&Ò&Ñ(Ô(ˆà�Q”Wˆ~ˆØ×Ò   a¨¨A¨qÑ 1Ô 1°1°q±5¸1±9¸q±=ÀdÐÑKÔKÐKÐKÐKr   c           
      ó|  — t           D ]/}|                      |t          d         t          d         ¦  «         Œ0t           D ]#}|                      |t          t          ¦  «         Œ$t           D ]Q}|                      |t          d d …t          j        d d …f         t          t          j        d d …d d …f         ¦  «         ŒRd S ©Nr   )Úvectorizersr:   r   r   r1   Únewaxis©r5   Úvs     r   Útest_ufunc_attributesz TestUFuncs.test_ufunc_attributesH   sÇ   € Ýð 	7ð 	7ˆAØ×'Ò'¨­1¨Q¬4µ°1´Ñ6Ô6Ð6Ð6Ýð 	1ð 	1ˆAØ×'Ò'¨­1­aÑ0Ô0Ð0Ð0Ýð 	=ð 	=ˆAØ×'Ò'¨­1¨Q¨Q¨Qµ´
¸A¸A¸AÐ-=Ô+>Ý()­"¬*°a°a°a¸¸¸Ð*:Ô(;ñ=ô =ð =ð =ð	=ð 	=r   c                 ó8  — t           D ]G}|                      |t          d         t          d         t          d         t
          d         ¦  «         ŒHt           D ]/}|                      |t          t          t          t
          ¦  «         Œ0t           D ]‹}|                      |t          d d …t          j        d d …f         t          t          j        d d …d d …f         t          d d …t          j        d d …f         t
          t          j        d d …d d …f         ¦  «         ŒŒd S r>   )r?   r<   r   r   r   r   r1   r@   rA   s     r   Útest_broadcastingzTestUFuncs.test_broadcastingQ   s  € Ýð 	?ð 	?ˆAØ×#Ò# A¥q¨¤t­Q¨q¬Tµ1°Q´4½¸1¼Ñ>Ô>Ð>Ð>Ýð 	3ð 	3ˆAØ×#Ò# A¥q­!­QµÑ2Ô2Ð2Ð2Ýð 	Nð 	NˆAØ×#Ò# A¥q¨¨¨­B¬J¸¸¸Ð)9Ô':½A½b¼jÈ!È!È!ÈQÈQÈQÐ>NÔ<OÝ$% a a a­¬°Q°Q°QÐ&6Ô$7½½2¼:ÀqÀqÀqÈ!È!È!Ð;KÔ9LñNô Nð Nð Nð	Nð 	Nr   c                 ó~  — t           D ]´} |t          ¦  «        }|                     t          t          t          ¦  «        ¦  «         |                     ¦   «         }t          t
          j        d d …t
          j        t
          j        d d …f         }|                       |t          |¦  «        t          |z   ¦  «         Œµd S r   )	r?   r   r   r/   r   r1   r@   r0   r   )r5   rB   r8   r'   Úbroadcasting_bs        r   Útest_implicit_broadcastingz%TestUFuncs.test_implicit_broadcastingZ   s«   € Ýð 	8ð 	8ˆAØ˜�3™œˆJØ�NŠN�7¥7­GÑ4Ô4Ñ5Ô5Ð5Ø×*Ò*Ñ,Ô,ˆEå�rœz¨1¨1¨1­b¬j½"¼*ÀaÀaÀaÐGÔHˆNØ×#Ò# E E­!¨^Ñ$<Ô$<Ý$%¨Ñ$6ñ8ô 8ð 8ð 8ð	8ð 	8r   c                 óä  — t          j        d¦  «        }d|j        _        g }d}|                     t          d¬¦  «        t          |f¦  «         |                     t          d¬¦  «        t          df¦  «         |D ]r\  }}}d„ }|                      |¦  «        5 }  ||¦  «        |¦  «         d d d ¦  «         n# 1 swxY w Y   |  	                    |t          |j        ¦  «        ¦  «         Œsd S )	Nr   Fz<ufunc 'sin' called with an explicit output that is read-onlyT)Únopython)Úforceobjzoutput array is read-onlyc                 ón   — t          j        | j        | j        ¦  «        }t          j        || ¦  «         d S r   )r1   Úonesr    r
   Úsin)Úxr   s     r   ÚtestzBTestUFuncs.test_ufunc_exception_on_write_to_readonly.<locals>.testo   s*   € Ý”G˜AœG Q¤WÑ-Ô-�Ý”�q˜!‘”���r   )r1   rM   ÚflagsÚ	writeableÚappendr   r   Ú
ValueErrorÚassertRaisesÚassertInÚstrÚ	exception)	r5   ÚzÚtestsÚexpectÚdecÚexcr.   rP   Úraisess	            r   Ú)test_ufunc_exception_on_write_to_readonlyz4TestUFuncs.test_ufunc_exception_on_write_to_readonlyd   sE  € ÝŒG�B‰KŒKˆØ!ˆŒÔàˆØOˆØ�Š•c 4Ð(Ñ(Ô(­+°vÐ>Ñ?Ô?Ð?Ø�Š•c 4Ð(Ñ(Ô(­*Ø1ð3ñ 	4ô 	4ð 	4ð #ð 	6ð 	6‰MˆC��cðð ð ð ×"Ò" 3Ñ'Ô'ð ¨6Ø���D‘	”	˜!‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð �MŠM˜#�s 6Ô#3Ñ4Ô4Ñ5Ô5Ð5Ð5ð	6ð 	6s   ÂB<Â<C 	ÃC 	c                 óÞ  — t           d„ ¦   «         }|                       |t          j        d¦  «        d¦  «        t          j        dd¦  «                             t          j        ¦  «        ¦  «         |                      t          ¦  «        5 } |t          j        d¦  «        d¦  «         d d d ¦  «         n# 1 swxY w Y   d}|                      |t          |j
        ¦  «        ¦  «         d S )Nc                 óf   — |dk    rd }nt          j        d¦  «        }t          j        | |¦  «        S )Nr   é   )r1   rM   r   )rO   ÚyrY   s      r   Úinnerz5TestUFuncs.test_optional_type_handling.<locals>.inner{   s/   € à�1ŠuˆuØ��å”G˜A‘J”J�Ý”6˜!˜Q‘<”<Ðr   rb   é   é   é   z(expected array(float64, 1d, C), got None)r   r0   r1   ÚarangeÚastypeÚfloat64rU   Ú	TypeErrorrV   rW   rX   )r5   rd   r^   r.   s       r   Útest_optional_type_handlingz&TestUFuncs.test_optional_type_handlingx   s  € õ 
ð	 ð 	 ñ 
Œð	 ð 	×Ò  ¥b¤i°¡l¤l°AÑ 6Ô 6Ý "¤	¨!¨Q¡¤× 6Ò 6µr´zÑ BÔ Bñ	Dô 	Dð 	Dð ×Ò�yÑ)Ô)ð 	#¨Vð ˆE•"”)˜A‘,”, Ñ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð
 9ˆØ�Š�c�3˜vÔ/Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1s   ÂB8Â8B<Â?B<N)
Ú__name__Ú
__module__Ú__qualname__r:   r<   rC   rE   rH   r_   rl   r   r   r   r+   r+   0   s†   € € € € € ðQð Qð QðLð Lð Lð=ð =ð =ðNð Nð Nð8ð 8ð 8ð6ð 6ð 6ð(2ð 2ð 2ð 2ð 2r   r+   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚTestUFuncsMiscc                 óÞ   — t           d„ ¦   «         }t          j        t          j        fD ]C} |d¦  «        }|                     |¦  «        } ||¦  «        }|                      ||¦  «         ŒDd S )Nc                 ó*   — t          j        | ¦  «        S r   )r1   Úexp2©rO   s    r   Úfooz%TestUFuncsMisc.test_exp2.<locals>.foo•   ó   € å”7˜1‘:”:Ðr   r   ©r   r1   Úint8Úuint16Úpy_funcr0   ©r5   rv   ÚtyrO   ÚexpectedÚgots         r   Ú	test_exp2zTestUFuncsMisc.test_exp2“   ó�   € å	ð	ð 	ñ 
Œð	õ ”7�BœIÐ&ð 	3ð 	3ˆBØ��1‘”ˆAØ—{’{ 1‘~”~ˆHØ�#�a‘&”&ˆCØ×#Ò# H¨cÑ2Ô2Ð2Ð2ð		3ð 	3r   c                 óÞ   — t           d„ ¦   «         }t          j        t          j        fD ]C} |d¦  «        }|                     |¦  «        } ||¦  «        }|                      ||¦  «         ŒDd S )Nc                 ó*   — t          j        | ¦  «        S r   )r1   Úlog2ru   s    r   rv   z%TestUFuncsMisc.test_log2.<locals>.foo¡   rw   r   r   rx   r|   s         r   Ú	test_log2zTestUFuncsMisc.test_log2Ÿ   r�   r   N)rm   rn   ro   r€   r…   r   r   r   rq   rq   �   s2   € € € € € ð
3ð 
3ð 
3ð
3ð 
3ð 
3ð 
3ð 
3r   rq   Ú__main__)Únumpyr1   Únumbar   r   r   Únumba.np.ufuncr   Únumba.core.errorsr   Únumba.tests.supportr   Úunittestr
   rh   Úreshaper   Úcopyr   r   r   r   r   r#   r)   r?   r+   rq   rm   Úmainr   r   r   ú<module>r�      sÃ  ðØ Ð Ð Ð à $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø $Ð $Ð $Ð $Ð $Ð $Ø )Ð )Ð )Ð )Ð )Ð )Ø (Ð (Ð (Ð (Ð (Ð (Ø €€€ð 	Œ
€Ø€B„Iˆb˜ÐÑÔ×&Ò& q¨"Ñ-Ô-€Ø‡F‚F�H„H€Ø‡F‚F�€FÑÔ€Ø€B„Iˆg˜UÐ#Ñ#Ô#×+Ò+¨B°Ñ3Ô3°C°C°a°C¸¸¸1¸°HÔ=€ðð ð ðð ð ðð ð ðð ð ð ð€ð]2ð ]2ð ]2ð ]2ð ]2�ñ ]2ô ]2ð ]2ð@3ð 3ð 3ð 3ð 3�Xñ 3ô 3ð 3ð8 ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   