+static double
+get_sum (const struct covariance_matrix *cov, size_t i)
+{
+ size_t k;
+ double mean;
+ double n;
+ const struct variable *var;
+ const union value *val = NULL;
+
+ assert ( cov != NULL);
+ var = design_matrix_col_to_var (cov->cov, i);
+ if (var != NULL)
+ {
+ if (var_is_alpha (var))
+ {
+ val = get_value_from_subscript (cov->cov, i);
+ k = cat_value_find (var, val);
+ return cat_get_category_count (k, var);
+ }
+ else
+ {
+ k = 0;
+ while (var_get_dict_index (cov->v_variables[k]) != var_get_dict_index (var))
+ {
+ k++;
+ }
+ moments1_calculate (cov->m1[k], &n, &mean, NULL, NULL, NULL);
+ return mean * n;
+ }
+ }
+
+ return 0.0;
+}
+static void
+update_ssize (struct design_matrix *dm, size_t i, size_t j, struct covariance_accumulator *ca)
+{
+ const struct variable *var;
+ double tmp;
+ var = design_matrix_col_to_var (dm, i);
+ if (var_get_dict_index (ca->v1) == var_get_dict_index (var))
+ {
+ var = design_matrix_col_to_var (dm, j);
+ if (var_get_dict_index (ca->v2) == var_get_dict_index (var))
+ {
+ tmp = design_matrix_get_element (dm, i, j);
+ tmp += ca->ssize;
+ design_matrix_set_element (dm, i, j, tmp);
+ }
+ }
+}
+static void