#include #include #include #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 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 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