ó
    EñiY  ã                   ó€   • S SK r S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
JrJr  S SKJr  S	/r " S
 S	\	5      rg)é    N)ÚTensor)Úconstraints)ÚExponential)Úeuler_constant)ÚTransformedDistribution)ÚAffineTransformÚPowerTransform)Úbroadcast_allÚWeibullc            	       ó   ^ • \ rS rSrSr\R                  \R                  S.r\R                  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 rSrU =r$ )r   é   a  
Samples from a two-parameter Weibull distribution.

Example:

    >>> # xdoctest: +IGNORE_WANT("non-deterministic")
    >>> m = Weibull(torch.tensor([1.0]), torch.tensor([1.0]))
    >>> m.sample()  # sample from a Weibull distribution with scale=1, concentration=1
    tensor([ 0.4784])

Args:
    scale (float or Tensor): Scale parameter of distribution (lambda).
    concentration (float or Tensor): Concentration parameter of distribution (k/shape).
    validate_args (bool, optional): Whether to validate arguments. Default: None.
)ÚscaleÚconcentrationNr   r   Úvalidate_argsÚreturnc                 ó.  >• [        X5      u  U l        U l        U R                  R                  5       U l        [        [        R                  " U R                  5      US9n[        U R                  S9[        SU R                  S9/n[        TU ]-  XEUS9  g )N©r   ©Úexponentr   ©Úlocr   )r
   r   r   Ú
reciprocalÚconcentration_reciprocalr   ÚtorchÚ	ones_liker	   r   ÚsuperÚ__init__)Úselfr   r   r   Ú	base_distÚ
transformsÚ	__class__s         €ÚX/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/distributions/weibull.pyr   ÚWeibull.__init__(   s…   ø€ ô *7°uÓ)LÑ&ˆŒ
�DÔ&Ø(,×(:Ñ(:×(EÑ(EÓ(GˆÔ%ÜÜ�OŠO˜DŸJ™JÓ'°}ñ
ˆ	ô  D×$AÑ$AÑBÜ ¨¯©Ñ4ð
ˆ
ô
 	‰Ñ˜¸mÐÒLó    c                 ó¼  >• U R                  [        U5      nU R                  R                  U5      Ul        U R                  R                  U5      Ul        UR                  R                  5       Ul        U R                  R                  U5      n[        UR                  S9[        SUR                  S9/n[        [        U]/  XESS9  U R                  Ul        U$ )Nr   r   r   Fr   )Ú_get_checked_instancer   r   Úexpandr   r   r   r   r	   r   r   r   Ú_validate_args)r   Úbatch_shapeÚ	_instanceÚnewr   r    r!   s         €r"   r'   ÚWeibull.expand:   s»   ø€ Ø×(Ñ(¬°)Ó<ˆØ—J‘J×%Ñ% kÓ2ˆŒ	Ø ×.Ñ.×5Ñ5°kÓBˆÔØ'*×'8Ñ'8×'CÑ'CÓ'EˆÔ$Ø—N‘N×)Ñ)¨+Ó6ˆ	ä C×$@Ñ$@ÑAÜ ¨¯©Ñ3ð
ˆ
ô 	Œg�sÑ$ YÈ%Ð$ÑPØ!×0Ñ0ˆÔØˆ
r$   c                 óŠ   • U R                   [        R                  " [        R                  " SU R                  -   5      5      -  $ ©Né   )r   r   ÚexpÚlgammar   ©r   s    r"   ÚmeanÚWeibull.meanH   s.   € à�z‰zœEŸIšI¤e§l¢l°1°t×7TÑ7TÑ3TÓ&UÓVÑVÐVr$   c                 óŠ   • U R                   U R                  S-
  U R                  -  U R                  R                  5       -  -  $ r.   )r   r   r   r2   s    r"   ÚmodeÚWeibull.modeL   sE   € ð �J‰JØ×"Ñ" QÑ&¨$×*<Ñ*<Ñ<Ø×!Ñ!×,Ñ,Ó.ñ/ñ/ð	
r$   c           	      ó$  • U R                   R                  S5      [        R                  " [        R                  " SSU R
                  -  -   5      5      [        R                  " S[        R                  " SU R
                  -   5      -  5      -
  -  $ )Né   r/   )r   Úpowr   r0   r1   r   r2   s    r"   ÚvarianceÚWeibull.varianceT   sl   € à�z‰z�~‰~˜aÓ Ü�IŠI”e—l’l 1 q¨4×+HÑ+HÑ'HÑ#HÓIÓJÜ�iŠi˜œEŸLšL¨¨T×-JÑ-JÑ)JÓKÑKÓLñMñ
ð 	
r$   c                 ó�   • [         SU R                  -
  -  [        R                  " U R                  U R                  -  5      -   S-   $ r.   )r   r   r   Úlogr   r2   s    r"   ÚentropyÚWeibull.entropy[   sC   € ä˜a $×"?Ñ"?Ñ?Ñ@Ü�iŠi˜Ÿ
™
 T×%BÑ%BÑBÓCñDàñð	
r$   )r   r   r   )N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚpositiveÚarg_constraintsÚsupportr   ÚfloatÚboolr   r'   Úpropertyr3   r6   r;   r?   Ú__static_attributes__Ú__classcell__)r!   s   @r"   r   r      sÚ   ø† ñð" ×%Ñ%Ø$×-Ñ-ñ€Oð
 ×"Ñ"€Gð &*ñ	Mà˜‰~ðMð  ‘~ðMð ˜d‘{ð	Mð
 
÷Mð M÷$ð ðW�fó Wó ðWð ð
�fó 
ó ð
ð ð
˜&ó 
ó ð
÷
ð 
r$   )r   r   Útorch.distributionsr   Útorch.distributions.exponentialr   Útorch.distributions.gumbelr   Ú,torch.distributions.transformed_distributionr   Útorch.distributions.transformsr   r	   Útorch.distributions.utilsr
   Ú__all__r   © r$   r"   Ú<module>rV      s7   ðó Ý Ý +Ý 7Ý 5Ý Pß JÝ 3ð ˆ+€ôP
Ð%õ P
r$   