ó
    “~iç  ã                   óÎ  • S SK Jr  SSKJr  SSKJr  \R                  " S5      rS\\   S\4S jr	S	\S\R                  \/\4   4S
 jrS	\S\R                  \/\4   4S jrS	\S\R                  \/\4   4S jr\R                  \	" / SQS9\" S5      S4S j5       5       5       r\R                  \	" SS/S9\" S5      \R                   S4S j5       5       5       5       r\R                  \	" SS/S9\" S5      \R                   S4S j5       5       5       5       r\R                  \	" SS/S9\" S5      \R                   S4S j5       5       5       5       r\R                  \	" SS/S9\" S5      \R                   S4S j5       5       5       5       r\R                  \	" SS/S9\" S5      \R                   S4S j5       5       5       5       r\R                  \	" SS/S9\" S5      \R                   S4S j5       5       5       5       r\R                  \	" SS/S9\" S 5      \R                   S4S! j5       5       5       5       r\R                  \	" S/S9\" S"5      \R                   S4S# j5       5       5       5       r\R                  \	" SS/S9\" S$5      \R                   S4S% j5       5       5       5       r\R                   \R                  \" S&5      S4S' j5       5       5       r\R                  \" S(5      S5S) j5       5       r\R                  \	" S/S9\" S*5      S4S+ j5       5       5       r\R                  \	" SS/S9\" S,5      \R                   S4S- j5       5       5       5       r\R                  \	" SS/S9\" S.5      \R                   S4S/ j5       5       5       5       r\R                  \	" SS/S9\" S05      \R                   S4S1 j5       5       5       5       r\R                  \" S25      S4S3 j5       5       r g)6é   )Úcoreé    ©Úwraps)ÚListÚTÚdtypesÚreturnc                 ó   ^ • U 4S jnU$ )aT  
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                 ó4   >^ • [        T 5      UU 4S j5       nU$ )Nc                  ó„  >• [        U 5      [        UR                  5       5      -   nU Vs/ s H&  n[        U[        R                  5      (       d  M$  UPM(     sn HV  nUR
                  R                  R                  T;  d  M)  [        ST SUR
                  R                  R                   35      e   T" U 0 UD6$ s  snf )NzExpected dtype z	 but got )	ÚlistÚvaluesÚ
isinstancer   ÚtensorÚtypeÚscalarÚnameÚ
ValueError)ÚargsÚkwargsÚall_argsÚaÚargr	   Úfns        €€ÚQ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/triton/language/math.pyÚcheckÚ,_check_dtype.<locals>.wrapper.<locals>.check   sš   ø€ ô ˜D“z¤D¨¯©«Ó$9Ñ9ˆHÙ#+ÓJ¢8˜a¬z¸!¼T¿[¹[×/IŸ¡8ÔJ�Ø—8‘8—?‘?×'Ñ'¨vÕ5Ü$ °v°h¸iÈÏÉÏÉ×H\ÑH\ÐG]Ð%^Ó_Ð_ñ Kñ �tÐ&˜vÑ&Ð&ùò Ks   «#B=ÁB=r   )r   r   r	   s   ` €r   ÚwrapperÚ_check_dtype.<locals>.wrapper   s    ù€ ä	ˆr‹õ	'ó 
ð	'ð ˆó    © )r	   r   s   ` r   Ú_check_dtyper#      s   ø€ õð €Nr!   r   c                 ó0   ^ • S[         S[         4U 4S jjnU$ )NÚfuncr
   c                 ó4   >• SnUR                  TS9U l        U $ )Nzk
    Computes the element-wise {name} of :code:`x`.

    :param x: the input values
    :type x: Block
    ©r   ©ÚformatÚ__doc__©r%   Údocstrr   s     €r   Ú
_decoratorÚ)_add_math_1arg_docstr.<locals>._decorator#   s#   ø€ ðˆð —}‘}¨$�}Ð/ˆŒØˆr!   ©r   ©r   r-   s   ` r   Ú_add_math_1arg_docstrr1   !   s   ø€ ðœð œq÷ ð Ðr!   c                 ó0   ^ • S[         S[         4U 4S jjnU$ )Nr%   r
   c                 ó4   >• SnUR                  TS9U l        U $ )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-   Ú)_add_math_2arg_docstr.<locals>._decorator2   s#   ø€ ðˆð —}‘}¨$�}Ð/ˆŒØˆr!   r/   r0   s   ` r   Ú_add_math_2arg_docstrr5   0   s   ø€ ð
œð 
œq÷ 
ð Ðr!   c                 ó0   ^ • S[         S[         4U 4S jjnU$ )Nr%   r
   c                 ó4   >• SnUR                  TS9U l        U $ )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-   Ú)_add_math_3arg_docstr.<locals>._decoratorC   s#   ø€ ð	ˆð —}‘}¨$�}Ð/ˆŒØˆr!   r/   r0   s   ` r   Ú_add_math_3arg_docstrr9   A   s   ø€ ðœð œq÷ ð Ðr!   )Úint32Úint64Úuint32Úuint64)r	   z-most significant N bits of the 2N-bit productNc                 ó  • UR                  U 5      n UR                  U5      n[        R                  " XU5      u  p[        R                  " UR                  R                  U R                  UR                  5      U R                  5      $ ©N)Ú	to_tensorr   Úbinary_op_type_legalizationr   ÚbuilderÚcreate_umulhiÚhandler   ©ÚxÚyÚ	_semantics      r   ÚumulhirI   T   sh   € ð 	×Ñ˜AÓ€AØ×Ñ˜AÓ€AÜ×+Ò+¨A°)Ó<�D€AÜ�;Š;�y×(Ñ(×6Ñ6°q·x±xÀÇÁÓJÈAÏFÉFÓSÐSr!   Úfp32Úfp64Úexponentialc                 ó¬   • UR                  U 5      n [        R                  " UR                  R	                  U R
                  5      U R                  5      $ r?   )r@   r   r   rB   Ú
create_exprD   r   ©rF   rH   s     r   ÚexprP   ^   ó>   € ð
 	×Ñ˜AÓ€AÜ�;Š;�y×(Ñ(×3Ñ3°A·H±HÓ=¸q¿v¹vÓFÐFr!   zexponential (base 2)c                 ó¬   • UR                  U 5      n [        R                  " UR                  R	                  U R
                  5      U R                  5      $ r?   )r@   r   r   rB   Úcreate_exp2rD   r   rO   s     r   Úexp2rT   g   ó>   € ð
 	×Ñ˜AÓ€AÜ�;Š;�y×(Ñ(×4Ñ4°Q·X±XÓ>ÀÇÁÓGÐGr!   znatural logarithmc                 ó¬   • UR                  U 5      n [        R                  " UR                  R	                  U R
                  5      U R                  5      $ r?   )r@   r   r   rB   Ú
create_logrD   r   rO   s     r   ÚlogrX   p   rQ   r!   zlogarithm (base 2)c                 ó¬   • UR                  U 5      n [        R                  " UR                  R	                  U R
                  5      U R                  5      $ r?   )r@   r   r   rB   Úcreate_log2rD   r   rO   s     r   Úlog2r[   y   rU   r!   Úcosinec                 ó¬   • UR                  U 5      n [        R                  " UR                  R	                  U R
                  5      U R                  5      $ r?   )r@   r   r   rB   Ú
create_cosrD   r   rO   s     r   Úcosr_   ‚   rQ   r!   Úsinec                 ó¬   • UR                  U 5      n [        R                  " UR                  R	                  U R
                  5      U R                  5      $ r?   )r@   r   r   rB   Ú
create_sinrD   r   rO   s     r   Úsinrc   ‹   rQ   r!   zfast square rootc                 ó¬   • UR                  U 5      n [        R                  " UR                  R	                  U R
                  5      U R                  5      $ r?   )r@   r   r   rB   Úcreate_sqrtrD   r   rO   s     r   Úsqrtrf   ”   rU   r!   z?precise square root (rounding to nearest wrt the IEEE standard)c                 ó¬   • UR                  U 5      n [        R                  " UR                  R	                  U R
                  5      U R                  5      $ r?   )r@   r   r   rB   Úcreate_precise_sqrtrD   r   rO   s     r   Úsqrt_rnri   �   s>   € ð
 	×Ñ˜AÓ€AÜ�;Š;�y×(Ñ(×<Ñ<¸Q¿X¹XÓFÈÏÉÓOÐOr!   zinverse square rootc                 ó¬   • UR                  U 5      n [        R                  " UR                  R	                  U R
                  5      U R                  5      $ r?   )r@   r   r   rB   Úcreate_rsqrtrD   r   rO   s     r   Úrsqrtrl   ¦   ó>   € ð
 	×Ñ˜AÓ€AÜ�;Š;�y×(Ñ(×5Ñ5°a·h±hÓ?ÀÇÁÓHÐHr!   zabsolute valuec                 ó  • UR                  U 5      n U R                  nUR                  5       (       a~  [        R                  " U R
                  S[        R                  US9n[        R                  " UR                  R                  U R                  UR                  5      U R                  5      $ UR                  5       (       aD  [        R                  " UR                  R                  U R                  5      U R                  5      $ UR                  5       (       aD  [        R                  " UR                  R                  U R                  5      U R                  5      $ UR!                  5       (       a  U $  SU 35       e)Né   )rH   zUnexpected dtype )r@   ÚdtypeÚis_fp8e4b15r   ÚfullÚshapeÚint8r   rB   Ú
create_andrD   r   Úis_floatingÚcreate_fabsÚis_int_signedÚcreate_iabsÚis_int_unsigned)rF   rH   rp   Úmasks       r   Úabsr|   ¯   s  € ð 	×Ñ˜AÓ€AØ�G‰G€EØ×Ñ×ÑÜ�yŠy˜Ÿ™ $¬¯	©	¸YÑGˆÜ�{Š{˜9×,Ñ,×7Ñ7¸¿¹À$Ç+Á+ÓNÐPQ×PVÑPVÓWÐWØ	×	Ñ	×	Ñ	Ü�{Š{˜9×,Ñ,×8Ñ8¸¿¹ÓBÀAÇFÁFÓKÐKØ	×	Ñ	×	Ñ	Ü�{Š{˜9×,Ñ,×8Ñ8¸¿¹ÓBÀAÇFÁFÓKÐKØ	×	Ñ	×	 Ñ	 Øˆà1Ð)¨%¨Ð1Ó1ˆur!   zfast divisionc                 ó–   • [         R                  " U5      nUR                  U 5      n UR                  U5      nUR                  XU5      $ r?   )r   Ú_unwrap_if_constexprr@   Úfdiv)rF   rG   Úieee_roundingrH   s       r   r   r   Â   sE   € ô ×-Ò-¨mÓ<€MØ×Ñ˜AÓ€AØ×Ñ˜AÓ€AØ�>‰>˜! Ó.Ð.r!   z<precise division (rounding to nearest wrt the IEEE standard)c                 ó  • UR                  U 5      n UR                  U5      n[        R                  " XU5      u  p[        R                  " UR                  R                  U R                  UR                  5      U R                  5      $ r?   )r@   r   rA   r   rB   Úcreate_precise_divfrD   r   rE   s      r   Údiv_rnrƒ   Ë   sk   € ð 	×Ñ˜AÓ€AØ×Ñ˜AÓ€AÜ×+Ò+¨A°)Ó<�D€AÜ�;Š;�y×(Ñ(×<Ñ<¸Q¿X¹XÀqÇxÁxÓPÐRS×RXÑRXÓYÐYr!   zerror functionc                 ó¬   • UR                  U 5      n [        R                  " UR                  R	                  U R
                  5      U R                  5      $ r?   )r@   r   r   rB   Ú
create_erfrD   r   rO   s     r   Úerfr†   Õ   rQ   r!   Úfloorc                 ó¬   • UR                  U 5      n [        R                  " UR                  R	                  U R
                  5      U R                  5      $ r?   )r@   r   r   rB   Úcreate_floorrD   r   rO   s     r   r‡   r‡   Þ   rm   r!   Úceilc                 ó¬   • UR                  U 5      n [        R                  " UR                  R	                  U R
                  5      U R                  5      $ r?   )r@   r   r   rB   Úcreate_ceilrD   r   rO   s     r   rŠ   rŠ   ç   rU   r!   zfused multiply-addc                 ó²  • UR                  U 5      n UR                  U5      nUR                  U5      n[        R                  " XU5      u  p[        R                  " X U5      u  p [        R                  " X!U5      u  p![        R                  " UR                  R                  U R                  UR                  UR                  5      U R                  5      $ r?   )r@   r   rA   r   rB   Ú
create_fmarD   r   )rF   rG   ÚzrH   s       r   Úfmar�   ð   s©   € ð 	×Ñ˜AÓ€AØ×Ñ˜AÓ€AØ×Ñ˜AÓ€AÜ×+Ò+¨A°)Ó<�D€AÜ×+Ò+¨A°)Ó<�D€AÜ×+Ò+¨A°)Ó<�D€AÜ�;Š;�y×(Ñ(×3Ñ3°A·H±H¸a¿h¹hÈÏÉÓQÐST×SYÑSYÓZÐZr!   r?   )FN)!Ú r   Ú	functoolsr   Útypingr   ÚTypeVarr   Ústrr#   ÚCallabler1   r5   r9   ÚbuiltinrI   Ú_tensor_member_fnrP   rT   rX   r[   r_   rc   rf   ri   rl   r|   r   rƒ   r†   r‡   rŠ   r�   r"   r!   r   Ú<module>r™      sâ  ðÝ Ý Ý à‡L‚L�Ó€ð˜˜c™ð  qô ð2 ð ¨¯©°q°c¸1°fÑ(=ô ð ð ¨¯©°q°c¸1°fÑ(=ô ð" ð ¨¯©°q°c¸1°fÑ(=ô ð& ‡�ÙÒ;Ñ<ÙÐFÓGóTó Hó =ó ðTð ‡�Ù�f˜fÐ%Ñ&Ù�}Ó%Ø×ÑóGó ó &ó 'ó ðGð
 ‡�Ù�f˜fÐ%Ñ&ÙÐ-Ó.Ø×ÑóHó ó /ó 'ó ðHð
 ‡�Ù�f˜fÐ%Ñ&ÙÐ*Ó+Ø×ÑóGó ó ,ó 'ó ðGð
 ‡�Ù�f˜fÐ%Ñ&ÙÐ+Ó,Ø×ÑóHó ó -ó 'ó ðHð
 ‡�Ù�f˜fÐ%Ñ&Ù�xÓ Ø×ÑóGó ó !ó 'ó ðGð
 ‡�Ù�f˜fÐ%Ñ&Ù�vÓØ×ÑóGó ó ó 'ó ðGð
 ‡�Ù�f˜fÐ%Ñ&ÙÐ)Ó*Ø×ÑóHó ó +ó 'ó ðHð
 ‡�Ù�f�XÑÙÐXÓYØ×ÑóPó ó Zó ó ðPð
 ‡�Ù�f˜fÐ%Ñ&ÙÐ,Ó-Ø×ÑóIó ó .ó 'ó ðIð
 ×ÑØ‡�ÙÐ'Ó(ó2ó )ó ó ð2ð  ‡�Ù�Ó'ó/ó (ó ð/ð ‡�Ù�f�XÑÙÐUÓVóZó Wó ó ðZð ‡�Ù�f˜fÐ%Ñ&ÙÐ'Ó(Ø×ÑóGó ó )ó 'ó ðGð
 ‡�Ù�f˜fÐ%Ñ&Ù�wÓØ×ÑóIó ó  ó 'ó ðIð
 ‡�Ù�f˜fÐ%Ñ&Ù�vÓØ×ÑóHó ó ó 'ó ðHð
 ‡�ÙÐ+Ó,ó[ó -ó ñ[r!   