X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fmath%2Fcategoricals.c;h=88d0d5c238e87c8746f90fb9d2ef7acc9409d9c0;hb=5aeb37ea9cd9d86fb050a7162cd5fd8ad7ca0abf;hp=fbc23ab0f6191c4fcde9895220341a41e30d69d4;hpb=fc312a1e6446b993370cd93abc21d503c2c6aa9c;p=pspp-builds.git diff --git a/src/math/categoricals.c b/src/math/categoricals.c index fbc23ab0..88d0d5c2 100644 --- a/src/math/categoricals.c +++ b/src/math/categoricals.c @@ -32,7 +32,7 @@ #include "gl/xalloc.h" -#define EFFECTS_CODING 0 +#define EFFECTS_CODING 1 struct value_node { @@ -647,6 +647,7 @@ categoricals_get_binary_by_subscript (const struct categoricals *cat, const struct interact_params *iap = &cat->iap[i]; + double dfp = 1.0; for (v = 0; v < iact->n_vars; ++v) { const struct variable *var = iact->vars[v]; @@ -660,13 +661,14 @@ categoricals_get_binary_by_subscript (const struct categoricals *cat, double bin = 1.0; + const double df = iap->df_prod[v] / dfp; + /* Translate the subscript into an index for the individual variable */ - int index = (subscript - base_index) % iap->df_prod[v]; - if ( v > 0) - index /= iap->df_prod[v - 1]; + const int index = ((subscript - base_index) % iap->df_prod[v] ) / dfp; + dfp = iap->df_prod [v]; #if EFFECTS_CODING - if ( valn->index == 0) + if ( valn->index == df ) bin = -1.0; else #endif