| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 | /*							pdtrf.c * *	Poisson distribution * * * * SYNOPSIS: * * int k; * float m, y, pdtrf(); * * y = pdtrf( 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: * *        Relative error: * arithmetic   domain     # trials      peak         rms *    IEEE       0,100       5000       6.9e-5      8.0e-6 * *//*							pdtrcf() * *	Complemented poisson distribution * * * * SYNOPSIS: * * int k; * float m, y, pdtrcf(); * * y = pdtrcf( 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: * *        Relative error: * arithmetic   domain     # trials      peak         rms *    IEEE       0,100       5000       8.4e-5      1.2e-5 * *//*							pdtrif() * *	Inverse Poisson distribution * * * * SYNOPSIS: * * int k; * float m, y, pdtrf(); * * m = pdtrif( 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: * *        Relative error: * arithmetic   domain     # trials      peak         rms *    IEEE       0,100       5000       8.7e-6      1.4e-6 * * ERROR MESSAGES: * *   message         condition      value returned * pdtri domain    y < 0 or y >= 1       0.0 *                     k < 0 * *//*Cephes Math Library Release 2.2:  July, 1992Copyright 1984, 1987, 1992 by Stephen L. MoshierDirect inquiries to 30 Frost Street, Cambridge, MA 02140*/#include <math.h>#ifdef ANSICfloat igamf(float, float), igamcf(float, float), igamif(float, float);#elsefloat igamf(), igamcf(), igamif();#endiffloat pdtrcf( int k, float mm ){float v, m;m = mm;if( (k < 0) || (m <= 0.0) )	{	mtherr( "pdtrcf", DOMAIN );	return( 0.0 );	}v = k+1;return( igamf( v, m ) );}float pdtrf( int k, float mm ){float v, m;m = mm;if( (k < 0) || (m <= 0.0) )	{	mtherr( "pdtr", DOMAIN );	return( 0.0 );	}v = k+1;return( igamcf( v, m ) );}float pdtrif( int k, float yy ){float v, y;y = yy;if( (k < 0) || (y < 0.0) || (y >= 1.0) )	{	mtherr( "pdtrif", DOMAIN );	return( 0.0 );	}v = k+1;v = igamif( v, y );return( v );}
 |