annotate xthresh.c @ 546:e8193805ce42 multiprobeLSH

Rework new audiodb_track_id_datum_offset() and audiodb_insert_create_datum_offset() so that all offsets are in num_vectors. Internals of data storage are left the the methods to implement. If we are going to export these methods to the API, how do we expose the cache ? It needs to be passed back to the user and back in by the user on each call for caching to be re-entrant. No (intentional) functional changes this version.
author mas01mc
date Sun, 08 Feb 2009 22:32:33 +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 }