/* Flags indicating that the first case has been seen */
bool pass_one_first_case_seen;
bool pass_two_first_case_seen;
+
+ gsl_matrix *unnormalised;
};
cov->cm = NULL;
cov->categoricals = cats;
+ cov->unnormalised = NULL;
return cov;
}
return val->f;
}
- return categoricals_get_binary_by_subscript (cov->categoricals, i - cov->n_vars, c);
+ return categoricals_get_effects_code_for_case (cov->categoricals, i - cov->n_vars, c);
}
#if 0
/* Return a pointer to gsl_matrix containing the pairwise covariances. The
- caller owns the returned matrix and must free it when it is no longer
- needed.
+ returned matrix is owned by the structure, and must not be freed.
Call this function only after all data have been accumulated. */
-gsl_matrix *
+const gsl_matrix *
covariance_calculate_unnormalized (struct covariance *cov)
{
if ( cov->state <= 0 )
return NULL;
+ if (cov->unnormalised != NULL)
+ return cov->unnormalised;
+
switch (cov->passes)
{
case 1:
- return covariance_calculate_single_pass_unnormalized (cov);
+ cov->unnormalised = covariance_calculate_single_pass_unnormalized (cov);
break;
case 2:
- return covariance_calculate_double_pass_unnormalized (cov);
+ cov->unnormalised = covariance_calculate_double_pass_unnormalized (cov);
break;
default:
NOT_REACHED ();
}
+
+ return cov->unnormalised;
}
/* Function to access the categoricals used by COV
for (i = 0; i < n_MOMENTS; ++i)
gsl_matrix_free (cov->moments[i]);
+ gsl_matrix_free (cov->unnormalised);
free (cov->moments);
free (cov->cm);
free (cov);
covariance_dump_enc_header (const struct covariance *cov, int length)
{
struct tab_table *t = tab_create (cov->dim, length);
+ int n;
int i;
+
tab_title (t, "Covariance Encoding");
tab_box (t,
tab_vline (t, TAL_1, i + 1, 0, tab_nr (t) - 1);
}
- int n = 0;
+ n = 0;
while (i < cov->dim)
{
struct string str;
int idx = i - cov->n_vars;
const struct interaction *iact =
categoricals_get_interaction_by_subscript (cov->categoricals, idx);
+ int df;
ds_init_empty (&str);
interaction_to_string (iact, &str);
- int df = categoricals_df (cov->categoricals, n);
+ df = categoricals_df (cov->categoricals, n);
tab_joint_text (t,
i, 0,
for (i = 0 ; i < cov->dim; ++i)
{
double v = get_val (cov, i, c);
- tab_double (t, i, row, 0, v, i < cov->n_vars ? NULL : &F_8_0);
+ tab_double (t, i, row, 0, v, i < cov->n_vars ? NULL : &F_8_0, RC_OTHER);
}
}