+ /*
+ There is only one independent variable, and it is the same
+ as the dependent variable. Print a warning and continue.
+ */
+ msg (SE,
+ gettext ("The dependent variable is equal to the independent variable."
+ "The least squares line is therefore Y=X."
+ "Standard errors and related statistics may be meaningless."));
+ n_indep_vars = 1;
+ indep_vars[0] = v_variables[0];
+ }
+ return n_indep_vars;
+}
+static double
+fill_covariance (gsl_matrix *cov, struct covariance *all_cov,
+ const struct variable **vars,
+ size_t n_vars, const struct variable *dep_var,
+ const struct variable **all_vars, size_t n_all_vars,
+ double *means)
+{
+ size_t i;
+ size_t j;
+ size_t dep_subscript;
+ size_t *rows;
+ const gsl_matrix *ssizes;
+ gsl_matrix *cm;
+ const gsl_matrix *mean_matrix;
+ const gsl_matrix *ssize_matrix;
+ double result = 0.0;
+
+ cm = covariance_calculate_unnormalized (all_cov);
+ rows = xnmalloc (cov->size1 - 1, sizeof (*rows));
+
+ for (i = 0; i < n_all_vars; i++)
+ {
+ for (j = 0; j < n_vars; j++)
+ {
+ if (vars[j] == all_vars[i])
+ {
+ rows[j] = i;
+ }
+ }
+ if (all_vars[i] == dep_var)
+ {
+ dep_subscript = i;
+ }
+ }
+ mean_matrix = covariance_moments (all_cov, MOMENT_MEAN);
+ ssize_matrix = covariance_moments (all_cov, MOMENT_NONE);
+ for (i = 0; i < cov->size1 - 1; i++)
+ {
+ means[i] = gsl_matrix_get (mean_matrix, rows[i], 0)
+ / gsl_matrix_get (ssize_matrix, rows[i], 0);
+ for (j = 0; j < cov->size2 - 1; j++)
+ {
+ gsl_matrix_set (cov, i, j, gsl_matrix_get (cm, rows[i], rows[j]));
+ gsl_matrix_set (cov, j, i, gsl_matrix_get (cm, rows[j], rows[i]));
+ }
+ }
+ means[cov->size1 - 1] = gsl_matrix_get (mean_matrix, dep_subscript, 0)
+ / gsl_matrix_get (ssize_matrix, dep_subscript, 0);
+ ssizes = covariance_moments (all_cov, MOMENT_NONE);
+ result = gsl_matrix_get (ssizes, dep_subscript, rows[0]);
+ for (i = 0; i < cov->size1 - 1; i++)
+ {
+ gsl_matrix_set (cov, i, cov->size1 - 1,
+ gsl_matrix_get (cm, rows[i], dep_subscript));
+ gsl_matrix_set (cov, cov->size1 - 1, i,
+ gsl_matrix_get (cm, rows[i], dep_subscript));
+ if (result > gsl_matrix_get (ssizes, rows[i], dep_subscript))