
    Vpf	                     ~    d dl mZ d dlmZ d dlmZmZ d dlm	Z	m
Z
 d dlmZmZ dededed	efd
Zdededed	efdZdS )    )laxN)promote_args_inexactpromote_args_numeric)gammalnxlogy)Array	ArrayLikexnpreturnc                 \   t          d|          \  }t          d| |          \  } }t          j        | j        t          j                  st          d| j         d|j                   |                     |j                  } |                    |j                  }t          |dz             t          j	        t          | |          t          | dz             z
  d          z   }t          j        t          j        t          j	        |           |          |t          j                   S )a  Multinomial log probability mass function.

  JAX implementation of :obj:`scipy.stats.multinomial` ``logpdf``.

  The multinomial probability distribution is given by

  .. math::

     f(x, n, p) = n! \prod_{i=1}^k \frac{p_i^{x_i}}{x_i!}

  with :math:`n = \sum_i x_i`.

  Args:
    x: arraylike, value at which to evaluate the PMF
    n: arraylike, distribution shape parameter
    p: arraylike, distribution shape parameter

  Returns:
    array of logpmf values.

  See Also:
    :func:`jax.scipy.stats.multinomial.pmf`
  zmultinomial.logpmfz-x and n must be of integer type; got x.dtype=z
, n.dtype=   )axis)r   r   jnp
issubdtypedtypeinteger
ValueErrorastyper   sumr   whereequalinf)r
   r   r   logprobss       `/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/jax/_src/scipy/stats/multinomial.pylogpmfr      s    0 0!44"!	2Aq	9	9$!Q		-	- c
aQWaaXYX_aa
b
bbhhqw!hhqw!QU^^cgeAqkkGAENN&BLLLL(	39SWQZZ++Xx	@	@@    c                 H    t          j        t          | ||                    S )a  Multinomial probability mass function.

  JAX implementation of :obj:`scipy.stats.multinomial` ``pmf``.

  The multinomial probability distribution is given by

  .. math::

     f(x, n, p) = n! \prod_{i=1}^k \frac{p_i^{x_i}}{x_i!}

  with :math:`n = \sum_i x_i`.

  Args:
    x: arraylike, value at which to evaluate the PMF
    n: arraylike, distribution shape parameter
    p: arraylike, distribution shape parameter

  Returns:
    array of pmf values

  See Also:
    :func:`jax.scipy.stats.multinomial.logpmf`
  )r   expr   )r
   r   r   s      r   pmfr"   9   s    0 
1a	!	!!r   )jaxr   	jax.numpynumpyr   jax._src.numpy.utilr   r   jax._src.scipy.specialr   r   jax._src.typingr   r	   r   r"    r   r   <module>r*      s                 J J J J J J J J 1 1 1 1 1 1 1 1 , , , , , , , ,Ai AI A) A A A A AD"9 " "y "U " " " " " "r   