home *** CD-ROM | disk | FTP | other *** search
- /* nbdtr.c
- *
- * Negative binomial distribution
- *
- *
- *
- * SYNOPSIS:
- *
- * int k, n;
- * double p, y, nbdtr();
- *
- * y = nbdtr( k, n, p );
- *
- *
- *
- * DESCRIPTION:
- *
- * Returns the sum of the terms 0 through k of the negative
- * binomial distribution:
- *
- * k
- * -- ( n+j-1 ) n j
- * > ( ) p (1-p)
- * -- ( j )
- * j=0
- *
- * In a sequence of Bernoulli trials, this is the probability
- * that k or fewer failures precede the nth success.
- *
- * The terms are not computed individually; instead the incomplete
- * beta integral is employed, according to the formula
- *
- * y = nbdtr( k, n, p ) = incbet( n, k+1, p ).
- *
- * The arguments must be positive, with p ranging from 0 to 1.
- *
- *
- *
- * ACCURACY:
- *
- * See incbet.c.
- *
- */
- /* nbdtrc.c
- *
- * Complemented negative binomial distribution
- *
- *
- *
- * SYNOPSIS:
- *
- * int k, n;
- * double p, y, nbdtrc();
- *
- * y = nbdtrc( k, n, p );
- *
- *
- *
- * DESCRIPTION:
- *
- * Returns the sum of the terms k+1 to infinity of the negative
- * binomial distribution:
- *
- * inf
- * -- ( n+j-1 ) n j
- * > ( ) p (1-p)
- * -- ( j )
- * j=k+1
- *
- * The terms are not computed individually; instead the incomplete
- * beta integral is employed, according to the formula
- *
- * y = nbdtrc( k, n, p ) = incbet( k+1, n, 1-p ).
- *
- * The arguments must be positive, with p ranging from 0 to 1.
- *
- *
- *
- * ACCURACY:
- *
- * See incbet.c.
- *
- */
-
- /*
- Cephes Math Library Release 2.0: April, 1987
- Copyright 1984, 1987 by Stephen L. Moshier
- Direct inquiries to 30 Frost Street, Cambridge, MA 02140
- */
-
- #include "mconf.h"
-
- double nbdtrc( k, n, p )
- int k, n;
- double p;
- {
- double dk, dn;
- double incbet();
-
- if( (p < 0.0) || (p > 1.0) )
- goto domerr;
- if( k < 0 )
- {
- domerr:
- mtherr( "nbdtr", DOMAIN );
- return( 0.0 );
- }
-
- dk = k+1;
- dn = n;
- return( incbet( dk, dn, 1.0 - p ) );
- }
-
-
-
- double nbdtr( k, n, p )
- int k, n;
- double p;
- {
- double dk, dn;
- double incbet();
-
- if( (p < 0.0) || (p > 1.0) )
- goto domerr;
- if( k < 0 )
- {
- domerr:
- mtherr( "nbdtr", DOMAIN );
- return( 0.0 );
- }
- dk = k+1;
- dn = n;
- return( incbet( dn, dk, p ) );
- }
-