diff xthresh.c @ 280:3be15407e814

Merge sampling branch (-r361:405, though I hope that the branch is now finished) onto trunk. API developers take note. Things still to clear up: * whether the threshold distance it currently reports bears any relation to reality; * if not, how to bring it a bit more into alignment; * minor code cleanup issues in sample.cpp; * incorporating --absolute-threshold handling into sampling; * writing suitable test cases.
author mas01cr
date Wed, 02 Jul 2008 14:07:10 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xthresh.c	Wed Jul 02 14:07:10 2008 +0000
@@ -0,0 +1,27 @@
+#include <gsl/gsl_sf.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+int main(int argc, char *argv[]) {
+  if(argc != 4) {
+    fprintf(stderr, "Wrong number of arguments: %d\n", argc);
+    exit(1);
+  }
+
+  long int meanN = strtol(argv[1], NULL, 10);
+
+  double d = strtod(argv[2], NULL);
+  double sigma2 = strtod(argv[3], NULL);
+
+  double logw = (2 / d) * gsl_sf_log(-gsl_sf_log(0.99));
+  double logxthresh = gsl_sf_log(sigma2) + logw
+    - (2 / d) * gsl_sf_log(meanN)
+    - gsl_sf_log(d/2)
+    - (2 / d) * gsl_sf_log(2 / d)
+    + (2 / d) * gsl_sf_lngamma(d / 2);
+
+  printf("w: %f\n", exp(logw));
+  printf("x_thresh: %f\n", exp(logxthresh));
+  exit(0);
+}