Huffman Codes for BLISS Signatures¶
- All Huffman codes were generated automatically using the bliss_huffman utility.
BLISS-I Signature Encoding¶
Design Parameters
/*
* Design: sigma = 215
*
* i p_z1[i]
* 0 0.7662277087816564 0 .. 256
* 1 0.2165251006508514 256 .. 512
* 2 0.0168930510015114 512 .. 768
* 3 0.0003522302274478 768 .. 1024
* 4 0.0000019067136680 1024 .. 1280
* 5 0.0000000026239598 1280 .. 1536
* 6 0.0000000000009052 1536 .. 1792
* 7 0.0000000000000001 1792 .. 2047
*
* k p_z2[k] dx = 1024
* -1 0.0086781953089156 -1535.5 .. -511.5
* 0 0.9826436093821688 -511.5 .. 511.5
* 1 0.0086781953089156 511.5 .. 1535.5
*
* (i, k) p
* (0,-1) 0.0066494737079101
* (0, 0) 0.7529287613658361
* (0, 1) 0.0066494737079101
*
* (1,-1) 0.0018790471127307
* (1, 0) 0.2127670064253900
* (1, 1) 0.0018790471127307
*
* (2,-1) 0.0001466011959546
* (2, 0) 0.0165998486096022
* (2, 1) 0.0001466011959546
*
* (3,-1) 0.0000030567227075
* (3, 0) 0.0003461167820328
* (3, 1) 0.0000030567227075
*
* (4,-1) 0.0000000165468336
* (4, 0) 0.0000018736200007
* (4, 1) 0.0000000165468336
*
* (5,-1) 0.0000000000227712
* (5, 0) 0.0000000025784174
* (5, 1) 0.0000000000227712
*
* (6,-1) 0.0000000000000079
* (6, 0) 0.0000000000008895
* (6, 1) 0.0000000000000079
*
* (7,-1) 0.0000000000000000
* (7, 0) 0.0000000000000001
* (7, 1) 0.0000000000000000
*
* p_sum 0.9999999999999998
*
* entropy = 1.0195 bits/tuple (521 bits)
*/
Decoding Tree
#include "bliss_huffman_code.h"
static bliss_huffman_code_node_t nodes[] = {
{ 1, 2, -1 }, /* 0: */
{ -1, -1, 1 }, /* 1: (0, 0) 1 bit */
{ 3, 4, -1 }, /* 2: */
{ -1, -1, 4 }, /* 3: (1, 0) 2 bits */
{ 5, 46, -1 }, /* 4: */
{ 6, 45, -1 }, /* 5: */
{ 7, 8, -1 }, /* 6: */
{ -1, -1, 0 }, /* 7: (0,-1) 5 bits */
{ 9, 44, -1 }, /* 8: */
{ 10, 11, -1 }, /* 9: */
{ -1, -1, 3 }, /* 10: (1,-1) 7 bits */
{ 12, 13, -1 }, /* 11: */
{ -1, -1, 10 }, /* 12: (3, 0) 8 bits */
{ 14, 29, -1 }, /* 13: */
{ 15, 22, -1 }, /* 14: */
{ 16, 19, -1 }, /* 15: */
{ 17, 18, -1 }, /* 16: */
{ -1, -1, 8 }, /* 17: (2, 1) 12 bits */
{ -1, -1, 6 }, /* 18: (2,-1) 12 bits */
{ 20, 21, -1 }, /* 19: */
{ -1, -1, 11 }, /* 20: (3, 1) 12 bits */
{ -1, -1, 9 }, /* 21: (3,-1) 12 bits */
{ 23, 26, -1 }, /* 22: */
{ 24, 25, -1 }, /* 23: */
{ -1, -1, 13 }, /* 24: (4, 0) 12 bits */
{ -1, -1, 14 }, /* 25: (4, 1) 12 bits */
{ 27, 28, -1 }, /* 26: */
{ -1, -1, 12 }, /* 27: (4,-1) 12 bits */
{ -1, -1, 16 }, /* 28: (5, 0) 12 bits */
{ 30, 37, -1 }, /* 29: */
{ 31, 34, -1 }, /* 30: */
{ 32, 33, -1 }, /* 31: */
{ -1, -1, 17 }, /* 32: (5, 1) 12 bits */
{ -1, -1, 15 }, /* 33: (5,-1) 12 bits */
{ 35, 36, -1 }, /* 34: */
{ -1, -1, 19 }, /* 35: (6, 0) 12 bits */
{ -1, -1, 20 }, /* 36: (6, 1) 12 bits */
{ 38, 41, -1 }, /* 37: */
{ 39, 40, -1 }, /* 38: */
{ -1, -1, 18 }, /* 39: (6,-1) 12 bits */
{ -1, -1, 22 }, /* 40: (7, 0) 12 bits */
{ 42, 43, -1 }, /* 41: */
{ -1, -1, 23 }, /* 42: (7, 1) 12 bits */
{ -1, -1, 21 }, /* 43: (7,-1) 12 bits */
{ -1, -1, 5 }, /* 44: (1, 1) 6 bits */
{ -1, -1, 2 }, /* 45: (0, 1) 4 bits */
{ -1, -1, 7 }, /* 46: (2, 0) 3 bits */
};
Encoding Table
static bliss_huffman_code_tuple_t tuples[] = {
{ 24, 5 }, /* 0: (0,-1) 11000 */
{ 0, 1 }, /* 1: (0, 0) 0 */
{ 13, 4 }, /* 2: (0, 1) 1101 */
{ 100, 7 }, /* 3: (1,-1) 1100100 */
{ 2, 2 }, /* 4: (1, 0) 10 */
{ 51, 6 }, /* 5: (1, 1) 110011 */
{ 3249, 12 }, /* 6: (2,-1) 110010110001 */
{ 7, 3 }, /* 7: (2, 0) 111 */
{ 3248, 12 }, /* 8: (2, 1) 110010110000 */
{ 3251, 12 }, /* 9: (3,-1) 110010110011 */
{ 202, 8 }, /* 10: (3, 0) 11001010 */
{ 3250, 12 }, /* 11: (3, 1) 110010110010 */
{ 3254, 12 }, /* 12: (4,-1) 110010110110 */
{ 3252, 12 }, /* 13: (4, 0) 110010110100 */
{ 3253, 12 }, /* 14: (4, 1) 110010110101 */
{ 3257, 12 }, /* 15: (5,-1) 110010111001 */
{ 3255, 12 }, /* 16: (5, 0) 110010110111 */
{ 3256, 12 }, /* 17: (5, 1) 110010111000 */
{ 3260, 12 }, /* 18: (6,-1) 110010111100 */
{ 3258, 12 }, /* 19: (6, 0) 110010111010 */
{ 3259, 12 }, /* 20: (6, 1) 110010111011 */
{ 3263, 12 }, /* 21: (7,-1) 110010111111 */
{ 3261, 12 }, /* 22: (7, 0) 110010111101 */
{ 3262, 12 }, /* 23: (7, 1) 110010111110 */
};
/* code_length = 1.3189 bits/tuple (676 bits) */
Parameter Set
bliss_huffman_code_t bliss_huffman_code_1 = {
.n_z1 = 8,
.n_z2 = 2,
.tuples = tuples,
.nodes = nodes
};
BLISS-III Signature Encoding¶
Design Parameters
/*
* Design: sigma = 250
*
* i p_z1[i]
* 0 0.6941647250930416 0 .. 256
* 1 0.2652752755116807 256 .. 512
* 2 0.0384337021454129 512 .. 768
* 3 0.0020842622589255 768 .. 1024
* 4 0.0000417294572050 1024 .. 1280
* 5 0.0000003047309681 1280 .. 1536
* 6 0.0000000008027661 1536 .. 1760
*
* k p_z2[k] dx = 512
* -3 0.0000001543959154 -1791.5 ..-1279.5
* -2 0.0010701394583782 -1279.5 .. -767.5
* -1 0.1523201563502276 -767.5 .. -255.5
* 0 0.6932190995909575 -255.5 .. 255.5
* 1 0.1523201563502276 255.5 .. 767.5
* 2 0.0010701394583782 767.5 .. 1279.5
* 3 0.0000001543959154 1279.5 .. 1791.5
*
* (i, k) p
* (0,-3) 0.0000001071761982
* (0,-2) 0.0007428530629363
* (0,-1) 0.1057352794589848
* (0, 0) 0.4812082456968029
* (0, 1) 0.1057352794589848
* (0, 2) 0.0007428530629363
* (0, 3) 0.0000001071761982
*
* (1,-3) 0.0000000409574190
* (1,-2) 0.0002838815396572
* (1,-1) 0.0404067714417889
* (1, 0) 0.1838938876339505
* (1, 1) 0.0404067714417889
* (1, 2) 0.0002838815396572
* (1, 3) 0.0000000409574190
*
* (2,-3) 0.0000000059340066
* (2,-2) 0.0000411294211974
* (2,-1) 0.0058542275199074
* (2, 0) 0.0266429763951902
* (2, 1) 0.0058542275199074
* (2, 2) 0.0000411294211974
* (2, 3) 0.0000000059340066
*
* (3,-3) 0.0000000003218016
* (3,-2) 0.0000022304512849
* (3,-1) 0.0003174751531544
* (3, 0) 0.0014448504064437
* (3, 1) 0.0003174751531544
* (3, 2) 0.0000022304512849
* (3, 3) 0.0000000003218016
*
* (4,-3) 0.0000000000064429
* (4,-2) 0.0000000446563387
* (4,-1) 0.0000063562374459
* (4, 0) 0.0000289276567501
* (4, 1) 0.0000063562374459
* (4, 2) 0.0000000446563387
* (4, 3) 0.0000000000064429
*
* (5,-3) 0.0000000000000470
* (5,-2) 0.0000000003261046
* (5,-1) 0.0000000464166687
* (5, 0) 0.0000002112453273
* (5, 1) 0.0000000464166687
* (5, 2) 0.0000000003261046
* (5, 3) 0.0000000000000470
*
* (6,-3) 0.0000000000000001
* (6,-2) 0.0000000000008591
* (6,-1) 0.0000000001222775
* (6, 0) 0.0000000005564928
* (6, 1) 0.0000000001222775
* (6, 2) 0.0000000000008591
* (6, 3) 0.0000000000000001
*
* p_sum 0.9999999999999999
*
* entropy = 2.2879 bits/tuple (1171 bits)
*/
Decoding Tree
#include "bliss_huffman_code.h"
static bliss_huffman_code_node_t nodes[] = {
{ 1, 96, -1 }, /* 0: */
{ 2, 93, -1 }, /* 1: */
{ 3, 4, -1 }, /* 2: */
{ -1, -1, 10 }, /* 3: (1, 0) 3 bits */
{ 5, 8, -1 }, /* 4: */
{ 6, 7, -1 }, /* 5: */
{ -1, -1, 11 }, /* 6: (1, 1) 5 bits */
{ -1, -1, 9 }, /* 7: (1,-1) 5 bits */
{ 9, 10, -1 }, /* 8: */
{ -1, -1, 17 }, /* 9: (2, 0) 5 bits */
{ 11, 92, -1 }, /* 10: */
{ 12, 13, -1 }, /* 11: */
{ -1, -1, 16 }, /* 12: (2,-1) 7 bits */
{ 14, 89, -1 }, /* 13: */
{ 15, 16, -1 }, /* 14: */
{ -1, -1, 24 }, /* 15: (3, 0) 9 bits */
{ 17, 86, -1 }, /* 16: */
{ 18, 85, -1 }, /* 17: */
{ 19, 20, -1 }, /* 18: */
{ -1, -1, 8 }, /* 19: (1,-2) 12 bits */
{ 21, 84, -1 }, /* 20: */
{ 22, 53, -1 }, /* 21: */
{ 23, 38, -1 }, /* 22: */
{ 24, 31, -1 }, /* 23: */
{ 25, 28, -1 }, /* 24: */
{ 26, 27, -1 }, /* 25: */
{ -1, -1, 15 }, /* 26: (2,-2) 18 bits */
{ -1, -1, 31 }, /* 27: (4, 0) 18 bits */
{ 29, 30, -1 }, /* 28: */
{ -1, -1, 32 }, /* 29: (4, 1) 18 bits */
{ -1, -1, 30 }, /* 30: (4,-1) 18 bits */
{ 32, 35, -1 }, /* 31: */
{ 33, 34, -1 }, /* 32: */
{ -1, -1, 26 }, /* 33: (3, 2) 18 bits */
{ -1, -1, 22 }, /* 34: (3,-2) 18 bits */
{ 36, 37, -1 }, /* 35: */
{ -1, -1, 38 }, /* 36: (5, 0) 18 bits */
{ -1, -1, 6 }, /* 37: (0, 3) 18 bits */
{ 39, 46, -1 }, /* 38: */
{ 40, 43, -1 }, /* 39: */
{ 41, 42, -1 }, /* 40: */
{ -1, -1, 0 }, /* 41: (0,-3) 18 bits */
{ -1, -1, 39 }, /* 42: (5, 1) 18 bits */
{ 44, 45, -1 }, /* 43: */
{ -1, -1, 37 }, /* 44: (5,-1) 18 bits */
{ -1, -1, 33 }, /* 45: (4, 2) 18 bits */
{ 47, 50, -1 }, /* 46: */
{ 48, 49, -1 }, /* 47: */
{ -1, -1, 29 }, /* 48: (4,-2) 18 bits */
{ -1, -1, 13 }, /* 49: (1, 3) 18 bits */
{ 51, 52, -1 }, /* 50: */
{ -1, -1, 7 }, /* 51: (1,-3) 18 bits */
{ -1, -1, 20 }, /* 52: (2, 3) 18 bits */
{ 54, 69, -1 }, /* 53: */
{ 55, 62, -1 }, /* 54: */
{ 56, 59, -1 }, /* 55: */
{ 57, 58, -1 }, /* 56: */
{ -1, -1, 14 }, /* 57: (2,-3) 18 bits */
{ -1, -1, 45 }, /* 58: (6, 0) 18 bits */
{ 60, 61, -1 }, /* 59: */
{ -1, -1, 40 }, /* 60: (5, 2) 18 bits */
{ -1, -1, 36 }, /* 61: (5,-2) 18 bits */
{ 63, 66, -1 }, /* 62: */
{ 64, 65, -1 }, /* 63: */
{ -1, -1, 27 }, /* 64: (3, 3) 18 bits */
{ -1, -1, 21 }, /* 65: (3,-3) 18 bits */
{ 67, 68, -1 }, /* 66: */
{ -1, -1, 46 }, /* 67: (6, 1) 18 bits */
{ -1, -1, 44 }, /* 68: (6,-1) 18 bits */
{ 70, 77, -1 }, /* 69: */
{ 71, 74, -1 }, /* 70: */
{ 72, 73, -1 }, /* 71: */
{ -1, -1, 34 }, /* 72: (4, 3) 18 bits */
{ -1, -1, 28 }, /* 73: (4,-3) 18 bits */
{ 75, 76, -1 }, /* 74: */
{ -1, -1, 47 }, /* 75: (6, 2) 18 bits */
{ -1, -1, 43 }, /* 76: (6,-2) 18 bits */
{ 78, 81, -1 }, /* 77: */
{ 79, 80, -1 }, /* 78: */
{ -1, -1, 41 }, /* 79: (5, 3) 18 bits */
{ -1, -1, 35 }, /* 80: (5,-3) 18 bits */
{ 82, 83, -1 }, /* 81: */
{ -1, -1, 48 }, /* 82: (6, 3) 18 bits */
{ -1, -1, 42 }, /* 83: (6,-3) 18 bits */
{ -1, -1, 19 }, /* 84: (2, 2) 13 bits */
{ -1, -1, 25 }, /* 85: (3, 1) 11 bits */
{ 87, 88, -1 }, /* 86: */
{ -1, -1, 23 }, /* 87: (3,-1) 11 bits */
{ -1, -1, 12 }, /* 88: (1, 2) 11 bits */
{ 90, 91, -1 }, /* 89: */
{ -1, -1, 5 }, /* 90: (0, 2) 9 bits */
{ -1, -1, 1 }, /* 91: (0,-2) 9 bits */
{ -1, -1, 18 }, /* 92: (2, 1) 6 bits */
{ 94, 95, -1 }, /* 93: */
{ -1, -1, 4 }, /* 94: (0, 1) 3 bits */
{ -1, -1, 2 }, /* 95: (0,-1) 3 bits */
{ -1, -1, 3 }, /* 96: (0, 0) 1 bit */
};
Encoding Table
static bliss_huffman_code_tuple_t tuples[] = {
{ 59976, 18 }, /* 0: (0,-3) 001110101001001000 */
{ 119, 9 }, /* 1: (0,-2) 001110111 */
{ 3, 3 }, /* 2: (0,-1) 011 */
{ 1, 1 }, /* 3: (0, 0) 1 */
{ 2, 3 }, /* 4: (0, 1) 010 */
{ 118, 9 }, /* 5: (0, 2) 001110110 */
{ 59975, 18 }, /* 6: (0, 3) 001110101001000111 */
{ 59982, 18 }, /* 7: (1,-3) 001110101001001110 */
{ 936, 12 }, /* 8: (1,-2) 001110101000 */
{ 5, 5 }, /* 9: (1,-1) 00101 */
{ 0, 3 }, /* 10: (1, 0) 000 */
{ 4, 5 }, /* 11: (1, 1) 00100 */
{ 471, 11 }, /* 12: (1, 2) 00111010111 */
{ 59981, 18 }, /* 13: (1, 3) 001110101001001101 */
{ 59984, 18 }, /* 14: (2,-3) 001110101001010000 */
{ 59968, 18 }, /* 15: (2,-2) 001110101001000000 */
{ 28, 7 }, /* 16: (2,-1) 0011100 */
{ 6, 5 }, /* 17: (2, 0) 00110 */
{ 15, 6 }, /* 18: (2, 1) 001111 */
{ 1875, 13 }, /* 19: (2, 2) 0011101010011 */
{ 59983, 18 }, /* 20: (2, 3) 001110101001001111 */
{ 59989, 18 }, /* 21: (3,-3) 001110101001010101 */
{ 59973, 18 }, /* 22: (3,-2) 001110101001000101 */
{ 470, 11 }, /* 23: (3,-1) 00111010110 */
{ 116, 9 }, /* 24: (3, 0) 001110100 */
{ 469, 11 }, /* 25: (3, 1) 00111010101 */
{ 59972, 18 }, /* 26: (3, 2) 001110101001000100 */
{ 59988, 18 }, /* 27: (3, 3) 001110101001010100 */
{ 59993, 18 }, /* 28: (4,-3) 001110101001011001 */
{ 59980, 18 }, /* 29: (4,-2) 001110101001001100 */
{ 59971, 18 }, /* 30: (4,-1) 001110101001000011 */
{ 59969, 18 }, /* 31: (4, 0) 001110101001000001 */
{ 59970, 18 }, /* 32: (4, 1) 001110101001000010 */
{ 59979, 18 }, /* 33: (4, 2) 001110101001001011 */
{ 59992, 18 }, /* 34: (4, 3) 001110101001011000 */
{ 59997, 18 }, /* 35: (5,-3) 001110101001011101 */
{ 59987, 18 }, /* 36: (5,-2) 001110101001010011 */
{ 59978, 18 }, /* 37: (5,-1) 001110101001001010 */
{ 59974, 18 }, /* 38: (5, 0) 001110101001000110 */
{ 59977, 18 }, /* 39: (5, 1) 001110101001001001 */
{ 59986, 18 }, /* 40: (5, 2) 001110101001010010 */
{ 59996, 18 }, /* 41: (5, 3) 001110101001011100 */
{ 59999, 18 }, /* 42: (6,-3) 001110101001011111 */
{ 59995, 18 }, /* 43: (6,-2) 001110101001011011 */
{ 59991, 18 }, /* 44: (6,-1) 001110101001010111 */
{ 59985, 18 }, /* 45: (6, 0) 001110101001010001 */
{ 59990, 18 }, /* 46: (6, 1) 001110101001010110 */
{ 59994, 18 }, /* 47: (6, 2) 001110101001011010 */
{ 59998, 18 }, /* 48: (6, 3) 001110101001011110 */
};
/* code_length = 2.3227 bits/tuple (1190 bits) */
Parameter Set
bliss_huffman_code_t bliss_huffman_code_3 = {
.n_z1 = 7,
.n_z2 = 4,
.tuples = tuples,
.nodes = nodes
};
BLISS-IV Signature Encoding¶
Design Parameters
/*
* 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)
*/
Decoding Tree
#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 */
};
Encoding Table
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) */
Parameter Set
bliss_huffman_code_t bliss_huffman_code_4 = {
.n_z1 = 7,
.n_z2 = 7,
.tuples = tuples,
.nodes = nodes
};