#ifndef COVARIANCE_MATRIX_H
#define COVARIANCE_MATRIX_H
-#include "design-matrix.h"
-
-struct design_matrix *
-covariance_matrix_create (int, const struct variable *[]);
-
-void covariance_matrix_destroy (struct design_matrix *);
+#include <math/design-matrix.h>
+#include <math/interaction.h>
+
+struct moments1;
+struct ccase;
+struct hsh_table;
+struct covariance_matrix;
+enum
+{ ONE_PASS,
+ TWO_PASS
+};
+/*
+ How to deal with missing values.
+ */
+enum
+{ LISTWISE,
+ PAIRWISE
+};
+struct design_matrix *covariance_matrix_create (size_t,
+ const struct variable *[]);
+
+void covariance_matrix_destroy (struct covariance_matrix *cov);
void covariance_pass_two (struct design_matrix *, double,
- double, double, const struct variable *,
- const struct variable *, const union value *, const union value *);
+ double, double, const struct variable *,
+ const struct variable *, const union value *,
+ const union value *);
+void covariance_matrix_compute (struct covariance_matrix *);
+struct covariance_matrix *covariance_matrix_init (size_t,
+ const struct variable *[],
+ int, int, enum mv_class);
+void covariance_matrix_free (struct covariance_matrix *);
+void covariance_matrix_accumulate (struct covariance_matrix *,
+ const struct ccase *, void **, size_t);
+struct design_matrix *covariance_to_design (const struct covariance_matrix *);
+double covariance_matrix_get_element (const struct covariance_matrix *, size_t, size_t);
#endif