ó
    EñiN
  ã                   óp   • S SK r S SKrS SKJrJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S/r " S S\	5      rg)	é    N)ÚinfÚTensor)Úconstraints)ÚCauchy)ÚTransformedDistribution)ÚAbsTransformÚ
HalfCauchyc                   ó  ^ • \ rS rSr% SrS\R                  0r\R                  r	Sr
\\S'    SS\\-  S\S-  SS4U 4S	 jjjrSU 4S
 jjr\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\4S j5       rS rS rS rS rSrU =r$ )r	   é   aˆ  
Creates a half-Cauchy distribution parameterized by `scale` where::

    X ~ Cauchy(0, scale)
    Y = |X| ~ HalfCauchy(scale)

Example::

    >>> # xdoctest: +IGNORE_WANT("non-deterministic")
    >>> m = HalfCauchy(torch.tensor([1.0]))
    >>> m.sample()  # half-cauchy distributed with scale=1
    tensor([ 2.3214])

Args:
    scale (float or Tensor): scale of the full Cauchy distribution
ÚscaleTÚ	base_distNÚvalidate_argsÚreturnc                 óJ   >• [        SUSS9n[        TU ]	  U[        5       US9  g )Nr   F)r   )r   ÚsuperÚ__init__r   )Úselfr   r   r   Ú	__class__s       €Ú\/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/distributions/half_cauchy.pyr   ÚHalfCauchy.__init__(   s)   ø€ ô
 ˜1˜e°5Ñ9ˆ	Ü‰Ñ˜¤L£NÀ-ÐÒPó    c                 óJ   >• U R                  [        U5      n[        TU ]  XS9$ )N)Ú	_instance)Ú_get_checked_instancer	   r   Úexpand)r   Úbatch_shaper   Únewr   s       €r   r   ÚHalfCauchy.expand0   s&   ø€ Ø×(Ñ(¬°YÓ?ˆÜ‰w‰~˜kˆ~Ð9Ð9r   c                 ó.   • U R                   R                  $ ©N)r   r   ©r   s    r   r   ÚHalfCauchy.scale4   s   € à�~‰~×#Ñ#Ð#r   c                 ó¸   • [         R                  " U R                  5       [        R                  U R
                  R                  U R
                  R                  S9$ )N©ÚdtypeÚdevice)ÚtorchÚfullÚ_extended_shapeÚmathr   r   r%   r&   r!   s    r   ÚmeanÚHalfCauchy.mean8   s@   € ä�zŠzØ× Ñ Ó"Ü�H‰HØ—*‘*×"Ñ"Ø—:‘:×$Ñ$ñ	
ð 	
r   c                 óB   • [         R                  " U R                  5      $ r    )r'   Ú
zeros_liker   r!   s    r   ÚmodeÚHalfCauchy.modeA   s   € ä×Ò §
¡
Ó+Ð+r   c                 ó.   • U R                   R                  $ r    )r   Úvariancer!   s    r   r2   ÚHalfCauchy.varianceE   s   € à�~‰~×&Ñ&Ð&r   c                 ó�  • U R                   (       a  U R                  U5        [        R                  " XR                  R
                  R                  U R                  R
                  R                  S9nU R                  R                  U5      [        R                  " S5      -   n[        R                  " US:¬  U[        * 5      nU$ )Nr$   é   r   )Ú_validate_argsÚ_validate_sampler'   Ú	as_tensorr   r   r%   r&   Úlog_probr*   ÚlogÚwherer   )r   Úvaluer9   s      r   r9   ÚHalfCauchy.log_probI   sŒ   € Ø××Ø×!Ñ! %Ô(Ü—’ØŸ™×-Ñ-×3Ñ3¸D¿N¹N×<PÑ<P×<WÑ<Wñ
ˆð —>‘>×*Ñ*¨5Ó1´D·H²H¸Q³KÑ?ˆÜ—;’;˜u¨™z¨8´c°TÓ:ˆØˆr   c                 óˆ   • U R                   (       a  U R                  U5        SU R                  R                  U5      -  S-
  $ )Nr5   é   )r6   r7   r   Úcdf)r   r<   s     r   r@   ÚHalfCauchy.cdfS   s8   € Ø××Ø×!Ñ! %Ô(Ø�4—>‘>×%Ñ% eÓ,Ñ,¨qÑ0Ð0r   c                 óD   • U R                   R                  US-   S-  5      $ )Nr?   r5   )r   Úicdf)r   Úprobs     r   rC   ÚHalfCauchy.icdfX   s   € Ø�~‰~×"Ñ" D¨1¡H°¡>Ó2Ð2r   c                 ód   • U R                   R                  5       [        R                  " S5      -
  $ )Nr5   )r   Úentropyr*   r:   r!   s    r   rG   ÚHalfCauchy.entropy[   s"   € Ø�~‰~×%Ñ%Ó'¬$¯(ª(°1«+Ñ5Ð5r   © r    )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚpositiveÚarg_constraintsÚnonnegativeÚsupportÚhas_rsampler   Ú__annotations__r   ÚfloatÚboolr   r   Úpropertyr   r+   r/   r2   r9   r@   rC   rG   Ú__static_attributes__Ú__classcell__)r   s   @r   r	   r	      sò   ø‡ ñð"  × 4Ñ 4Ð5€Oà×%Ñ%€GØ€KàÓð
 &*ñQà˜‰~ðQð ˜d‘{ðQð 
÷	Qð Q÷:ð ð$�vó $ó ð$ð ð
�fó 
ó ð
ð ð,�fó ,ó ð,ð ð'˜&ó 'ó ð'òò1ò
3÷6ð 6r   )r*   r'   r   r   Útorch.distributionsr   Útorch.distributions.cauchyr   Ú,torch.distributions.transformed_distributionr   Útorch.distributions.transformsr   Ú__all__r	   rI   r   r   Ú<module>r_      s2   ðã ã ß Ý +Ý -Ý PÝ 7ð ˆ.€ôM6Ð(õ M6r   