-static struct hsh_table *covariance_hsh_create (size_t);
+static struct hsh_table *covariance_hsh_create (size_t *);
static hsh_hash_func covariance_accumulator_hash;
static unsigned int hash_numeric_alpha (const struct variable *,
const struct variable *,
result = xmalloc (sizeof (*result));
result->cov = NULL;
- result->ca = covariance_hsh_create (n_variables);
+ result->n_variables = n_variables;
+ result->ca = covariance_hsh_create (&result->n_variables);
result->m = NULL;
result->m1 = NULL;
result->missing_handling = missing_handling;
}
}
result->v_variables = v_variables;
- result->n_variables = n_variables;
+
result->n_pass = n_pass;
return result;
}
if (var_is_alpha (v_max) && var_is_alpha (v_min))
{
- unsigned int tmp;
- char *x =
- xnmalloc (1 + var_get_width (v_max) + var_get_width (v_min),
- sizeof (*x));
- strncpy (x, val_max->s, var_get_width (v_max));
- strncat (x, val_min->s, var_get_width (v_min));
- tmp = *n_vars * (*n_vars + 1 + idx_max) + idx_min + hsh_hash_string (x);
- free (x);
- return tmp;
+ unsigned tmp = hsh_hash_bytes (val_max, var_get_width (v_max));
+ tmp ^= hsh_hash_bytes (val_min, var_get_width (v_min));
+ tmp += *n_vars * (*n_vars + 1 + idx_max) + idx_min;
+ return (size_t) tmp;
}
return -1u;
}
in the data.
*/
static struct hsh_table *
-covariance_hsh_create (size_t n_vars)
+covariance_hsh_create (size_t *n_vars)
{
- return hsh_create (n_vars * n_vars, covariance_accumulator_compare,
+ return hsh_create (*n_vars * *n_vars, covariance_accumulator_compare,
covariance_accumulator_hash, covariance_accumulator_free,
- &n_vars);
+ n_vars);
}
static void
ca->sum2 = update_sum (ca->v2, ca->val2, iv_f2);
ca->ssize = 1.0;
new_entry = hsh_insert (c, ca);
+
if (new_entry != NULL)
{
new_entry->dot_product += ca->dot_product;
covariance_matrix_insert (cov, v2, v1, val2, val1, product);
}
}
+
gsl_matrix_set (cov->m, row, col, product);
}