diff options
Diffstat (limited to 'test/112_gendata_h48short')
| -rw-r--r-- | test/112_gendata_h48short/00_depth_1.in | 28 | ||||
| -rw-r--r-- | test/112_gendata_h48short/00_depth_1.out | 3 | ||||
| -rw-r--r-- | test/112_gendata_h48short/01_depth_3.in | 3 | ||||
| -rw-r--r-- | test/112_gendata_h48short/01_depth_3.out | 40 | ||||
| -rw-r--r-- | test/112_gendata_h48short/gendata_h48short_tests.c | 88 |
5 files changed, 162 insertions, 0 deletions
diff --git a/test/112_gendata_h48short/00_depth_1.in b/test/112_gendata_h48short/00_depth_1.in new file mode 100644 index 0000000..c86f15b --- /dev/null +++ b/test/112_gendata_h48short/00_depth_1.in | |||
| @@ -0,0 +1,28 @@ | |||
| 1 | 73 | ||
| 2 | 157 | ||
| 3 | 1 | ||
| 4 | |||
| 5 | For longer test: | ||
| 6 | |||
| 7 | 20000003 | ||
| 8 | 20000023 | ||
| 9 | 8 | ||
| 10 | |||
| 11 | Short h48: generating depth 0 | ||
| 12 | found 1 | ||
| 13 | Short h48: generating depth 1 | ||
| 14 | found 1 | ||
| 15 | Short h48: generating depth 2 | ||
| 16 | found 4 | ||
| 17 | Short h48: generating depth 3 | ||
| 18 | found 34 | ||
| 19 | Short h48: generating depth 4 | ||
| 20 | found 333 | ||
| 21 | Short h48: generating depth 5 | ||
| 22 | found 3815 | ||
| 23 | Short h48: generating depth 6 | ||
| 24 | found 45382 | ||
| 25 | Short h48: generating depth 7 | ||
| 26 | found 548562 | ||
| 27 | Short h48: generating depth 8 | ||
| 28 | found 6839723 | ||
diff --git a/test/112_gendata_h48short/00_depth_1.out b/test/112_gendata_h48short/00_depth_1.out new file mode 100644 index 0000000..b0dba31 --- /dev/null +++ b/test/112_gendata_h48short/00_depth_1.out | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | 2 | ||
| 2 | 0 0 | ||
| 3 | 71075840 1 | ||
diff --git a/test/112_gendata_h48short/01_depth_3.in b/test/112_gendata_h48short/01_depth_3.in new file mode 100644 index 0000000..920e70a --- /dev/null +++ b/test/112_gendata_h48short/01_depth_3.in | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | 73 | ||
| 2 | 157 | ||
| 3 | 3 | ||
diff --git a/test/112_gendata_h48short/01_depth_3.out b/test/112_gendata_h48short/01_depth_3.out new file mode 100644 index 0000000..dbce376 --- /dev/null +++ b/test/112_gendata_h48short/01_depth_3.out | |||
| @@ -0,0 +1,40 @@ | |||
| 1 | 40 | ||
| 2 | 0 0 | ||
| 3 | 70981632 3 | ||
| 4 | 71075840 1 | ||
| 5 | 71086080 3 | ||
| 6 | 142067712 2 | ||
| 7 | 218789888 3 | ||
| 8 | 218884096 2 | ||
| 9 | 283879424 2 | ||
| 10 | 283899904 3 | ||
| 11 | 283953152 3 | ||
| 12 | 283973632 2 | ||
| 13 | 360548808 3 | ||
| 14 | 360835072 3 | ||
| 15 | 473668032 3 | ||
| 16 | 473956352 3 | ||
| 17 | 499869696 3 | ||
| 18 | 500011008 3 | ||
| 19 | 598679552 3 | ||
| 20 | 599109185 3 | ||
| 21 | 662171648 3 | ||
| 22 | 662601226 3 | ||
| 23 | 724818316 3 | ||
| 24 | 725106688 3 | ||
| 25 | 790513664 3 | ||
| 26 | 790607872 3 | ||
| 27 | 904991108 3 | ||
| 28 | 926726144 3 | ||
| 29 | 928729088 3 | ||
| 30 | 1009662340 3 | ||
| 31 | 1088755203 3 | ||
| 32 | 1171758595 3 | ||
| 33 | 1206452224 3 | ||
| 34 | 1206480896 3 | ||
| 35 | 1277360128 3 | ||
| 36 | 1277454336 3 | ||
| 37 | 1403695492 3 | ||
| 38 | 1403697540 3 | ||
| 39 | 1403736452 3 | ||
| 40 | 1403738500 3 | ||
diff --git a/test/112_gendata_h48short/gendata_h48short_tests.c b/test/112_gendata_h48short/gendata_h48short_tests.c new file mode 100644 index 0000000..fb432d3 --- /dev/null +++ b/test/112_gendata_h48short/gendata_h48short_tests.c | |||
| @@ -0,0 +1,88 @@ | |||
| 1 | #include "../test.h" | ||
| 2 | |||
| 3 | #define COCSEP_CLASSES 3393 | ||
| 4 | #define INFOSIZE 512 | ||
| 5 | #define MAXPOS 200 | ||
| 6 | |||
| 7 | typedef struct { | ||
| 8 | uint64_t n; | ||
| 9 | uint64_t capacity; | ||
| 10 | uint64_t randomizer; | ||
| 11 | uint64_t *table; | ||
| 12 | uint32_t *info; | ||
| 13 | uint32_t *cocsepdata; | ||
| 14 | uint32_t *h48data; | ||
| 15 | uint64_t selfsim[COCSEP_CLASSES]; | ||
| 16 | cube_t crep[COCSEP_CLASSES]; | ||
| 17 | } h48map_t; | ||
| 18 | |||
| 19 | typedef struct { | ||
| 20 | uint64_t key; | ||
| 21 | uint64_t val; | ||
| 22 | } kvpair_t; | ||
| 23 | |||
| 24 | typedef struct { | ||
| 25 | uint8_t maxdepth; | ||
| 26 | const uint32_t *cocsepdata; | ||
| 27 | const cube_t *crep; | ||
| 28 | const uint64_t *selfsim; | ||
| 29 | h48map_t *map; | ||
| 30 | } gendata_h48short_arg_t; | ||
| 31 | |||
| 32 | void h48map_create(h48map_t *, uint64_t, uint64_t); | ||
| 33 | void h48map_destroy(h48map_t *); | ||
| 34 | kvpair_t h48map_nextkvpair(h48map_t *, uint64_t *); | ||
| 35 | size_t gendata_cocsep(void *, uint64_t *, cube_t *); | ||
| 36 | uint64_t gendata_h48short(gendata_h48short_arg_t *); | ||
| 37 | |||
| 38 | char str[STRLENMAX]; | ||
| 39 | |||
| 40 | int compare(const void *x, const void *y) { | ||
| 41 | uint64_t a = ((kvpair_t *)x)->key; | ||
| 42 | uint64_t b = ((kvpair_t *)y)->key; | ||
| 43 | |||
| 44 | if (a > b) return 1; | ||
| 45 | if (a == b) return 0; | ||
| 46 | return -1; | ||
| 47 | } | ||
| 48 | |||
| 49 | uint64_t readl(void) { | ||
| 50 | fgets(str, STRLENMAX, stdin); | ||
| 51 | return atoll(str); | ||
| 52 | } | ||
| 53 | |||
| 54 | void run(void) { | ||
| 55 | char buf[2000000]; | ||
| 56 | h48map_t map; | ||
| 57 | uint64_t i, j, capacity, randomizer, selfsim[COCSEP_CLASSES]; | ||
| 58 | kvpair_t kv, b[MAXPOS]; | ||
| 59 | gendata_h48short_arg_t arg; | ||
| 60 | cube_t crep[COCSEP_CLASSES]; | ||
| 61 | |||
| 62 | capacity = readl(); | ||
| 63 | randomizer = readl(); | ||
| 64 | arg.maxdepth = readl(); | ||
| 65 | arg.crep = crep; | ||
| 66 | arg.selfsim = selfsim; | ||
| 67 | arg.map = ↦ | ||
| 68 | |||
| 69 | h48map_create(&map, capacity, randomizer); | ||
| 70 | gendata_cocsep(buf, selfsim, crep); | ||
| 71 | arg.cocsepdata = (uint32_t *)((char *)buf + INFOSIZE); | ||
| 72 | gendata_h48short(&arg); | ||
| 73 | |||
| 74 | i = 0; | ||
| 75 | for (kv = h48map_nextkvpair(&map, &i), j = 0; | ||
| 76 | i != map.capacity && j < MAXPOS; | ||
| 77 | kv = h48map_nextkvpair(&map, &i) | ||
| 78 | ) { | ||
| 79 | b[j++] = kv; | ||
| 80 | } | ||
| 81 | qsort(b, j, sizeof(kvpair_t), compare); | ||
| 82 | |||
| 83 | printf("%" PRIu64 "\n", map.n); | ||
| 84 | for (i = 0; i < j; i++) | ||
| 85 | printf("%" PRIu64 " %" PRIu64 "\n", b[i].key, b[i].val); | ||
| 86 | |||
| 87 | h48map_destroy(&map); | ||
| 88 | } | ||
