コード例 #1
0
double dirmult(double *pp, int *aa, int len)
{
  int t, i, m  ;
  double y1, y2, ysum ;
  double top, bot ;
  
  m = len ;

  t = intsum(aa,m) ;
  if (t < 1) return 0.0 ;

  top = bot = 0.0 ;
  ysum = asum(pp,m) ;
  for (i=0; i<m; i++) {
   top +=  lgamma(pp[i] + (double) aa[i]) ;
   bot += lgamma(pp[i]) ;
  }
  top += lgamma(ysum) ;
  bot += lgamma(ysum + (double) t) ;


  y1 = top-bot ;

  return y1 -y2 ;
}
コード例 #2
0
ファイル: vsubs.c プロジェクト: razibkkhan/eigensoft
int dekodeitb(int *xx, int kode, int len, int base)
{

    int i, t ;

    t = kode ;
    for (i=len-1; i>=0; --i) {
        xx[i] = t % base ;
        t /= base ;
    }
    return intsum(xx, len) ; // weight

}
コード例 #3
0
ファイル: vsubs.c プロジェクト: razibkkhan/eigensoft
int dekodeitbb(int *xx, int kode, int len, int *baselist)
{
// return weight

    int i, t, base ;

    t = kode ;
    for (i=len-1; i>=0; --i) {
        base = baselist[i] ;
        xx[i] = t % base ;
        t /= base ;
    }
    return intsum(xx, len) ;

}
コード例 #4
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 ;
}