+/* First pass */
+static void levene_precalc (const struct levene_info *l);
+static int levene_calc (const struct dictionary *dict, const struct ccase *,
+ const struct levene_info *l);
+static void levene_postcalc (struct levene_info *);
+
+
+/* Second pass */
+static void levene2_precalc (struct levene_info *l);
+static int levene2_calc (const struct dictionary *, const struct ccase *,
+ struct levene_info *l);
+static void levene2_postcalc (struct levene_info *);
+
+
+void
+levene(const struct dictionary *dict,
+ struct casereader *reader,
+ const struct variable *v_indep, size_t n_dep,
+ const struct variable **v_dep,
+ enum mv_class exclude)
+{
+ 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);