Compare variable pointers instead of variable indexes.
authorBen Pfaff <blp@gnu.org>
Thu, 7 Dec 2006 05:16:33 +0000 (05:16 +0000)
committerBen Pfaff <blp@gnu.org>
Thu, 7 Dec 2006 05:16:33 +0000 (05:16 +0000)
src/language/stats/ChangeLog
src/language/stats/regression.q
src/math/ChangeLog
src/math/coefficient.c
src/math/design-matrix.c
src/math/linreg/ChangeLog
src/math/linreg/linreg.c

index 2dfc70b6bf379dcb306a73e4fe44f298f82ad54d..c0c9708a3973e21ae17f684650fac9bd6e0aa3e1 100644 (file)
@@ -1,3 +1,8 @@
+Wed Dec  6 21:14:26 2006  Ben Pfaff  <blp@gnu.org>
+
+       * regression.q (reg_inserted): Compare variable pointers instead
+       of variable indexes.
+
 Mon Dec  4 22:33:46 2006  Ben Pfaff  <blp@gnu.org>
 
        * crosstabs.q (insert_summary): Use var_to_string for labeling.
index 7068d7f67108b5af00431712d78dea051e08b966..77f577a565672a9e1971155e4ab2375122155f14 100644 (file)
@@ -722,7 +722,7 @@ reg_inserted (const struct variable *v, struct variable **varlist, int n_vars)
 
   for (i = 0; i < n_vars; i++)
     {
-      if (v->index == varlist[i]->index)
+      if (v == varlist[i])
        {
          return 1;
        }
index 5b05c81715354aa71dce1a3e1e6ea195b92d08da..3b01849f22d6323dc2f36a1b1ad49dd0df04e1fb 100644 (file)
@@ -1,3 +1,15 @@
+Wed Dec  6 21:14:59 2006  Ben Pfaff  <blp@gnu.org>
+
+       * coefficient.c: (pspp_coeff_get_value) Compare variable pointers
+       instead of variable indexes.
+       (pspp_linreg_get_coeff) Ditto.
+       (design_matrix_col_to_var_index) Removed.
+       (design_matrix_col_to_var) Compare variable pointers
+       instead of variable indexes.
+       (cmp_dm_var_index) Ditto.
+       (design_matrix_var_to_column) Ditto.
+       (dm_var_to_last_column) Ditto.
+
 Sun Nov  5 08:30:32 WST 2006 John Darrington <john@darrington.wattle.id.au>
 
        * levene.c levene.h Changed to use the new casefilter structure.
index f59c3645212d2774be8d1b49b536c5b5ca5978bb..e3d9aee14892a8fd551f945de63001e965dbd7f9 100644 (file)
@@ -169,7 +169,7 @@ pspp_coeff_get_value (struct pspp_coeff *c,
   while (i < c->n_vars)
     {
       candidate = pspp_coeff_get_var (c, i);
-      if (v->index == candidate->index)
+      if (v == candidate)
        {
          return (c->v_info + i)->val;
        }
@@ -201,7 +201,7 @@ pspp_linreg_get_coeff (const pspp_linreg_cache * c,
 
   result = c->coeff[i];
   tmp = pspp_coeff_get_var (result, 0);
-  while (tmp->index != v->index && i < c->n_coeffs)
+  while (tmp != v && i < c->n_coeffs)
     {
       result = c->coeff[i];
       tmp = pspp_coeff_get_var (result, 0);
@@ -221,7 +221,7 @@ pspp_linreg_get_coeff (const pspp_linreg_cache * c,
          If v is categorical, we need to ensure the coefficient
          matches the VAL.
        */
-      while (tmp->index != v->index && i < c->n_coeffs
+      while (tmp != v && i < c->n_coeffs
             && compare_values (pspp_coeff_get_value (result, tmp),
                                val, var_get_width (v)))
        {                       /* FIX THIS */
index 310a2f5643484206a1de42e31f2822c25033922a..01fdb0851aca937aeefe1d7d4fbf98f6d0017b9d 100644 (file)
@@ -146,8 +146,8 @@ design_matrix_destroy (struct design_matrix *dm)
   Return the index of the variable for the
   given column.
  */
-static size_t
-design_matrix_col_to_var_index (const struct design_matrix *dm, size_t col)
+struct variable *
+design_matrix_col_to_var (const struct design_matrix *dm, size_t col)
 {
   size_t i;
   struct design_matrix_var v;
@@ -156,42 +156,11 @@ design_matrix_col_to_var_index (const struct design_matrix *dm, size_t col)
     {
       v = dm->vars[i];
       if (v.first_column <= col && col <= v.last_column)
-       return (v.v)->index;
-    }
-  return DM_INDEX_NOT_FOUND;
-}
-
-/*
-  Return a pointer to the variable whose values
-  are stored in column col.
- */
-struct variable *
-design_matrix_col_to_var (const struct design_matrix *dm, size_t col)
-{
-  size_t index;
-  size_t i;
-  struct design_matrix_var dmv;
-
-  index = design_matrix_col_to_var_index (dm, col);
-  for (i = 0; i < dm->n_vars; i++)
-    {
-      dmv = dm->vars[i];
-      if ((dmv.v)->index == index)
-       {
-         return (struct variable *) dmv.v;
-       }
+       return (struct variable *) v.v;
     }
   return NULL;
 }
 
-static size_t
-cmp_dm_var_index (const struct design_matrix_var *dmv, size_t index)
-{
-  if (dmv->v->index == index)
-    return 1;
-  return 0;
-}
-
 /*
   Return the number of the first column which holds the
   values for variable v.
@@ -206,7 +175,7 @@ design_matrix_var_to_column (const struct design_matrix * dm,
   for (i = 0; i < dm->n_vars; i++)
     {
       tmp = dm->vars[i];
-      if (cmp_dm_var_index (&tmp, v->index))
+      if (tmp.v == v)
        {
          return tmp.first_column;
        }
@@ -225,7 +194,7 @@ dm_var_to_last_column (const struct design_matrix *dm,
   for (i = 0; i < dm->n_vars; i++)
     {
       tmp = dm->vars[i];
-      if (cmp_dm_var_index (&tmp, v->index))
+      if (tmp.v == v)
        {
          return tmp.last_column;
        }
index d5cf40fc94d13f17ae2cb3416e077472f663b3c2..0d6b6881715751671e7f9cef346ebf53341a75ff 100644 (file)
@@ -1,3 +1,8 @@
+Wed Dec  6 21:16:22 2006  Ben Pfaff  <blp@gnu.org>
+
+       * linreg.c: (pspp_linreg_get_vars) Compare variable pointers
+       instead of variable indexes.
+
 2006-05-19  Jason Stover  <jhs@math.gcsu.edu>
 
        * coefficient.c: Moved to src/math.
index c717e4ada4bd690ea7b0938f6c1289525cb24542..6bbd94c50cb8e742d6ec011d2a768d1685f6e47f 100644 (file)
@@ -123,7 +123,7 @@ pspp_linreg_get_vars (const void *c_, struct variable **v)
       /* 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--;
        }