annotate xthresh.c @ 411:ad2206c24986 api-inversion

Fix a memory corruption bug. When allocating the adb_t in audiodb_open(), zero the memory; then we're not going to try to free() or delete some arbitrary uninitialized thing if the thing that we're opening turns out not to be an audiodb database.
author mas01cr
date Thu, 11 Dec 2008 08:54:06 +0000
parents 3be15407e814
children
rev   line source
mas01cr@280 1 #include <gsl/gsl_sf.h>
mas01cr@280 2 #include <stdio.h>
mas01cr@280 3 #include <stdlib.h>
mas01cr@280 4 #include <math.h>
mas01cr@280 5
mas01cr@280 6 int main(int argc, char *argv[]) {
mas01cr@280 7 if(argc != 4) {
mas01cr@280 8 fprintf(stderr, "Wrong number of arguments: %d\n", argc);
mas01cr@280 9 exit(1);
mas01cr@280 10 }
mas01cr@280 11
mas01cr@280 12 long int meanN = strtol(argv[1], NULL, 10);
mas01cr@280 13
mas01cr@280 14 double d = strtod(argv[2], NULL);
mas01cr@280 15 double sigma2 = strtod(argv[3], NULL);
mas01cr@280 16
mas01cr@280 17 double logw = (2 / d) * gsl_sf_log(-gsl_sf_log(0.99));
mas01cr@280 18 double logxthresh = gsl_sf_log(sigma2) + logw
mas01cr@280 19 - (2 / d) * gsl_sf_log(meanN)
mas01cr@280 20 - gsl_sf_log(d/2)
mas01cr@280 21 - (2 / d) * gsl_sf_log(2 / d)
mas01cr@280 22 + (2 / d) * gsl_sf_lngamma(d / 2);
mas01cr@280 23
mas01cr@280 24 printf("w: %f\n", exp(logw));
mas01cr@280 25 printf("x_thresh: %f\n", exp(logxthresh));
mas01cr@280 26 exit(0);
mas01cr@280 27 }