annotate libtests/test_utils_lib.h @ 755:37c2b9cce23a
multiprobeLSH
Adding mkc_lsh_update branch, trunk candidate with improved LSH: merged trunk 1095 and branch multiprobe_lsh
author |
mas01mc |
date |
Thu, 25 Nov 2010 13:42:40 +0000 |
parents |
342822c2d49a |
children |
e18843dc0aea |
rev |
line source |
mas01cr@498
|
1 #include <sys/types.h>
|
mas01cr@498
|
2 #include <sys/stat.h>
|
mas01cr@498
|
3 #include <math.h>
|
mas01cr@498
|
4 #include <unistd.h>
|
mas01cr@498
|
5 #include <fcntl.h>
|
mas01cr@498
|
6 #include <string.h>
|
mas01cr@498
|
7 #include <stdio.h>
|
mas01cr@498
|
8 #include <stdlib.h>
|
mas01ik@355
|
9
|
mas01cr@498
|
10 #define TESTDB "testdb"
|
mas01ik@355
|
11
|
mas01cr@498
|
12 void clean_remove_db(char * dbname) {
|
mas01cr@498
|
13 unlink(dbname);
|
mas01ik@355
|
14 }
|
mas01ik@355
|
15
|
mas01cr@498
|
16 void maketestfile(const char *path, int dim, double *doubles, int ndoubles) {
|
mas01cr@498
|
17 FILE *file;
|
mas01ik@355
|
18
|
mas01cr@498
|
19 file = fopen(path, "w");
|
mas01cr@498
|
20 fwrite(&dim, sizeof(int), 1, file);
|
mas01cr@498
|
21 fwrite(doubles, sizeof(double), ndoubles, file);
|
mas01cr@498
|
22 fflush(file);
|
mas01cr@498
|
23 fclose(file);
|
mas01ik@355
|
24 }
|
mas01ik@355
|
25
|
mas01cr@498
|
26 int close_enough(double a, double b, double epsilon) {
|
mas01cr@498
|
27 return (fabs(a-b) < epsilon);
|
mas01ik@355
|
28 }
|
mas01ik@355
|
29
|
mas01cr@498
|
30 int result_position(adb_query_results_t *r, const char *key, float dist, uint32_t qpos, uint32_t ipos) {
|
mas01cr@498
|
31 for(uint32_t k = 0; k < r->nresults; k++) {
|
mas01cr@498
|
32 adb_result_t result = r->results[k];
|
mas01cr@498
|
33 if(close_enough(dist, result.dist, 1e-4) && (qpos == result.qpos) &&
|
mas01cr@498
|
34 (ipos == result.ipos) && !(strcmp(key, result.key))) {
|
mas01cr@498
|
35 return k;
|
mas01cr@498
|
36 }
|
mas01cr@498
|
37 }
|
mas01cr@498
|
38 return -1;
|
mas01ik@355
|
39 }
|
mas01ik@355
|
40
|
mas01cr@498
|
41 #define result_present_or_fail(r, k, d, q, i) \
|
mas01cr@498
|
42 if(result_position(r, k, d, q, i) < 0) return 1;
|