FLIP: Don't change new variables to upper case.
[pspp] / src / language / stats / factor.c
index 83dc13de7ed5a28f92e16cd8e24e2a2a02c77b25..d50d6ad3fdf2c5b6eb6c86bbbe3e3044a893f4ac 100644 (file)
@@ -211,6 +211,7 @@ idata_free (struct idata *id)
 }
 
 
+#if 0
 static void
 dump_matrix (const gsl_matrix *m)
 {
@@ -249,6 +250,7 @@ dump_vector (const gsl_vector *v)
     }
   printf ("\n");
 }
+#endif
 
 
 static int 
@@ -1682,7 +1684,7 @@ do_factor (const struct cmd_factor *factor, struct casereader *r)
   const gsl_matrix *analysis_matrix;
   struct idata *idata = idata_alloc (factor->n_vars);
 
-  struct covariance *cov = covariance_create (factor->n_vars, factor->vars,
+  struct covariance *cov = covariance_1pass_create (factor->n_vars, factor->vars,
                                              factor->wv, factor->exclude);
 
   for ( ; (c = casereader_read (r) ); case_unref (c))
@@ -1692,6 +1694,12 @@ do_factor (const struct cmd_factor *factor, struct casereader *r)
 
   idata->cov = covariance_calculate (cov);
 
+  if (idata->cov == NULL)
+    {
+      msg (MW, _("The dataset contains no complete observations. No analysis will be performed."));
+      goto finish;
+    }
+
   var_matrix = covariance_moments (cov, MOMENT_VARIANCE);
   mean_matrix = covariance_moments (cov, MOMENT_MEAN);
   idata->n = covariance_moments (cov, MOMENT_NONE);