+
    –°³jk  ã                   óæ   € ^ RI t ^ RIt^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIH	t	H
t
 R.tR t. ROt. ROt. ROt. ROt]].t]].tRR lt]P(                  P*                  R	 4       t ! R
 R]4      tR# )é    N©ÚTensor)Úconstraints)ÚDistribution)Úbroadcast_allÚlazy_propertyÚVonMisesc                 óŠ   € \        V4      pVP                  4       pV'       d    VP                  4       W,          ,           pK'  V# ©N)ÚlistÚpop)ÚyÚcoefÚresults   && Ú^/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/distributions/von_mises.pyÚ
_eval_polyr      s0   € Ü�‹:€DØ�X‰X‹Z€Fß
Ø—‘“˜a�jÕ(ŠØ€Mó    c                óÀ  € V^ 8w  d   V^8w  d   \        RV 24      hV R,          pW",          p\        V\        V,          4      pV^8X  d   V P                  4       V,          pVP	                  4       pRV ,          pV RV P	                  4       ,          ,
          \        V\
        V,          4      P	                  4       ,           p\        P                  ! V R8  W44      pV# )zL
Returns ``log(I_order(x))`` for ``x > 0``,
where `order` is either 0 or 1.
zorder must be 0 or 1, got g      @ç      à?)ÚAssertionErrorr   Ú_COEF_SMALLÚabsÚlogÚ_COEF_LARGEÚtorchÚwhere)ÚxÚorderr   ÚsmallÚlarger   s   &&    r   Ú_log_modified_bessel_fnr!   D   sº   € ð
 �„z�e˜q”jÜÐ9¸%¸ÐAÓBÐBð 	
ˆD�€AØ	�€AÜ�qœ+ eÕ,Ó-€EØ�„zØ—‘“˜%•ˆØ�I‰I‹K€Eð 	ˆq�€AØ��a—e‘e“g•Õ¤
¨1¬k¸%Õ.@Ó A× EÑ EÓ GÕG€Eä�[Š[˜˜T™ 5Ó0€FØ€Mr   c                 óè  € \         P                  ! VP                  \         P                  V P                  R 7      pVP                  4       '       EgS   \         P                  ! RVP                  ,           V P                  V P                  R 7      pVP                  4       w  rgp\         P                  ! \        P                  V,          4      p	^W),          ,           W),           ,          p
WV
,
          ,          pV^V,
          ,          V,
          ^ 8„  W·,          P                  4       ^,           V,
          ^ 8¬  ,          pVP                  4       '       g   EK  \         P                  ! WÈR,
          P                  4       V
P!                  4       ,          V4      pWL,          pEKi  V\        P                  ,           V ,           ^\        P                  ,          ,          \        P                  ,
          # )©ÚdtypeÚdevicer   )é   )r   ÚzerosÚshapeÚboolr%   ÚallÚrandr$   ÚunbindÚcosÚmathÚpir   Úanyr   ÚsignÚacos)ÚlocÚconcentrationÚ
proposal_rr   ÚdoneÚuÚu1Úu2Úu3ÚzÚfÚcÚaccepts   &&&&         r   Ú_rejection_sampler?   \   s%  € ä�;Š;�q—w‘w¤e§j¡j¸¿¹ÔD€Dà�h‰h�j‹jÜ�JŠJ�t˜aŸg™g•~¨S¯Y©Y¸s¿z¹zÔJˆØ—X‘X“Z‰
ˆ�Ü�IŠI”d—g‘g •lÓ#ˆØ�•Õ J¥NÕ3ˆØ¨!�^Õ,ˆØ˜˜A�•; Õ# qÑ(¨a­f¯\©\«^¸aÕ-?À!Õ-CÀqÑ-HÕIˆØ�:‰:�<�<ä—’˜F¨#¥X§O¡OÓ$5¸¿¹»Õ$@À!ÓDˆAØ•=‹DØ”—‘�K˜#Õ !¤d§g¡g¥+Õ.´·±Õ8Ð8r   c                   ó¦  a a€ ] tR t^nt oRtR]P                  R]P                  /t]P                  t	Rt
RV3R lV 3R llltR t]V3R lR	 l4       t]V3R
 lR l4       t]V3R lR l4       t]P$                  ! 4       ]P&                  ! 4       3R l4       tRV 3R llt]V3R lR l4       t]V3R lR l4       t]V3R lR l4       tRtVtV ;t# )r	   a(  
A circular von Mises distribution.

This implementation uses polar coordinates. The ``loc`` and ``value`` args
can be any real number (to facilitate unconstrained optimization), but are
interpreted as angles modulo 2 pi.

Example::
    >>> # xdoctest: +IGNORE_WANT("non-deterministic")
    >>> m = VonMises(torch.tensor([1.0]), torch.tensor([1.0]))
    >>> m.sample()  # von Mises distributed with loc=1 and concentration=1
    tensor([1.9777])

:param torch.Tensor loc: an angle in radians.
:param torch.Tensor concentration: concentration parameter
r3   r4   Fc                ó>   <€ V ^8„  d   QhRS[ RS[ RS[R,          RR/# )é   r3   r4   Úvalidate_argsNÚreturn)r   r)   )ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚVonMises.__annotate__…   s=   ø€ ÷ 	Bñ 	Báð	Bñ ð	Bñ ˜d•{ð		Bð
 
ñ	Br   c                ó®   <€ \        W4      w  V n        V n        V P                  P                  p\        P
                  ! 4       p\        SV `  WEV4       R # r   )r   r3   r4   r(   r   ÚSizeÚsuperÚ__init__)Úselfr3   r4   rC   Úbatch_shapeÚevent_shapeÚ	__class__s   &&&&  €r   rL   ÚVonMises.__init__…   s@   ø€ ô (5°SÓ'HÑ$ˆŒ�$Ô$Ø—h‘h—n‘nˆÜ—j’j“lˆÜ‰Ñ˜°=ÖAr   c                óV  € V P                   '       d   V P                  V4       V P                  \        P                  ! WP
                  ,
          4      ,          pV\        P                  ! ^\        P                  ,          4      ,
          \        V P                  ^ R7      ,
          pV# )rB   ©r   )
Ú_validate_argsÚ_validate_sampler4   r   r-   r3   r.   r   r/   r!   )rM   ÚvalueÚlog_probs   && r   rW   ÚVonMises.log_prob�   sz   € Ø××ÐØ×!Ñ! %Ô(Ø×%Ñ%¬¯	ª	°%¿(¹(Õ2BÓ(CÕCˆàÜ�hŠh�qœ4Ÿ7™7•{Ó#õ$ä% d×&8Ñ&8ÀÔBõCð 	ð
 ˆr   c                ó    <€ V ^8„  d   QhRS[ /# ©rB   rD   r   )rE   rF   s   "€r   rG   rH   œ   s   ø€ ÷ )ñ )‘fñ )r   c                óT   € V P                   P                  \        P                  4      # r   )r3   Útor   Údouble©rM   s   &r   Ú_locÚVonMises._loc›   s   € à�x‰x�{‰{œ5Ÿ<™<Ó(Ð(r   c                ó    <€ V ^8„  d   QhRS[ /# rZ   r   )rE   rF   s   "€r   rG   rH       s   ø€ ÷ 3ñ 3¡ñ 3r   c                óT   € V P                   P                  \        P                  4      # r   )r4   r\   r   r]   r^   s   &r   Ú_concentrationÚVonMises._concentrationŸ   s   € à×!Ñ!×$Ñ$¤U§\¡\Ó2Ð2r   c                ó    <€ V ^8„  d   QhRS[ /# rZ   r   )rE   rF   s   "€r   rG   rH   ¤   s   ø€ ÷ Jñ J™Vñ Jr   c                óZ  € V P                   p^^^V^,          ,          ,           P                  4       ,           pV^V,          P                  4       ,
          ^V,          ,          p^V^,          ,           ^V,          ,          p^V,          V,           p\        P                  ! VR8  WT4      # )é   gñhãˆµøä>)rc   Úsqrtr   r   )rM   ÚkappaÚtauÚrhoÚ_proposal_rÚ_proposal_r_taylors   &     r   rl   ÚVonMises._proposal_r£   s†   € à×#Ñ#ˆØ�1�q˜5 !�8•|Õ#×)Ñ)Ó+Õ+ˆØ�a˜#•g—^‘^Ó%Õ%¨!¨e­)Õ4ˆØ˜3 �6•z a¨#¥gÕ.ˆà �Y¨Õ.ÐÜ�{Š{˜5 4™<Ð);ÓIÐIr   c                óB  € V P                  V4      p\        P                  ! W P                  P                  V P
                  P                  R7      p\        V P                  V P                  V P                  V4      P                  V P
                  P                  4      # )aŸ  
The sampling algorithm for the von Mises distribution is based on the
following paper: D.J. Best and N.I. Fisher, "Efficient simulation of the
von Mises distribution." Applied Statistics (1979): 152-157.

Sampling is always done in double precision internally to avoid a hang
in _rejection_sample() for small values of the concentration, which
starts to happen for single precision around 1e-4 (see issue #88443).
r#   )Ú_extended_shaper   Úemptyr_   r$   r3   r%   r?   rc   rl   r\   )rM   Úsample_shaper(   r   s   &&  r   ÚsampleÚVonMises.sample­   sl   € ð ×$Ñ$ \Ó2ˆÜ�KŠK˜§Y¡Y§_¡_¸T¿X¹X¿_¹_ÔMˆÜ Ø�I‰I�t×*Ñ*¨D×,<Ñ,<¸aó
ç
‰"ˆT�X‰X�^‰^Ó
ð	r   c                ó  <€  \         SV `  V4      #   \         dh    T P                  P	                  R 4      pT P
                  P                  T4      pT P                  P                  T4      p\        T 4      ! YETR7      u # i ; i)rT   )rC   )rK   ÚexpandÚNotImplementedErrorÚ__dict__Úgetr3   r4   Útype)rM   rN   Ú	_instancerC   r3   r4   rP   s   &&&   €r   rv   ÚVonMises.expand¾   sw   ø€ ð	OÜ‘7‘> +Ó.Ð.øÜ"ô 	OØ ŸM™M×-Ñ-Ð.>Ó?ˆMØ—(‘(—/‘/ +Ó.ˆCØ ×.Ñ.×5Ñ5°kÓBˆMÜ˜”:˜cÀÔNÒNð		Oús   ƒ ’A/BÂBc                ó    <€ V ^8„  d   QhRS[ /# rZ   r   )rE   rF   s   "€r   rG   rH   È   s   ø€ ÷ ñ ‘fñ r   c                ó   € V P                   # )z(
The provided mean is the circular one.
©r3   r^   s   &r   ÚmeanÚVonMises.meanÇ   s   € ð
 �x‰xˆr   c                ó    <€ V ^8„  d   QhRS[ /# rZ   r   )rE   rF   s   "€r   rG   rH   Ï   s   ø€ ÷ ñ ‘fñ r   c                ó   € V P                   # r   r   r^   s   &r   ÚmodeÚVonMises.modeÎ   s   € à�x‰xˆr   c                ó    <€ V ^8„  d   QhRS[ /# rZ   r   )rE   rF   s   "€r   rG   rH   Ó   s   ø€ ÷ 

ñ 

™&ñ 

r   c                ó’   € ^\        V P                  ^R7      \        V P                  ^ R7      ,
          P                  4       ,
          # )z,
The provided variance is the circular one.
rS   )r!   r4   Úexpr^   s   &r   ÚvarianceÚVonMises.varianceÒ   s>   € ð ä'¨×(:Ñ(:À!ÔDÜ)¨$×*<Ñ*<ÀAÔFõGç‰c‹eõ	ð	
r   )r4   r3   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚrealÚpositiveÚarg_constraintsÚsupportÚhas_rsamplerL   rW   r   r_   rc   rl   r   Úno_gradrJ   rs   rv   Úpropertyr€   r„   r‰   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)rP   rF   s   @@r   r	   r	   n   sï   ù‡ € ñð$ ˜k×.Ñ.°À×AUÑAUÐV€OØ×Ñ€GØ€K÷	Bõ 	Bò	ð ÷)ó ð)ð ÷3ó ð3ð ÷Jó ðJð ‡]‚]ƒ_Ø"'§*¢*£,ó ó ð÷ Oð ÷ó ðð ÷ó ðð ÷

ó ÷

ð 

r   )g      ð?g§Œ$æþ@g¤0”¸3¸@g,–Ç?ØNó?gª2çt´Ñ?gýåIˆ¨x¢?gtHÅZ×Ãr?)	ç Þe3EˆÙ?g�-ÿ¥5‹?gÛÕ’+Hub?gJ‰NÁÐY¿gTÑPŠóÃ‚?gÇý'•¿gãZåðæüš?gULÊ+ß�¿gˆ;ý^p?)r   g§ì‘Yÿì?g(„«�Ézà?gê*öúOÃ?gZƒµ9›?gœå.™•³h?gÓ°­Ù©=5?)	rš   g¾þÍ.k¤¿g?Œ”V¨m¿g–tZØOÖZ?gÜ<¯Q …¿gÙ'8©`—?gP“þâ¥�¿gqœ©J:N’?g;PÈJ£4q¿)r   )r.   r   Ú	torch.jitr   Útorch.distributionsr   Ú torch.distributions.distributionr   Útorch.distributions.utilsr   r   Ú__all__r   Ú_I0_COEF_SMALLÚ_I0_COEF_LARGEÚ_I1_COEF_SMALLÚ_I1_COEF_LARGEr   r   r!   ÚjitÚscript_if_tracingr?   r	   © r   r   Ú<module>r§      s‹   ðã ã Û Ý Ý +Ý 9ß Bð ˆ,€òò€ò
€ò€ò
€ð ˜~Ð.€Ø˜~Ð.€ôð0 ‡�×Ññ9ó ð9ô"o
ˆ|ö o
r   