Category : C Source Code
Archive   : CEPHES22.ZIP
Filename : BDTR.C

 
Output of file : BDTR.C contained in archive : CEPHES22.ZIP
/* bdtr.c
*
* Binomial distribution
*
*
*
* SYNOPSIS:
*
* int k, n;
* double p, y, bdtr();
*
* y = bdtr( k, n, p );
*
*
*
* DESCRIPTION:
*
* Returns the sum of the terms 0 through k of the Binomial
* probability density:
*
* k
* -- ( n ) j n-j
* > ( ) p (1-p)
* -- ( j )
* j=0
*
* The terms are not summed directly; instead the incomplete
* beta integral is employed, according to the formula
*
* y = bdtr( k, n, p ) = incbet( n-k, k+1, 1-p ).
*
* The arguments must be positive, with p ranging from 0 to 1.
*
*
*
* ACCURACY:
*
* See incbet.c
*
* ERROR MESSAGES:
*
* message condition value returned
* bdtr domain k < 0 0.0
* n < k
* x < 0, x > 1
*
*/
/* bdtrc()
*
* Complemented binomial distribution
*
*
*
* SYNOPSIS:
*
* int k, n;
* double p, y, bdtrc();
*
* y = bdtrc( k, n, p );
*
*
*
* DESCRIPTION:
*
* Returns the sum of the terms k+1 through n of the Binomial
* probability density:
*
* n
* -- ( n ) j n-j
* > ( ) p (1-p)
* -- ( j )
* j=k+1
*
* The terms are not summed directly; instead the incomplete
* beta integral is employed, according to the formula
*
* y = bdtrc( k, n, p ) = incbet( k+1, n-k, p ).
*
* The arguments must be positive, with p ranging from 0 to 1.
*
*
*
* ACCURACY:
*
* See incbet.c.
*
* ERROR MESSAGES:
*
* message condition value returned
* bdtrc domain x<0, x>1, n */
/* bdtri()
*
* Inverse binomial distribution
*
*
*
* SYNOPSIS:
*
* int k, n;
* double p, y, bdtri();
*
* p = bdtr( k, n, y );
*
*
*
* DESCRIPTION:
*
* Finds the event probability p such that the sum of the
* terms 0 through k of the Binomial probability density
* is equal to the given cumulative probability y.
*
* This is accomplished using the inverse beta integral
* function and the relation
*
* 1 - p = incbi( n-k, k+1, y ).
*
*
*
*
* ACCURACY:
*
* See incbi.c.
*
* ERROR MESSAGES:
*
* message condition value returned
* bdtri domain k < 0, n <= k 0.0
* x < 0, x > 1
*
*/

/* bdtr() */


/*
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 bdtrc( k, n, p )
int k, n;
double p;
{
double dk, dn;
double incbet(), pow();

if( (p < 0.0) || (p > 1.0) )
goto domerr;
if( k < 0 )
return( 1.0 );

if( n < k )
{
domerr:
mtherr( "bdtrc", DOMAIN );
return( 0.0 );
}

if( k == n )
return( 0.0 );
dn = n - k;
if( k == 0 )
{
dk = 1.0 - pow( 1.0-p, dn );
}
else
{
dk = k + 1;
dk = incbet( dk, dn, p );
}
return( dk );
}



double bdtr( k, n, p )
int k, n;
double p;
{
double dk, dn;
double incbet(), pow();

if( (p < 0.0) || (p > 1.0) )
goto domerr;
if( (k < 0) || (n < k) )
{
domerr:
mtherr( "bdtr", DOMAIN );
return( 0.0 );
}

if( k == n )
return( 1.0 );

dn = n - k;
if( k == 0 )
{
dk = pow( 1.0-p, dn );
}
else
{
dk = k + 1;
dk = incbet( dn, dk, 1.0 - p );
}
return( dk );
}


double bdtri( k, n, y )
int k, n;
double y;
{
double dk, dn, p;
double incbi(), pow();

if( (y < 0.0) || (y > 1.0) )
goto domerr;
if( (k < 0) || (n <= k) )
{
domerr:
mtherr( "bdtri", DOMAIN );
return( 0.0 );
}

dn = n - k;
if( k == 0 )
{
p = 1.0 - pow( y, 1.0/dn );
}
else
{
dk = k + 1;
p = 1.0 - incbi( dn, dk, y );
}
return( p );
}


  3 Responses to “Category : C Source Code
Archive   : CEPHES22.ZIP
Filename : BDTR.C

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/