Mercurial > hg > audiodb
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); +}