ó
    Eñi­	  ã                   óh   • S SK r S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	J
r
  S/r " S S\5      rg)	é    N)ÚTensor)Úconstraints)ÚExponentialFamily)Úbroadcast_all)Ú_NumberÚNumberÚPoissonc                   ó.  ^ • \ rS rSrSrS\R                  0r\R                  r	\
S\4S j5       r\
S\4S j5       r\
S\4S j5       r SS\\-  S	\S-  SS4U 4S
 jjjrSU 4S jjr\R(                  " 5       4S jrS r\
S\\   4S j5       rS rSrU =r$ )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                 ó   • U R                   $ ©N©r   ©Úselfs    ÚX/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/distributions/poisson.pyÚmeanÚPoisson.mean&   ó   € à�y‰yÐó    c                 ó6   • U R                   R                  5       $ r   )r   Úfloorr   s    r   ÚmodeÚPoisson.mode*   s   € à�y‰y�‰Ó Ð r   c                 ó   • U R                   $ r   r   r   s    r   ÚvarianceÚPoisson.variance.   r   r   NÚvalidate_argsc                 óÎ   >• [        U5      u  U l        [        U[        5      (       a  [        R
                  " 5       nOU R                  R                  5       n[        TU ]!  X2S9  g )N©r   )	r   r   Ú
isinstancer   ÚtorchÚSizeÚsizeÚsuperÚ__init__)r   r   r   Úbatch_shapeÚ	__class__s       €r   r'   ÚPoisson.__init__2   sK   ø€ ô
 % TÓ*‰ˆŒÜ�dœG×$Ñ$ÜŸ*š*›,‰KàŸ)™)Ÿ.™.Ó*ˆKÜ‰Ñ˜ÐÒBr   c                 óæ   >• U R                  [        U5      n[        R                  " U5      nU R                  R                  U5      Ul        [        [        U]  USS9  U R                  Ul        U$ )NFr!   )	Ú_get_checked_instancer	   r#   r$   r   Úexpandr&   r'   Ú_validate_args)r   r(   Ú	_instanceÚnewr)   s       €r   r-   ÚPoisson.expand>   s`   ø€ Ø×(Ñ(¬°)Ó<ˆÜ—j’j Ó-ˆØ—9‘9×#Ñ# KÓ0ˆŒÜŒg�sÑ$ [ÀÐ$ÑFØ!×0Ñ0ˆÔØˆ
r   c                 óâ   • U R                  U5      n[        R                  " 5          [        R                  " U R                  R                  U5      5      sS S S 5        $ ! , (       d  f       g = fr   )Ú_extended_shaper#   Úno_gradÚpoissonr   r-   )r   Úsample_shapeÚshapes      r   ÚsampleÚPoisson.sampleF   s@   € Ø×$Ñ$ \Ó2ˆÜ�]Š]�_Ü—=’= §¡×!1Ñ!1°%Ó!8Ó9÷ �_�_ús   §/A Á 
A.c                 óÆ   • U R                   (       a  U R                  U5        [        U R                  U5      u  p!UR	                  U5      U-
  US-   R                  5       -
  $ )Né   )r.   Ú_validate_sampler   r   ÚxlogyÚlgamma)r   Úvaluer   s      r   Úlog_probÚPoisson.log_probK   sQ   € Ø××Ø×!Ñ! %Ô(Ü# D§I¡I¨uÓ5‰ˆØ�{‰{˜4Ó  4Ñ'¨5°1©9×*<Ñ*<Ó*>Ñ>Ð>r   c                 óD   • [         R                  " U R                  5      4$ r   )r#   Úlogr   r   s    r   Ú_natural_paramsÚPoisson._natural_paramsQ   s   € ä—	’	˜$Ÿ)™)Ó$Ð&Ð&r   c                 ó.   • [         R                  " U5      $ r   )r#   Úexp)r   Úxs     r   Ú_log_normalizerÚPoisson._log_normalizerV   s   € Ü�yŠy˜‹|Ðr   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚnonnegativeÚarg_constraintsÚnonnegative_integerÚsupportÚpropertyr   r   r   r   r   Úboolr'   r-   r#   r$   r8   r@   ÚtuplerD   rI   Ú__static_attributes__Ú__classcell__)r)   s   @r   r	   r	      sï   ø† ñð( ˜{×6Ñ6Ð7€OØ×-Ñ-€Gàð�fó ó ðð ð!�fó !ó ð!ð ð˜&ó ó ðð &*ñ
Cà�v‰oð
Cð ˜d‘{ð
Cð 
÷	
Cð 
C÷ð #(§*¢*£,ô :ò
?ð ð'  v¡ó 'ó ð'÷ð r   )r#   r   Útorch.distributionsr   Útorch.distributions.exp_familyr   Útorch.distributions.utilsr   Útorch.typesr   r   Ú__all__r	   © r   r   Ú<module>r_      s1   ðó Ý Ý +Ý <Ý 3ß 'ð ˆ+€ôIÐõ Ir   