Added a base parameter to the interaction_case_hash function
authorJohn Darrington <john@darrington.wattle.id.au>
Wed, 5 Oct 2011 13:52:18 +0000 (15:52 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Wed, 5 Oct 2011 13:52:18 +0000 (15:52 +0200)
src/math/categoricals.c
src/math/interaction.c
src/math/interaction.h

index 9f8215d30eeabd5196252db87605044525529467..81c673b3fc590e02cdd522e192b1b85326a06ff8 100644 (file)
@@ -279,7 +279,7 @@ static struct interaction_value *
 lookup_case (const struct hmap *map, const struct interaction *iact, const struct ccase *c)
 {
   struct interaction_value *iv = NULL;
 lookup_case (const struct hmap *map, const struct interaction *iact, const struct ccase *c)
 {
   struct interaction_value *iv = NULL;
-  size_t hash = interaction_case_hash (iact, c);
+  size_t hash = interaction_case_hash (iact, c, 0);
 
   HMAP_FOR_EACH_WITH_HASH (iv, struct interaction_value, node, hash, map)
     {
 
   HMAP_FOR_EACH_WITH_HASH (iv, struct interaction_value, node, hash, map)
     {
@@ -375,7 +375,6 @@ categoricals_update (struct categoricals *cat, const struct ccase *c)
        }
     }    
   
        }
     }    
   
-
   for (i = 0 ; i < cat->n_iap; ++i)
     {
       const struct interaction *iact = cat->iap[i].iact;
   for (i = 0 ; i < cat->n_iap; ++i)
     {
       const struct interaction *iact = cat->iap[i].iact;
@@ -383,7 +382,7 @@ categoricals_update (struct categoricals *cat, const struct ccase *c)
       //      if ( interaction_case_is_missing (iact, c, cat->exclude))
       //         continue;
 
       //      if ( interaction_case_is_missing (iact, c, cat->exclude))
       //         continue;
 
-      size_t hash = interaction_case_hash (iact, c);
+      size_t hash = interaction_case_hash (iact, c, 0);
       struct interaction_value *node = lookup_case (&cat->iap[i].ivmap, iact, c);
 
       if ( NULL == node)
       struct interaction_value *node = lookup_case (&cat->iap[i].ivmap, iact, c);
 
       if ( NULL == node)
index 746cc17fa1bcd72acaf0359a7824f1c214705c49..269aa7e9ad9af816a56b5c95d2fc4ce9ea90dbf7 100644 (file)
@@ -155,10 +155,10 @@ interaction_to_string (const struct interaction *iact, struct string *str)
 }
 
 unsigned int
 }
 
 unsigned int
-interaction_case_hash (const struct interaction *iact, const struct ccase *c)
+interaction_case_hash (const struct interaction *iact, const struct ccase *c, unsigned int base)
 {
   int i;
 {
   int i;
-  size_t hash = 0;
+  size_t hash = base;
   for (i = 0; i < iact->n_vars; ++i)
     {
       const struct variable *var = iact->vars[i];
   for (i = 0; i < iact->n_vars; ++i)
     {
       const struct variable *var = iact->vars[i];
index 0fb1f2622298c2b9b741ac6554aa45051644c4c6..ccd6706f51f4252d2c13e99b800cf76edf81a47e 100644 (file)
@@ -42,7 +42,7 @@ bool interaction_is_subset (const struct interaction *x, const struct interactio
 
 
 struct ccase;
 
 
 struct ccase;
-unsigned int interaction_case_hash (const struct interaction *, const struct ccase *);
+unsigned int interaction_case_hash (const struct interaction *, const struct ccase *, unsigned int base);
 bool interaction_case_equal (const struct interaction *, const struct ccase *, const struct ccase *);
 bool interaction_case_is_missing (const struct interaction *, const struct ccase *, enum mv_class);
 int interaction_case_cmp_3way (const struct interaction *, const struct ccase *, const struct ccase *);
 bool interaction_case_equal (const struct interaction *, const struct ccase *, const struct ccase *);
 bool interaction_case_is_missing (const struct interaction *, const struct ccase *, enum mv_class);
 int interaction_case_cmp_3way (const struct interaction *, const struct ccase *, const struct ccase *);