- struct casereader *pass1, *pass2;
- struct ccase c;
- struct levene_info l;
-
- l.n_dep = n_dep;
- l.v_indep = v_indep;
- l.v_dep = v_dep;
- l.exclude = exclude;
- l.lz = xnmalloc (l.n_dep, sizeof *l.lz);
- l.lz_denominator = xnmalloc (l.n_dep, sizeof *l.lz_denominator);
-
- casereader_split (reader, &pass1, &pass2);
-
- levene_precalc (&l);
- for (; casereader_read (pass1, &c); case_destroy (&c))
- levene_calc (dict, &c, &l);
- casereader_destroy (pass1);
- levene_postcalc (&l);
-
- levene2_precalc(&l);
- for (; casereader_read (pass2, &c); case_destroy (&c))
- levene2_calc (dict, &c, &l);
- casereader_destroy (pass2);
- levene2_postcalc (&l);
-
- free (l.lz_denominator);
- free (l.lz);
-}
-
-static void
-levene_precalc (const struct levene_info *l)
-{
- size_t i;
-
- for(i = 0; i < l->n_dep ; ++i )
+ struct lev *l = NULL;
+ unsigned int hash = value_hash (target, width, 0);
+ HMAP_FOR_EACH_WITH_HASH (l, struct lev, node, hash, map)