projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Remove POT-Creation-Date from pspp.pot and from .po files
[pspp]
/
src
/
math
/
covariance.c
diff --git
a/src/math/covariance.c
b/src/math/covariance.c
index bc5382c0c12752e899c5b7b6570f16acf7ae4c11..3ec90efbba05188c68bddd54ce53bc2a8e7a5d0f 100644
(file)
--- a/
src/math/covariance.c
+++ b/
src/math/covariance.c
@@
-113,6
+113,8
@@
struct covariance
/* Flags indicating that the first case has been seen */
bool pass_one_first_case_seen;
bool pass_two_first_case_seen;
/* Flags indicating that the first case has been seen */
bool pass_one_first_case_seen;
bool pass_two_first_case_seen;
+
+ gsl_matrix *unnormalised;
};
};
@@
-202,6
+204,7
@@
covariance_2pass_create (size_t n_vars, const struct variable *const *vars,
cov->cm = NULL;
cov->categoricals = cats;
cov->cm = NULL;
cov->categoricals = cats;
+ cov->unnormalised = NULL;
return cov;
}
return cov;
}
@@
-268,7
+271,7
@@
get_val (const struct covariance *cov, int i, const struct ccase *c)
return val->f;
}
return val->f;
}
- return categoricals_get_code_for_case (cov->categoricals, i - cov->n_vars, c);
+ return categoricals_get_
effects_
code_for_case (cov->categoricals, i - cov->n_vars, c);
}
#if 0
}
#if 0
@@
-667,27
+670,31
@@
covariance_calculate_single_pass_unnormalized (struct covariance *cov)
/* Return a pointer to gsl_matrix containing the pairwise covariances. The
/* 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. */
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;
covariance_calculate_unnormalized (struct covariance *cov)
{
if ( cov->state <= 0 )
return NULL;
+ if (cov->unnormalised != NULL)
+ return cov->unnormalised;
+
switch (cov->passes)
{
case 1:
switch (cov->passes)
{
case 1:
-
return
covariance_calculate_single_pass_unnormalized (cov);
+
cov->unnormalised =
covariance_calculate_single_pass_unnormalized (cov);
break;
case 2:
break;
case 2:
-
return
covariance_calculate_double_pass_unnormalized (cov);
+
cov->unnormalised =
covariance_calculate_double_pass_unnormalized (cov);
break;
default:
NOT_REACHED ();
}
break;
default:
NOT_REACHED ();
}
+
+ return cov->unnormalised;
}
/* Function to access the categoricals used by COV
}
/* Function to access the categoricals used by COV
@@
-711,6
+718,7
@@
covariance_destroy (struct covariance *cov)
for (i = 0; i < n_MOMENTS; ++i)
gsl_matrix_free (cov->moments[i]);
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);
free (cov->moments);
free (cov->cm);
free (cov);
@@
-805,6
+813,6
@@
covariance_dump_enc (const struct covariance *cov, const struct ccase *c,
for (i = 0 ; i < cov->dim; ++i)
{
double v = get_val (cov, i, c);
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
);
}
}
}
}