+
    ‹°³jÈ  ã                   óN  € ^RI Ht ^RIHt ^RIHt ]P                  ! ^
4      t]]3R R ll4       t]]3R R ll4       t	]]3R R	 ll4       t
]]3R
 R ll4       t]R 4       t]]3R R ll4       t]]3R R ll4       t]R 4       t]]3R R ll4       t]]3R R ll4       tR# )é   )Újit)Úcore)Úmathc                ó8   € V ^8„  d   QhR\         P                  /# ©r   Ún_rounds©ÚtlÚ	constexpr)Úformats   "ÚW/home/luca/screen-checking/.venv/lib/python3.14/site-packages/triton/language/random.pyÚ__annotate__r      s   € ÷ ñ ´"·,±,ñ ó    c                ód  € V P                   \        P                  8X  d
   RpRpRp	Rp
M:\        P                  ! V P                   \        P                  8H  R4       RpRpRp	R	p
\        P
                  ! V4       F±  pT	pT
pYrþ\        P                  ! Wß4      V,          V,          p \        P                  ! WÎ4      V,          V,          p\        P                  ! WßR
R7      p\        P                  ! WÎR
R7      p\        P                  ! WGR
R7      p\        P                  ! WXR
R7      pK³  	  WW#3# )zN
Run `n_rounds` rounds of Philox for state (c0, c1, c2, c3) and key (k0, k1).
l   ¹yn< l   ….Ïv l   S¢$ l   W= z"dtype not supported in philox_impll   |”~åf»q	 l   ;'•	:=[ l   “l˜B;: l   W$*Ž	ÔR F)Úsanitize_overflow)
Údtyper
   Úuint32Ústatic_assertÚuint64Ústatic_ranger   ÚumulhiÚmulÚadd)Úc0Úc1Úc2Úc3Úk0Úk1r   ÚPHILOX_KEY_AÚPHILOX_KEY_BÚPHILOX_ROUND_AÚPHILOX_ROUND_BÚ_ÚAÚBÚ_c0Ú_c2s   &&&&&&&         r   Úphilox_implr)      sú   € ð
 
‡x�x”2—9‘9ÔØ%/ˆØ%/ˆØ'1ˆØ'1‰ä
×Ò˜Ÿ™¤R§Y¡YÑ.Ð0TÔUØ%7ˆØ%7ˆØ'9ˆØ'9ˆä�_Š_˜XÖ&ˆð ˆØˆØˆSÜ�[Š[˜Ó  2Õ%¨Õ*ˆÜ�[Š[˜Ó  2Õ%¨Õ*ˆÜ�VŠV�A¨eÔ4ˆÜ�VŠV�A¨eÔ4ˆä�VŠV�B¸Ô>ˆÜ�VŠV�B¸Ô>Šñ 'ð �2ˆ>Ðr   c                ó8   € V ^8„  d   QhR\         P                  /# r   r	   )r   s   "r   r   r   .   s   € ÷ Cñ C¬2¯<©<ñ Cr   c           	      ó,  € \         P                  ! V 4      p \         P                  ! V P                  P	                  4       4       V P                  \         P                  4      p \         P                  ! V4      p\         P                  ! V4      p\         P                  ! V4      p\         P                  ! V4      p\         P                  ! VP                  P                  4      ^ 8X  de   \         P                  pV ^ ,	          R,          P                  \         P                  4      pV R,          P                  \         P                  4      pMm\         P                  ! \         P                  ! VP                  P                  4      ^@8H  R4       \         P                  p\         P                  ! R^ VR7      pT pVP                  VRR7      pVP                  VRR7      pVP                  VRR7      pVP                  VRR7      p\        WW4W‡V4      # )é    l   ÿÿ z bitwidth not supported in philox)r   T©Úbitcast)é   )r
   Ú	to_tensorr   r   Úis_intÚtor   r   Úprimitive_bitwidthr   Úfullr)   )	Úseedr   r   r   r   r   Ú	int_dtypeÚseed_hiÚseed_los	   &&&&&&   r   Úphiloxr9   -   sq  € ä�<Š<˜Ó€DÜ×Ò�T—Z‘Z×&Ñ&Ó(Ô)Ø�7‰7”2—9‘9Ó€DÜ	�Š�bÓ	€BÜ	�Š�bÓ	€BÜ	�Š�bÓ	€BÜ	�Š�bÓ	€Bä	‡|‚|�B—H‘H×/Ñ/Ó0°BÔ6Ü—I‘Iˆ	Ø˜B•J *Õ,×0Ñ0´·±Ó;ˆØ˜*Õ$×(Ñ(¬¯©Ó3‰ä
×ÒœŸš b§h¡h×&AÑ&AÓBÀbÑHÐJlÔmÜ—I‘Iˆ	Ü—'’'˜% ¨)Ô4ˆØˆà	�‰ˆy $ˆÓ	'€BØ	�‰ˆy $ˆÓ	'€BØ	�‰ˆy $ˆÓ	'€BØ	�‰ˆy $ˆÓ	'€BÜ�r˜r w¸ÓBÐBr   c                ó8   € V ^8„  d   QhR\         P                  /# r   r	   )r   s   "r   r   r   I   s   € ÷ ñ ¤B§L¡Lñ r   c                ó(   € \        WV4      w  p  pV# )aU  
Given a :code:`seed` scalar and an :code:`offset` block, returns a single
block of random :code:`int32`.

If you need multiple streams of random numbers,
using `randint4x` is likely to be faster than calling `randint` 4 times.

:param seed: The seed for generating random numbers.
:param offset: The offsets to generate random numbers for.
)Ú	randint4x)r5   Úoffsetr   Úretr$   s   &&&  r   Úrandintr?   H   s   € ô ˜T¨8Ó4�L€CˆˆAˆqØ€Jr   c                ó8   € V ^8„  d   QhR\         P                  /# r   r	   )r   s   "r   r   r   Y   s   € ÷ @ñ @¤b§l¡lñ @r   c                ó  € VP                  \        P                  4      pV^ ,          p\        P                  ! VP                  P
                  4      ^ 8”  d(   V^ ,	          P                  \        P                  4      pMTp\        WWTWB4      # )a9  
Given a :code:`seed` scalar and an :code:`offset` block, returns four
blocks of random :code:`int32`.

This is the maximally efficient entry point
to Triton's Philox pseudo-random number generator.

:param seed: The seed for generating random numbers.
:param offsets: The offsets to generate random numbers for.
)r2   r
   r   r   r   r3   r9   )r5   r=   r   Ú	offset_loÚ_0Ú	offset_his   &&&   r   r<   r<   X   sf   € ð —	‘	œ"Ÿ)™)Ó$€IØ	�Q�€Bä	‡|‚|�F—L‘L×3Ñ3Ó4°rÔ9Ø˜r•\×%Ñ%¤b§i¡iÓ0‰	àˆ	ä�$ 9°"Ó?Ð?r   c                ó°  € \         P                  ! V P                  \         P                  8H  4      '       g8   \         P                  ! V P                  \         P                  8H  4      '       d%   V P                  \         P                  RR7      p RpM¡\         P                  ! \         P                  ! V P                  \         P                  8H  4      ;'       g2    \         P                  ! V P                  \         P                  8H  4      4       V P                  \         P                  RR7      p Rp\         P                  ! V ^ 8  V ( V 4      p W,          # )zg
Numerically stable function to convert a random uint into a random float uniformly sampled in [0, 1).
Tr-   gýïÿÿÿ=g   Àÿÿÿ;)
r
   r   r   r   Úint32r2   r   r   Úint64Úwhere)ÚxÚscales   & r   Úuint_to_uniform_floatrK   ~   sÖ   € ô 
‡|‚|�A—G‘GœrŸy™yÑ(×)Ò)¬R¯\ª\¸!¿'¹'ÄRÇXÁXÑ:M×-NÒ-Nà�D‰D”—‘ 4ˆDÓ(ˆØ ‰ä
×ÒœŸš a§g¡g´·±Ñ&:Ó;×`Ð`¼r¿|º|ÈAÏGÉGÔWY×W_ÑW_ÑL_Ó?`ÔaØ�D‰D”—‘ 4ˆDÓ(ˆØ&ˆÜ
�Š��Q‘˜˜˜AÓ€AØ�9Ðr   c                ó8   € V ^8„  d   QhR\         P                  /# r   r	   )r   s   "r   r   r   “   s   € ÷ 	)ñ 	)¤§¡ñ 	)r   c                ó0   € \        WV4      p\        V4      # )zê
Given a :code:`seed` scalar and an :code:`offset` block,
returns a block of random :code:`float32` in :math:`U(0, 1)`.

:param seed: The seed for generating random numbers.
:param offsets: The offsets to generate random numbers for.
)r?   rK   )r5   r=   r   Úsources   &&& r   ÚrandrO   ’   s   € ô �T 8Ó,€FÜ  Ó(Ð(r   c                ó8   € V ^8„  d   QhR\         P                  /# r   r	   )r   s   "r   r   r       s   € ÷ ñ ¤B§L¡Lñ r   c                ó€   € \        WV4      w  r4rV\        V4      p\        V4      p\        V4      p	\        V4      p
WxWš3# )zì
Given a :code:`seed` scalar and an :code:`offsets` block,
returns 4 blocks of random :code:`float32` in :math:`U(0, 1)`.

:param seed: The seed for generating random numbers.
:param offsets: The offsets to generate random numbers for.
)r<   rK   )r5   Úoffsetsr   Úi1Úi2Úi3Úi4Úu1Úu2Úu3Úu4s   &&&        r   Úrand4xr[   Ÿ   sF   € ô ˜t¨hÓ7�N€BˆBÜ	˜rÓ	"€BÜ	˜rÓ	"€BÜ	˜rÓ	"€BÜ	˜rÓ	"€BØ�2ˆ>Ðr   c                ó  € \         P                  ! RV 4      p RV,          p\        P                  ! R\        P                  ! V 4      ,          4      pV\        P
                  ! V4      ,          V\        P                  ! V4      ,          3# )zBox-Muller transformgH¯¼šò×z>g-DTû!@g       À)r
   Úmaximumr   ÚsqrtÚlogÚcosÚsin)rW   rX   ÚthÚrs   &&  r   Úpair_uniform_to_normalrd   µ   s^   € ô 
�Š�F˜BÓ	€BØ	˜RÕ	€BÜ�	Š	�$œŸš "›Õ%Ó&€AØŒt�xŠx˜‹|Õ˜Q¤§¢¨"£Õ-Ð-Ð-r   c                ó8   € V ^8„  d   QhR\         P                  /# r   r	   )r   s   "r   r   r   ¿   s   € ÷ ñ ¤"§,¡,ñ r   c                ól   € \        WV4      w  r4 p\        V4      p\        V4      p\        Wg4      w  r…V# )zô
Given a :code:`seed` scalar and an :code:`offset` block,
returns a block of random :code:`float32` in :math:`\mathcal{N}(0, 1)`.

:param seed: The seed for generating random numbers.
:param offsets: The offsets to generate random numbers for.
)r<   rK   rd   )	r5   r=   r   rS   rT   r$   rW   rX   Ún1s	   &&&      r   Úrandnrh   ¾   s;   € ô ˜T¨8Ó4�L€BˆAˆqÜ	˜rÓ	"€BÜ	˜rÓ	"€BÜ" 2Ó*�E€BØ€Ir   c                ó8   € V ^8„  d   QhR\         P                  /# r   r	   )r   s   "r   r   r   Ï   s   € ÷ ñ ¤B§L¡Lñ r   c                ó\   € \        WV4      w  r4rV\        W44      w  rx\        WV4      w  ršWxWš3# )zõ
Given a :code:`seed` scalar and an :code:`offset` block,
returns 4 blocks of random :code:`float32` in :math:`\mathcal{N}(0, 1)`.

:param seed: The seed for generating random numbers.
:param offsets: The offsets to generate random numbers for.
)r[   rd   )r5   r=   r   rW   rX   rY   rZ   rg   Ún2Ún3Ún4s   &&&        r   Úrandn4xrn   Î   s6   € ô ˜D¨(Ó3�N€BˆBÜ# BÓ+�F€BÜ# BÓ+�F€BØ�2ˆ>Ðr   N)Úruntime.jitr   Ú r   r
   r   r   ÚN_ROUNDS_DEFAULTr)   r9   r?   r<   rK   rO   r[   rd   rh   rn   © r   r   Ú<module>rs      s  ðÝ Ý Ý à—<’< Ó#Ð ð ØAQö ó ðð@ Ø:Jö Có ðCð4 Ø3Cö ó ðð Ø5Eö @ó ð@ðJ ñó ðð& Ø0@ö 	)ó ð	)ð Ø3Cö ó ðð* ñ.ó ð.ð Ø1Aö ó ðð Ø3Cö ó òr   