
    9i0
                         S SK r S SKJrJ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)OptionalUnion)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\\\4   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       _/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/torch/distributions/half_cauchy.pyr   HalfCauchy.__init__'   s)    
 1e59	LN-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.expand/   s&    ((Y?w~k~99r   c                 .    U R                   R                  $ N)r   r   r   s    r   r   HalfCauchy.scale3   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.mean7   s@    zz  "HH**""::$$	
 	
r   c                 B    [         R                  " U R                  5      $ r"   )r)   
zeros_liker   r#   s    r   modeHalfCauchy.mode@   s    

++r   c                 .    U R                   R                  $ r"   )r   variancer#   s    r   r4   HalfCauchy.varianceD   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   valuer;   s      r   r;   HalfCauchy.log_probH   s    !!%(--33DNN<P<P<W<W
 >>**51DHHQK?;;uz8cT:r   c                     U R                   (       a  U R                  U5        SU R                  R                  U5      -  S-
  $ )Nr7      )r8   r9   r   cdf)r   r>   s     r   rB   HalfCauchy.cdfR   s8    !!%(4>>%%e,,q00r   c                 D    U R                   R                  US-   S-  5      $ )NrA   r7   )r   icdf)r   probs     r   rE   HalfCauchy.icdfW   s    ~~""D1H>22r   c                 d    U R                   R                  5       [        R                  " S5      -
  $ )Nr7   )r   entropyr,   r<   r#   s    r   rI   HalfCauchy.entropyZ   s"    ~~%%'$((1+55r    r"   )__name__
__module____qualname____firstlineno____doc__r   positivearg_constraintsnonnegativesupporthas_rsampler   __annotations__r   r   floatr   boolr   r   propertyr   r-   r1   r4   r;   rB   rE   rI   __static_attributes____classcell__)r   s   @r   r   r      s    "  4 45O%%GK
 )-QVU]#Q  ~Q 
	Q Q: $v $ $ 
f 
 
 ,f , , '& ' '1
36 6r   )r,   typingr   r   r)   r   r   torch.distributionsr   torch.distributions.cauchyr   ,torch.distributions.transformed_distributionr	   torch.distributions.transformsr
   __all__r   rK   r   r   <module>rb      s5     "   + - P 7 .K6( K6r   