§
    ŠŠtj­	  ã                   óp   — 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dS )	é    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    úY/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/distributions/poisson.pyÚmeanzPoisson.mean&   ó
   € àŒyÐó    c                 ó4   — | j                              ¦   «         S r   )r   Úfloorr   s    r   ÚmodezPoisson.mode*   s   € àŒ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                             ¦   «         }t          ¦   «                              ||¬¦  «         d S )N©r   )	r   r   Ú
isinstancer   ÚtorchÚSizeÚsizeÚsuperÚ__init__)r   r   r   Úbatch_shapeÚ	__class__s       €r   r#   zPoisson.__init__2   si   ø€ õ
 % TÑ*Ô*‰ˆŒÝ�d�GÑ$Ô$ð 	+Ýœ*™,œ,ˆKˆKàœ)Ÿ.š.Ñ*Ô*ˆKÝ‰Œ×Ò˜°MÐÑBÔBÐBÐBÐBr   c                 ó  •— |                       t          |¦  «        }t          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>   sq   ø€ Ø×(Ò(­°)Ñ<Ô<ˆÝ”j Ñ-Ô-ˆØ”9×#Ò# KÑ0Ô0ˆŒÝ�g�sÑÔ×$Ò$ [ÀÐ$ÑFÔFÐFØ!Ô0ˆÔØˆ
r   c                 óÞ   — |                       |¦  «        }t          j        ¦   «         5  t          j        | j                             |¦  «        ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S r   )Ú_extended_shaper   Úno_gradÚpoissonr   r(   )r   Úsample_shapeÚshapes      r   ÚsamplezPoisson.sampleF   s¢   € Ø×$Ò$ \Ñ2Ô2ˆÝŒ]‰_Œ_ð 	:ð 	:Ý”= ¤×!1Ò!1°%Ñ!8Ô!8Ñ9Ô9ð	:ð 	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð 	:ð 	:s   ©,A"Á"A&Á)A&c                 óÊ   — | j         r|                      |¦  «         t          | j        |¦  «        \  }}|                     |¦  «        |z
  |dz                        ¦   «         z
  S )Né   )r)   Ú_validate_sampler   r   ÚxlogyÚlgamma)r   Úvaluer   s      r   Úlog_probzPoisson.log_probK   sb   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(Ý# D¤I¨uÑ5Ô5‰ˆˆeØ�{Š{˜4Ñ Ô  4Ñ'¨5°1©9×*<Ò*<Ñ*>Ô*>Ñ>Ð>r   c                 ó6   — 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˜‰|Œ|Ð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Ð7€OØÔ-€Gàð�fð ð ð ñ „Xðð ð!�fð !ð !ð !ñ „Xð!ð ð˜&ð ð ð ñ „Xðð &*ð
Cð 
Cà�v‰oð
Cð ˜d‘{ð
Cð 
ð	
Cð 
Cð 
Cð 
Cð 
Cð 
Cðð ð ð ð ð ð #- %¤*¡,¤,ð :ð :ð :ð :ð
?ð ?ð ?ð ð'  v¤ð 'ð 'ð 'ñ „Xð'ðð ð ð ð ð ð r   )r   r   Útorch.distributionsr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr   Útorch.typesr   r   Ú__all__r	   © r   r   ú<module>rS      s¸   ðð €€€Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø <Ð <Ð <Ð <Ð <Ð <Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'ð ˆ+€ðIð Ið Ið Ið IÐñ Iô Ið Ið Ið Ir   