From 543ef3347c4d15a1609b1f52c312243d465405dc Mon Sep 17 00:00:00 2001 From: Jason H Stover Date: Mon, 23 Feb 2009 17:27:07 -0500 Subject: [PATCH] covariance-matrix.c: (covariance_accumulator_hash) For categorical variables, eliminate temporary string by using hsh_hash_bytes and XOR. --- src/math/covariance-matrix.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/math/covariance-matrix.c b/src/math/covariance-matrix.c index 88b85051..c419ce02 100644 --- a/src/math/covariance-matrix.c +++ b/src/math/covariance-matrix.c @@ -350,15 +350,10 @@ covariance_accumulator_hash (const void *h, const void *aux) } 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; } -- 2.30.2