… | |
… | |
32 | } |
32 | } |
33 | |
33 | |
34 | return dist; |
34 | return dist; |
35 | } |
35 | } |
36 | |
36 | |
|
|
37 | |
|
|
38 | Object::Object(double *pkey) |
|
|
39 | { |
|
|
40 | k = pkey; |
|
|
41 | |
|
|
42 | // discretize the vector |
|
|
43 | for (int i = NDIMS; i--; ) |
|
|
44 | k[i] = int2double (double2int (k[i])); |
|
|
45 | } |
|
|
46 | |
37 | Object::Object(char *key) |
47 | Object::Object(char *key) |
38 | { |
48 | { |
39 | unsigned char *c = (unsigned char *)key; |
49 | unsigned char *c = (unsigned char *)key; |
40 | |
50 | |
41 | k = new double [NDIMS]; |
51 | k = new double [NDIMS]; |
… | |
… | |
53 | break; |
63 | break; |
54 | default: |
64 | default: |
55 | abort (); |
65 | abort (); |
56 | } |
66 | } |
57 | |
67 | |
58 | k[i] = ((double)elem) * ACC->max / ACC->steps + ACC->min; |
68 | k[i] = int2double(elem); |
59 | } |
69 | } |
60 | } |
70 | } |
61 | |
71 | |
62 | void Object::Compress(char *key) |
72 | void Object::Compress(char *key) |
63 | { |
73 | { |
64 | unsigned char *c = (unsigned char *)key; |
74 | unsigned char *c = (unsigned char *)key; |
65 | |
75 | |
66 | for (int i = 0; i < NDIMS; i++) |
76 | for (int i = 0; i < NDIMS; i++) |
67 | { |
77 | { |
68 | unsigned long elem = (unsigned long)floor ((k[i] - ACC->min) * ACC->steps / ACC->max); |
78 | unsigned long elem = double2int (k[i]); |
69 | |
79 | |
70 | switch (ACC->elemsize) |
80 | switch (ACC->elemsize) |
71 | { |
81 | { |
72 | case 4: *c++ = (elem >> 24) & 0xff; |
82 | case 4: *c++ = (elem >> 24) & 0xff; |
73 | case 3: *c++ = (elem >> 16) & 0xff; |
83 | case 3: *c++ = (elem >> 16) & 0xff; |