/* PSPP - a program for statistical analysis.
- Copyright (C) 2008 Free Software Foundation, Inc.
+ Copyright (C) 2008, 2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
return result;
}
static size_t
-get_n_rows (size_t n_variables, size_t *v_variables[])
+get_n_rows (size_t n_variables, const struct variable *v_variables[])
{
size_t i;
size_t result = 0;
column_iterate (struct design_matrix *cov, const struct variable *v,
double ssize, double x, const union value *val1, size_t row)
{
+ int width = var_get_width (v);
size_t col;
size_t i;
double y;
col += i;
y = -1.0 * cat_get_category_count (i, v) / ssize;
tmp_val = cat_subscript_to_value (i, v);
- if (!compare_values_short (tmp_val, val1, v))
+ if (!value_equal (tmp_val, val1, width))
{
y += -1.0;
}
row += i;
x = -1.0 * cat_get_category_count (i, v1) / ssize;
tmp_val = cat_subscript_to_value (i, v1);
- if (!compare_values_short (tmp_val, val1, v1))
+ if (!value_equal (tmp_val, val1, var_get_width (v1)))
{
x += 1.0;
}
}
if (var_is_alpha (v_max) && var_is_alpha (v_min))
{
- unsigned tmp = hash_bytes (val_max, var_get_width (v_max), 0);
- tmp ^= hash_bytes (val_min, var_get_width (v_min), 0);
- tmp += *n_vars * (*n_vars + 1 + idx_max) + idx_min;
- return (size_t) tmp;
+ unsigned hash = value_hash (val_max, var_get_width (v_max), 0);
+ hash = value_hash (val_min, var_get_width (v_min), hash);
+ return hash_int (*n_vars * (*n_vars + 1 + idx_max) + idx_min, hash);
}
return -1u;
}
result = result|m;
if (var_is_alpha (v1))
{
- result |= compare_values_short (val1, c->val1, v1);
+ result |= value_compare_3way (val1, c->val1, var_get_width (v1));
if (var_is_alpha (v2))
{
- result |= compare_values_short (val2, c->val2, v2);
+ result |= value_compare_3way (val2, c->val2, var_get_width (v2));
}
}
else if (var_is_alpha (v2))
{
- result |= compare_values_short (val2, c->val2, v2);
+ result |= value_compare_3way (val2, c->val2, var_get_width (v2));
}
return result;
}
if (var_is_numeric (v1) && var_is_alpha (v2))
{
result = n_vars * ((n_vars + 1) + var_get_dict_index (v1))
- + var_get_dict_index (v2) + hash_value_short (val, v2);
+ + var_get_dict_index (v2) + value_hash (val, var_get_width (v2), 0);
}
else if (var_is_alpha (v1) && var_is_numeric (v2))
{
static void
update_ssize (struct design_matrix *dm, size_t i, size_t j, struct covariance_accumulator *ca)
{
- struct variable *var;
+ const struct variable *var;
double tmp;
var = design_matrix_col_to_var (dm, i);
if (var_get_dict_index (ca->v1) == var_get_dict_index (var))