Implements multinomial CDF (P(N1<=n1, ..., Nk<=nk)) and tail probabilities (P(N1>n1, ..., Nk>nk)), as well as probabilities with both constraints (P(l1

`pmultinom`

is a library for calculating multinomial probabilities. The probabilities that can be calculated include the multinomial cumulative distribution function:
$$P(N_1 \le u_1, N_2 \le u_2, \cdots, N_k \le u_k)$$
In this case the usage would be

```
pmultinom(upper=us, size=n, probs=ps, method="exact")
```

where `us`

is the vector containing $u_1, u_2, \cdots, u_k$, and `n`

and `ps`

are the parameters of the multinomial distribution. This usage is analogous to the use of `pbinom`

. Another important case is the probability of seeing more than some minimum number of observations in each category:
$$P(N_1 > l_1, N_2 > l_2, \cdots, N_k > l_k)$$
In this case the usage would be

```
pmultinom(lower=ls, size=n, probs=ps, method="exact")
```

where this time `ls`

is the vector containing $l_1, l_2, \cdots, l_k$. Notice that in this case these are greater than signs, not greater than or equal signs. This is analogous to the usage of `pbinom`

with `lower.tail=FALSE`

. With some creativity, these can be adapted to calculate the probability that the maximum or minimum of a multinomial random vector is a given number, or that a given category will be the most or least observed. `pmultinom`

also supports a more general usage, in which both lower and upper bounds are specified:
$$P(l_1 < N_1 \le u_1, l_2 < N_2 \le u_2, \cdots, l_k < N_k \le u_k)$$
In this case the usage would be

```
pmultinom(lower=ls, upper=us, size=n, probs=ps, method="exact")
```

See `vignette("pmultinom")`

for the above text in Latex plus an example application. Many thanks to Aislyn Schalck for advice and encouragement.