
    קg                     |    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
mZ d dlmZ dgZ G d	 de          ZdS )
    N)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
 fd	Zd
 fd	Z	e
d             Ze
d             Ze
d             Zd	 Z xZS )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).
    )scaleconcentrationNc                 l   t          ||          \  | _        | _        | j                                        | _        t          t          j        | j                  |          }t          | j                  t          d| j                  g}t                                          |||           d S )Nvalidate_argsexponentr   locr   )r	   r   r   
reciprocalconcentration_reciprocalr   torch	ones_liker   r   super__init__)selfr   r   r   	base_dist
transforms	__class__s         W/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/distributions/weibull.pyr   zWeibull.__init__#   s    )6um)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.expand/   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.mean=   s+    zEIel1t7T3T&U&UVVVVr    c                 j    | j         | j        dz
  | j        z  | j                                        z  z  S r)   )r   r   r   r-   s    r   modezWeibull.modeA   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+   r,   r   r-   s    r   variancezWeibull.varianceI   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   r-   s    r   entropyzWeibull.entropyP   s<    a$"??@i
T%BBCCD	
r    )N)__name__
__module____qualname____doc__r   positivearg_constraintssupportr   r#   propertyr.   r0   r4   r7   __classcell__)r   s   @r   r
   r
      s          %$- O "G
M 
M 
M 
M 
M 
M      W W XW 
 
 X
 
 
 X

 
 
 
 
 
 
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>rI      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 +G
 G
 G
 G
 G
% G
 G
 G
 G
 G
r    