about summary refs log tree commit diff
path: root/sourcecodes/k-best/src/ls_LOO.c
diff options
context:
space:
mode:
authorziejd22021-03-02 11:17:06 -0600
committerGitHub2021-03-02 11:17:06 -0600
commit33c4b9f23a53daed3b0a97114d7658015da6a07f (patch)
tree3ed43fec4c313b81d5586a3a2969bcbe33297b6d /sourcecodes/k-best/src/ls_LOO.c
parentb798acc788139830c427769c1b8a5ade717d8c20 (diff)
downloadBNW-33c4b9f23a53daed3b0a97114d7658015da6a07f.tar.gz
Delete sourcecodes/k-best directory
Diffstat (limited to 'sourcecodes/k-best/src/ls_LOO.c')
-rw-r--r--sourcecodes/k-best/src/ls_LOO.c152
1 files changed, 0 insertions, 152 deletions
diff --git a/sourcecodes/k-best/src/ls_LOO.c b/sourcecodes/k-best/src/ls_LOO.c
deleted file mode 100644
index 57a1fae4..00000000
--- a/sourcecodes/k-best/src/ls_LOO.c
+++ /dev/null
@@ -1,152 +0,0 @@
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include "get_local_scores.h"
-#include "ls_LOO.h"
-
-extern int*     nof_vals;
-extern int      N;
-
-static score_t ess;
-static int splitess;
-
-static int*    freq2mem  = NULL;
-static int*    freq2mem2 = NULL;
-static int     nof_freq2s;
-
-
-#define BIG_LOO_DATA (1<<10)
-
-/* LOO */
-
-score_t big_loo_score(int i, varset_t psi, int nof_freqs){
-
-  int vc_v = nof_vals[i];
-  score_t pcc =  get_nof_cfgs(psi);
-  score_t ess_per_pcc = splitess ? (ess / pcc)          : (ess*vc_v);
-  score_t ess_per_cc  = splitess ? (ess_per_pcc / vc_v) : ess;
-
-  int* freqp = freqmem;
-  int* end_freqp = freqp + nof_freqs * vc_v;
-
-  score_t res = - log(N);
-    
-  memset(freq2mem,  0, nof_freq2s*sizeof(int)); /* could reset later */
-  memset(freq2mem2, 0, nof_freq2s*sizeof(int)); /* could reset later */
-
-  for(;freqp < end_freqp; freqp += vc_v) {
-    int  pcfreq = 0;
-    int v;
-    for(v = 0; v<vc_v; ++v) {
-      int freq = freqp[v];
-      if (freq) {
-	pcfreq += freq;
-	if(freq<nof_freq2s){
-	  ++freq2mem[freq];
-	} else {
-	  res += freq * log(ess_per_cc + freq - 1);
-	}
-      }
-    }
-
-    if(pcfreq<nof_freq2s){
-      ++freq2mem2[pcfreq];
-    } else {
-      res -= pcfreq * log(ess_per_pcc + pcfreq);
-    }
-  }
-
-  {
-    int i;
-
-    for(i=1;i<nof_freq2s;++i){
-      int freq2 = freq2mem[i];
-      if(freq2) res += freq2 * i * log(ess_per_cc + i - 1);
-    }
-
-    for(i=1;i<nof_freq2s;++i){
-      int freq2 = freq2mem2[i];
-      if(freq2) res -= freq2 * i * log(ess_per_pcc + i);
-    }
-
-  }
-
-  return res > 0.0 ? 0.0 : res;
-}
-
-
-score_t loo_score(int i, varset_t psi, int nof_freqs){
-
-  int vc_v = nof_vals[i];
-  score_t pcc =  get_nof_cfgs(psi);
-
-  score_t ess_per_pcc = splitess ? (ess / pcc)          : (ess*vc_v);
-  score_t ess_per_cc  = splitess ? (ess_per_pcc / vc_v) : ess;
-
-  int* freqp = freqmem;
-  int* end_freqp = freqp + nof_freqs * vc_v;
-
-  score_t res = -log(N);
-    
-  memset(freq2mem,  0, nof_freq2s*sizeof(int)); /* could reset later */
-  memset(freq2mem2, 0, nof_freq2s*sizeof(int)); /* could reset later */
-
-  for(;freqp < end_freqp; freqp += vc_v) {
-    int  pcfreq = 0;
-    int v;
-    for(v = 0; v<vc_v; ++v) {
-      int freq = freqp[v];
-      if (freq) {
-	pcfreq += freq;
-	++freq2mem[freq];
-      }
-    }
-    ++freq2mem2[pcfreq];
-  }
-
-  {
-    int i;
-
-    for(i=1;i<nof_freq2s;++i){
-      int freq2 = freq2mem[i];
-      if(freq2) res += freq2 * i * log(ess_per_cc + i - 1);
-    }
-
-    for(i=1;i<nof_freq2s;++i){
-      int freq2 = freq2mem2[i];
-      if(freq2) res -= freq2 * i * log(ess_per_pcc + i);
-    }
-
-  }
-
-  return res > 0.0 ? 0.0 : res;
-}
-
-
-
-scorefun init_LOO_scorer(char* arg){
-
-  scorefun sf;
-  int arglen = strlen(arg);
-
-  ess = atof(arg);
-  splitess = arg[arglen-1] == 'l';
-
-  if (N<BIG_LOO_DATA){
-    sf = loo_score;
-    nof_freq2s = N+1;
-  } else {
-    sf = big_loo_score;
-    nof_freq2s = BIG_LOO_DATA;
-  }
-
-  freq2mem  = malloc(nof_freq2s * sizeof(int));
-  freq2mem2 = malloc(nof_freq2s * sizeof(int));
-
-  return sf;
-}
-
-void free_LOO_scorer(){
-  if(freq2mem)  free(freq2mem);
-  if(freq2mem2) free(freq2mem2);
-}