
    }Yh8                         d dl mZmZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZ d d	lmZ d
gZ G d d
e          ZdS )    )OptionalUnionN)Tensor)constraints)Exponential)euler_constant)TransformedDistribution)AffineTransformPowerTransform)broadcast_allWeibullc            	            e Zd ZdZej        ej        dZej        Z	 ddee	e
f         dee	e
f         dee         ddf fdZd fd		Zede	fd
            Zede	fd            Zede	fd            Zd Z xZS )r   aD  
    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                 l   t          ||          \  | _        | _        | j                                        | _        t          t          j        | j                  |          }t          | j                  t          d| j                  g}t                                          |||           d S )Nr   exponentr   locr   )r   r   r   
reciprocalconcentration_reciprocalr   torch	ones_liker   r
   super__init__)selfr   r   r   	base_dist
transforms	__class__s         m/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/torch/distributions/weibull.pyr   zWeibull.__init__(   s     *7um)L)L&
D&(,(:(E(E(G(G%ODJ''}
 
 
	 D$ABBB444

 	JmLLLLL    c                    |                      t          |          }| j                            |          |_        | j                            |          |_        |j                                        |_        | j                            |          }t          |j                  t          d|j                  g}t          t          |                              ||d           | j        |_        |S )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'   zWeibull.expand9   s    (()<<J%%k22	 .55kBB'*'8'C'C'E'E$N))+66	C$@AAA333

 	gs$$Y
%$PPP!0
r$   c                 n    | j         t          j        t          j        d| j        z                       z  S N   )r   r   explgammar   r   s    r#   meanzWeibull.meanG   s+    zEIel1t7T3T&U&UVVVVr$   c                 j    | j         | j        dz
  | j        z  | j                                        z  z  S r-   )r   r   r   r1   s    r#   modezWeibull.modeK   s=     J"Q&$*<<!,,..//	
r$   c           	          | j                             d          t          j        t          j        dd| j        z  z                       t          j        dt          j        d| j        z             z            z
  z  S )N   r.   )r   powr   r/   r0   r   r1   s    r#   variancezWeibull.varianceS   sk    z~~a  Iel1q4+H'H#HIIJJiELT-J)JKKKLLM
 	
r$   c                 p    t           d| j        z
  z  t          j        | j        | j        z            z   dz   S r-   )r   r   r   logr   r1   s    r#   entropyzWeibull.entropyZ   s<    a$"??@i
T%BBCCD	
r$   )N)__name__
__module____qualname____doc__r   positivearg_constraintssupportr   r   floatr   boolr   r'   propertyr2   r4   r8   r;   __classcell__)r"   s   @r#   r   r      sc        " %$- O "G )-	M MVU]#M VU]+M  ~	M
 
M M M M M M"      Wf W W W XW 
f 
 
 
 X
 
& 
 
 
 X

 
 
 
 
 
 
r$   )typingr   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>rP      s    " " " " " " " "        + + + + + + 7 7 7 7 7 7 5 5 5 5 5 5 P P P P P P J J J J J J J J 3 3 3 3 3 3 +N
 N
 N
 N
 N
% N
 N
 N
 N
 N
r$   