/* * Copyright (C) 2014 Andreas Steffen * HSR Hochschule fuer Technik Rapperswil * * Optimum Huffman code for BLISS-X signatures * * This file has been automatically generated by the bliss_huffman utility * Do not edit manually! */ /* * Design: sigma = 271 * * i p_z1[i] * 0 0.6551621276225426 0 .. 256 * 1 0.2859860850630749 256 .. 512 * 2 0.0542541135599810 512 .. 768 * 3 0.0044399624814222 768 .. 1024 * 4 0.0001553928373912 1024 .. 1280 * 5 0.0000023066278552 1280 .. 1536 * 6 0.0000000118077330 1536 .. 1613 * * k p_z2[k] dx = 256 * -6 0.0000001026458579 -1663.5 ..-1407.5 * -5 0.0000106295703648 -1407.5 ..-1151.5 * -4 0.0004651193817805 -1151.5 .. -895.5 * -3 0.0086670703658387 -895.5 .. -639.5 * -2 0.0693723939195647 -639.5 .. -383.5 * -1 0.2404908493690626 -383.5 .. -127.5 * 0 0.3619876694950614 -127.5 .. 127.5 * 1 0.2404908493690626 127.5 .. 383.5 * 2 0.0693723939195647 383.5 .. 639.5 * 3 0.0086670703658387 639.5 .. 895.5 * 4 0.0004651193817805 895.5 .. 1151.5 * 5 0.0000106295703648 1151.5 .. 1407.5 * 6 0.0000001026458579 1407.5 .. 1663.5 * * (i, k) p * (0,-6) 0.0000000672496787 * (0,-5) 0.0000069640919359 * (0,-4) 0.0003047286037658 * (0,-3) 0.0056783362611372 * (0,-2) 0.0454501651986111 * (0,-1) 0.1575604965463875 * (0, 0) 0.2371606117195102 * (0, 1) 0.1575604965463875 * (0, 2) 0.0454501651986111 * (0, 3) 0.0056783362611372 * (0, 4) 0.0003047286037658 * (0, 5) 0.0000069640919359 * (0, 6) 0.0000000672496787 * * (1,-6) 0.0000000293552870 * (1,-5) 0.0000030399092145 * (1,-4) 0.0001330176710824 * (1,-3) 0.0024786615228924 * (1,-2) 0.0198395393485098 * (1,-1) 0.0687770365045519 * (1, 0) 0.1035234364399989 * (1, 1) 0.0687770365045519 * (1, 2) 0.0198395393485098 * (1, 3) 0.0024786615228924 * (1, 4) 0.0001330176710824 * (1, 5) 0.0000030399092145 * (1, 6) 0.0000000293552870 * * (2,-6) 0.0000000055689600 * (2,-5) 0.0000005766979177 * (2,-4) 0.0000252346397581 * (2,-3) 0.0004702242198606 * (2,-2) 0.0037637377376398 * (2,-1) 0.0130476178518054 * (2, 0) 0.0196393201280979 * (2, 1) 0.0130476178518054 * (2, 2) 0.0037637377376398 * (2, 3) 0.0004702242198606 * (2, 4) 0.0000252346397581 * (2, 5) 0.0000005766979177 * (2, 6) 0.0000000055689600 * * (3,-6) 0.0000000004557438 * (3,-5) 0.0000000471948936 * (3,-4) 0.0000020651126045 * (3,-3) 0.0000384814672482 * (3,-2) 0.0003080108262493 * (3,-1) 0.0010677703483240 * (3, 0) 0.0016072116712955 * (3, 1) 0.0010677703483240 * (3, 2) 0.0003080108262493 * (3, 3) 0.0000384814672482 * (3, 4) 0.0000020651126045 * (3, 5) 0.0000000471948936 * (3, 6) 0.0000000004557438 * * (4,-6) 0.0000000000159504 * (4,-5) 0.0000000016517591 * (4,-4) 0.0000000722762205 * (4,-3) 0.0000013468006560 * (4,-2) 0.0000107799731278 * (4,-1) 0.0000373705554501 * (4, 0) 0.0000562502910635 * (4, 1) 0.0000373705554501 * (4, 2) 0.0000107799731278 * (4, 3) 0.0000013468006560 * (4, 4) 0.0000000722762205 * (4, 5) 0.0000000016517591 * (4, 6) 0.0000000000159504 * * (5,-6) 0.0000000000002368 * (5,-5) 0.0000000000245185 * (5,-4) 0.0000000010728573 * (5,-3) 0.0000000199917059 * (5,-2) 0.0000001600162962 * (5,-1) 0.0000005547228921 * (5, 0) 0.0000008349708417 * (5, 1) 0.0000005547228921 * (5, 2) 0.0000001600162962 * (5, 3) 0.0000000199917059 * (5, 4) 0.0000000010728573 * (5, 5) 0.0000000000245185 * (5, 6) 0.0000000000002368 * * (6,-6) 0.0000000000000012 * (6,-5) 0.0000000000001255 * (6,-4) 0.0000000000054920 * (6,-3) 0.0000000001023385 * (6,-2) 0.0000000008191307 * (6,-1) 0.0000000028396517 * (6, 0) 0.0000000042742538 * (6, 1) 0.0000000028396517 * (6, 2) 0.0000000008191307 * (6, 3) 0.0000000001023385 * (6, 4) 0.0000000000054920 * (6, 5) 0.0000000000001255 * (6, 6) 0.0000000000000012 * * p_sum 1.0000000000000011 * * entropy = 3.3640 bits/tuple (1722 bits) */ #include "bliss_huffman_code.h" static bliss_huffman_code_node_t nodes[] = { { 1, 160, -1 }, /* 0: */ { 2, 5, -1 }, /* 1: */ { 3, 4, -1 }, /* 2: */ { -1, -1, 7 }, /* 3: (0, 1) 3 bits */ { -1, -1, 5 }, /* 4: (0,-1) 3 bits */ { 6, 157, -1 }, /* 5: */ { 7, 156, -1 }, /* 6: */ { 8, 11, -1 }, /* 7: */ { 9, 10, -1 }, /* 8: */ { -1, -1, 17 }, /* 9: (1,-2) 6 bits */ { -1, -1, 32 }, /* 10: (2, 0) 6 bits */ { 12, 155, -1 }, /* 11: */ { 13, 18, -1 }, /* 12: */ { 14, 15, -1 }, /* 13: */ { -1, -1, 3 }, /* 14: (0,-3) 8 bits */ { 16, 17, -1 }, /* 15: */ { -1, -1, 22 }, /* 16: (1, 3) 9 bits */ { -1, -1, 16 }, /* 17: (1,-3) 9 bits */ { 19, 154, -1 }, /* 18: */ { 20, 23, -1 }, /* 19: */ { 21, 22, -1 }, /* 20: */ { -1, -1, 46 }, /* 21: (3, 1) 10 bits */ { -1, -1, 44 }, /* 22: (3,-1) 10 bits */ { 24, 151, -1 }, /* 23: */ { 25, 88, -1 }, /* 24: */ { 26, 57, -1 }, /* 25: */ { 27, 42, -1 }, /* 26: */ { 28, 35, -1 }, /* 27: */ { 29, 32, -1 }, /* 28: */ { 30, 31, -1 }, /* 29: */ { -1, -1, 2 }, /* 30: (0,-4) 16 bits */ { -1, -1, 23 }, /* 31: (1, 4) 16 bits */ { 33, 34, -1 }, /* 32: */ { -1, -1, 15 }, /* 33: (1,-4) 16 bits */ { -1, -1, 58 }, /* 34: (4, 0) 16 bits */ { 36, 39, -1 }, /* 35: */ { 37, 38, -1 }, /* 36: */ { -1, -1, 48 }, /* 37: (3, 3) 16 bits */ { -1, -1, 42 }, /* 38: (3,-3) 16 bits */ { 40, 41, -1 }, /* 39: */ { -1, -1, 59 }, /* 40: (4, 1) 16 bits */ { -1, -1, 57 }, /* 41: (4,-1) 16 bits */ { 43, 50, -1 }, /* 42: */ { 44, 47, -1 }, /* 43: */ { 45, 46, -1 }, /* 44: */ { -1, -1, 36 }, /* 45: (2, 4) 16 bits */ { -1, -1, 28 }, /* 46: (2,-4) 16 bits */ { 48, 49, -1 }, /* 47: */ { -1, -1, 60 }, /* 48: (4, 2) 16 bits */ { -1, -1, 56 }, /* 49: (4,-2) 16 bits */ { 51, 54, -1 }, /* 50: */ { 52, 53, -1 }, /* 51: */ { -1, -1, 11 }, /* 52: (0, 5) 16 bits */ { -1, -1, 1 }, /* 53: (0,-5) 16 bits */ { 55, 56, -1 }, /* 54: */ { -1, -1, 24 }, /* 55: (1, 5) 16 bits */ { -1, -1, 14 }, /* 56: (1,-5) 16 bits */ { 58, 73, -1 }, /* 57: */ { 59, 66, -1 }, /* 58: */ { 60, 63, -1 }, /* 59: */ { 61, 62, -1 }, /* 60: */ { -1, -1, 49 }, /* 61: (3, 4) 16 bits */ { -1, -1, 41 }, /* 62: (3,-4) 16 bits */ { 64, 65, -1 }, /* 63: */ { -1, -1, 61 }, /* 64: (4, 3) 16 bits */ { -1, -1, 55 }, /* 65: (4,-3) 16 bits */ { 67, 70, -1 }, /* 66: */ { 68, 69, -1 }, /* 67: */ { -1, -1, 71 }, /* 68: (5, 0) 16 bits */ { -1, -1, 37 }, /* 69: (2, 5) 16 bits */ { 71, 72, -1 }, /* 70: */ { -1, -1, 27 }, /* 71: (2,-5) 16 bits */ { -1, -1, 72 }, /* 72: (5, 1) 16 bits */ { 74, 81, -1 }, /* 73: */ { 75, 78, -1 }, /* 74: */ { 76, 77, -1 }, /* 75: */ { -1, -1, 70 }, /* 76: (5,-1) 16 bits */ { -1, -1, 73 }, /* 77: (5, 2) 16 bits */ { 79, 80, -1 }, /* 78: */ { -1, -1, 69 }, /* 79: (5,-2) 16 bits */ { -1, -1, 62 }, /* 80: (4, 4) 16 bits */ { 82, 85, -1 }, /* 81: */ { 83, 84, -1 }, /* 82: */ { -1, -1, 54 }, /* 83: (4,-4) 16 bits */ { -1, -1, 12 }, /* 84: (0, 6) 16 bits */ { 86, 87, -1 }, /* 85: */ { -1, -1, 0 }, /* 86: (0,-6) 16 bits */ { -1, -1, 50 }, /* 87: (3, 5) 16 bits */ { 89, 120, -1 }, /* 88: */ { 90, 105, -1 }, /* 89: */ { 91, 98, -1 }, /* 90: */ { 92, 95, -1 }, /* 91: */ { 93, 94, -1 }, /* 92: */ { -1, -1, 40 }, /* 93: (3,-5) 16 bits */ { -1, -1, 25 }, /* 94: (1, 6) 16 bits */ { 96, 97, -1 }, /* 95: */ { -1, -1, 13 }, /* 96: (1,-6) 16 bits */ { -1, -1, 74 }, /* 97: (5, 3) 16 bits */ { 99, 102, -1 }, /* 98: */ { 100, 101, -1 }, /* 99: */ { -1, -1, 68 }, /* 100: (5,-3) 16 bits */ { -1, -1, 38 }, /* 101: (2, 6) 16 bits */ { 103, 104, -1 }, /* 102: */ { -1, -1, 26 }, /* 103: (2,-6) 16 bits */ { -1, -1, 84 }, /* 104: (6, 0) 16 bits */ { 106, 113, -1 }, /* 105: */ { 107, 110, -1 }, /* 106: */ { 108, 109, -1 }, /* 107: */ { -1, -1, 85 }, /* 108: (6, 1) 16 bits */ { -1, -1, 83 }, /* 109: (6,-1) 16 bits */ { 111, 112, -1 }, /* 110: */ { -1, -1, 63 }, /* 111: (4, 5) 16 bits */ { -1, -1, 53 }, /* 112: (4,-5) 16 bits */ { 114, 117, -1 }, /* 113: */ { 115, 116, -1 }, /* 114: */ { -1, -1, 75 }, /* 115: (5, 4) 16 bits */ { -1, -1, 67 }, /* 116: (5,-4) 16 bits */ { 118, 119, -1 }, /* 117: */ { -1, -1, 86 }, /* 118: (6, 2) 16 bits */ { -1, -1, 82 }, /* 119: (6,-2) 16 bits */ { 121, 136, -1 }, /* 120: */ { 122, 129, -1 }, /* 121: */ { 123, 126, -1 }, /* 122: */ { 124, 125, -1 }, /* 123: */ { -1, -1, 51 }, /* 124: (3, 6) 16 bits */ { -1, -1, 39 }, /* 125: (3,-6) 16 bits */ { 127, 128, -1 }, /* 126: */ { -1, -1, 87 }, /* 127: (6, 3) 16 bits */ { -1, -1, 81 }, /* 128: (6,-3) 16 bits */ { 130, 133, -1 }, /* 129: */ { 131, 132, -1 }, /* 130: */ { -1, -1, 76 }, /* 131: (5, 5) 16 bits */ { -1, -1, 66 }, /* 132: (5,-5) 16 bits */ { 134, 135, -1 }, /* 133: */ { -1, -1, 64 }, /* 134: (4, 6) 16 bits */ { -1, -1, 52 }, /* 135: (4,-6) 16 bits */ { 137, 144, -1 }, /* 136: */ { 138, 141, -1 }, /* 137: */ { 139, 140, -1 }, /* 138: */ { -1, -1, 88 }, /* 139: (6, 4) 16 bits */ { -1, -1, 80 }, /* 140: (6,-4) 16 bits */ { 142, 143, -1 }, /* 141: */ { -1, -1, 77 }, /* 142: (5, 6) 16 bits */ { -1, -1, 65 }, /* 143: (5,-6) 16 bits */ { 145, 148, -1 }, /* 144: */ { 146, 147, -1 }, /* 145: */ { -1, -1, 89 }, /* 146: (6, 5) 16 bits */ { -1, -1, 79 }, /* 147: (6,-5) 16 bits */ { 149, 150, -1 }, /* 148: */ { -1, -1, 90 }, /* 149: (6, 6) 16 bits */ { -1, -1, 78 }, /* 150: (6,-6) 16 bits */ { 152, 153, -1 }, /* 151: */ { -1, -1, 29 }, /* 152: (2,-3) 11 bits */ { -1, -1, 47 }, /* 153: (3, 2) 11 bits */ { -1, -1, 34 }, /* 154: (2, 2) 8 bits */ { -1, -1, 33 }, /* 155: (2, 1) 6 bits */ { -1, -1, 20 }, /* 156: (1, 1) 4 bits */ { 158, 159, -1 }, /* 157: */ { -1, -1, 18 }, /* 158: (1,-1) 4 bits */ { -1, -1, 8 }, /* 159: (0, 2) 4 bits */ { 161, 162, -1 }, /* 160: */ { -1, -1, 6 }, /* 161: (0, 0) 2 bits */ { 163, 164, -1 }, /* 162: */ { -1, -1, 19 }, /* 163: (1, 0) 3 bits */ { 165, 166, -1 }, /* 164: */ { -1, -1, 4 }, /* 165: (0,-2) 4 bits */ { 167, 180, -1 }, /* 166: */ { 168, 169, -1 }, /* 167: */ { -1, -1, 31 }, /* 168: (2,-1) 6 bits */ { 170, 179, -1 }, /* 169: */ { 171, 172, -1 }, /* 170: */ { -1, -1, 30 }, /* 171: (2,-2) 8 bits */ { 173, 174, -1 }, /* 172: */ { -1, -1, 45 }, /* 173: (3, 0) 9 bits */ { 175, 178, -1 }, /* 174: */ { 176, 177, -1 }, /* 175: */ { -1, -1, 43 }, /* 176: (3,-2) 11 bits */ { -1, -1, 10 }, /* 177: (0, 4) 11 bits */ { -1, -1, 35 }, /* 178: (2, 3) 10 bits */ { -1, -1, 9 }, /* 179: (0, 3) 7 bits */ { -1, -1, 21 }, /* 180: (1, 2) 5 bits */ }; static bliss_huffman_code_tuple_t tuples[] = { { 19102, 16 }, /* 0: (0,-6) 0100101010011110 */ { 19085, 16 }, /* 1: (0,-5) 0100101010001101 */ { 19072, 16 }, /* 2: (0,-4) 0100101010000000 */ { 72, 8 }, /* 3: (0,-3) 01001000 */ { 14, 4 }, /* 4: (0,-2) 1110 */ { 1, 3 }, /* 5: (0,-1) 001 */ { 2, 2 }, /* 6: (0, 0) 10 */ { 0, 3 }, /* 7: (0, 1) 000 */ { 7, 4 }, /* 8: (0, 2) 0111 */ { 123, 7 }, /* 9: (0, 3) 1111011 */ { 1965, 11 }, /* 10: (0, 4) 11110101101 */ { 19084, 16 }, /* 11: (0, 5) 0100101010001100 */ { 19101, 16 }, /* 12: (0, 6) 0100101010011101 */ { 19106, 16 }, /* 13: (1,-6) 0100101010100010 */ { 19087, 16 }, /* 14: (1,-5) 0100101010001111 */ { 19074, 16 }, /* 15: (1,-4) 0100101010000010 */ { 147, 9 }, /* 16: (1,-3) 010010011 */ { 16, 6 }, /* 17: (1,-2) 010000 */ { 6, 4 }, /* 18: (1,-1) 0110 */ { 6, 3 }, /* 19: (1, 0) 110 */ { 5, 4 }, /* 20: (1, 1) 0101 */ { 31, 5 }, /* 21: (1, 2) 11111 */ { 146, 9 }, /* 22: (1, 3) 010010010 */ { 19073, 16 }, /* 23: (1, 4) 0100101010000001 */ { 19086, 16 }, /* 24: (1, 5) 0100101010001110 */ { 19105, 16 }, /* 25: (1, 6) 0100101010100001 */ { 19110, 16 }, /* 26: (2,-6) 0100101010100110 */ { 19094, 16 }, /* 27: (2,-5) 0100101010010110 */ { 19081, 16 }, /* 28: (2,-4) 0100101010001001 */ { 598, 11 }, /* 29: (2,-3) 01001010110 */ { 244, 8 }, /* 30: (2,-2) 11110100 */ { 60, 6 }, /* 31: (2,-1) 111100 */ { 17, 6 }, /* 32: (2, 0) 010001 */ { 19, 6 }, /* 33: (2, 1) 010011 */ { 75, 8 }, /* 34: (2, 2) 01001011 */ { 983, 10 }, /* 35: (2, 3) 1111010111 */ { 19080, 16 }, /* 36: (2, 4) 0100101010001000 */ { 19093, 16 }, /* 37: (2, 5) 0100101010010101 */ { 19109, 16 }, /* 38: (2, 6) 0100101010100101 */ { 19121, 16 }, /* 39: (3,-6) 0100101010110001 */ { 19104, 16 }, /* 40: (3,-5) 0100101010100000 */ { 19089, 16 }, /* 41: (3,-4) 0100101010010001 */ { 19077, 16 }, /* 42: (3,-3) 0100101010000101 */ { 1964, 11 }, /* 43: (3,-2) 11110101100 */ { 297, 10 }, /* 44: (3,-1) 0100101001 */ { 490, 9 }, /* 45: (3, 0) 111101010 */ { 296, 10 }, /* 46: (3, 1) 0100101000 */ { 599, 11 }, /* 47: (3, 2) 01001010111 */ { 19076, 16 }, /* 48: (3, 3) 0100101010000100 */ { 19088, 16 }, /* 49: (3, 4) 0100101010010000 */ { 19103, 16 }, /* 50: (3, 5) 0100101010011111 */ { 19120, 16 }, /* 51: (3, 6) 0100101010110000 */ { 19127, 16 }, /* 52: (4,-6) 0100101010110111 */ { 19115, 16 }, /* 53: (4,-5) 0100101010101011 */ { 19100, 16 }, /* 54: (4,-4) 0100101010011100 */ { 19091, 16 }, /* 55: (4,-3) 0100101010010011 */ { 19083, 16 }, /* 56: (4,-2) 0100101010001011 */ { 19079, 16 }, /* 57: (4,-1) 0100101010000111 */ { 19075, 16 }, /* 58: (4, 0) 0100101010000011 */ { 19078, 16 }, /* 59: (4, 1) 0100101010000110 */ { 19082, 16 }, /* 60: (4, 2) 0100101010001010 */ { 19090, 16 }, /* 61: (4, 3) 0100101010010010 */ { 19099, 16 }, /* 62: (4, 4) 0100101010011011 */ { 19114, 16 }, /* 63: (4, 5) 0100101010101010 */ { 19126, 16 }, /* 64: (4, 6) 0100101010110110 */ { 19131, 16 }, /* 65: (5,-6) 0100101010111011 */ { 19125, 16 }, /* 66: (5,-5) 0100101010110101 */ { 19117, 16 }, /* 67: (5,-4) 0100101010101101 */ { 19108, 16 }, /* 68: (5,-3) 0100101010100100 */ { 19098, 16 }, /* 69: (5,-2) 0100101010011010 */ { 19096, 16 }, /* 70: (5,-1) 0100101010011000 */ { 19092, 16 }, /* 71: (5, 0) 0100101010010100 */ { 19095, 16 }, /* 72: (5, 1) 0100101010010111 */ { 19097, 16 }, /* 73: (5, 2) 0100101010011001 */ { 19107, 16 }, /* 74: (5, 3) 0100101010100011 */ { 19116, 16 }, /* 75: (5, 4) 0100101010101100 */ { 19124, 16 }, /* 76: (5, 5) 0100101010110100 */ { 19130, 16 }, /* 77: (5, 6) 0100101010111010 */ { 19135, 16 }, /* 78: (6,-6) 0100101010111111 */ { 19133, 16 }, /* 79: (6,-5) 0100101010111101 */ { 19129, 16 }, /* 80: (6,-4) 0100101010111001 */ { 19123, 16 }, /* 81: (6,-3) 0100101010110011 */ { 19119, 16 }, /* 82: (6,-2) 0100101010101111 */ { 19113, 16 }, /* 83: (6,-1) 0100101010101001 */ { 19111, 16 }, /* 84: (6, 0) 0100101010100111 */ { 19112, 16 }, /* 85: (6, 1) 0100101010101000 */ { 19118, 16 }, /* 86: (6, 2) 0100101010101110 */ { 19122, 16 }, /* 87: (6, 3) 0100101010110010 */ { 19128, 16 }, /* 88: (6, 4) 0100101010111000 */ { 19132, 16 }, /* 89: (6, 5) 0100101010111100 */ { 19134, 16 }, /* 90: (6, 6) 0100101010111110 */ }; /* code_length = 3.3967 bits/tuple (1740 bits) */ bliss_huffman_code_t bliss_huffman_code_4 = { .n_z1 = 7, .n_z2 = 7, .tuples = tuples, .nodes = nodes };