Remove some unnecessary #include directives
[pspp-builds.git] / src / language / stats / correlations.c
index 69d91d03c2b56bb9bc71f8c5e1294db4587416fa..13543407a35584ec24571ac02161420b498f4d91 100644 (file)
@@ -18,7 +18,6 @@
 
 #include <libpspp/assertion.h>
 #include <math/covariance.h>
-#include <math/design-matrix.h>
 #include <gsl/gsl_matrix.h>
 #include <data/casegrouper.h>
 #include <data/casereader.h>
@@ -324,16 +323,25 @@ run_corr (struct casereader *r, const struct corr_opts *opts, const struct corr
   const gsl_matrix *var_matrix,  *samples_matrix, *mean_matrix;
   const gsl_matrix *cov_matrix;
   gsl_matrix *corr_matrix;
-  struct covariance *cov = covariance_create (corr->n_vars_total, corr->vars,
-                                             opts->wv, opts->exclude);
+  struct covariance *cov = covariance_2pass_create (corr->n_vars_total, corr->vars,
+                                                   0, NULL,
+                                                   opts->wv, opts->exclude);
 
+  struct casereader *rc = casereader_clone (r);
   for ( ; (c = casereader_read (r) ); case_unref (c))
     {
-      covariance_accumulate (cov, c);
+      covariance_accumulate_pass1 (cov, c);
+    }
+
+  for ( ; (c = casereader_read (rc) ); case_unref (c))
+    {
+      covariance_accumulate_pass2 (cov, c);
     }
 
   cov_matrix = covariance_calculate (cov);
 
+  casereader_destroy (rc);
+
   samples_matrix = covariance_moments (cov, MOMENT_NONE);
   var_matrix = covariance_moments (cov, MOMENT_VARIANCE);
   mean_matrix = covariance_moments (cov, MOMENT_MEAN);
@@ -432,8 +440,11 @@ cmd_correlation (struct lexer *lexer, struct dataset *ds)
                opts.statistics = STATS_DESCRIPTIVES;
              else if (lex_match_id (lexer, "XPROD"))
                opts.statistics = STATS_XPROD;
-             else if (lex_match_id (lexer, "ALL"))
-               opts.statistics = STATS_ALL;
+             else if (lex_token (lexer) == T_ALL)
+               {
+                 opts.statistics = STATS_ALL;
+                 lex_get (lexer);
+               }
              else 
                {
                  lex_error (lexer, NULL);