コード例 #1
0
ファイル: hyper.c プロジェクト: joepickrell/splittimes
double loghprob(int n, int a, int m, int k) 
// http://www.math.uah.edu/stat/urn/Hypergeometric.xhtml
{
/** 
 n balls a black.  Pick m without replacement  
 return log prob (k black)
*/

double ytop, ybot ;

if (k<0) return -1.0e30 ;
if (k>a) return -1.0e30 ;
if (k>m) return -1.0e30 ;
if ((m-k)>(n-a)) return -1.0e30 ;

 ytop = logbino(a, k)  + logbino(n-a, m-k) ;
 ybot = logbino(n, m) ;
 return ytop - ybot ;

}
コード例 #2
0
ファイル: vsubs.c プロジェクト: razibkkhan/eigensoft
double logmultinom(int *cc, int n)
/* log multinomial */
{
    int t, k, i ;
    double y, ytot ;

    if (n<=1) return 0.0 ;
    t = intsum(cc, n) ;
    if (t==0) return 0.0 ;
    ytot = 0 ;
    for (i=0; i<n-1; i++) {
        k = cc[i] ;
        y = logbino(t,k) ;
        ytot += y ;
        t -= k ;
    }
    return ytot ;
}