Ë
    üÇ:jc  ã                   óÆ  — 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¬«      j                  dd	«      Zej#                  «       Zej#                  d
¬«      Z ej                  de¬«      j                  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:                  «        yy)é    N)Úfloat32ÚjitÚnjit)Ú	Vectorize)ÚTypingError)ÚTestCaseéP   )Údtypeé   é
   ÚF)Úorderi@  é   é   é   c                 ó   — | |z   S ©N© )ÚaÚbs     út/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/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                 ó`   — d}t        | j                  d   «      D ]  }|| |   ||   z  z  }Œ |S )Ng        r   )ÚrangeÚshape)r   r   ÚresultÚis       r   Ú
gufunc_addr#      s@   € Ø€FÜ�1—7‘7˜1‘:Óò ˆØ�!�A‘$˜˜1™‘+Ñ‰ðð €Mr   c                 ó\   — t        |j                  «      D ]  }| j                  |«      }Œ |S r   )r   ÚndimÚreduce)ÚufuncÚargr"   s      r   Úufunc_reducer)   !   s,   € Ü�3—8‘8‹_ò  ˆØ�l‰l˜3Ó‰ð à€Jr   c                   ó6   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	Ú
TestUFuncsc                 óB  —  |t         g|¢­Ž }|j                  t        t        t        «      «       |j                  «       }||j                  f}| j	                   |||«      ||z   |¬«       | j	                  t        ||«      t        j                  |«      |¬«       | j	                  |j                  |«      t        j                   j                  |«      |¬«       | j	                  |j                  ||«      t        j                   j                  ||«      |¬«       y)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ã   € áœ�_˜t’_ˆ
Ø�‰”wœw¬Ó0Ô1Ø×&Ñ&Ó(ˆà�Q—V‘Vˆ}ˆØ×Ñ¡ a¨£¨Q°©U¸ÐÔ=Ø×Ñ¤¨U°AÓ 6¼¿¹¸q»	ÀtÐÔLØ×Ñ × 0Ñ 0°Ó 3´R·V±V×5FÑ5FÀqÓ5IØ$(ð 	 ô 	*à×Ñ §¡¨A¨qÓ 1´2·6±6·<±<ÀÀ1Ó3EÈ4ÐÕPr   c                 óþ   —  |t         «      }|j                  t        t        t        t        t        «      «       |j                  «       }||j                  f}| j                   |||||«      ||z   |z   |z   |¬«       y)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?   sk   € áÔ*Ó+ˆ
Ø�‰”wœw¬´¼'ÓBÔCØ×&Ñ&Ó(ˆà�Q—W‘Wˆ~ˆØ×Ñ¡ a¨¨A¨qÓ 1°1°q±5¸1±9¸q±=ÀdÐÕKr   c           
      óT  — t         D ]#  }| j                  |t        d   t        d   «       Œ% t         D ]  }| j                  |t        t        «       Œ t         D ]M  }| j                  |t        d d …t        j
                  d d …f   t        t        j
                  d d …d d …f   «       ŒO y ©Nr   )Úvectorizersr:   r   r   r1   Únewaxis©r5   Úvs     r   Útest_ufunc_attributesz TestUFuncs.test_ufunc_attributesH   s�   € Üò 	7ˆAØ×'Ñ'¨¬1¨Q©4´°1±Õ6ð	7äò 	1ˆAØ×'Ñ'¨¬1¬aÕ0ð	1äò 	=ˆAØ×'Ñ'¨¬1ªQ´·
±
ºAÐ-=Ñ+>Ü()¬"¯*©*²aºÐ*:Ñ(;õ=ñ	=r   c                 óü  — t         D ]3  }| j                  |t        d   t        d   t        d   t
        d   «       Œ5 t         D ]'  }| j                  |t        t        t        t
        «       Œ) t         D ]‡  }| j                  |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   «       Œ‰ y 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ˆAØ×#Ñ# A¤q¬!¬Q´Õ2ð	3äò 	NˆAØ×#Ñ# A¤qª¬B¯J©JºÐ)9Ñ':¼A¼b¿j¹jÊ!ÊQÐ>NÑ<OÜ$%¢a¬¯©²QÐ&6Ñ$7¼¼2¿:¹:ÂqÊ!Ð;KÑ9LõNñ	Nr   c                 óX  — t         D ]¡  } |t        «      }|j                  t        t        t        «      «       |j                  «       }t        t
        j                  d d …t
        j                  t
        j                  d d …f   }| j                   |t        |«      t        |z   «       Œ£ y 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ˆAÙœ3›ˆJØ�N‰Nœ7¤7¬GÓ4Ô5Ø×*Ñ*Ó,ˆEäœrŸz™zª1¬b¯j©j¼"¿*¹*ÂaÐGÑHˆNØ×#Ñ#¡E¬!¨^Ó$<Ü$%¨Ñ$6õ8ñ	8r   c                 ó®  — t        j                  d«      }d|j                  _        g }d}|j	                  t        d¬«      t        |f«       |j	                  t        d¬«      t        df«       |D ]V  \  }}}d„ }| j                  |«      5 }  ||«      |«       d d d «       | j                  |t        j                  «      «       ŒX y # 1 sw Y   Œ1xY w)	Nr   Fz<ufunc 'sin' called with an explicit output that is read-onlyT)Únopython)Úforceobjzoutput array is read-onlyc                 ó„   — t        j                  | j                  | j                  «      }t        j                  || «       y r   )r1   Úonesr    r
   Úsin)Úxr   s     r   ÚtestzBTestUFuncs.test_ufunc_exception_on_write_to_readonly.<locals>.testo   s'   € Ü—G‘G˜AŸG™G Q§W¡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   sÅ   € Ü�G‰G�B‹KˆØ!ˆ�‰ÔàˆØOˆØ�‰”c 4Ô(¬+°vÐ>Ô?Ø�‰”c 4Ô(¬*Ø1ð3ô 	4ð #ò 	6‰MˆC��còð ×"Ñ" 3Ó'ð ¨6Ø‘�D“	˜!”÷ð �M‰M˜#œs 6×#3Ñ#3Ó4Õ5ñ	6÷
ð ús   ÂCÃC	c                 ó°  — t         d„ «       }| j                   |t        j                  d«      d«      t        j                  dd«      j	                  t        j
                  «      «       | j                  t        «      5 } |t        j                  d«      d«       d d d «       d}| j                  |t        j                  «      «       y # 1 sw Y   Œ1xY w)Nc                 óh   — |dkD  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Ø‘ä—G‘G˜A“J�Ü—6‘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¡i°£l°AÓ 6Ü "§	¡	¨!¨Q£× 6Ñ 6´r·z±zÓ Bô	Dð ×ÑœyÓ)ð 	#¨Vñ ”"—)‘)˜A“, Ô"÷	#ð
 9ˆØ�‰�cœ3˜v×/Ñ/Ó0Õ1÷	#ð 	#ús   Á?CÃCN)
Ú__name__Ú
__module__Ú__qualname__r:   r<   rC   rE   rH   r_   rl   r   r   r   r+   r+   0   s(   „ òQòLò=òNò8ò6ó(2r   r+   c                   ó   — e Zd Zd„ Zd„ Zy)ÚTestUFuncsMiscc                 óÌ   — t         d„ «       }t        j                  t        j                  fD ]5  } |d«      }|j	                  |«      } ||«      }| j                  ||«       Œ7 y )Nc                 ó,   — t        j                  | «      S r   )r1   Úexp2©rO   s    r   Úfooz%TestUFuncsMisc.test_exp2.<locals>.foo•   ó   € ä—7‘7˜1“:Ðr   r   ©r   r1   Úint8Úuint16Úpy_funcr0   ©r5   rv   ÚtyrO   ÚexpectedÚgots         r   Ú	test_exp2zTestUFuncsMisc.test_exp2“   óa   € ä	ñ	ó 
ð	ô —7‘7œBŸI™IÐ&ò 	3ˆBÙ�1“ˆAØ—{‘{ 1“~ˆHÙ�a“&ˆCØ×#Ñ# H¨cÕ2ñ		3r   c                 óÌ   — t         d„ «       }t        j                  t        j                  fD ]5  } |d«      }|j	                  |«      } ||«      }| j                  ||«       Œ7 y )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   �   s   „ ò
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�Iˆb˜Ô×&Ñ& q¨"Ó-€Ø‡F�FƒH€Ø‡F�F�€FÓ€Ø€B‡I�Iˆg˜UÔ#×+Ñ+¨B°Ó3±C°a°C¹¸1¸°HÑ=€òòòòð ð€ô]2�ô ]2ô@3�Xô 3ð8 ˆzÒØ€H‡M�M…Oð r   