Ë
    *êñi­	  ã                   óh   — 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gZ G d„ de«      Zy)	é    N)ÚTensor)Úconstraints)ÚExponentialFamily)Úbroadcast_all)Ú_NumberÚNumberÚPoissonc                   ó  ‡ — e Zd ZdZdej
                  iZej                  Ze	de
fd„«       Ze	de
fd„«       Ze	de
fd„«       Z	 dde
ez  dedz  ddfˆ fd	„Zdˆ fd
„	Z ej&                  «       fd„Zd„ Ze	dee
   fd„«       Zd„ Zˆ xZS )r	   aÆ  
    Creates a Poisson distribution parameterized by :attr:`rate`, the rate parameter.

    Samples are nonnegative integers, with a pmf given by

    .. math::
      \mathrm{rate}^k \frac{e^{-\mathrm{rate}}}{k!}

    Example::

        >>> # xdoctest: +SKIP("poisson_cpu not implemented for 'Long'")
        >>> m = Poisson(torch.tensor([4]))
        >>> m.sample()
        tensor([ 3.])

    Args:
        rate (Number, Tensor): the rate parameter
    ÚrateÚreturnc                 ó   — | j                   S ©N©r   ©Úselfs    ú]/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/torch/distributions/poisson.pyÚmeanzPoisson.mean&   ó   € à�y‰yÐó    c                 ó6   — | j                   j                  «       S r   )r   Úfloorr   s    r   ÚmodezPoisson.mode*   s   € à�y‰y�‰Ó Ð r   c                 ó   — | j                   S r   r   r   s    r   ÚvariancezPoisson.variance.   r   r   NÚvalidate_argsc                 óÊ   •— t        |«      \  | _        t        |t        «      rt	        j
                  «       }n| j                  j                  «       }t        ‰| �!  ||¬«       y )N©r   )	r   r   Ú
isinstancer   ÚtorchÚSizeÚsizeÚsuperÚ__init__)r   r   r   Úbatch_shapeÚ	__class__s       €r   r#   zPoisson.__init__2   sJ   ø€ ô
 % TÓ*‰ˆŒÜ�dœGÔ$ÜŸ*™*›,‰KàŸ)™)Ÿ.™.Ó*ˆKÜ‰Ñ˜°MÐÕBr   c                 óê   •— | j                  t        |«      }t        j                  |«      }| j                  j                  |«      |_        t        t        |�  |d¬«       | j                  |_        |S )NFr   )	Ú_get_checked_instancer	   r   r    r   Úexpandr"   r#   Ú_validate_args)r   r$   Ú	_instanceÚnewr%   s       €r   r(   zPoisson.expand>   s`   ø€ Ø×(Ñ(¬°)Ó<ˆÜ—j‘j Ó-ˆØ—9‘9×#Ñ# KÓ0ˆŒÜŒg�sÑ$ [ÀÐ$ÔFØ!×0Ñ0ˆÔØˆ
r   c                 óÔ   — | j                  |«      }t        j                  «       5  t        j                  | j                  j                  |«      «      cd d d «       S # 1 sw Y   y xY wr   )Ú_extended_shaper   Úno_gradÚpoissonr   r(   )r   Úsample_shapeÚshapes      r   ÚsamplezPoisson.sampleF   sK   € Ø×$Ñ$ \Ó2ˆÜ�]‰]‹_ñ 	:Ü—=‘= §¡×!1Ñ!1°%Ó!8Ó9÷	:÷ 	:ò 	:ús   ¦.AÁA'c                 ó¾   — | j                   r| j                  |«       t        | j                  |«      \  }}|j	                  |«      |z
  |dz   j                  «       z
  S )Né   )r)   Ú_validate_sampler   r   ÚxlogyÚlgamma)r   Úvaluer   s      r   Úlog_probzPoisson.log_probK   sS   € Ø×ÒØ×!Ñ! %Ô(Ü# D§I¡I¨uÓ5‰ˆˆeØ�{‰{˜4Ó  4Ñ'¨5°1©9×*<Ñ*<Ó*>Ñ>Ð>r   c                 óB   — t        j                  | j                  «      fS r   )r   Úlogr   r   s    r   Ú_natural_paramszPoisson._natural_paramsQ   s   € ä—	‘	˜$Ÿ)™)Ó$Ð&Ð&r   c                 ó,   — t        j                  |«      S r   )r   Úexp)r   Úxs     r   Ú_log_normalizerzPoisson._log_normalizerV   s   € Ü�y‰y˜‹|Ðr   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚnonnegativeÚarg_constraintsÚnonnegative_integerÚsupportÚpropertyr   r   r   r   r   Úboolr#   r(   r   r    r2   r9   Útupler<   r@   Ú__classcell__)r%   s   @r   r	   r	      sæ   ø„ ñð( ˜{×6Ñ6Ð7€OØ×-Ñ-€Gàð�fò ó ðð ð!�fò !ó ð!ð ð˜&ò ó ðð &*ñ
Cà�v‰oð
Cð ˜d‘{ð
Cð 
õ	
Cõð #- %§*¡*£,ó :ò
?ð ð'  v¡ò 'ó ð'ör   )r   r   Útorch.distributionsr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr   Útorch.typesr   r   Ú__all__r	   © r   r   ú<module>rS      s1   ðó Ý Ý +Ý <Ý 3ß 'ð ˆ+€ôIÐõ Ir   