Autorecode: Add value labels indicating the source values.
[pspp] / src / math / levene.c
index 4a9f130734dcceb18988182ea02b777983b77cb4..5ff474dc4ed5c0c39088a2d1a0affabf676835ce 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2009, 2010 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
 #include <libpspp/str.h>
 #include <data/variable.h>
 #include <data/procedure.h>
-#include <libpspp/alloc.h>
 #include <libpspp/misc.h>
 #include "group.h"
 
 #include <math.h>
 #include <stdlib.h>
 
+#include "xalloc.h"
+
 
 /* This module calculates the Levene statistic for variables.
 
@@ -117,7 +118,7 @@ levene(const struct dictionary *dict,
        enum mv_class exclude)
 {
   struct casereader *pass1, *pass2;
-  struct ccase c;
+  struct ccase *c;
   struct levene_info l;
 
   l.n_dep      = n_dep;
@@ -130,14 +131,14 @@ levene(const struct dictionary *dict,
   casereader_split (reader, &pass1, &pass2);
 
   levene_precalc (&l);
-  for (; casereader_read (pass1, &c); case_destroy (&c))
-    levene_calc (dict, &c, &l);
+  for (; (c = casereader_read (pass1)) != NULL; case_unref (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);
+  for (; (c = casereader_read (pass2)) != NULL; case_unref (c))
+    levene2_calc (dict, c, &l);
   casereader_destroy (pass2);
   levene2_postcalc (&l);
 
@@ -163,7 +164,7 @@ levene_precalc (const struct levene_info *l)
 
 
       for ( gs = hsh_first(gp->group_hash, &hi);
-           gs != 0;
+           gs != NULL;
            gs = hsh_next(gp->group_hash, &hi))
        {
          gs->lz_total = 0;
@@ -195,7 +196,7 @@ levene_calc (const struct dictionary *dict, const struct ccase *c,
 
       gs = hsh_find(gp->group_hash,(void *) &key );
 
-      if ( 0 == gs )
+      if ( gs == NULL )
        continue ;
 
       if ( !var_is_value_missing (var, v, l->exclude))
@@ -245,9 +246,7 @@ levene2_precalc (struct levene_info *l)
       struct hsh_table *hash = group_proc_get (var)->group_hash;
 
 
-      for(g = (struct group_statistics *) hsh_first(hash,&hi);
-         g != 0 ;
-         g = (struct group_statistics *) hsh_next(hash,&hi) )
+      for (g = hsh_first(hash,&hi); g != NULL; g = hsh_next(hash, &hi))
        {
          g->lz_mean = g->lz_total / g->n ;
        }
@@ -278,7 +277,7 @@ levene2_calc (const struct dictionary *dict, const struct ccase *c,
 
       gs = hsh_find(group_proc_get (var)->group_hash,(void *) &key );
 
-      if ( 0 == gs )
+      if ( gs == NULL )
        continue;
 
       if ( !var_is_value_missing (var, v, l->exclude))
@@ -307,9 +306,7 @@ levene2_postcalc (struct levene_info *l)
       struct group_proc *gp = group_proc_get (var);
       struct hsh_table *hash = gp->group_hash;
 
-      for(g = (struct group_statistics *) hsh_first(hash,&hi);
-         g != 0 ;
-         g = (struct group_statistics *) hsh_next(hash,&hi) )
+      for (g = hsh_first(hash, &hi); g != NULL; g = hsh_next(hash, &hi))
        {
          lz_numerator += g->n * pow2(g->lz_mean - l->lz[v].grand_mean );
        }