9
#define ITERATIONS 5000
11
#define PROPERTIES 2048
20
//#define SINGLE_MODE 1
21
typedef uint32_t *uint32_p;
23
int ptr_compare(void *a, void *b) {
24
return **(uint32_t**)b - **(uint32_t**)a;
29
MRSESDataType a[SAMPLES1 * PROPERTIES];
30
MRSESDataType b[SAMPLES2 * PROPERTIES];
32
MRSESDataType a_mean[PROPERTIES];
33
MRSESDataType b_mean[PROPERTIES];
36
MRSESIntType tests[TESTS * WIDTH];
37
MRSESDataType results[TESTS];
39
uint32_t hist[PROPERTIES];
40
uint32_p sort[PROPERTIES];
42
#endif /* SINGLE_MODE */
49
for (i = 0; i < PROPERTIES; i++) {
50
if ((i>3)&&(i<13)&&((i%2)==0)) max_mode = 1;
54
for (j = 0; j < SAMPLES1; j++) {
57
else val = ((MRSESDataType)random()) / RAND_MAX;
60
if ((i == 6)||(i == 8)) val = 9;
64
val = ((MRSESDataType)random()) / RAND_MAX;
65
if (max_mode) val += 9;
68
a [ i * SAMPLES1 + j ] = val;
71
a_mean[i] /= SAMPLES1;
74
for (j = 0; j < SAMPLES2; j++) {
75
val = ((MRSESDataType)random()) / RAND_MAX;
76
b [ i * SAMPLES2 + j ] = val;
79
b_mean[i] /= SAMPLES2;
83
ctx = mrses_create_context();
84
mrses_init_context(ctx, PROPERTIES, SAMPLES1, a, SAMPLES2, b);
85
mrses_set_distance_mode(ctx, 0);
86
mrses_prepare(ctx, WIDTH, TESTS);
89
assert((TESTS + WIDTH) < PROPERTIES);
91
for (i = 1 ; i < TESTS ; i ++ ) {
92
for (j = 0; j < WIDTH ; j ++) {
93
tests[i * WIDTH + j] = i + j;
97
assert((4 + 2 * WIDTH) < PROPERTIES);
99
for (j = 0; j < WIDTH ; j ++) {
100
tests[j] = 4 + j * 2;
103
for (i = 0; i < ITERATIONS; i++) {
104
mrses_compute(ctx, TESTS, tests, results);
106
//mrses_compute(ctx, 1, tests, results);
107
#else /* SINGLE_MODE */
108
mrses_iterate(ctx, ITERATIONS, TESTS, NULL);
110
mrses_get_results(ctx, hist);
112
for (i = 0, sum = 0; i < PROPERTIES; i++) {
118
for (i = 4; i < 13; i+=2) {
119
printf("%i - %i\n", i+1, hist[i]);
122
qsort(sort, PROPERTIES, sizeof(uint32_t*), (int (*)(const void*,const void*))ptr_compare);
124
for (i = 0; i < WIDTH; i++) {
126
printf("%6i ", j + 1);
129
for (i = 0; i < WIDTH; i++) {
130
printf("%6.2f%% ", 100*WIDTH*(*sort[i])/sum);
133
#endif /* SINGLE_MODE */
135
mrses_destroy_context(ctx);