void test_quantile(const double p, const double data[], const size_t n, const double expected, const double tol, const char *desc) { gsl_rstat_quantile_workspace *w = gsl_rstat_quantile_alloc(p); double result; size_t i; for (i = 0; i < n; ++i) gsl_rstat_quantile_add(data[i], w); result = gsl_rstat_quantile_get(w); if (fabs(expected) < 1.0e-4) gsl_test_abs(result, expected, tol, "%s p=%g", desc, p); else gsl_test_rel(result, expected, tol, "%s p=%g", desc, p); gsl_rstat_quantile_free(w); }
double gsl_rstat_median(gsl_rstat_workspace *w) { return gsl_rstat_quantile_get(w->median_workspace_p); }