fix: improve warnings for a check which should never fail
This commit is contained in:
parent
72884d8e1e
commit
071bf00d7a
Binary file not shown.
|
@ -4,7 +4,7 @@
|
||||||
#include <gsl/gsl_rng.h>
|
#include <gsl/gsl_rng.h>
|
||||||
#include <gsl/gsl_randist.h>
|
#include <gsl/gsl_randist.h>
|
||||||
|
|
||||||
#define N 10000000
|
#define N 1000000
|
||||||
/*
|
/*
|
||||||
* For very high values of N, you will want to increase the maximum stack trace, otherwise you will suffer a segmentation fault
|
* For very high values of N, you will want to increase the maximum stack trace, otherwise you will suffer a segmentation fault
|
||||||
* In Ubuntu/bash you can do this with $ ulimit -Ss 256000 ## ~256Mbs
|
* In Ubuntu/bash you can do this with $ ulimit -Ss 256000 ## ~256Mbs
|
||||||
|
@ -89,9 +89,10 @@ void mixture(gsl_rng * r, double *dists[], double *weights, int n, double *resul
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(index_found == 0) {
|
if(index_found == 0) {
|
||||||
printf("\nThis shouldn't have happened");
|
printf("\nThis shouldn't be able to happen");
|
||||||
// gsl_rng_free (r);
|
// gsl_rng_free (r);
|
||||||
// abort(); // this shouldn't have happened.
|
// abort(); // this shouldn't have happened.
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
int sample_index = (int) floor(p_2 * N);
|
int sample_index = (int) floor(p_2 * N);
|
||||||
results[i] = dists[index_counter][sample_index];
|
results[i] = dists[index_counter][sample_index];
|
||||||
|
|
|
@ -25,6 +25,9 @@ mixture <- function(samples_list, weights_array, n=DEFAULT_N){ # note that this
|
||||||
for(i in c(1:n)){
|
for(i in c(1:n)){
|
||||||
helper_which_list = which(cummulative_sums > helper_probs[i])
|
helper_which_list = which(cummulative_sums > helper_probs[i])
|
||||||
# helper_loc = ifelse(is.na(helper_which_list[1]), 1, helper_which_list[1])
|
# helper_loc = ifelse(is.na(helper_which_list[1]), 1, helper_which_list[1])
|
||||||
|
if(is.na(helper_which_list[1])){
|
||||||
|
print("This should never happen")
|
||||||
|
}
|
||||||
helper_loc = helper_which_list[1]
|
helper_loc = helper_which_list[1]
|
||||||
target_samples = samples_list[[helper_loc]]
|
target_samples = samples_list[[helper_loc]]
|
||||||
result = sample(target_samples, 1)
|
result = sample(target_samples, 1)
|
||||||
|
|
|
@ -38,6 +38,9 @@ const mixture = (dists_array, weights_array, n = DEFAULT_N) => {
|
||||||
const helper_probs = [...new Array(n)].map(_ => Math.random())
|
const helper_probs = [...new Array(n)].map(_ => Math.random())
|
||||||
const results = helper_probs.map(p => {
|
const results = helper_probs.map(p => {
|
||||||
let match_index = cummulative_sums.findIndex(x => x > p)
|
let match_index = cummulative_sums.findIndex(x => x > p)
|
||||||
|
if(match_index == -1){
|
||||||
|
console.log("Error: This should never happen.")
|
||||||
|
}
|
||||||
let target_loc = match_index // == -1 ? 0 : match_index
|
let target_loc = match_index // == -1 ? 0 : match_index
|
||||||
let target_samples = dists_array[target_loc]
|
let target_samples = dists_array[target_loc]
|
||||||
return target_samples[Math.floor(Math.random() * target_samples.length)];
|
return target_samples[Math.floor(Math.random() * target_samples.length)];
|
||||||
|
|
|
@ -32,7 +32,8 @@ def mixture(samples_list, weights_array, n=DEFAULT_N):
|
||||||
helper_list = [j for j in range(
|
helper_list = [j for j in range(
|
||||||
len(cummulative_sums)) if cummulative_sums[j] > helper_probs[i]]
|
len(cummulative_sums)) if cummulative_sums[j] > helper_probs[i]]
|
||||||
if len(helper_list) == 0:
|
if len(helper_list) == 0:
|
||||||
helper_loc = 0
|
helper_loc = 0 # continue
|
||||||
|
print("This should never happen")
|
||||||
else:
|
else:
|
||||||
helper_loc = helper_list[0]
|
helper_loc = helper_list[0]
|
||||||
target_samples = samples_list[helper_loc]
|
target_samples = samples_list[helper_loc]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user