Ë
    óÍ:j�	  ã                   óx   — 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mZ dgZ G d	„ de«      Zy)
é    )ÚOptionalÚUnionN)Ú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
ef   dee   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    úp/home/mcse/projects/srt_converter/srt-converter-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_normalizerU   s   € Ü�y‰y˜‹|Ðr   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚnonnegativeÚarg_constraintsÚnonnegative_integerÚsupportÚpropertyr   r   r   r   r   r
   r   Úboolr%   r*   r!   r"   r4   r;   Útupler>   rB   Ú__classcell__)r'   s   @r   r   r      së   ø„ ñð& ˜{×6Ñ6Ð7€OØ×-Ñ-€Gàð�fò ó ðð ð!�fò !ó ð!ð ð˜&ò ó ðð )-ñ
Cà�F˜F�NÑ#ð
Cð   ‘~ð
Cð 
õ	
Cõð #- %§*¡*£,ó :ò
?ð ð'  v¡ò 'ó ð'ör   )Útypingr   r   r!   r   Útorch.distributionsr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr   Útorch.typesr	   r
   Ú__all__r   © r   r   ú<module>rV      s2   ðç "ã Ý Ý +Ý <Ý 3ß 'ð ˆ+€ôGÐõ Gr   