ó
    Eñic	  ã                   ó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)ÚNormal)ÚTransformedDistribution)ÚAbsTransformÚ
HalfNormalc                   ó  ^ • \ 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-normal distribution parameterized by `scale` where::

    X ~ Normal(0, scale)
    Y = |X| ~ HalfNormal(scale)

Example::

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

Args:
    scale (float or Tensor): scale of the full Normal 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_normal.pyr   ÚHalfNormal.__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   ÚHalfNormal.expand0   s&   ø€ Ø×(Ñ(¬°YÓ?ˆÜ‰w‰~˜kˆ~Ð9Ð9r   c                 ó.   • U R                   R                  $ ©N)r   r   ©r   s    r   r   ÚHalfNormal.scale4   s   € à�~‰~×#Ñ#Ð#r   c                 ój   • U R                   [        R                  " S[        R                  -  5      -  $ ©Né   )r   ÚmathÚsqrtÚpir!   s    r   ÚmeanÚHalfNormal.mean8   s"   € à�z‰zœDŸIšI a¬$¯'©'¡kÓ2Ñ2Ð2r   c                 óB   • [         R                  " U R                  5      $ r    )ÚtorchÚ
zeros_liker   r!   s    r   ÚmodeÚHalfNormal.mode<   s   € ä×Ò §
¡
Ó+Ð+r   c                 óf   • U R                   R                  S5      SS[        R                  -  -
  -  $ ©Nr%   é   )r   Úpowr&   r(   r!   s    r   ÚvarianceÚHalfNormal.variance@   s&   € à�z‰z�~‰~˜aÓ  A¨¬D¯G©G©¡OÑ4Ð4r   c                 óî   • U R                   (       a  U R                  U5        U R                  R                  U5      [        R
                  " S5      -   n[        R                  " US:¬  U[        * 5      nU$ )Nr%   r   )	Ú_validate_argsÚ_validate_sampler   Úlog_probr&   Úlogr,   Úwherer   )r   Úvaluer9   s      r   r9   ÚHalfNormal.log_probD   sW   € Ø××Ø×!Ñ! %Ô(Ø—>‘>×*Ñ*¨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-
  $ r1   )r7   r8   r   Úcdf)r   r<   s     r   r?   ÚHalfNormal.cdfK   s8   € Ø××Ø×!Ñ! %Ô(Ø�4—>‘>×%Ñ% eÓ,Ñ,¨qÑ0Ð0r   c                 óD   • U R                   R                  US-   S-  5      $ )Nr2   r%   )r   Úicdf)r   Úprobs     r   rB   ÚHalfNormal.icdfP   s   € Ø�~‰~×"Ñ" D¨1¡H°¡>Ó2Ð2r   c                 ód   • U R                   R                  5       [        R                  " S5      -
  $ r$   )r   Úentropyr&   r:   r!   s    r   rF   ÚHalfNormal.entropyS   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.   r4   r9   r?   rB   rF   Ú__static_attributes__Ú__classcell__)r   s   @r   r	   r	      sò   ø‡ ñð"  × 4Ñ 4Ð5€Oà×%Ñ%€GØ€KàÓð
 &*ñQà˜‰~ðQð ˜d‘{ðQð 
÷	Qð Q÷:ð ð$�vó $ó ð$ð ð3�fó 3ó ð3ð ð,�fó ,ó ð,ð ð5˜&ó 5ó ð5òò1ò
3÷6ð 6r   )r&   r,   r   r   Útorch.distributionsr   Útorch.distributions.normalr   Ú,torch.distributions.transformed_distributionr   Útorch.distributions.transformsr   Ú__all__r	   rH   r   r   Ú<module>r^      s2   ðã ã ß Ý +Ý -Ý PÝ 7ð ˆ.€ôE6Ð(õ E6r   