/****************************************************/
/*                 Распределение Пуассона           */
/****************************************************/
#include <assert.h>

#include "gammaDF.h"

ENTRY double
poissonDF(double lambda, double n)
/* Вычисляет вероятность того, что случайная величина,
 * подчиняющаяся распределению Пуассона с средним lambda,
 * не превосходит n.
 */
{
   assert(lambda > 0);
   return (n < 0) ? 0 : 1-GammaDF(n+1).value(lambda);
}/*poissonDF*/

ENTRY double
rev_poissonDF(double n, double q)
/* По известной вероятности q того, что случайная величина,
 * подчиняющаяся распределению Пуассона, не превосходит n,
 * находит среднее lambda, для которого poissonDF(lambda, n)
 * вернет q.
 */
{
   assert((q >= 0) && (q <= 1));
   return (q == 0) ? 0 : ((q == 1) ? 1 : 1-GammaDF(n+1).inv(q));
}/*rev_poissonDF*/

ENTRY
double rightCI_Poisson(double n, double level)
{
   assert((level >= 0.5) && (level < 1));
   return rev_poissonDF(n, (1+y)/2);
}/*rightCI_Poisson*/

ENTRY
double leftCI_Poisson(double n, double level)
{
   assert((level >= 0.5) && (level < 1));
   return rev_poissonDF(n, (1-y)/2);
}/*leftCI_Poisson*/

