123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- /* pdtrl.c
- *
- * Poisson distribution
- *
- *
- *
- * SYNOPSIS:
- *
- * int k;
- * long double m, y, pdtrl();
- *
- * y = pdtrl( k, m );
- *
- *
- *
- * DESCRIPTION:
- *
- * Returns the sum of the first k terms of the Poisson
- * distribution:
- *
- * k j
- * -- -m m
- * > e --
- * -- j!
- * j=0
- *
- * The terms are not summed directly; instead the incomplete
- * gamma integral is employed, according to the relation
- *
- * y = pdtr( k, m ) = igamc( k+1, m ).
- *
- * The arguments must both be positive.
- *
- *
- *
- * ACCURACY:
- *
- * See igamc().
- *
- */
- /* pdtrcl()
- *
- * Complemented poisson distribution
- *
- *
- *
- * SYNOPSIS:
- *
- * int k;
- * long double m, y, pdtrcl();
- *
- * y = pdtrcl( k, m );
- *
- *
- *
- * DESCRIPTION:
- *
- * Returns the sum of the terms k+1 to infinity of the Poisson
- * distribution:
- *
- * inf. j
- * -- -m m
- * > e --
- * -- j!
- * j=k+1
- *
- * The terms are not summed directly; instead the incomplete
- * gamma integral is employed, according to the formula
- *
- * y = pdtrc( k, m ) = igam( k+1, m ).
- *
- * The arguments must both be positive.
- *
- *
- *
- * ACCURACY:
- *
- * See igam.c.
- *
- */
- /* pdtril()
- *
- * Inverse Poisson distribution
- *
- *
- *
- * SYNOPSIS:
- *
- * int k;
- * long double m, y, pdtrl();
- *
- * m = pdtril( k, y );
- *
- *
- *
- *
- * DESCRIPTION:
- *
- * Finds the Poisson variable x such that the integral
- * from 0 to x of the Poisson density is equal to the
- * given probability y.
- *
- * This is accomplished using the inverse gamma integral
- * function and the relation
- *
- * m = igami( k+1, y ).
- *
- *
- *
- *
- * ACCURACY:
- *
- * See igami.c.
- *
- * ERROR MESSAGES:
- *
- * message condition value returned
- * pdtri domain y < 0 or y >= 1 0.0
- * k < 0
- *
- */
- /*
- Cephes Math Library Release 2.3: March, 1995
- Copyright 1984, 1995 by Stephen L. Moshier
- */
- #include <math.h>
- #ifdef ANSIPROT
- extern long double igaml ( long double, long double );
- extern long double igamcl ( long double, long double );
- extern long double igamil ( long double, long double );
- #else
- long double igaml(), igamcl(), igamil();
- #endif
- long double pdtrcl( k, m )
- int k;
- long double m;
- {
- long double v;
- if( (k < 0) || (m <= 0.0L) )
- {
- mtherr( "pdtrcl", DOMAIN );
- return( 0.0L );
- }
- v = k+1;
- return( igaml( v, m ) );
- }
- long double pdtrl( k, m )
- int k;
- long double m;
- {
- long double v;
- if( (k < 0) || (m <= 0.0L) )
- {
- mtherr( "pdtrl", DOMAIN );
- return( 0.0L );
- }
- v = k+1;
- return( igamcl( v, m ) );
- }
- long double pdtril( k, y )
- int k;
- long double y;
- {
- long double v;
- if( (k < 0) || (y < 0.0L) || (y >= 1.0L) )
- {
- mtherr( "pdtril", DOMAIN );
- return( 0.0L );
- }
- v = k+1;
- v = igamil( v, y );
- return( v );
- }
|