Go to the documentation of this file.
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)),
82 .lvar =
a.lvar +
b.lvar,
98 .lvar =
a.lvar +
b.lvar,
108 double sum = 0.0, sum2 = 0.0, sum_w2 = 0.0;
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;
CheckasmSample samples[CHECKASM_STATS_SAMPLES]
CheckasmVar checkasm_var_add(const CheckasmVar a, const CheckasmVar b)
CheckasmVar checkasm_var_inv(CheckasmVar a)
static CheckasmVar checkasm_var_const(double x)
CheckasmVar checkasm_var_mul(CheckasmVar a, CheckasmVar b)
CheckasmVar checkasm_stats_estimate(const CheckasmStats *const stats)
#define i(width, name, range_min, range_max)
static CheckasmStats stats
The reader does not expect b to be semantically here and if the code is changed by maybe adding a a division or other the signedness will almost certainly be mistaken To avoid this confusion a new type was SUINT is the C unsigned type but it holds a signed int to use the same example SUINT a
CheckasmVar checkasm_var_sub(CheckasmVar a, CheckasmVar b)
CheckasmVar checkasm_var_div(CheckasmVar a, CheckasmVar b)
CheckasmVar checkasm_var_pow(CheckasmVar a, double exp)
double fmax(double, double)
static float mean(const float *input, int size)
CheckasmVar checkasm_var_scale(CheckasmVar a, double s)