/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-#include <math.h> // sqrt
#include "private.h"
#include "xbt/dict.h"
#include "xbt/sysdep.h"
#include <sys/types.h>
#include <errno.h>
#include <fcntl.h>
+#include <math.h> // sqrt
#include <unistd.h>
#include <string.h>
#include <stdio.h>
}
}
static int sample_enough_benchs(local_data_t *data) {
- int res = (data->iters > 0 && data->count >= data->iters)
- || (data->count > 2 && data->threshold > 0.0 && data->relstderr <= data->threshold);
+ int res = data->count >= data->iters;
+ if (data->threshold>0.0) {
+ if (data->count <2)
+ res = 0; // not enough data
+ if (data->relstderr > data->threshold)
+ res = 0; // stderr too high yet
+ }
XBT_DEBUG("%s (count:%d iter:%d stderr:%f thres:%f mean:%fs)",
(res?"enough benchs":"need more data"),
data->count, data->iters, data->relstderr, data->threshold, data->mean);
data = xbt_dict_get_or_null(samples, loc);
if (!data) {
+ xbt_assert(threshold>0 || iters>0,
+ "You should provide either a positive amount of iterations to bench, or a positive maximal stderr (or both)");
data = (local_data_t *) xbt_new(local_data_t, 1);
data->count = 0;
data->sum = 0.0;