destroy_cell (means, table, cell);
}
+#if 0
+
static void
dump_cell (const struct cell *cell, const struct mtable *mt, int level)
{
}
}
+#endif
+
/* Generate a hash based on the values of the N variables in
the array VARS which are taken from the case C. */
static unsigned int
const struct workspace *ws)
{
int n_vars = count_one_bits (not_wild);
- struct cell *cell = xzalloc ((sizeof *cell));
+ struct cell *cell = XZALLOC (struct cell);
cell->values = xcalloc (n_vars, sizeof *cell->values);
cell->vars = xcalloc (n_vars, sizeof *cell->vars);
cell->not_wild = not_wild;
const struct cell *cell,
struct pivot_table *pt)
{
- size_t *indexes = xcalloc (pt->n_dimensions, sizeof *indexes);
+ size_t *indexes = XCALLOC (pt->n_dimensions, size_t);
for (int v = 0; v < mt->n_dep_vars; ++v)
{
for (int s = 0; s < means->n_statistics; ++s)
}
int idx = s + v * means->n_statistics;
- pivot_table_put (pt, indexes, pt->n_dimensions,
- pivot_value_new_number (sg (cell->stat[idx])));
+ struct pivot_value *pv
+ = pivot_value_new_number (sg (cell->stat[idx]));
+ if (NULL == cell_spec[stat].rc)
+ {
+ const struct variable *dv = mt->dep_vars[v];
+ pv->numeric.format = * var_get_print_format (dv);
+ }
+ pivot_table_put (pt, indexes, pt->n_dimensions, pv);
}
}
free (indexes);
const struct workspace *ws)
{
struct pivot_table *pt = pivot_table_create (N_("Report"));
- pt->omit_empty = true;
struct pivot_dimension *dim_cells =
pivot_dimension_create (pt, PIVOT_AXIS_COLUMN, N_("Statistics"));
ds_init_empty (&dss);
for (int dv = 0; dv < mt->n_dep_vars; ++dv)
{
- ds_put_cstr (&dss, var_get_name (mt->dep_vars[dv]));
- if (mt->n_layers > 0)
+ if (dv > 0)
ds_put_cstr (&dss, " * ");
+ ds_put_cstr (&dss, var_get_name (mt->dep_vars[dv]));
}
for (int l = 0; l < mt->n_layers; ++l)
{
+ ds_put_cstr (&dss, " * ");
const struct layer *layer = mt->layers[l];
const struct variable *var = layer->factor_vars[ws->control_idx[l]];
ds_put_cstr (&dss, var_get_name (var));
- if (l < mt->n_layers - 1)
- ds_put_cstr (&dss, " * ");
}
struct pivot_table *pt = pivot_table_create (ds_cstr (&dss));
- pt->omit_empty = true;
ds_destroy (&dss);
struct pivot_dimension *dim_cells =
const struct variable *var = layer->factor_vars[ws->control_idx[l]];
const union value *vv = case_data (c, var);
- miss = var_is_value_missing (var, vv, means->ctrl_exclude);
+ miss = (var_is_value_missing (var, vv) & means->ctrl_exclude) != 0;
if (miss)
break;
}
{
const struct variable *dep_var = mt->dep_vars[v];
const union value *vv = case_data (c, dep_var);
- if (var_is_value_missing (dep_var, vv, means->dep_exclude))
+ if (var_is_value_missing (dep_var, vv) & means->dep_exclude)
continue;
for (int stat = 0; stat < means->n_statistics; ++stat)
NULL);
stat_update *su = cell_spec[means->statistics[stat]].su;
su (cell->stat[stat + v * means->n_statistics], weight,
- case_data (c, dep_var)->f);
+ case_num (c, dep_var));
}
}
}
{
struct workspace *ws = mt->ws + i;
ws->root_cell = NULL;
- ws->control_idx = xzalloc (mt->n_layers
- * sizeof *ws->control_idx);
- ws->instances = xzalloc (mt->n_layers
- * sizeof *ws->instances);
+ ws->control_idx = xcalloc (mt->n_layers, sizeof *ws->control_idx);
+ ws->instances = xcalloc (mt->n_layers, sizeof *ws->instances);
int cmb = i;
for (int l = mt->n_layers - 1; l >= 0; --l)
{
const struct variable *var = mt->dep_vars[dv];
const union value *vv = case_data (c, var);
/* First check if the dependent variable is missing. */
- if (var_is_value_missing (var, vv, means->dep_exclude))
+ if (var_is_value_missing (var, vv) & means->dep_exclude)
summ->n_missing += weight;
/* If the dep var is not missing, then check each
control variable. */
const struct variable *var
= layer->factor_vars[ws->control_idx[l]];
const union value *vv = case_data (c, var);
- if (var_is_value_missing (var, vv, means->ctrl_exclude))
+ if (var_is_value_missing (var, vv) & means->ctrl_exclude)
{
summ->n_missing += weight;
break;
for (int t = 0; t < means.n_tables; ++t)
{
struct mtable *mt = means.table + t;
- mt->summ = xzalloc (mt->n_combinations * mt->n_dep_vars
- * sizeof (*mt->summ));
- mt->ws = xzalloc (mt->n_combinations * sizeof (*mt->ws));
+ mt->summ = xcalloc (mt->n_combinations * mt->n_dep_vars,
+ sizeof (*mt->summ));
+ mt->ws = xcalloc (mt->n_combinations, sizeof (*mt->ws));
}
run_means (&means, group, ds);
for (int t = 0; t < means.n_tables; ++t)