projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add ability for reverse iteration to tower code, and corresponding
[pspp]
/
src
/
math
/
linreg
/
linreg.c
diff --git
a/src/math/linreg/linreg.c
b/src/math/linreg/linreg.c
index 51f77b882e0b35546a0b80bc9479bababdbdd1f5..558f6646fe33dde8e2ed19bcac22fd2614e76bb1 100644
(file)
--- a/
src/math/linreg/linreg.c
+++ b/
src/math/linreg/linreg.c
@@
-18,6
+18,7
@@
Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA.
*/
Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA.
*/
+#include <config.h>
#include <gsl/gsl_fit.h>
#include <gsl/gsl_multifit.h>
#include <gsl/gsl_fit.h>
#include <gsl/gsl_multifit.h>
@@
-53,7
+54,7
@@
*/
#include <math/linreg/linreg.h>
*/
#include <math/linreg/linreg.h>
-#include <math/
linreg/
coefficient.h>
+#include <math/coefficient.h>
#include <gsl/gsl_errno.h>
#include <linreg/sweep.h>
/*
#include <gsl/gsl_errno.h>
#include <linreg/sweep.h>
/*
@@
-94,10
+95,10
@@
linreg_mean_std (gsl_vector_const_view v, double *mp, double *sp, double *ssp)
The return value is the number of distinct variables found.
*/
int
The return value is the number of distinct variables found.
*/
int
-pspp_linreg_get_vars (const void *c_, struct variable **v)
+pspp_linreg_get_vars (const void *c_,
const
struct variable **v)
{
const pspp_linreg_cache *c = c_;
{
const pspp_linreg_cache *c = c_;
- struct pspp_
linreg_
coeff *coef = NULL;
+ struct pspp_coeff *coef = NULL;
const struct variable *tmp;
int i;
int result = 0;
const struct variable *tmp;
int i;
int result = 0;
@@
-113,23
+114,23
@@
pspp_linreg_get_vars (const void *c_, struct variable **v)
/*
Start at c->coeff[1] to avoid the intercept.
*/
/*
Start at c->coeff[1] to avoid the intercept.
*/
- v[result] =
(struct variable *) pspp_linreg
_coeff_get_var (c->coeff[1], 0);
+ v[result] =
pspp
_coeff_get_var (c->coeff[1], 0);
result = (v[result] == NULL) ? 0 : 1;
for (coef = c->coeff[2]; coef < c->coeff[c->n_coeffs]; coef++)
{
result = (v[result] == NULL) ? 0 : 1;
for (coef = c->coeff[2]; coef < c->coeff[c->n_coeffs]; coef++)
{
- tmp = pspp_
linreg_
coeff_get_var (coef, 0);
+ tmp = pspp_coeff_get_var (coef, 0);
assert (tmp != NULL);
/* Repeated variables are likely to bunch together, at the end
of the array. */
i = result - 1;
assert (tmp != NULL);
/* Repeated variables are likely to bunch together, at the end
of the array. */
i = result - 1;
- while (i >= 0 &&
(v[i]->index != tmp->index)
)
+ while (i >= 0 &&
v[i] != tmp
)
{
i--;
}
if (i < 0 && result < c->n_coeffs)
{
{
i--;
}
if (i < 0 && result < c->n_coeffs)
{
- v[result] =
(struct variable *)
tmp;
+ v[result] = tmp;
result++;
}
}
result++;
}
}
@@
-181,15
+182,18
@@
pspp_linreg_cache_free (void *m)
int i;
pspp_linreg_cache *c = m;
int i;
pspp_linreg_cache *c = m;
- gsl_vector_free (c->indep_means);
- gsl_vector_free (c->indep_std);
- gsl_vector_free (c->ss_indeps);
- gsl_matrix_free (c->cov);
- for (i = 0; i < c->n_coeffs; i++)
+ if (c != NULL)
{
{
- pspp_linreg_coeff_free (c->coeff[i]);
+ gsl_vector_free (c->indep_means);
+ gsl_vector_free (c->indep_std);
+ gsl_vector_free (c->ss_indeps);
+ gsl_matrix_free (c->cov);
+ for (i = 0; i < c->n_coeffs; i++)
+ {
+ pspp_coeff_free (c->coeff[i]);
+ }
+ free (c);
}
}
- free (c);
return true;
}
return true;
}