27#ifndef CHECKASM_STATS_H
28#define CHECKASM_STATS_H
88#define CHECKASM_STATS_SAMPLES 256
96 stats->nb_samples = 0;
97 stats->next_count = 1;
102 if (
s.sum > 0 &&
s.count > 0) {
113 stats->next_count <<= 1;
114 }
else if (
stats->next_count < 1 << 25) {
116 stats->next_count = ((
stats->next_count << 6) +
stats->next_count + 63) >> 6;
static CheckasmStats stats
static void checkasm_stats_reset(CheckasmStats *const stats)
static double checkasm_median(const CheckasmVar x)
#define CHECKASM_STATS_SAMPLES
CheckasmVar checkasm_stats_estimate(const CheckasmStats *stats)
static CheckasmVar checkasm_measurement_result(const CheckasmMeasurement measurement)
static double checkasm_stddev(const CheckasmVar x)
static double checkasm_sample(const CheckasmVar x, const double q)
static CheckasmVar checkasm_var_const(double x)
CheckasmVar checkasm_var_add(CheckasmVar a, CheckasmVar b)
CheckasmVar checkasm_var_inv(CheckasmVar a)
static void checkasm_measurement_update(CheckasmMeasurement *measurement, const CheckasmStats stats)
CheckasmVar checkasm_var_div(CheckasmVar a, CheckasmVar b)
static double checkasm_mean(const CheckasmVar x)
static void checkasm_measurement_init(CheckasmMeasurement *measurement)
CheckasmVar checkasm_var_mul(CheckasmVar a, CheckasmVar b)
static double checkasm_mode(const CheckasmVar x)
CheckasmVar checkasm_var_pow(CheckasmVar a, double exp)
CheckasmVar checkasm_var_sub(CheckasmVar a, CheckasmVar b)
static void checkasm_stats_add(CheckasmStats *const stats, const CheckasmSample s)
CheckasmVar checkasm_var_scale(CheckasmVar a, double s)
static void checkasm_stats_count_grow(CheckasmStats *const stats, uint64_t cycles, uint64_t target_cycles)
CheckasmSample samples[CHECKASM_STATS_SAMPLES]