§
    OŠtjç  ã                   óì  — d dl mZ ddlmZ ddlmZ  ej        d¦  «        Zdee         defd„Z	d	edej
        egef         fd
„Zd	edej
        egef         fd„Zd	edej
        egef         fd„Zej         e	g d¢¬¦  «         ed¦  «        d5d„¦   «         ¦   «         ¦   «         Zej         e	ddg¬¦  «         ed¦  «        ej        d5d„¦   «         ¦   «         ¦   «         ¦   «         Zej         e	ddg¬¦  «         ed¦  «        ej        d5d„¦   «         ¦   «         ¦   «         ¦   «         Zej         e	ddg¬¦  «         ed¦  «        ej        d5d„¦   «         ¦   «         ¦   «         ¦   «         Zej         e	ddg¬¦  «         ed¦  «        ej        d5d„¦   «         ¦   «         ¦   «         ¦   «         Zej         e	ddg¬¦  «         ed¦  «        ej        d5d„¦   «         ¦   «         ¦   «         ¦   «         Zej         e	ddg¬¦  «         ed¦  «        ej        d5d„¦   «         ¦   «         ¦   «         ¦   «         Zej         e	ddg¬¦  «         ed ¦  «        ej        d5d!„¦   «         ¦   «         ¦   «         ¦   «         Zej         e	dg¬¦  «         ed"¦  «        ej        d5d#„¦   «         ¦   «         ¦   «         ¦   «         Zej         e	ddg¬¦  «         ed$¦  «        ej        d5d%„¦   «         ¦   «         ¦   «         ¦   «         Zej        ej         ed&¦  «        d5d'„¦   «         ¦   «         ¦   «         Zej         ed(¦  «        d6d*„¦   «         ¦   «         Zej         e	dg¬¦  «         ed+¦  «        d5d,„¦   «         ¦   «         ¦   «         Zej         e	ddg¬¦  «         ed-¦  «        ej        d5d.„¦   «         ¦   «         ¦   «         ¦   «         Zej         e	ddg¬¦  «         ed/¦  «        ej        d5d0„¦   «         ¦   «         ¦   «         ¦   «         Zej         e	ddg¬¦  «         ed1¦  «        ej        d5d2„¦   «         ¦   «         ¦   «         ¦   «         Zej         ed3¦  «        d5d4„¦   «         ¦   «         Z dS )7é   )Úcoreé    ©Úwraps)ÚListÚTÚdtypesÚreturnc                 ó   ‡ — ˆ fd„}|S )al  
    We're following libdevice's convention to check accepted data types for math functions.
    It is not a good practice to support all data types as accelerators/GPUs don't support
    many float16 and bfloat16 math operations.
    We should let the users know that they are using and invoke explicit cast to convert
    the data type to the supported one.
    c                 ó@   •‡ — t          ‰ ¦  «        ˆˆ fd„¦   «         }|S )Nc                  ó  •— t          | ¦  «        t          |                     ¦   «         ¦  «        z   }d„ |D ¦   «         D ]9}|j        j        j        ‰vr$t          d‰› d|j        j        j        › �¦  «        ‚Œ: ‰| i |¤ŽS )Nc                 óF   — g | ]}t          |t          j        ¦  «        ¯|‘ŒS © )Ú
isinstancer   Útensor)Ú.0Úas     úR/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/triton/language/math.pyú
<listcomp>z@_check_dtype.<locals>.wrapper.<locals>.check.<locals>.<listcomp>   s)   € ÐJÐJÐJ˜a­z¸!½T¼[Ñ/IÔ/IÐJ˜ÐJÐJÐJó    zExpected dtype z	 but got )ÚlistÚvaluesÚtypeÚscalarÚnameÚ
ValueError)ÚargsÚkwargsÚall_argsÚargr	   Úfns       €€r   Úcheckz,_check_dtype.<locals>.wrapper.<locals>.check   s–   ø€ õ ˜D‘z”z¥D¨¯ª©¬Ñ$9Ô$9Ñ9ˆHØJÐJ 8ÐJÑJÔJð `ð `�Ø”8”?Ô'¨vÐ5Ð5Ý$Ð%^°vÐ%^Ð%^ÈÌÌÔH\Ð%^Ð%^Ñ_Ô_Ð_ð 6à�2�tÐ&˜vÐ&Ð&Ð&r   r   )r!   r"   r	   s   ` €r   Úwrapperz_check_dtype.<locals>.wrapper   s9   øø€ å	ˆr‰Œð	'ð 	'ð 	'ð 	'ð 	'ñ 
Œð	'ð ˆr   r   )r	   r#   s   ` r   Ú_check_dtyper$      s#   ø€ ðð ð ð ð ð €Nr   r   c                 ó0   ‡ — dt           dt           fˆ fd„}|S )NÚfuncr
   c                 óB   •— d}|                      ‰¬¦  «        | _        | S )Nzk
    Computes the element-wise {name} of :code:`x`.

    :param x: the input values
    :type x: Block
    ©r   ©ÚformatÚ__doc__©r&   Údocstrr   s     €r   Ú
_decoratorz)_add_math_1arg_docstr.<locals>._decorator#   s&   ø€ ðˆð —}’}¨$�}Ñ/Ô/ˆŒØˆr   ©r   ©r   r.   s   ` r   Ú_add_math_1arg_docstrr1   !   s7   ø€ ð�ð �qð ð ð ð ð ð ð Ðr   c                 ó0   ‡ — dt           dt           fˆ fd„}|S )Nr&   r
   c                 óB   •— d}|                      ‰¬¦  «        | _        | S )Nz«
    Computes the element-wise {name} of :code:`x` and :code:`y`.

    :param x: the input values
    :type x: Block
    :param y: the input values
    :type y: Block
    r(   r)   r,   s     €r   r.   z)_add_math_2arg_docstr.<locals>._decorator2   s&   ø€ ðˆð —}’}¨$�}Ñ/Ô/ˆŒØˆr   r/   r0   s   ` r   Ú_add_math_2arg_docstrr4   0   s7   ø€ ð
�ð 
�qð 
ð 
ð 
ð 
ð 
ð 
ð Ðr   c                 ó0   ‡ — dt           dt           fˆ fd„}|S )Nr&   r
   c                 óB   •— d}|                      ‰¬¦  «        | _        | S )Nzé
    Computes the element-wise {name} of :code:`x`, :code:`y`, and :code:`z`.

    :param x: the input values
    :type x: Block
    :param y: the input values
    :type y: Block
    :param z: the input values
    :type z: Block
    r(   r)   r,   s     €r   r.   z)_add_math_3arg_docstr.<locals>._decoratorC   s&   ø€ ð	ˆð —}’}¨$�}Ñ/Ô/ˆŒØˆr   r/   r0   s   ` r   Ú_add_math_3arg_docstrr7   A   s7   ø€ ð�ð �qð ð ð ð ð ð ð Ðr   )Úint32Úint64Úuint32Úuint64)r	   z-most significant N bits of the 2N-bit productNc                 ó  — |                      | ¦  «        } |                      |¦  «        }t          j        | ||¦  «        \  } }t          j        |j                             | j        |j        ¦  «        | j        ¦  «        S ©N)Ú	to_tensorr   Úbinary_op_type_legalizationr   ÚbuilderÚcreate_umulhiÚhandler   ©ÚxÚyÚ	_semantics      r   ÚumulhirG   T   sm   € ð 	×Ò˜AÑÔ€AØ×Ò˜AÑÔ€AÝÔ+¨A¨q°)Ñ<Ô<�D€A€qÝŒ;�yÔ(×6Ò6°q´xÀÄÑJÔJÈAÌFÑSÔSÐSr   Úfp32Úfp64Úexponentialc                 óš   — |                      | ¦  «        } t          j        |j                             | j        ¦  «        | j        ¦  «        S r=   )r>   r   r   r@   Ú
create_exprB   r   ©rD   rF   s     r   ÚexprN   ^   ó>   € ð
 	×Ò˜AÑÔ€AÝŒ;�yÔ(×3Ò3°A´HÑ=Ô=¸q¼vÑFÔFÐFr   zexponential (base 2)c                 óš   — |                      | ¦  «        } t          j        |j                             | j        ¦  «        | j        ¦  «        S r=   )r>   r   r   r@   Úcreate_exp2rB   r   rM   s     r   Úexp2rR   g   ó>   € ð
 	×Ò˜AÑÔ€AÝŒ;�yÔ(×4Ò4°Q´XÑ>Ô>ÀÄÑGÔGÐGr   znatural logarithmc                 óš   — |                      | ¦  «        } t          j        |j                             | j        ¦  «        | j        ¦  «        S r=   )r>   r   r   r@   Ú
create_logrB   r   rM   s     r   ÚlogrV   p   rO   r   zlogarithm (base 2)c                 óš   — |                      | ¦  «        } t          j        |j                             | j        ¦  «        | j        ¦  «        S r=   )r>   r   r   r@   Úcreate_log2rB   r   rM   s     r   Úlog2rY   y   rS   r   Úcosinec                 óš   — |                      | ¦  «        } t          j        |j                             | j        ¦  «        | j        ¦  «        S r=   )r>   r   r   r@   Ú
create_cosrB   r   rM   s     r   Úcosr]   ‚   rO   r   Úsinec                 óš   — |                      | ¦  «        } t          j        |j                             | j        ¦  «        | j        ¦  «        S r=   )r>   r   r   r@   Ú
create_sinrB   r   rM   s     r   Úsinra   ‹   rO   r   zfast square rootc                 óš   — |                      | ¦  «        } t          j        |j                             | j        ¦  «        | j        ¦  «        S r=   )r>   r   r   r@   Úcreate_sqrtrB   r   rM   s     r   Úsqrtrd   ”   rS   r   z?precise square root (rounding to nearest wrt the IEEE standard)c                 óš   — |                      | ¦  «        } t          j        |j                             | j        ¦  «        | j        ¦  «        S r=   )r>   r   r   r@   Úcreate_precise_sqrtrB   r   rM   s     r   Úsqrt_rnrg   �   s>   € ð
 	×Ò˜AÑÔ€AÝŒ;�yÔ(×<Ò<¸Q¼XÑFÔFÈÌÑOÔOÐOr   zinverse square rootc                 óš   — |                      | ¦  «        } t          j        |j                             | j        ¦  «        | j        ¦  «        S r=   )r>   r   r   r@   Úcreate_rsqrtrB   r   rM   s     r   Úrsqrtrj   ¦   ó>   € ð
 	×Ò˜AÑÔ€AÝŒ;�yÔ(×5Ò5°a´hÑ?Ô?ÀÄÑHÔHÐHr   zabsolute valuec                 óœ  — |                      | ¦  «        } | j        }|                     ¦   «         rdt          j        | j        dt          j        |¬¦  «        }t          j        |j         	                    | j
        |j
        ¦  «        | j        ¦  «        S |                     ¦   «         r7t          j        |j                             | j
        ¦  «        | j        ¦  «        S |                     ¦   «         r7t          j        |j                             | j
        ¦  «        | j        ¦  «        S |                     ¦   «         r| S J d|› �¦   «         ‚)Né   )rF   FzUnexpected dtype )r>   ÚdtypeÚis_fp8e4b15r   ÚfullÚshapeÚint8r   r@   Ú
create_andrB   r   Úis_floatingÚcreate_fabsÚis_int_signedÚcreate_iabsÚis_int_unsigned)rD   rF   rn   Úmasks       r   Úabsrz   ¯   s   € ð 	×Ò˜AÑÔ€AØŒG€EØ×ÒÑÔð 
2ÝŒy˜œ $­¬	¸YÐGÑGÔGˆÝŒ{˜9Ô,×7Ò7¸¼À$Ä+ÑNÔNÐPQÔPVÑWÔWÐWØ	×	Ò	Ñ	Ô	ð 2ÝŒ{˜9Ô,×8Ò8¸¼ÑBÔBÀAÄFÑKÔKÐKØ	×	Ò	Ñ	Ô	ð 2ÝŒ{˜9Ô,×8Ò8¸¼ÑBÔBÀAÄFÑKÔKÐKØ	×	Ò	Ñ	 Ô	 ð 2Øˆà1Ð1¨%Ð1Ð1Ñ1Ô1ˆur   zfast divisionFc                 ó¬   — t          j        |¦  «        }|                     | ¦  «        } |                     |¦  «        }|                     | ||¦  «        S r=   )r   Ú_unwrap_if_constexprr>   Úfdiv)rD   rE   Úieee_roundingrF   s       r   r}   r}   Â   sP   € õ Ô-¨mÑ<Ô<€MØ×Ò˜AÑÔ€AØ×Ò˜AÑÔ€AØ�>Š>˜!˜Q Ñ.Ô.Ð.r   z<precise division (rounding to nearest wrt the IEEE standard)c                 ó  — |                      | ¦  «        } |                      |¦  «        }t          j        | ||¦  «        \  } }t          j        |j                             | j        |j        ¦  «        | j        ¦  «        S r=   )r>   r   r?   r   r@   Úcreate_precise_divfrB   r   rC   s      r   Údiv_rnr�   Ë   so   € ð 	×Ò˜AÑÔ€AØ×Ò˜AÑÔ€AÝÔ+¨A¨q°)Ñ<Ô<�D€A€qÝŒ;�yÔ(×<Ò<¸Q¼XÀqÄxÑPÔPÐRSÔRXÑYÔYÐYr   zerror functionc                 óš   — |                      | ¦  «        } t          j        |j                             | j        ¦  «        | j        ¦  «        S r=   )r>   r   r   r@   Ú
create_erfrB   r   rM   s     r   Úerfr„   Õ   rO   r   Úfloorc                 óš   — |                      | ¦  «        } t          j        |j                             | j        ¦  «        | j        ¦  «        S r=   )r>   r   r   r@   Úcreate_floorrB   r   rM   s     r   r…   r…   Þ   rk   r   Úceilc                 óš   — |                      | ¦  «        } t          j        |j                             | j        ¦  «        | j        ¦  «        S r=   )r>   r   r   r@   Úcreate_ceilrB   r   rM   s     r   rˆ   rˆ   ç   rS   r   zfused multiply-addc                 óœ  — |                      | ¦  «        } |                      |¦  «        }|                      |¦  «        }t          j        | ||¦  «        \  } }t          j        || |¦  «        \  }} t          j        |||¦  «        \  }}t          j        |j                             | j        |j        |j        ¦  «        | j        ¦  «        S r=   )r>   r   r?   r   r@   Ú
create_fmarB   r   )rD   rE   ÚzrF   s       r   ÚfmarŽ   ð   s¶   € ð 	×Ò˜AÑÔ€AØ×Ò˜AÑÔ€AØ×Ò˜AÑÔ€AÝÔ+¨A¨q°)Ñ<Ô<�D€A€qÝÔ+¨A¨q°)Ñ<Ô<�D€A€qÝÔ+¨A¨q°)Ñ<Ô<�D€A€qÝŒ;�yÔ(×3Ò3°A´H¸a¼hÈÌÑQÔQÐSTÔSYÑZÔZÐZr   r=   )FN)!Ú r   Ú	functoolsr   Útypingr   ÚTypeVarr   Ústrr$   ÚCallabler1   r4   r7   ÚbuiltinrG   Ú_tensor_member_fnrN   rR   rV   rY   r]   ra   rd   rg   rj   rz   r}   r�   r„   r…   rˆ   rŽ   r   r   r   ú<module>r—      sU  ðØ Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à€D„L�ÑÔ€ð˜˜cœð  qð ð ð ð ð2 ð ¨¬°q°c¸1°fÔ(=ð ð ð ð ð ð ¨¬°q°c¸1°fÔ(=ð ð ð ð ð" ð ¨¬°q°c¸1°fÔ(=ð ð ð ð ð& „Ø€Ð;Ð;Ð;Ð<Ñ<Ô<ØÐÐFÑGÔGðTð Tð Tñ HÔGñ =Ô<ñ „ðTð „Ø€�f˜fÐ%Ð&Ñ&Ô&ØÐ�}Ñ%Ô%ØÔðGð Gð Gñ Ôñ &Ô%ñ 'Ô&ñ „ðGð
 „Ø€�f˜fÐ%Ð&Ñ&Ô&ØÐÐ-Ñ.Ô.ØÔðHð Hð Hñ Ôñ /Ô.ñ 'Ô&ñ „ðHð
 „Ø€�f˜fÐ%Ð&Ñ&Ô&ØÐÐ*Ñ+Ô+ØÔðGð Gð Gñ Ôñ ,Ô+ñ 'Ô&ñ „ðGð
 „Ø€�f˜fÐ%Ð&Ñ&Ô&ØÐÐ+Ñ,Ô,ØÔðHð Hð Hñ Ôñ -Ô,ñ 'Ô&ñ „ðHð
 „Ø€�f˜fÐ%Ð&Ñ&Ô&ØÐ�xÑ Ô ØÔðGð Gð Gñ Ôñ !Ô ñ 'Ô&ñ „ðGð
 „Ø€�f˜fÐ%Ð&Ñ&Ô&ØÐ�vÑÔØÔðGð Gð Gñ Ôñ Ôñ 'Ô&ñ „ðGð
 „Ø€�f˜fÐ%Ð&Ñ&Ô&ØÐÐ)Ñ*Ô*ØÔðHð Hð Hñ Ôñ +Ô*ñ 'Ô&ñ „ðHð
 „Ø€�f�XÐÑÔØÐÐXÑYÔYØÔðPð Pð Pñ Ôñ ZÔYñ Ôñ „ðPð
 „Ø€�f˜fÐ%Ð&Ñ&Ô&ØÐÐ,Ñ-Ô-ØÔðIð Ið Iñ Ôñ .Ô-ñ 'Ô&ñ „ðIð
 ÔØ„ØÐÐ'Ñ(Ô(ð2ð 2ð 2ñ )Ô(ñ „ñ Ôð2ð  „ØÐ�Ñ'Ô'ð/ð /ð /ñ (Ô'ñ „ð/ð „Ø€�f�XÐÑÔØÐÐUÑVÔVðZð Zð Zñ WÔVñ Ôñ „ðZð „Ø€�f˜fÐ%Ð&Ñ&Ô&ØÐÐ'Ñ(Ô(ØÔðGð Gð Gñ Ôñ )Ô(ñ 'Ô&ñ „ðGð
 „Ø€�f˜fÐ%Ð&Ñ&Ô&ØÐ�wÑÔØÔðIð Ið Iñ Ôñ  Ôñ 'Ô&ñ „ðIð
 „Ø€�f˜fÐ%Ð&Ñ&Ô&ØÐ�vÑÔØÔðHð Hð Hñ Ôñ Ôñ 'Ô&ñ „ðHð
 „ØÐÐ+Ñ,Ô,ð[ð [ð [ñ -Ô,ñ „ð[ð [ð [r   