X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fmath%2Fcovariance.c;h=b5a4166dfa40643c5a71c88f37ceb7b4c604b1d5;hb=e0cd0149b4b578632eb263a52e93c8a1fed3daba;hp=dc3166923d7ddff670d903274caef1dfe548beb4;hpb=f550aee00a62fe1d8baf62d83cd7efef6cc2ee92;p=pspp-builds.git diff --git a/src/math/covariance.c b/src/math/covariance.c index dc316692..b5a4166d 100644 --- a/src/math/covariance.c +++ b/src/math/covariance.c @@ -135,7 +135,7 @@ covariance_1pass_create (size_t n_vars, const struct variable **vars, const struct variable *weight, enum mv_class exclude) { size_t i; - struct covariance *cov = xmalloc (sizeof *cov); + struct covariance *cov = xzalloc (sizeof *cov); cov->passes = 1; cov->state = 0; @@ -156,7 +156,8 @@ covariance_1pass_create (size_t n_vars, const struct variable **vars, cov->n_cm = (n_vars * (n_vars - 1) ) / 2; - cov->cm = xcalloc (sizeof *cov->cm, cov->n_cm); + if (cov->n_cm > 0) + cov->cm = xcalloc (sizeof *cov->cm, cov->n_cm); cov->categoricals = NULL; return cov; @@ -266,6 +267,7 @@ get_val (const struct covariance *cov, int i, const struct ccase *c) return categoricals_get_binary_by_subscript (cov->categoricals, i - cov->n_vars, c); } +#if 0 void dump_matrix (const gsl_matrix *m) { @@ -278,6 +280,7 @@ dump_matrix (const gsl_matrix *m) printf ("\n"); } } +#endif /* Call this function for every case in the data set */ void @@ -598,7 +601,8 @@ covariance_calculate_single_pass (struct covariance *cov) const gsl_matrix * covariance_calculate (struct covariance *cov) { - assert ( cov->state > 0 ); + if ( cov->state <= 0 ) + return NULL; switch (cov->passes) { @@ -642,7 +646,6 @@ static const gsl_matrix * covariance_calculate_single_pass_unnormalized (struct covariance *cov) { size_t i, j; - size_t m; for (i = 0 ; i < cov->dim; ++i) { @@ -679,7 +682,8 @@ covariance_calculate_single_pass_unnormalized (struct covariance *cov) const gsl_matrix * covariance_calculate_unnormalized (struct covariance *cov) { - assert ( cov->state > 0 ); + if ( cov->state <= 0 ) + return NULL; switch (cov->passes) {