Removed use of coefficient 0 as intercept; removed subcommand EXPORT.
[pspp-builds.git] / src / math / coefficient.c
index 44b7c0d3219b764b827f704a6b807c60a9adf2e0..156c782d5a03e4a750437fa43e9588f35f472f19 100644 (file)
@@ -55,6 +55,7 @@ pspp_coeff_init (struct pspp_coeff ** c, const struct design_matrix *X)
   size_t i;
   int n_vals = 1;
 
+  assert (c != NULL);
   for (i = 0; i < X->m->size2; i++)
     {
       c[i] = xmalloc (sizeof (*c[i]));
@@ -182,7 +183,7 @@ const struct pspp_coeff *
 pspp_linreg_get_coeff (const pspp_linreg_cache * c,
                       const struct variable *v, const union value *val)
 {
-  int i = 1;
+  int i;
   struct pspp_coeff *result = NULL;
   const struct variable *tmp = NULL;
 
@@ -194,8 +195,8 @@ pspp_linreg_get_coeff (const pspp_linreg_cache * c,
     {
       return NULL;
     }
-
-  result = c->coeff[i];
+  i = 0;
+  result = c->coeff[0];
   tmp = pspp_coeff_get_var (result, 0);
   while (tmp != v && i < c->n_coeffs)
     {
@@ -203,8 +204,11 @@ pspp_linreg_get_coeff (const pspp_linreg_cache * c,
       tmp = pspp_coeff_get_var (result, 0);
       i++;
     }
-  if (i > c->n_coeffs)
+  if (tmp != v)
     {
+      /*
+       Not found.
+       */
       return NULL;
     }
   if (var_is_numeric (v))
@@ -225,7 +229,7 @@ pspp_linreg_get_coeff (const pspp_linreg_cache * c,
          result = c->coeff[i];
          tmp = pspp_coeff_get_var (result, 0);
        }
-      if (i == c->n_coeffs)
+      if (i == c->n_coeffs && tmp != v)
        {
          return NULL;
        }