X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fmath%2Fcovariance.c;h=aa7f41771c1ac9f3d55ff90d5a418010e5e032a8;hb=758bb90bac15899ca7f18a55dc4f90e1345c7179;hp=f0161a54c529c59b187d840611e3cde134d45852;hpb=b4a1fe2442a0b6fc8716e92574d33726d7170fe8;p=pspp-builds.git diff --git a/src/math/covariance.c b/src/math/covariance.c index f0161a54..aa7f4177 100644 --- a/src/math/covariance.c +++ b/src/math/covariance.c @@ -171,7 +171,7 @@ covariance_1pass_create (size_t n_vars, const struct variable *const *vars, */ struct covariance * covariance_2pass_create (size_t n_vars, const struct variable *const *vars, - size_t n_catvars, const struct variable *const *catvars, + struct categoricals *cats, const struct variable *wv, enum mv_class exclude) { size_t i; @@ -197,7 +197,7 @@ covariance_2pass_create (size_t n_vars, const struct variable *const *vars, cov->n_cm = -1; cov->cm = NULL; - cov->categoricals = categoricals_create (catvars, n_catvars, wv, exclude); + cov->categoricals = cats; return cov; } @@ -296,7 +296,8 @@ covariance_accumulate_pass1 (struct covariance *cov, const struct ccase *c) cov->state = 1; } - categoricals_update (cov->categoricals, c); + if (cov->categoricals) + categoricals_update (cov->categoricals, c); for (i = 0 ; i < cov->dim; ++i) { @@ -342,8 +343,11 @@ covariance_accumulate_pass2 (struct covariance *cov, const struct ccase *c) assert (cov->state == 1); cov->state = 2; - cov->dim = cov->n_vars + - categoricals_total (cov->categoricals) - categoricals_get_n_variables (cov->categoricals); + cov->dim = cov->n_vars; + + if (cov->categoricals) + cov->dim += categoricals_total (cov->categoricals) + - categoricals_get_n_variables (cov->categoricals); cov->n_cm = (cov->dim * (cov->dim - 1) ) / 2; cov->cm = xcalloc (sizeof *cov->cm, cov->n_cm); @@ -355,7 +359,8 @@ covariance_accumulate_pass2 (struct covariance *cov, const struct ccase *c) cov->moments[i] = resize_matrix (cov->moments[i], cov->dim); } - categoricals_done (cov->categoricals); + if (cov->categoricals) + categoricals_done (cov->categoricals); /* Populate the moments matrices with the categorical value elements */ for (i = cov->n_vars; i < cov->dim; ++i)