
    ȅ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         U/home/james-whalen/.local/lib/python3.13/site-packages/torch/distributions/weibull.pyr   Weibull.__init__(   s     *7u)L&
D&(,(:(:(E(E(G%OODJJ'}
	 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    (()<JJ%%k2	 ..55kB'*'8'8'C'C'E$NN))+6	C$@$@A3

 	gs$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.    zzEIIell1t7T7T3T&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     JJ""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    zz~~a IIell1q4+H+H'H#HIJiiELL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$"?"??@ii

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$   