36 .lmean =
a.lmean + log(
s),
44 .lmean =
a.lmean *
exp,
52 const double ma =
exp(
a.lmean + 0.5 *
a.lvar);
53 const double mb =
exp(
b.lmean + 0.5 *
b.lvar);
54 const double va = (
exp(
a.lvar) - 1.0) *
exp(2.0 *
a.lmean +
a.lvar);
55 const double vb = (
exp(
b.lvar) - 1.0) *
exp(2.0 *
b.lmean +
b.lvar);
56 const double m =
ma +
mb;
57 const double v = va + vb;
59 .lmean = log(m * m / sqrt(v + m * m)),
60 .lvar = log(1.0 + v / (m * m)),
66 const double ma =
exp(
a.lmean + 0.5 *
a.lvar);
67 const double mb =
exp(
b.lmean + 0.5 *
b.lvar);
68 const double va = (
exp(
a.lvar) - 1.0) *
exp(2.0 *
a.lmean +
a.lvar);
69 const double vb = (
exp(
b.lvar) - 1.0) *
exp(2.0 *
b.lmean +
b.lvar);
70 const double m =
fmax(
ma -
mb, 1e-30);
71 const double v = va + vb;
73 .lmean = log(m * m / sqrt(v + m * m)),
74 .lvar = log(1.0 + v / (m * m)),
81 .lmean =
a.lmean +
b.lmean,
82 .lvar =
a.lvar +
b.lvar,
97 .lmean =
a.lmean -
b.lmean,
98 .lvar =
a.lvar +
b.lvar,
104 if (!
stats->nb_samples)
108 double sum = 0.0, sum2 = 0.0, sum_w2 = 0.0;
110 for (
int i = 0;
i <
stats->nb_samples;
i++) {
112 const double x = log((
double)
s.sum) - log((
double)
s.count);
114 sum2 += x * x *
s.count;
115 sum_w2 += (
double)
s.count *
s.count;
120 const double mean = sum / count;
121 const double denom = count - sum_w2 / count;
#define i(width, name, range_min, range_max)
double fmax(double, double)
static CheckasmStats stats
CheckasmVar checkasm_stats_estimate(const CheckasmStats *const stats)
CheckasmVar checkasm_var_add(const CheckasmVar a, const CheckasmVar b)
CheckasmVar checkasm_var_inv(CheckasmVar a)
CheckasmVar checkasm_var_div(CheckasmVar a, CheckasmVar b)
CheckasmVar checkasm_var_mul(CheckasmVar a, CheckasmVar b)
CheckasmVar checkasm_var_pow(CheckasmVar a, double exp)
CheckasmVar checkasm_var_sub(CheckasmVar a, CheckasmVar b)
CheckasmVar checkasm_var_scale(CheckasmVar a, double s)
static CheckasmVar checkasm_var_const(double x)
static float mean(const float *input, int size)