struct moments;
+/* Two-pass moments. */
struct moments *moments_create (enum moment max_moment);
void moments_clear (struct moments *);
void moments_pass_one (struct moments *, double value, double weight);
double *skewness, double *kurtosis);
void moments_destroy (struct moments *);
+/* Convenience functions for two-pass moments. */
void moments_of_doubles (const double *array, size_t cnt,
double *weight,
double *mean, double *variance,
double *mean, double *variance,
double *skewness, double *kurtosis);
+/* One-pass moments. Use only if two passes are impractical. */
+struct moments1 *moments1_create (enum moment max_moment);
+void moments1_clear (struct moments1 *);
+void moments1_add (struct moments1 *, double value, double weight);
+void moments1_calculate (const struct moments1 *,
+ double *weight,
+ double *mean, double *variance,
+ double *skewness, double *kurtosis);
+void moments1_destroy (struct moments1 *);
+
+/* Standard errors. */
+double calc_semean (double stddev, double weight);
double calc_seskew (double weight);
double calc_sekurt (double weight);