Huffman Codes for BLISS Signatures » History » Version 5
Andreas Steffen, 13.12.2014 17:23
1 | 1 | Andreas Steffen | h1. Huffman Codes for BLISS Signatures |
---|---|---|---|
2 | 1 | Andreas Steffen | |
3 | 2 | Andreas Steffen | {{>toc}} |
4 | 2 | Andreas Steffen | |
5 | 5 | Andreas Steffen | All Huffman codes were generated automatically using the "bliss_huffman":https://wiki.strongswan.org/projects/strongswan/repository/revisions/master/entry/src/libstrongswan/plugins/bliss/bliss_huffman.c utility. |
6 | 2 | Andreas Steffen | |
7 | 2 | Andreas Steffen | The data structures used are defined in "bliss_huffman_code.h":https://wiki.strongswan.org/projects/strongswan/repository/revisions/master/entry/src/libstrongswan/plugins/bliss/bliss_huffman_code.h |
8 | 2 | Andreas Steffen | |
9 | 1 | Andreas Steffen | h2. BLISS-I Signature Encoding |
10 | 1 | Andreas Steffen | |
11 | 4 | Andreas Steffen | h3. Design Parameters |
12 | 1 | Andreas Steffen | <pre> |
13 | 2 | Andreas Steffen | /* |
14 | 2 | Andreas Steffen | * Design: sigma = 215 |
15 | 2 | Andreas Steffen | * |
16 | 2 | Andreas Steffen | * i p_z1[i] |
17 | 2 | Andreas Steffen | * 0 0.7662277087816564 0 .. 256 |
18 | 2 | Andreas Steffen | * 1 0.2165251006508514 256 .. 512 |
19 | 2 | Andreas Steffen | * 2 0.0168930510015114 512 .. 768 |
20 | 2 | Andreas Steffen | * 3 0.0003522302274478 768 .. 1024 |
21 | 2 | Andreas Steffen | * 4 0.0000019067136680 1024 .. 1280 |
22 | 2 | Andreas Steffen | * 5 0.0000000026239598 1280 .. 1536 |
23 | 2 | Andreas Steffen | * 6 0.0000000000009052 1536 .. 1792 |
24 | 2 | Andreas Steffen | * 7 0.0000000000000001 1792 .. 2047 |
25 | 2 | Andreas Steffen | * |
26 | 2 | Andreas Steffen | * k p_z2[k] dx = 1024 |
27 | 2 | Andreas Steffen | * -1 0.0086781953089156 -1535.5 .. -511.5 |
28 | 2 | Andreas Steffen | * 0 0.9826436093821688 -511.5 .. 511.5 |
29 | 2 | Andreas Steffen | * 1 0.0086781953089156 511.5 .. 1535.5 |
30 | 2 | Andreas Steffen | * |
31 | 2 | Andreas Steffen | * (i, k) p |
32 | 2 | Andreas Steffen | * (0,-1) 0.0066494737079101 |
33 | 2 | Andreas Steffen | * (0, 0) 0.7529287613658361 |
34 | 2 | Andreas Steffen | * (0, 1) 0.0066494737079101 |
35 | 2 | Andreas Steffen | * |
36 | 2 | Andreas Steffen | * (1,-1) 0.0018790471127307 |
37 | 2 | Andreas Steffen | * (1, 0) 0.2127670064253900 |
38 | 2 | Andreas Steffen | * (1, 1) 0.0018790471127307 |
39 | 2 | Andreas Steffen | * |
40 | 2 | Andreas Steffen | * (2,-1) 0.0001466011959546 |
41 | 2 | Andreas Steffen | * (2, 0) 0.0165998486096022 |
42 | 2 | Andreas Steffen | * (2, 1) 0.0001466011959546 |
43 | 2 | Andreas Steffen | * |
44 | 2 | Andreas Steffen | * (3,-1) 0.0000030567227075 |
45 | 2 | Andreas Steffen | * (3, 0) 0.0003461167820328 |
46 | 2 | Andreas Steffen | * (3, 1) 0.0000030567227075 |
47 | 2 | Andreas Steffen | * |
48 | 2 | Andreas Steffen | * (4,-1) 0.0000000165468336 |
49 | 2 | Andreas Steffen | * (4, 0) 0.0000018736200007 |
50 | 2 | Andreas Steffen | * (4, 1) 0.0000000165468336 |
51 | 2 | Andreas Steffen | * |
52 | 2 | Andreas Steffen | * (5,-1) 0.0000000000227712 |
53 | 2 | Andreas Steffen | * (5, 0) 0.0000000025784174 |
54 | 2 | Andreas Steffen | * (5, 1) 0.0000000000227712 |
55 | 2 | Andreas Steffen | * |
56 | 2 | Andreas Steffen | * (6,-1) 0.0000000000000079 |
57 | 2 | Andreas Steffen | * (6, 0) 0.0000000000008895 |
58 | 2 | Andreas Steffen | * (6, 1) 0.0000000000000079 |
59 | 2 | Andreas Steffen | * |
60 | 2 | Andreas Steffen | * (7,-1) 0.0000000000000000 |
61 | 2 | Andreas Steffen | * (7, 0) 0.0000000000000001 |
62 | 2 | Andreas Steffen | * (7, 1) 0.0000000000000000 |
63 | 2 | Andreas Steffen | * |
64 | 2 | Andreas Steffen | * p_sum 0.9999999999999998 |
65 | 2 | Andreas Steffen | * |
66 | 2 | Andreas Steffen | * entropy = 1.0195 bits/tuple (521 bits) |
67 | 2 | Andreas Steffen | */ |
68 | 2 | Andreas Steffen | </pre> |
69 | 1 | Andreas Steffen | |
70 | 4 | Andreas Steffen | h3. Decoding Tree |
71 | 2 | Andreas Steffen | <pre> |
72 | 2 | Andreas Steffen | #include "bliss_huffman_code.h" |
73 | 2 | Andreas Steffen | |
74 | 2 | Andreas Steffen | static bliss_huffman_code_node_t nodes[] = { |
75 | 2 | Andreas Steffen | { 1, 2, -1 }, /* 0: */ |
76 | 2 | Andreas Steffen | { -1, -1, 1 }, /* 1: (0, 0) 1 bit */ |
77 | 2 | Andreas Steffen | { 3, 4, -1 }, /* 2: */ |
78 | 2 | Andreas Steffen | { -1, -1, 4 }, /* 3: (1, 0) 2 bits */ |
79 | 2 | Andreas Steffen | { 5, 46, -1 }, /* 4: */ |
80 | 2 | Andreas Steffen | { 6, 45, -1 }, /* 5: */ |
81 | 2 | Andreas Steffen | { 7, 8, -1 }, /* 6: */ |
82 | 2 | Andreas Steffen | { -1, -1, 0 }, /* 7: (0,-1) 5 bits */ |
83 | 2 | Andreas Steffen | { 9, 44, -1 }, /* 8: */ |
84 | 2 | Andreas Steffen | { 10, 11, -1 }, /* 9: */ |
85 | 2 | Andreas Steffen | { -1, -1, 3 }, /* 10: (1,-1) 7 bits */ |
86 | 2 | Andreas Steffen | { 12, 13, -1 }, /* 11: */ |
87 | 2 | Andreas Steffen | { -1, -1, 10 }, /* 12: (3, 0) 8 bits */ |
88 | 2 | Andreas Steffen | { 14, 29, -1 }, /* 13: */ |
89 | 2 | Andreas Steffen | { 15, 22, -1 }, /* 14: */ |
90 | 2 | Andreas Steffen | { 16, 19, -1 }, /* 15: */ |
91 | 2 | Andreas Steffen | { 17, 18, -1 }, /* 16: */ |
92 | 2 | Andreas Steffen | { -1, -1, 8 }, /* 17: (2, 1) 12 bits */ |
93 | 2 | Andreas Steffen | { -1, -1, 6 }, /* 18: (2,-1) 12 bits */ |
94 | 2 | Andreas Steffen | { 20, 21, -1 }, /* 19: */ |
95 | 2 | Andreas Steffen | { -1, -1, 11 }, /* 20: (3, 1) 12 bits */ |
96 | 2 | Andreas Steffen | { -1, -1, 9 }, /* 21: (3,-1) 12 bits */ |
97 | 2 | Andreas Steffen | { 23, 26, -1 }, /* 22: */ |
98 | 2 | Andreas Steffen | { 24, 25, -1 }, /* 23: */ |
99 | 2 | Andreas Steffen | { -1, -1, 13 }, /* 24: (4, 0) 12 bits */ |
100 | 2 | Andreas Steffen | { -1, -1, 14 }, /* 25: (4, 1) 12 bits */ |
101 | 2 | Andreas Steffen | { 27, 28, -1 }, /* 26: */ |
102 | 2 | Andreas Steffen | { -1, -1, 12 }, /* 27: (4,-1) 12 bits */ |
103 | 2 | Andreas Steffen | { -1, -1, 16 }, /* 28: (5, 0) 12 bits */ |
104 | 2 | Andreas Steffen | { 30, 37, -1 }, /* 29: */ |
105 | 2 | Andreas Steffen | { 31, 34, -1 }, /* 30: */ |
106 | 2 | Andreas Steffen | { 32, 33, -1 }, /* 31: */ |
107 | 2 | Andreas Steffen | { -1, -1, 17 }, /* 32: (5, 1) 12 bits */ |
108 | 2 | Andreas Steffen | { -1, -1, 15 }, /* 33: (5,-1) 12 bits */ |
109 | 2 | Andreas Steffen | { 35, 36, -1 }, /* 34: */ |
110 | 2 | Andreas Steffen | { -1, -1, 19 }, /* 35: (6, 0) 12 bits */ |
111 | 2 | Andreas Steffen | { -1, -1, 20 }, /* 36: (6, 1) 12 bits */ |
112 | 2 | Andreas Steffen | { 38, 41, -1 }, /* 37: */ |
113 | 2 | Andreas Steffen | { 39, 40, -1 }, /* 38: */ |
114 | 2 | Andreas Steffen | { -1, -1, 18 }, /* 39: (6,-1) 12 bits */ |
115 | 2 | Andreas Steffen | { -1, -1, 22 }, /* 40: (7, 0) 12 bits */ |
116 | 2 | Andreas Steffen | { 42, 43, -1 }, /* 41: */ |
117 | 2 | Andreas Steffen | { -1, -1, 23 }, /* 42: (7, 1) 12 bits */ |
118 | 2 | Andreas Steffen | { -1, -1, 21 }, /* 43: (7,-1) 12 bits */ |
119 | 2 | Andreas Steffen | { -1, -1, 5 }, /* 44: (1, 1) 6 bits */ |
120 | 2 | Andreas Steffen | { -1, -1, 2 }, /* 45: (0, 1) 4 bits */ |
121 | 2 | Andreas Steffen | { -1, -1, 7 }, /* 46: (2, 0) 3 bits */ |
122 | 2 | Andreas Steffen | }; |
123 | 1 | Andreas Steffen | </pre> |
124 | 1 | Andreas Steffen | |
125 | 4 | Andreas Steffen | h3. Encoding Table |
126 | 2 | Andreas Steffen | <pre> |
127 | 2 | Andreas Steffen | static bliss_huffman_code_tuple_t tuples[] = { |
128 | 2 | Andreas Steffen | { 24, 5 }, /* 0: (0,-1) 11000 */ |
129 | 2 | Andreas Steffen | { 0, 1 }, /* 1: (0, 0) 0 */ |
130 | 2 | Andreas Steffen | { 13, 4 }, /* 2: (0, 1) 1101 */ |
131 | 2 | Andreas Steffen | |
132 | 2 | Andreas Steffen | { 100, 7 }, /* 3: (1,-1) 1100100 */ |
133 | 2 | Andreas Steffen | { 2, 2 }, /* 4: (1, 0) 10 */ |
134 | 2 | Andreas Steffen | { 51, 6 }, /* 5: (1, 1) 110011 */ |
135 | 2 | Andreas Steffen | |
136 | 2 | Andreas Steffen | { 3249, 12 }, /* 6: (2,-1) 110010110001 */ |
137 | 2 | Andreas Steffen | { 7, 3 }, /* 7: (2, 0) 111 */ |
138 | 2 | Andreas Steffen | { 3248, 12 }, /* 8: (2, 1) 110010110000 */ |
139 | 2 | Andreas Steffen | |
140 | 2 | Andreas Steffen | { 3251, 12 }, /* 9: (3,-1) 110010110011 */ |
141 | 2 | Andreas Steffen | { 202, 8 }, /* 10: (3, 0) 11001010 */ |
142 | 2 | Andreas Steffen | { 3250, 12 }, /* 11: (3, 1) 110010110010 */ |
143 | 2 | Andreas Steffen | |
144 | 2 | Andreas Steffen | { 3254, 12 }, /* 12: (4,-1) 110010110110 */ |
145 | 2 | Andreas Steffen | { 3252, 12 }, /* 13: (4, 0) 110010110100 */ |
146 | 2 | Andreas Steffen | { 3253, 12 }, /* 14: (4, 1) 110010110101 */ |
147 | 2 | Andreas Steffen | |
148 | 2 | Andreas Steffen | { 3257, 12 }, /* 15: (5,-1) 110010111001 */ |
149 | 2 | Andreas Steffen | { 3255, 12 }, /* 16: (5, 0) 110010110111 */ |
150 | 2 | Andreas Steffen | { 3256, 12 }, /* 17: (5, 1) 110010111000 */ |
151 | 2 | Andreas Steffen | |
152 | 2 | Andreas Steffen | { 3260, 12 }, /* 18: (6,-1) 110010111100 */ |
153 | 2 | Andreas Steffen | { 3258, 12 }, /* 19: (6, 0) 110010111010 */ |
154 | 2 | Andreas Steffen | { 3259, 12 }, /* 20: (6, 1) 110010111011 */ |
155 | 2 | Andreas Steffen | |
156 | 2 | Andreas Steffen | { 3263, 12 }, /* 21: (7,-1) 110010111111 */ |
157 | 2 | Andreas Steffen | { 3261, 12 }, /* 22: (7, 0) 110010111101 */ |
158 | 2 | Andreas Steffen | { 3262, 12 }, /* 23: (7, 1) 110010111110 */ |
159 | 2 | Andreas Steffen | }; |
160 | 2 | Andreas Steffen | |
161 | 2 | Andreas Steffen | /* code_length = 1.3189 bits/tuple (676 bits) */ |
162 | 2 | Andreas Steffen | </pre> |
163 | 2 | Andreas Steffen | |
164 | 4 | Andreas Steffen | h3. Parameter Set |
165 | 2 | Andreas Steffen | <pre> |
166 | 2 | Andreas Steffen | bliss_huffman_code_t bliss_huffman_code_1 = { |
167 | 2 | Andreas Steffen | .n_z1 = 8, |
168 | 2 | Andreas Steffen | .n_z2 = 2, |
169 | 2 | Andreas Steffen | .tuples = tuples, |
170 | 2 | Andreas Steffen | .nodes = nodes |
171 | 2 | Andreas Steffen | }; |
172 | 2 | Andreas Steffen | </pre> |
173 | 2 | Andreas Steffen | |
174 | 1 | Andreas Steffen | h2. BLISS-III Signature Encoding |
175 | 1 | Andreas Steffen | |
176 | 4 | Andreas Steffen | h3. Design Parameters |
177 | 1 | Andreas Steffen | <pre> |
178 | 2 | Andreas Steffen | /* |
179 | 2 | Andreas Steffen | * Design: sigma = 250 |
180 | 2 | Andreas Steffen | * |
181 | 2 | Andreas Steffen | * i p_z1[i] |
182 | 2 | Andreas Steffen | * 0 0.6941647250930416 0 .. 256 |
183 | 2 | Andreas Steffen | * 1 0.2652752755116807 256 .. 512 |
184 | 2 | Andreas Steffen | * 2 0.0384337021454129 512 .. 768 |
185 | 2 | Andreas Steffen | * 3 0.0020842622589255 768 .. 1024 |
186 | 2 | Andreas Steffen | * 4 0.0000417294572050 1024 .. 1280 |
187 | 2 | Andreas Steffen | * 5 0.0000003047309681 1280 .. 1536 |
188 | 2 | Andreas Steffen | * 6 0.0000000008027661 1536 .. 1760 |
189 | 2 | Andreas Steffen | * |
190 | 2 | Andreas Steffen | * k p_z2[k] dx = 512 |
191 | 2 | Andreas Steffen | * -3 0.0000001543959154 -1791.5 ..-1279.5 |
192 | 2 | Andreas Steffen | * -2 0.0010701394583782 -1279.5 .. -767.5 |
193 | 2 | Andreas Steffen | * -1 0.1523201563502276 -767.5 .. -255.5 |
194 | 2 | Andreas Steffen | * 0 0.6932190995909575 -255.5 .. 255.5 |
195 | 2 | Andreas Steffen | * 1 0.1523201563502276 255.5 .. 767.5 |
196 | 2 | Andreas Steffen | * 2 0.0010701394583782 767.5 .. 1279.5 |
197 | 2 | Andreas Steffen | * 3 0.0000001543959154 1279.5 .. 1791.5 |
198 | 2 | Andreas Steffen | * |
199 | 2 | Andreas Steffen | * (i, k) p |
200 | 2 | Andreas Steffen | * (0,-3) 0.0000001071761982 |
201 | 2 | Andreas Steffen | * (0,-2) 0.0007428530629363 |
202 | 2 | Andreas Steffen | * (0,-1) 0.1057352794589848 |
203 | 2 | Andreas Steffen | * (0, 0) 0.4812082456968029 |
204 | 2 | Andreas Steffen | * (0, 1) 0.1057352794589848 |
205 | 2 | Andreas Steffen | * (0, 2) 0.0007428530629363 |
206 | 2 | Andreas Steffen | * (0, 3) 0.0000001071761982 |
207 | 2 | Andreas Steffen | * |
208 | 2 | Andreas Steffen | * (1,-3) 0.0000000409574190 |
209 | 2 | Andreas Steffen | * (1,-2) 0.0002838815396572 |
210 | 2 | Andreas Steffen | * (1,-1) 0.0404067714417889 |
211 | 2 | Andreas Steffen | * (1, 0) 0.1838938876339505 |
212 | 2 | Andreas Steffen | * (1, 1) 0.0404067714417889 |
213 | 2 | Andreas Steffen | * (1, 2) 0.0002838815396572 |
214 | 2 | Andreas Steffen | * (1, 3) 0.0000000409574190 |
215 | 2 | Andreas Steffen | * |
216 | 2 | Andreas Steffen | * (2,-3) 0.0000000059340066 |
217 | 2 | Andreas Steffen | * (2,-2) 0.0000411294211974 |
218 | 2 | Andreas Steffen | * (2,-1) 0.0058542275199074 |
219 | 2 | Andreas Steffen | * (2, 0) 0.0266429763951902 |
220 | 2 | Andreas Steffen | * (2, 1) 0.0058542275199074 |
221 | 2 | Andreas Steffen | * (2, 2) 0.0000411294211974 |
222 | 2 | Andreas Steffen | * (2, 3) 0.0000000059340066 |
223 | 2 | Andreas Steffen | * |
224 | 2 | Andreas Steffen | * (3,-3) 0.0000000003218016 |
225 | 2 | Andreas Steffen | * (3,-2) 0.0000022304512849 |
226 | 2 | Andreas Steffen | * (3,-1) 0.0003174751531544 |
227 | 2 | Andreas Steffen | * (3, 0) 0.0014448504064437 |
228 | 2 | Andreas Steffen | * (3, 1) 0.0003174751531544 |
229 | 2 | Andreas Steffen | * (3, 2) 0.0000022304512849 |
230 | 2 | Andreas Steffen | * (3, 3) 0.0000000003218016 |
231 | 2 | Andreas Steffen | * |
232 | 2 | Andreas Steffen | * (4,-3) 0.0000000000064429 |
233 | 2 | Andreas Steffen | * (4,-2) 0.0000000446563387 |
234 | 2 | Andreas Steffen | * (4,-1) 0.0000063562374459 |
235 | 2 | Andreas Steffen | * (4, 0) 0.0000289276567501 |
236 | 2 | Andreas Steffen | * (4, 1) 0.0000063562374459 |
237 | 2 | Andreas Steffen | * (4, 2) 0.0000000446563387 |
238 | 2 | Andreas Steffen | * (4, 3) 0.0000000000064429 |
239 | 2 | Andreas Steffen | * |
240 | 2 | Andreas Steffen | * (5,-3) 0.0000000000000470 |
241 | 2 | Andreas Steffen | * (5,-2) 0.0000000003261046 |
242 | 2 | Andreas Steffen | * (5,-1) 0.0000000464166687 |
243 | 2 | Andreas Steffen | * (5, 0) 0.0000002112453273 |
244 | 2 | Andreas Steffen | * (5, 1) 0.0000000464166687 |
245 | 2 | Andreas Steffen | * (5, 2) 0.0000000003261046 |
246 | 2 | Andreas Steffen | * (5, 3) 0.0000000000000470 |
247 | 2 | Andreas Steffen | * |
248 | 2 | Andreas Steffen | * (6,-3) 0.0000000000000001 |
249 | 2 | Andreas Steffen | * (6,-2) 0.0000000000008591 |
250 | 2 | Andreas Steffen | * (6,-1) 0.0000000001222775 |
251 | 2 | Andreas Steffen | * (6, 0) 0.0000000005564928 |
252 | 2 | Andreas Steffen | * (6, 1) 0.0000000001222775 |
253 | 2 | Andreas Steffen | * (6, 2) 0.0000000000008591 |
254 | 2 | Andreas Steffen | * (6, 3) 0.0000000000000001 |
255 | 2 | Andreas Steffen | * |
256 | 2 | Andreas Steffen | * p_sum 0.9999999999999999 |
257 | 2 | Andreas Steffen | * |
258 | 2 | Andreas Steffen | * entropy = 2.2879 bits/tuple (1171 bits) |
259 | 2 | Andreas Steffen | */ |
260 | 2 | Andreas Steffen | </pre> |
261 | 1 | Andreas Steffen | |
262 | 4 | Andreas Steffen | h3. Decoding Tree |
263 | 2 | Andreas Steffen | <pre> |
264 | 2 | Andreas Steffen | #include "bliss_huffman_code.h" |
265 | 2 | Andreas Steffen | |
266 | 2 | Andreas Steffen | static bliss_huffman_code_node_t nodes[] = { |
267 | 2 | Andreas Steffen | { 1, 96, -1 }, /* 0: */ |
268 | 2 | Andreas Steffen | { 2, 93, -1 }, /* 1: */ |
269 | 2 | Andreas Steffen | { 3, 4, -1 }, /* 2: */ |
270 | 2 | Andreas Steffen | { -1, -1, 10 }, /* 3: (1, 0) 3 bits */ |
271 | 2 | Andreas Steffen | { 5, 8, -1 }, /* 4: */ |
272 | 2 | Andreas Steffen | { 6, 7, -1 }, /* 5: */ |
273 | 2 | Andreas Steffen | { -1, -1, 11 }, /* 6: (1, 1) 5 bits */ |
274 | 2 | Andreas Steffen | { -1, -1, 9 }, /* 7: (1,-1) 5 bits */ |
275 | 2 | Andreas Steffen | { 9, 10, -1 }, /* 8: */ |
276 | 2 | Andreas Steffen | { -1, -1, 17 }, /* 9: (2, 0) 5 bits */ |
277 | 2 | Andreas Steffen | { 11, 92, -1 }, /* 10: */ |
278 | 2 | Andreas Steffen | { 12, 13, -1 }, /* 11: */ |
279 | 2 | Andreas Steffen | { -1, -1, 16 }, /* 12: (2,-1) 7 bits */ |
280 | 2 | Andreas Steffen | { 14, 89, -1 }, /* 13: */ |
281 | 2 | Andreas Steffen | { 15, 16, -1 }, /* 14: */ |
282 | 2 | Andreas Steffen | { -1, -1, 24 }, /* 15: (3, 0) 9 bits */ |
283 | 2 | Andreas Steffen | { 17, 86, -1 }, /* 16: */ |
284 | 2 | Andreas Steffen | { 18, 85, -1 }, /* 17: */ |
285 | 2 | Andreas Steffen | { 19, 20, -1 }, /* 18: */ |
286 | 2 | Andreas Steffen | { -1, -1, 8 }, /* 19: (1,-2) 12 bits */ |
287 | 2 | Andreas Steffen | { 21, 84, -1 }, /* 20: */ |
288 | 2 | Andreas Steffen | { 22, 53, -1 }, /* 21: */ |
289 | 2 | Andreas Steffen | { 23, 38, -1 }, /* 22: */ |
290 | 2 | Andreas Steffen | { 24, 31, -1 }, /* 23: */ |
291 | 2 | Andreas Steffen | { 25, 28, -1 }, /* 24: */ |
292 | 2 | Andreas Steffen | { 26, 27, -1 }, /* 25: */ |
293 | 2 | Andreas Steffen | { -1, -1, 15 }, /* 26: (2,-2) 18 bits */ |
294 | 2 | Andreas Steffen | { -1, -1, 31 }, /* 27: (4, 0) 18 bits */ |
295 | 2 | Andreas Steffen | { 29, 30, -1 }, /* 28: */ |
296 | 2 | Andreas Steffen | { -1, -1, 32 }, /* 29: (4, 1) 18 bits */ |
297 | 2 | Andreas Steffen | { -1, -1, 30 }, /* 30: (4,-1) 18 bits */ |
298 | 2 | Andreas Steffen | { 32, 35, -1 }, /* 31: */ |
299 | 2 | Andreas Steffen | { 33, 34, -1 }, /* 32: */ |
300 | 2 | Andreas Steffen | { -1, -1, 26 }, /* 33: (3, 2) 18 bits */ |
301 | 2 | Andreas Steffen | { -1, -1, 22 }, /* 34: (3,-2) 18 bits */ |
302 | 2 | Andreas Steffen | { 36, 37, -1 }, /* 35: */ |
303 | 2 | Andreas Steffen | { -1, -1, 38 }, /* 36: (5, 0) 18 bits */ |
304 | 2 | Andreas Steffen | { -1, -1, 6 }, /* 37: (0, 3) 18 bits */ |
305 | 2 | Andreas Steffen | { 39, 46, -1 }, /* 38: */ |
306 | 2 | Andreas Steffen | { 40, 43, -1 }, /* 39: */ |
307 | 2 | Andreas Steffen | { 41, 42, -1 }, /* 40: */ |
308 | 2 | Andreas Steffen | { -1, -1, 0 }, /* 41: (0,-3) 18 bits */ |
309 | 2 | Andreas Steffen | { -1, -1, 39 }, /* 42: (5, 1) 18 bits */ |
310 | 2 | Andreas Steffen | { 44, 45, -1 }, /* 43: */ |
311 | 2 | Andreas Steffen | { -1, -1, 37 }, /* 44: (5,-1) 18 bits */ |
312 | 2 | Andreas Steffen | { -1, -1, 33 }, /* 45: (4, 2) 18 bits */ |
313 | 2 | Andreas Steffen | { 47, 50, -1 }, /* 46: */ |
314 | 2 | Andreas Steffen | { 48, 49, -1 }, /* 47: */ |
315 | 2 | Andreas Steffen | { -1, -1, 29 }, /* 48: (4,-2) 18 bits */ |
316 | 2 | Andreas Steffen | { -1, -1, 13 }, /* 49: (1, 3) 18 bits */ |
317 | 2 | Andreas Steffen | { 51, 52, -1 }, /* 50: */ |
318 | 2 | Andreas Steffen | { -1, -1, 7 }, /* 51: (1,-3) 18 bits */ |
319 | 2 | Andreas Steffen | { -1, -1, 20 }, /* 52: (2, 3) 18 bits */ |
320 | 2 | Andreas Steffen | { 54, 69, -1 }, /* 53: */ |
321 | 2 | Andreas Steffen | { 55, 62, -1 }, /* 54: */ |
322 | 2 | Andreas Steffen | { 56, 59, -1 }, /* 55: */ |
323 | 2 | Andreas Steffen | { 57, 58, -1 }, /* 56: */ |
324 | 2 | Andreas Steffen | { -1, -1, 14 }, /* 57: (2,-3) 18 bits */ |
325 | 2 | Andreas Steffen | { -1, -1, 45 }, /* 58: (6, 0) 18 bits */ |
326 | 2 | Andreas Steffen | { 60, 61, -1 }, /* 59: */ |
327 | 2 | Andreas Steffen | { -1, -1, 40 }, /* 60: (5, 2) 18 bits */ |
328 | 2 | Andreas Steffen | { -1, -1, 36 }, /* 61: (5,-2) 18 bits */ |
329 | 2 | Andreas Steffen | { 63, 66, -1 }, /* 62: */ |
330 | 2 | Andreas Steffen | { 64, 65, -1 }, /* 63: */ |
331 | 2 | Andreas Steffen | { -1, -1, 27 }, /* 64: (3, 3) 18 bits */ |
332 | 2 | Andreas Steffen | { -1, -1, 21 }, /* 65: (3,-3) 18 bits */ |
333 | 2 | Andreas Steffen | { 67, 68, -1 }, /* 66: */ |
334 | 2 | Andreas Steffen | { -1, -1, 46 }, /* 67: (6, 1) 18 bits */ |
335 | 2 | Andreas Steffen | { -1, -1, 44 }, /* 68: (6,-1) 18 bits */ |
336 | 2 | Andreas Steffen | { 70, 77, -1 }, /* 69: */ |
337 | 2 | Andreas Steffen | { 71, 74, -1 }, /* 70: */ |
338 | 2 | Andreas Steffen | { 72, 73, -1 }, /* 71: */ |
339 | 2 | Andreas Steffen | { -1, -1, 34 }, /* 72: (4, 3) 18 bits */ |
340 | 2 | Andreas Steffen | { -1, -1, 28 }, /* 73: (4,-3) 18 bits */ |
341 | 2 | Andreas Steffen | { 75, 76, -1 }, /* 74: */ |
342 | 2 | Andreas Steffen | { -1, -1, 47 }, /* 75: (6, 2) 18 bits */ |
343 | 2 | Andreas Steffen | { -1, -1, 43 }, /* 76: (6,-2) 18 bits */ |
344 | 2 | Andreas Steffen | { 78, 81, -1 }, /* 77: */ |
345 | 2 | Andreas Steffen | { 79, 80, -1 }, /* 78: */ |
346 | 2 | Andreas Steffen | { -1, -1, 41 }, /* 79: (5, 3) 18 bits */ |
347 | 2 | Andreas Steffen | { -1, -1, 35 }, /* 80: (5,-3) 18 bits */ |
348 | 2 | Andreas Steffen | { 82, 83, -1 }, /* 81: */ |
349 | 2 | Andreas Steffen | { -1, -1, 48 }, /* 82: (6, 3) 18 bits */ |
350 | 2 | Andreas Steffen | { -1, -1, 42 }, /* 83: (6,-3) 18 bits */ |
351 | 2 | Andreas Steffen | { -1, -1, 19 }, /* 84: (2, 2) 13 bits */ |
352 | 2 | Andreas Steffen | { -1, -1, 25 }, /* 85: (3, 1) 11 bits */ |
353 | 2 | Andreas Steffen | { 87, 88, -1 }, /* 86: */ |
354 | 2 | Andreas Steffen | { -1, -1, 23 }, /* 87: (3,-1) 11 bits */ |
355 | 2 | Andreas Steffen | { -1, -1, 12 }, /* 88: (1, 2) 11 bits */ |
356 | 2 | Andreas Steffen | { 90, 91, -1 }, /* 89: */ |
357 | 2 | Andreas Steffen | { -1, -1, 5 }, /* 90: (0, 2) 9 bits */ |
358 | 2 | Andreas Steffen | { -1, -1, 1 }, /* 91: (0,-2) 9 bits */ |
359 | 2 | Andreas Steffen | { -1, -1, 18 }, /* 92: (2, 1) 6 bits */ |
360 | 2 | Andreas Steffen | { 94, 95, -1 }, /* 93: */ |
361 | 2 | Andreas Steffen | { -1, -1, 4 }, /* 94: (0, 1) 3 bits */ |
362 | 2 | Andreas Steffen | { -1, -1, 2 }, /* 95: (0,-1) 3 bits */ |
363 | 2 | Andreas Steffen | { -1, -1, 3 }, /* 96: (0, 0) 1 bit */ |
364 | 2 | Andreas Steffen | }; |
365 | 1 | Andreas Steffen | </pre> |
366 | 1 | Andreas Steffen | |
367 | 4 | Andreas Steffen | h3. Encoding Table |
368 | 2 | Andreas Steffen | <pre> |
369 | 2 | Andreas Steffen | static bliss_huffman_code_tuple_t tuples[] = { |
370 | 2 | Andreas Steffen | { 59976, 18 }, /* 0: (0,-3) 001110101001001000 */ |
371 | 2 | Andreas Steffen | { 119, 9 }, /* 1: (0,-2) 001110111 */ |
372 | 2 | Andreas Steffen | { 3, 3 }, /* 2: (0,-1) 011 */ |
373 | 2 | Andreas Steffen | { 1, 1 }, /* 3: (0, 0) 1 */ |
374 | 2 | Andreas Steffen | { 2, 3 }, /* 4: (0, 1) 010 */ |
375 | 2 | Andreas Steffen | { 118, 9 }, /* 5: (0, 2) 001110110 */ |
376 | 2 | Andreas Steffen | { 59975, 18 }, /* 6: (0, 3) 001110101001000111 */ |
377 | 2 | Andreas Steffen | |
378 | 2 | Andreas Steffen | { 59982, 18 }, /* 7: (1,-3) 001110101001001110 */ |
379 | 2 | Andreas Steffen | { 936, 12 }, /* 8: (1,-2) 001110101000 */ |
380 | 2 | Andreas Steffen | { 5, 5 }, /* 9: (1,-1) 00101 */ |
381 | 2 | Andreas Steffen | { 0, 3 }, /* 10: (1, 0) 000 */ |
382 | 2 | Andreas Steffen | { 4, 5 }, /* 11: (1, 1) 00100 */ |
383 | 2 | Andreas Steffen | { 471, 11 }, /* 12: (1, 2) 00111010111 */ |
384 | 2 | Andreas Steffen | { 59981, 18 }, /* 13: (1, 3) 001110101001001101 */ |
385 | 2 | Andreas Steffen | |
386 | 2 | Andreas Steffen | { 59984, 18 }, /* 14: (2,-3) 001110101001010000 */ |
387 | 2 | Andreas Steffen | { 59968, 18 }, /* 15: (2,-2) 001110101001000000 */ |
388 | 2 | Andreas Steffen | { 28, 7 }, /* 16: (2,-1) 0011100 */ |
389 | 2 | Andreas Steffen | { 6, 5 }, /* 17: (2, 0) 00110 */ |
390 | 2 | Andreas Steffen | { 15, 6 }, /* 18: (2, 1) 001111 */ |
391 | 2 | Andreas Steffen | { 1875, 13 }, /* 19: (2, 2) 0011101010011 */ |
392 | 2 | Andreas Steffen | { 59983, 18 }, /* 20: (2, 3) 001110101001001111 */ |
393 | 2 | Andreas Steffen | |
394 | 2 | Andreas Steffen | { 59989, 18 }, /* 21: (3,-3) 001110101001010101 */ |
395 | 2 | Andreas Steffen | { 59973, 18 }, /* 22: (3,-2) 001110101001000101 */ |
396 | 2 | Andreas Steffen | { 470, 11 }, /* 23: (3,-1) 00111010110 */ |
397 | 2 | Andreas Steffen | { 116, 9 }, /* 24: (3, 0) 001110100 */ |
398 | 2 | Andreas Steffen | { 469, 11 }, /* 25: (3, 1) 00111010101 */ |
399 | 2 | Andreas Steffen | { 59972, 18 }, /* 26: (3, 2) 001110101001000100 */ |
400 | 2 | Andreas Steffen | { 59988, 18 }, /* 27: (3, 3) 001110101001010100 */ |
401 | 2 | Andreas Steffen | |
402 | 2 | Andreas Steffen | { 59993, 18 }, /* 28: (4,-3) 001110101001011001 */ |
403 | 2 | Andreas Steffen | { 59980, 18 }, /* 29: (4,-2) 001110101001001100 */ |
404 | 2 | Andreas Steffen | { 59971, 18 }, /* 30: (4,-1) 001110101001000011 */ |
405 | 2 | Andreas Steffen | { 59969, 18 }, /* 31: (4, 0) 001110101001000001 */ |
406 | 2 | Andreas Steffen | { 59970, 18 }, /* 32: (4, 1) 001110101001000010 */ |
407 | 2 | Andreas Steffen | { 59979, 18 }, /* 33: (4, 2) 001110101001001011 */ |
408 | 2 | Andreas Steffen | { 59992, 18 }, /* 34: (4, 3) 001110101001011000 */ |
409 | 2 | Andreas Steffen | |
410 | 2 | Andreas Steffen | { 59997, 18 }, /* 35: (5,-3) 001110101001011101 */ |
411 | 2 | Andreas Steffen | { 59987, 18 }, /* 36: (5,-2) 001110101001010011 */ |
412 | 2 | Andreas Steffen | { 59978, 18 }, /* 37: (5,-1) 001110101001001010 */ |
413 | 2 | Andreas Steffen | { 59974, 18 }, /* 38: (5, 0) 001110101001000110 */ |
414 | 2 | Andreas Steffen | { 59977, 18 }, /* 39: (5, 1) 001110101001001001 */ |
415 | 2 | Andreas Steffen | { 59986, 18 }, /* 40: (5, 2) 001110101001010010 */ |
416 | 2 | Andreas Steffen | { 59996, 18 }, /* 41: (5, 3) 001110101001011100 */ |
417 | 2 | Andreas Steffen | |
418 | 2 | Andreas Steffen | { 59999, 18 }, /* 42: (6,-3) 001110101001011111 */ |
419 | 2 | Andreas Steffen | { 59995, 18 }, /* 43: (6,-2) 001110101001011011 */ |
420 | 2 | Andreas Steffen | { 59991, 18 }, /* 44: (6,-1) 001110101001010111 */ |
421 | 2 | Andreas Steffen | { 59985, 18 }, /* 45: (6, 0) 001110101001010001 */ |
422 | 2 | Andreas Steffen | { 59990, 18 }, /* 46: (6, 1) 001110101001010110 */ |
423 | 2 | Andreas Steffen | { 59994, 18 }, /* 47: (6, 2) 001110101001011010 */ |
424 | 2 | Andreas Steffen | { 59998, 18 }, /* 48: (6, 3) 001110101001011110 */ |
425 | 2 | Andreas Steffen | }; |
426 | 2 | Andreas Steffen | |
427 | 2 | Andreas Steffen | /* code_length = 2.3227 bits/tuple (1190 bits) */ |
428 | 2 | Andreas Steffen | </pre> |
429 | 2 | Andreas Steffen | |
430 | 4 | Andreas Steffen | h3. Parameter Set |
431 | 2 | Andreas Steffen | <pre> |
432 | 2 | Andreas Steffen | bliss_huffman_code_t bliss_huffman_code_3 = { |
433 | 2 | Andreas Steffen | .n_z1 = 7, |
434 | 2 | Andreas Steffen | .n_z2 = 4, |
435 | 2 | Andreas Steffen | .tuples = tuples, |
436 | 2 | Andreas Steffen | .nodes = nodes |
437 | 2 | Andreas Steffen | }; |
438 | 2 | Andreas Steffen | </pre> |
439 | 2 | Andreas Steffen | |
440 | 1 | Andreas Steffen | h2. BLISS-IV Signature Encoding |
441 | 1 | Andreas Steffen | |
442 | 4 | Andreas Steffen | h3. Design Parameters |
443 | 2 | Andreas Steffen | <pre> |
444 | 3 | Andreas Steffen | /* |
445 | 3 | Andreas Steffen | * Design: sigma = 271 |
446 | 3 | Andreas Steffen | * |
447 | 3 | Andreas Steffen | * i p_z1[i] |
448 | 3 | Andreas Steffen | * 0 0.6551621276225426 0 .. 256 |
449 | 3 | Andreas Steffen | * 1 0.2859860850630749 256 .. 512 |
450 | 3 | Andreas Steffen | * 2 0.0542541135599810 512 .. 768 |
451 | 3 | Andreas Steffen | * 3 0.0044399624814222 768 .. 1024 |
452 | 3 | Andreas Steffen | * 4 0.0001553928373912 1024 .. 1280 |
453 | 3 | Andreas Steffen | * 5 0.0000023066278552 1280 .. 1536 |
454 | 3 | Andreas Steffen | * 6 0.0000000118077330 1536 .. 1613 |
455 | 3 | Andreas Steffen | * |
456 | 3 | Andreas Steffen | * k p_z2[k] dx = 256 |
457 | 3 | Andreas Steffen | * -6 0.0000001026458579 -1663.5 ..-1407.5 |
458 | 3 | Andreas Steffen | * -5 0.0000106295703648 -1407.5 ..-1151.5 |
459 | 3 | Andreas Steffen | * -4 0.0004651193817805 -1151.5 .. -895.5 |
460 | 3 | Andreas Steffen | * -3 0.0086670703658387 -895.5 .. -639.5 |
461 | 3 | Andreas Steffen | * -2 0.0693723939195647 -639.5 .. -383.5 |
462 | 3 | Andreas Steffen | * -1 0.2404908493690626 -383.5 .. -127.5 |
463 | 3 | Andreas Steffen | * 0 0.3619876694950614 -127.5 .. 127.5 |
464 | 3 | Andreas Steffen | * 1 0.2404908493690626 127.5 .. 383.5 |
465 | 3 | Andreas Steffen | * 2 0.0693723939195647 383.5 .. 639.5 |
466 | 3 | Andreas Steffen | * 3 0.0086670703658387 639.5 .. 895.5 |
467 | 3 | Andreas Steffen | * 4 0.0004651193817805 895.5 .. 1151.5 |
468 | 3 | Andreas Steffen | * 5 0.0000106295703648 1151.5 .. 1407.5 |
469 | 3 | Andreas Steffen | * 6 0.0000001026458579 1407.5 .. 1663.5 |
470 | 3 | Andreas Steffen | * |
471 | 3 | Andreas Steffen | * (i, k) p |
472 | 3 | Andreas Steffen | * (0,-6) 0.0000000672496787 |
473 | 3 | Andreas Steffen | * (0,-5) 0.0000069640919359 |
474 | 3 | Andreas Steffen | * (0,-4) 0.0003047286037658 |
475 | 3 | Andreas Steffen | * (0,-3) 0.0056783362611372 |
476 | 3 | Andreas Steffen | * (0,-2) 0.0454501651986111 |
477 | 3 | Andreas Steffen | * (0,-1) 0.1575604965463875 |
478 | 3 | Andreas Steffen | * (0, 0) 0.2371606117195102 |
479 | 3 | Andreas Steffen | * (0, 1) 0.1575604965463875 |
480 | 3 | Andreas Steffen | * (0, 2) 0.0454501651986111 |
481 | 3 | Andreas Steffen | * (0, 3) 0.0056783362611372 |
482 | 3 | Andreas Steffen | * (0, 4) 0.0003047286037658 |
483 | 3 | Andreas Steffen | * (0, 5) 0.0000069640919359 |
484 | 3 | Andreas Steffen | * (0, 6) 0.0000000672496787 |
485 | 3 | Andreas Steffen | * |
486 | 3 | Andreas Steffen | * (1,-6) 0.0000000293552870 |
487 | 3 | Andreas Steffen | * (1,-5) 0.0000030399092145 |
488 | 3 | Andreas Steffen | * (1,-4) 0.0001330176710824 |
489 | 3 | Andreas Steffen | * (1,-3) 0.0024786615228924 |
490 | 3 | Andreas Steffen | * (1,-2) 0.0198395393485098 |
491 | 3 | Andreas Steffen | * (1,-1) 0.0687770365045519 |
492 | 3 | Andreas Steffen | * (1, 0) 0.1035234364399989 |
493 | 3 | Andreas Steffen | * (1, 1) 0.0687770365045519 |
494 | 3 | Andreas Steffen | * (1, 2) 0.0198395393485098 |
495 | 3 | Andreas Steffen | * (1, 3) 0.0024786615228924 |
496 | 3 | Andreas Steffen | * (1, 4) 0.0001330176710824 |
497 | 3 | Andreas Steffen | * (1, 5) 0.0000030399092145 |
498 | 3 | Andreas Steffen | * (1, 6) 0.0000000293552870 |
499 | 3 | Andreas Steffen | * |
500 | 3 | Andreas Steffen | * (2,-6) 0.0000000055689600 |
501 | 3 | Andreas Steffen | * (2,-5) 0.0000005766979177 |
502 | 3 | Andreas Steffen | * (2,-4) 0.0000252346397581 |
503 | 3 | Andreas Steffen | * (2,-3) 0.0004702242198606 |
504 | 3 | Andreas Steffen | * (2,-2) 0.0037637377376398 |
505 | 3 | Andreas Steffen | * (2,-1) 0.0130476178518054 |
506 | 3 | Andreas Steffen | * (2, 0) 0.0196393201280979 |
507 | 3 | Andreas Steffen | * (2, 1) 0.0130476178518054 |
508 | 3 | Andreas Steffen | * (2, 2) 0.0037637377376398 |
509 | 3 | Andreas Steffen | * (2, 3) 0.0004702242198606 |
510 | 3 | Andreas Steffen | * (2, 4) 0.0000252346397581 |
511 | 3 | Andreas Steffen | * (2, 5) 0.0000005766979177 |
512 | 3 | Andreas Steffen | * (2, 6) 0.0000000055689600 |
513 | 3 | Andreas Steffen | * |
514 | 3 | Andreas Steffen | * (3,-6) 0.0000000004557438 |
515 | 3 | Andreas Steffen | * (3,-5) 0.0000000471948936 |
516 | 3 | Andreas Steffen | * (3,-4) 0.0000020651126045 |
517 | 3 | Andreas Steffen | * (3,-3) 0.0000384814672482 |
518 | 3 | Andreas Steffen | * (3,-2) 0.0003080108262493 |
519 | 3 | Andreas Steffen | * (3,-1) 0.0010677703483240 |
520 | 3 | Andreas Steffen | * (3, 0) 0.0016072116712955 |
521 | 3 | Andreas Steffen | * (3, 1) 0.0010677703483240 |
522 | 3 | Andreas Steffen | * (3, 2) 0.0003080108262493 |
523 | 3 | Andreas Steffen | * (3, 3) 0.0000384814672482 |
524 | 3 | Andreas Steffen | * (3, 4) 0.0000020651126045 |
525 | 3 | Andreas Steffen | * (3, 5) 0.0000000471948936 |
526 | 3 | Andreas Steffen | * (3, 6) 0.0000000004557438 |
527 | 3 | Andreas Steffen | * |
528 | 3 | Andreas Steffen | * (4,-6) 0.0000000000159504 |
529 | 3 | Andreas Steffen | * (4,-5) 0.0000000016517591 |
530 | 3 | Andreas Steffen | * (4,-4) 0.0000000722762205 |
531 | 3 | Andreas Steffen | * (4,-3) 0.0000013468006560 |
532 | 3 | Andreas Steffen | * (4,-2) 0.0000107799731278 |
533 | 3 | Andreas Steffen | * (4,-1) 0.0000373705554501 |
534 | 3 | Andreas Steffen | * (4, 0) 0.0000562502910635 |
535 | 3 | Andreas Steffen | * (4, 1) 0.0000373705554501 |
536 | 3 | Andreas Steffen | * (4, 2) 0.0000107799731278 |
537 | 3 | Andreas Steffen | * (4, 3) 0.0000013468006560 |
538 | 3 | Andreas Steffen | * (4, 4) 0.0000000722762205 |
539 | 3 | Andreas Steffen | * (4, 5) 0.0000000016517591 |
540 | 3 | Andreas Steffen | * (4, 6) 0.0000000000159504 |
541 | 3 | Andreas Steffen | * |
542 | 3 | Andreas Steffen | * (5,-6) 0.0000000000002368 |
543 | 3 | Andreas Steffen | * (5,-5) 0.0000000000245185 |
544 | 3 | Andreas Steffen | * (5,-4) 0.0000000010728573 |
545 | 3 | Andreas Steffen | * (5,-3) 0.0000000199917059 |
546 | 3 | Andreas Steffen | * (5,-2) 0.0000001600162962 |
547 | 3 | Andreas Steffen | * (5,-1) 0.0000005547228921 |
548 | 3 | Andreas Steffen | * (5, 0) 0.0000008349708417 |
549 | 3 | Andreas Steffen | * (5, 1) 0.0000005547228921 |
550 | 3 | Andreas Steffen | * (5, 2) 0.0000001600162962 |
551 | 3 | Andreas Steffen | * (5, 3) 0.0000000199917059 |
552 | 3 | Andreas Steffen | * (5, 4) 0.0000000010728573 |
553 | 3 | Andreas Steffen | * (5, 5) 0.0000000000245185 |
554 | 3 | Andreas Steffen | * (5, 6) 0.0000000000002368 |
555 | 3 | Andreas Steffen | * |
556 | 3 | Andreas Steffen | * (6,-6) 0.0000000000000012 |
557 | 3 | Andreas Steffen | * (6,-5) 0.0000000000001255 |
558 | 3 | Andreas Steffen | * (6,-4) 0.0000000000054920 |
559 | 3 | Andreas Steffen | * (6,-3) 0.0000000001023385 |
560 | 3 | Andreas Steffen | * (6,-2) 0.0000000008191307 |
561 | 3 | Andreas Steffen | * (6,-1) 0.0000000028396517 |
562 | 3 | Andreas Steffen | * (6, 0) 0.0000000042742538 |
563 | 3 | Andreas Steffen | * (6, 1) 0.0000000028396517 |
564 | 3 | Andreas Steffen | * (6, 2) 0.0000000008191307 |
565 | 3 | Andreas Steffen | * (6, 3) 0.0000000001023385 |
566 | 3 | Andreas Steffen | * (6, 4) 0.0000000000054920 |
567 | 3 | Andreas Steffen | * (6, 5) 0.0000000000001255 |
568 | 3 | Andreas Steffen | * (6, 6) 0.0000000000000012 |
569 | 3 | Andreas Steffen | * |
570 | 3 | Andreas Steffen | * p_sum 1.0000000000000011 |
571 | 3 | Andreas Steffen | * |
572 | 3 | Andreas Steffen | * entropy = 3.3640 bits/tuple (1722 bits) |
573 | 3 | Andreas Steffen | */ |
574 | 2 | Andreas Steffen | </pre> |
575 | 2 | Andreas Steffen | |
576 | 4 | Andreas Steffen | h3. Decoding Tree |
577 | 1 | Andreas Steffen | <pre> |
578 | 3 | Andreas Steffen | #include "bliss_huffman_code.h" |
579 | 1 | Andreas Steffen | |
580 | 3 | Andreas Steffen | static bliss_huffman_code_node_t nodes[] = { |
581 | 3 | Andreas Steffen | { 1, 160, -1 }, /* 0: */ |
582 | 3 | Andreas Steffen | { 2, 5, -1 }, /* 1: */ |
583 | 3 | Andreas Steffen | { 3, 4, -1 }, /* 2: */ |
584 | 3 | Andreas Steffen | { -1, -1, 7 }, /* 3: (0, 1) 3 bits */ |
585 | 3 | Andreas Steffen | { -1, -1, 5 }, /* 4: (0,-1) 3 bits */ |
586 | 3 | Andreas Steffen | { 6, 157, -1 }, /* 5: */ |
587 | 3 | Andreas Steffen | { 7, 156, -1 }, /* 6: */ |
588 | 3 | Andreas Steffen | { 8, 11, -1 }, /* 7: */ |
589 | 3 | Andreas Steffen | { 9, 10, -1 }, /* 8: */ |
590 | 3 | Andreas Steffen | { -1, -1, 17 }, /* 9: (1,-2) 6 bits */ |
591 | 3 | Andreas Steffen | { -1, -1, 32 }, /* 10: (2, 0) 6 bits */ |
592 | 3 | Andreas Steffen | { 12, 155, -1 }, /* 11: */ |
593 | 3 | Andreas Steffen | { 13, 18, -1 }, /* 12: */ |
594 | 3 | Andreas Steffen | { 14, 15, -1 }, /* 13: */ |
595 | 3 | Andreas Steffen | { -1, -1, 3 }, /* 14: (0,-3) 8 bits */ |
596 | 3 | Andreas Steffen | { 16, 17, -1 }, /* 15: */ |
597 | 3 | Andreas Steffen | { -1, -1, 22 }, /* 16: (1, 3) 9 bits */ |
598 | 3 | Andreas Steffen | { -1, -1, 16 }, /* 17: (1,-3) 9 bits */ |
599 | 3 | Andreas Steffen | { 19, 154, -1 }, /* 18: */ |
600 | 3 | Andreas Steffen | { 20, 23, -1 }, /* 19: */ |
601 | 3 | Andreas Steffen | { 21, 22, -1 }, /* 20: */ |
602 | 3 | Andreas Steffen | { -1, -1, 46 }, /* 21: (3, 1) 10 bits */ |
603 | 3 | Andreas Steffen | { -1, -1, 44 }, /* 22: (3,-1) 10 bits */ |
604 | 3 | Andreas Steffen | { 24, 151, -1 }, /* 23: */ |
605 | 3 | Andreas Steffen | { 25, 88, -1 }, /* 24: */ |
606 | 3 | Andreas Steffen | { 26, 57, -1 }, /* 25: */ |
607 | 3 | Andreas Steffen | { 27, 42, -1 }, /* 26: */ |
608 | 3 | Andreas Steffen | { 28, 35, -1 }, /* 27: */ |
609 | 3 | Andreas Steffen | { 29, 32, -1 }, /* 28: */ |
610 | 3 | Andreas Steffen | { 30, 31, -1 }, /* 29: */ |
611 | 3 | Andreas Steffen | { -1, -1, 2 }, /* 30: (0,-4) 16 bits */ |
612 | 3 | Andreas Steffen | { -1, -1, 23 }, /* 31: (1, 4) 16 bits */ |
613 | 3 | Andreas Steffen | { 33, 34, -1 }, /* 32: */ |
614 | 3 | Andreas Steffen | { -1, -1, 15 }, /* 33: (1,-4) 16 bits */ |
615 | 3 | Andreas Steffen | { -1, -1, 58 }, /* 34: (4, 0) 16 bits */ |
616 | 3 | Andreas Steffen | { 36, 39, -1 }, /* 35: */ |
617 | 3 | Andreas Steffen | { 37, 38, -1 }, /* 36: */ |
618 | 3 | Andreas Steffen | { -1, -1, 48 }, /* 37: (3, 3) 16 bits */ |
619 | 3 | Andreas Steffen | { -1, -1, 42 }, /* 38: (3,-3) 16 bits */ |
620 | 3 | Andreas Steffen | { 40, 41, -1 }, /* 39: */ |
621 | 3 | Andreas Steffen | { -1, -1, 59 }, /* 40: (4, 1) 16 bits */ |
622 | 3 | Andreas Steffen | { -1, -1, 57 }, /* 41: (4,-1) 16 bits */ |
623 | 3 | Andreas Steffen | { 43, 50, -1 }, /* 42: */ |
624 | 3 | Andreas Steffen | { 44, 47, -1 }, /* 43: */ |
625 | 3 | Andreas Steffen | { 45, 46, -1 }, /* 44: */ |
626 | 3 | Andreas Steffen | { -1, -1, 36 }, /* 45: (2, 4) 16 bits */ |
627 | 3 | Andreas Steffen | { -1, -1, 28 }, /* 46: (2,-4) 16 bits */ |
628 | 3 | Andreas Steffen | { 48, 49, -1 }, /* 47: */ |
629 | 3 | Andreas Steffen | { -1, -1, 60 }, /* 48: (4, 2) 16 bits */ |
630 | 3 | Andreas Steffen | { -1, -1, 56 }, /* 49: (4,-2) 16 bits */ |
631 | 3 | Andreas Steffen | { 51, 54, -1 }, /* 50: */ |
632 | 3 | Andreas Steffen | { 52, 53, -1 }, /* 51: */ |
633 | 3 | Andreas Steffen | { -1, -1, 11 }, /* 52: (0, 5) 16 bits */ |
634 | 3 | Andreas Steffen | { -1, -1, 1 }, /* 53: (0,-5) 16 bits */ |
635 | 3 | Andreas Steffen | { 55, 56, -1 }, /* 54: */ |
636 | 3 | Andreas Steffen | { -1, -1, 24 }, /* 55: (1, 5) 16 bits */ |
637 | 3 | Andreas Steffen | { -1, -1, 14 }, /* 56: (1,-5) 16 bits */ |
638 | 3 | Andreas Steffen | { 58, 73, -1 }, /* 57: */ |
639 | 3 | Andreas Steffen | { 59, 66, -1 }, /* 58: */ |
640 | 3 | Andreas Steffen | { 60, 63, -1 }, /* 59: */ |
641 | 3 | Andreas Steffen | { 61, 62, -1 }, /* 60: */ |
642 | 3 | Andreas Steffen | { -1, -1, 49 }, /* 61: (3, 4) 16 bits */ |
643 | 3 | Andreas Steffen | { -1, -1, 41 }, /* 62: (3,-4) 16 bits */ |
644 | 3 | Andreas Steffen | { 64, 65, -1 }, /* 63: */ |
645 | 3 | Andreas Steffen | { -1, -1, 61 }, /* 64: (4, 3) 16 bits */ |
646 | 3 | Andreas Steffen | { -1, -1, 55 }, /* 65: (4,-3) 16 bits */ |
647 | 3 | Andreas Steffen | { 67, 70, -1 }, /* 66: */ |
648 | 3 | Andreas Steffen | { 68, 69, -1 }, /* 67: */ |
649 | 3 | Andreas Steffen | { -1, -1, 71 }, /* 68: (5, 0) 16 bits */ |
650 | 3 | Andreas Steffen | { -1, -1, 37 }, /* 69: (2, 5) 16 bits */ |
651 | 3 | Andreas Steffen | { 71, 72, -1 }, /* 70: */ |
652 | 3 | Andreas Steffen | { -1, -1, 27 }, /* 71: (2,-5) 16 bits */ |
653 | 3 | Andreas Steffen | { -1, -1, 72 }, /* 72: (5, 1) 16 bits */ |
654 | 3 | Andreas Steffen | { 74, 81, -1 }, /* 73: */ |
655 | 3 | Andreas Steffen | { 75, 78, -1 }, /* 74: */ |
656 | 3 | Andreas Steffen | { 76, 77, -1 }, /* 75: */ |
657 | 3 | Andreas Steffen | { -1, -1, 70 }, /* 76: (5,-1) 16 bits */ |
658 | 3 | Andreas Steffen | { -1, -1, 73 }, /* 77: (5, 2) 16 bits */ |
659 | 3 | Andreas Steffen | { 79, 80, -1 }, /* 78: */ |
660 | 3 | Andreas Steffen | { -1, -1, 69 }, /* 79: (5,-2) 16 bits */ |
661 | 3 | Andreas Steffen | { -1, -1, 62 }, /* 80: (4, 4) 16 bits */ |
662 | 3 | Andreas Steffen | { 82, 85, -1 }, /* 81: */ |
663 | 3 | Andreas Steffen | { 83, 84, -1 }, /* 82: */ |
664 | 3 | Andreas Steffen | { -1, -1, 54 }, /* 83: (4,-4) 16 bits */ |
665 | 3 | Andreas Steffen | { -1, -1, 12 }, /* 84: (0, 6) 16 bits */ |
666 | 3 | Andreas Steffen | { 86, 87, -1 }, /* 85: */ |
667 | 3 | Andreas Steffen | { -1, -1, 0 }, /* 86: (0,-6) 16 bits */ |
668 | 3 | Andreas Steffen | { -1, -1, 50 }, /* 87: (3, 5) 16 bits */ |
669 | 3 | Andreas Steffen | { 89, 120, -1 }, /* 88: */ |
670 | 3 | Andreas Steffen | { 90, 105, -1 }, /* 89: */ |
671 | 3 | Andreas Steffen | { 91, 98, -1 }, /* 90: */ |
672 | 3 | Andreas Steffen | { 92, 95, -1 }, /* 91: */ |
673 | 3 | Andreas Steffen | { 93, 94, -1 }, /* 92: */ |
674 | 3 | Andreas Steffen | { -1, -1, 40 }, /* 93: (3,-5) 16 bits */ |
675 | 3 | Andreas Steffen | { -1, -1, 25 }, /* 94: (1, 6) 16 bits */ |
676 | 3 | Andreas Steffen | { 96, 97, -1 }, /* 95: */ |
677 | 3 | Andreas Steffen | { -1, -1, 13 }, /* 96: (1,-6) 16 bits */ |
678 | 3 | Andreas Steffen | { -1, -1, 74 }, /* 97: (5, 3) 16 bits */ |
679 | 3 | Andreas Steffen | { 99, 102, -1 }, /* 98: */ |
680 | 3 | Andreas Steffen | { 100, 101, -1 }, /* 99: */ |
681 | 3 | Andreas Steffen | { -1, -1, 68 }, /* 100: (5,-3) 16 bits */ |
682 | 3 | Andreas Steffen | { -1, -1, 38 }, /* 101: (2, 6) 16 bits */ |
683 | 3 | Andreas Steffen | { 103, 104, -1 }, /* 102: */ |
684 | 3 | Andreas Steffen | { -1, -1, 26 }, /* 103: (2,-6) 16 bits */ |
685 | 3 | Andreas Steffen | { -1, -1, 84 }, /* 104: (6, 0) 16 bits */ |
686 | 3 | Andreas Steffen | { 106, 113, -1 }, /* 105: */ |
687 | 3 | Andreas Steffen | { 107, 110, -1 }, /* 106: */ |
688 | 3 | Andreas Steffen | { 108, 109, -1 }, /* 107: */ |
689 | 3 | Andreas Steffen | { -1, -1, 85 }, /* 108: (6, 1) 16 bits */ |
690 | 3 | Andreas Steffen | { -1, -1, 83 }, /* 109: (6,-1) 16 bits */ |
691 | 3 | Andreas Steffen | { 111, 112, -1 }, /* 110: */ |
692 | 3 | Andreas Steffen | { -1, -1, 63 }, /* 111: (4, 5) 16 bits */ |
693 | 3 | Andreas Steffen | { -1, -1, 53 }, /* 112: (4,-5) 16 bits */ |
694 | 3 | Andreas Steffen | { 114, 117, -1 }, /* 113: */ |
695 | 3 | Andreas Steffen | { 115, 116, -1 }, /* 114: */ |
696 | 3 | Andreas Steffen | { -1, -1, 75 }, /* 115: (5, 4) 16 bits */ |
697 | 3 | Andreas Steffen | { -1, -1, 67 }, /* 116: (5,-4) 16 bits */ |
698 | 3 | Andreas Steffen | { 118, 119, -1 }, /* 117: */ |
699 | 3 | Andreas Steffen | { -1, -1, 86 }, /* 118: (6, 2) 16 bits */ |
700 | 3 | Andreas Steffen | { -1, -1, 82 }, /* 119: (6,-2) 16 bits */ |
701 | 3 | Andreas Steffen | { 121, 136, -1 }, /* 120: */ |
702 | 3 | Andreas Steffen | { 122, 129, -1 }, /* 121: */ |
703 | 3 | Andreas Steffen | { 123, 126, -1 }, /* 122: */ |
704 | 3 | Andreas Steffen | { 124, 125, -1 }, /* 123: */ |
705 | 3 | Andreas Steffen | { -1, -1, 51 }, /* 124: (3, 6) 16 bits */ |
706 | 3 | Andreas Steffen | { -1, -1, 39 }, /* 125: (3,-6) 16 bits */ |
707 | 3 | Andreas Steffen | { 127, 128, -1 }, /* 126: */ |
708 | 3 | Andreas Steffen | { -1, -1, 87 }, /* 127: (6, 3) 16 bits */ |
709 | 3 | Andreas Steffen | { -1, -1, 81 }, /* 128: (6,-3) 16 bits */ |
710 | 3 | Andreas Steffen | { 130, 133, -1 }, /* 129: */ |
711 | 3 | Andreas Steffen | { 131, 132, -1 }, /* 130: */ |
712 | 3 | Andreas Steffen | { -1, -1, 76 }, /* 131: (5, 5) 16 bits */ |
713 | 3 | Andreas Steffen | { -1, -1, 66 }, /* 132: (5,-5) 16 bits */ |
714 | 3 | Andreas Steffen | { 134, 135, -1 }, /* 133: */ |
715 | 3 | Andreas Steffen | { -1, -1, 64 }, /* 134: (4, 6) 16 bits */ |
716 | 3 | Andreas Steffen | { -1, -1, 52 }, /* 135: (4,-6) 16 bits */ |
717 | 3 | Andreas Steffen | { 137, 144, -1 }, /* 136: */ |
718 | 3 | Andreas Steffen | { 138, 141, -1 }, /* 137: */ |
719 | 3 | Andreas Steffen | { 139, 140, -1 }, /* 138: */ |
720 | 3 | Andreas Steffen | { -1, -1, 88 }, /* 139: (6, 4) 16 bits */ |
721 | 3 | Andreas Steffen | { -1, -1, 80 }, /* 140: (6,-4) 16 bits */ |
722 | 3 | Andreas Steffen | { 142, 143, -1 }, /* 141: */ |
723 | 3 | Andreas Steffen | { -1, -1, 77 }, /* 142: (5, 6) 16 bits */ |
724 | 3 | Andreas Steffen | { -1, -1, 65 }, /* 143: (5,-6) 16 bits */ |
725 | 3 | Andreas Steffen | { 145, 148, -1 }, /* 144: */ |
726 | 3 | Andreas Steffen | { 146, 147, -1 }, /* 145: */ |
727 | 3 | Andreas Steffen | { -1, -1, 89 }, /* 146: (6, 5) 16 bits */ |
728 | 3 | Andreas Steffen | { -1, -1, 79 }, /* 147: (6,-5) 16 bits */ |
729 | 3 | Andreas Steffen | { 149, 150, -1 }, /* 148: */ |
730 | 3 | Andreas Steffen | { -1, -1, 90 }, /* 149: (6, 6) 16 bits */ |
731 | 3 | Andreas Steffen | { -1, -1, 78 }, /* 150: (6,-6) 16 bits */ |
732 | 3 | Andreas Steffen | { 152, 153, -1 }, /* 151: */ |
733 | 3 | Andreas Steffen | { -1, -1, 29 }, /* 152: (2,-3) 11 bits */ |
734 | 3 | Andreas Steffen | { -1, -1, 47 }, /* 153: (3, 2) 11 bits */ |
735 | 3 | Andreas Steffen | { -1, -1, 34 }, /* 154: (2, 2) 8 bits */ |
736 | 3 | Andreas Steffen | { -1, -1, 33 }, /* 155: (2, 1) 6 bits */ |
737 | 3 | Andreas Steffen | { -1, -1, 20 }, /* 156: (1, 1) 4 bits */ |
738 | 3 | Andreas Steffen | { 158, 159, -1 }, /* 157: */ |
739 | 3 | Andreas Steffen | { -1, -1, 18 }, /* 158: (1,-1) 4 bits */ |
740 | 3 | Andreas Steffen | { -1, -1, 8 }, /* 159: (0, 2) 4 bits */ |
741 | 3 | Andreas Steffen | { 161, 162, -1 }, /* 160: */ |
742 | 3 | Andreas Steffen | { -1, -1, 6 }, /* 161: (0, 0) 2 bits */ |
743 | 3 | Andreas Steffen | { 163, 164, -1 }, /* 162: */ |
744 | 3 | Andreas Steffen | { -1, -1, 19 }, /* 163: (1, 0) 3 bits */ |
745 | 3 | Andreas Steffen | { 165, 166, -1 }, /* 164: */ |
746 | 3 | Andreas Steffen | { -1, -1, 4 }, /* 165: (0,-2) 4 bits */ |
747 | 3 | Andreas Steffen | { 167, 180, -1 }, /* 166: */ |
748 | 3 | Andreas Steffen | { 168, 169, -1 }, /* 167: */ |
749 | 3 | Andreas Steffen | { -1, -1, 31 }, /* 168: (2,-1) 6 bits */ |
750 | 3 | Andreas Steffen | { 170, 179, -1 }, /* 169: */ |
751 | 3 | Andreas Steffen | { 171, 172, -1 }, /* 170: */ |
752 | 3 | Andreas Steffen | { -1, -1, 30 }, /* 171: (2,-2) 8 bits */ |
753 | 3 | Andreas Steffen | { 173, 174, -1 }, /* 172: */ |
754 | 3 | Andreas Steffen | { -1, -1, 45 }, /* 173: (3, 0) 9 bits */ |
755 | 3 | Andreas Steffen | { 175, 178, -1 }, /* 174: */ |
756 | 3 | Andreas Steffen | { 176, 177, -1 }, /* 175: */ |
757 | 3 | Andreas Steffen | { -1, -1, 43 }, /* 176: (3,-2) 11 bits */ |
758 | 3 | Andreas Steffen | { -1, -1, 10 }, /* 177: (0, 4) 11 bits */ |
759 | 3 | Andreas Steffen | { -1, -1, 35 }, /* 178: (2, 3) 10 bits */ |
760 | 3 | Andreas Steffen | { -1, -1, 9 }, /* 179: (0, 3) 7 bits */ |
761 | 3 | Andreas Steffen | { -1, -1, 21 }, /* 180: (1, 2) 5 bits */ |
762 | 3 | Andreas Steffen | }; |
763 | 2 | Andreas Steffen | </pre> |
764 | 2 | Andreas Steffen | |
765 | 4 | Andreas Steffen | h3. Encoding Table |
766 | 1 | Andreas Steffen | <pre> |
767 | 3 | Andreas Steffen | static bliss_huffman_code_tuple_t tuples[] = { |
768 | 3 | Andreas Steffen | { 19102, 16 }, /* 0: (0,-6) 0100101010011110 */ |
769 | 3 | Andreas Steffen | { 19085, 16 }, /* 1: (0,-5) 0100101010001101 */ |
770 | 3 | Andreas Steffen | { 19072, 16 }, /* 2: (0,-4) 0100101010000000 */ |
771 | 3 | Andreas Steffen | { 72, 8 }, /* 3: (0,-3) 01001000 */ |
772 | 3 | Andreas Steffen | { 14, 4 }, /* 4: (0,-2) 1110 */ |
773 | 3 | Andreas Steffen | { 1, 3 }, /* 5: (0,-1) 001 */ |
774 | 3 | Andreas Steffen | { 2, 2 }, /* 6: (0, 0) 10 */ |
775 | 3 | Andreas Steffen | { 0, 3 }, /* 7: (0, 1) 000 */ |
776 | 3 | Andreas Steffen | { 7, 4 }, /* 8: (0, 2) 0111 */ |
777 | 3 | Andreas Steffen | { 123, 7 }, /* 9: (0, 3) 1111011 */ |
778 | 3 | Andreas Steffen | { 1965, 11 }, /* 10: (0, 4) 11110101101 */ |
779 | 3 | Andreas Steffen | { 19084, 16 }, /* 11: (0, 5) 0100101010001100 */ |
780 | 3 | Andreas Steffen | { 19101, 16 }, /* 12: (0, 6) 0100101010011101 */ |
781 | 1 | Andreas Steffen | |
782 | 3 | Andreas Steffen | { 19106, 16 }, /* 13: (1,-6) 0100101010100010 */ |
783 | 3 | Andreas Steffen | { 19087, 16 }, /* 14: (1,-5) 0100101010001111 */ |
784 | 3 | Andreas Steffen | { 19074, 16 }, /* 15: (1,-4) 0100101010000010 */ |
785 | 3 | Andreas Steffen | { 147, 9 }, /* 16: (1,-3) 010010011 */ |
786 | 3 | Andreas Steffen | { 16, 6 }, /* 17: (1,-2) 010000 */ |
787 | 3 | Andreas Steffen | { 6, 4 }, /* 18: (1,-1) 0110 */ |
788 | 3 | Andreas Steffen | { 6, 3 }, /* 19: (1, 0) 110 */ |
789 | 3 | Andreas Steffen | { 5, 4 }, /* 20: (1, 1) 0101 */ |
790 | 3 | Andreas Steffen | { 31, 5 }, /* 21: (1, 2) 11111 */ |
791 | 3 | Andreas Steffen | { 146, 9 }, /* 22: (1, 3) 010010010 */ |
792 | 3 | Andreas Steffen | { 19073, 16 }, /* 23: (1, 4) 0100101010000001 */ |
793 | 3 | Andreas Steffen | { 19086, 16 }, /* 24: (1, 5) 0100101010001110 */ |
794 | 3 | Andreas Steffen | { 19105, 16 }, /* 25: (1, 6) 0100101010100001 */ |
795 | 3 | Andreas Steffen | |
796 | 3 | Andreas Steffen | { 19110, 16 }, /* 26: (2,-6) 0100101010100110 */ |
797 | 3 | Andreas Steffen | { 19094, 16 }, /* 27: (2,-5) 0100101010010110 */ |
798 | 3 | Andreas Steffen | { 19081, 16 }, /* 28: (2,-4) 0100101010001001 */ |
799 | 3 | Andreas Steffen | { 598, 11 }, /* 29: (2,-3) 01001010110 */ |
800 | 3 | Andreas Steffen | { 244, 8 }, /* 30: (2,-2) 11110100 */ |
801 | 3 | Andreas Steffen | { 60, 6 }, /* 31: (2,-1) 111100 */ |
802 | 3 | Andreas Steffen | { 17, 6 }, /* 32: (2, 0) 010001 */ |
803 | 3 | Andreas Steffen | { 19, 6 }, /* 33: (2, 1) 010011 */ |
804 | 3 | Andreas Steffen | { 75, 8 }, /* 34: (2, 2) 01001011 */ |
805 | 3 | Andreas Steffen | { 983, 10 }, /* 35: (2, 3) 1111010111 */ |
806 | 3 | Andreas Steffen | { 19080, 16 }, /* 36: (2, 4) 0100101010001000 */ |
807 | 3 | Andreas Steffen | { 19093, 16 }, /* 37: (2, 5) 0100101010010101 */ |
808 | 3 | Andreas Steffen | { 19109, 16 }, /* 38: (2, 6) 0100101010100101 */ |
809 | 3 | Andreas Steffen | |
810 | 3 | Andreas Steffen | { 19121, 16 }, /* 39: (3,-6) 0100101010110001 */ |
811 | 3 | Andreas Steffen | { 19104, 16 }, /* 40: (3,-5) 0100101010100000 */ |
812 | 3 | Andreas Steffen | { 19089, 16 }, /* 41: (3,-4) 0100101010010001 */ |
813 | 3 | Andreas Steffen | { 19077, 16 }, /* 42: (3,-3) 0100101010000101 */ |
814 | 3 | Andreas Steffen | { 1964, 11 }, /* 43: (3,-2) 11110101100 */ |
815 | 3 | Andreas Steffen | { 297, 10 }, /* 44: (3,-1) 0100101001 */ |
816 | 3 | Andreas Steffen | { 490, 9 }, /* 45: (3, 0) 111101010 */ |
817 | 3 | Andreas Steffen | { 296, 10 }, /* 46: (3, 1) 0100101000 */ |
818 | 3 | Andreas Steffen | { 599, 11 }, /* 47: (3, 2) 01001010111 */ |
819 | 3 | Andreas Steffen | { 19076, 16 }, /* 48: (3, 3) 0100101010000100 */ |
820 | 3 | Andreas Steffen | { 19088, 16 }, /* 49: (3, 4) 0100101010010000 */ |
821 | 3 | Andreas Steffen | { 19103, 16 }, /* 50: (3, 5) 0100101010011111 */ |
822 | 3 | Andreas Steffen | { 19120, 16 }, /* 51: (3, 6) 0100101010110000 */ |
823 | 3 | Andreas Steffen | |
824 | 3 | Andreas Steffen | { 19127, 16 }, /* 52: (4,-6) 0100101010110111 */ |
825 | 3 | Andreas Steffen | { 19115, 16 }, /* 53: (4,-5) 0100101010101011 */ |
826 | 3 | Andreas Steffen | { 19100, 16 }, /* 54: (4,-4) 0100101010011100 */ |
827 | 3 | Andreas Steffen | { 19091, 16 }, /* 55: (4,-3) 0100101010010011 */ |
828 | 3 | Andreas Steffen | { 19083, 16 }, /* 56: (4,-2) 0100101010001011 */ |
829 | 3 | Andreas Steffen | { 19079, 16 }, /* 57: (4,-1) 0100101010000111 */ |
830 | 3 | Andreas Steffen | { 19075, 16 }, /* 58: (4, 0) 0100101010000011 */ |
831 | 3 | Andreas Steffen | { 19078, 16 }, /* 59: (4, 1) 0100101010000110 */ |
832 | 3 | Andreas Steffen | { 19082, 16 }, /* 60: (4, 2) 0100101010001010 */ |
833 | 3 | Andreas Steffen | { 19090, 16 }, /* 61: (4, 3) 0100101010010010 */ |
834 | 3 | Andreas Steffen | { 19099, 16 }, /* 62: (4, 4) 0100101010011011 */ |
835 | 3 | Andreas Steffen | { 19114, 16 }, /* 63: (4, 5) 0100101010101010 */ |
836 | 3 | Andreas Steffen | { 19126, 16 }, /* 64: (4, 6) 0100101010110110 */ |
837 | 3 | Andreas Steffen | |
838 | 3 | Andreas Steffen | { 19131, 16 }, /* 65: (5,-6) 0100101010111011 */ |
839 | 3 | Andreas Steffen | { 19125, 16 }, /* 66: (5,-5) 0100101010110101 */ |
840 | 3 | Andreas Steffen | { 19117, 16 }, /* 67: (5,-4) 0100101010101101 */ |
841 | 3 | Andreas Steffen | { 19108, 16 }, /* 68: (5,-3) 0100101010100100 */ |
842 | 3 | Andreas Steffen | { 19098, 16 }, /* 69: (5,-2) 0100101010011010 */ |
843 | 3 | Andreas Steffen | { 19096, 16 }, /* 70: (5,-1) 0100101010011000 */ |
844 | 3 | Andreas Steffen | { 19092, 16 }, /* 71: (5, 0) 0100101010010100 */ |
845 | 3 | Andreas Steffen | { 19095, 16 }, /* 72: (5, 1) 0100101010010111 */ |
846 | 3 | Andreas Steffen | { 19097, 16 }, /* 73: (5, 2) 0100101010011001 */ |
847 | 3 | Andreas Steffen | { 19107, 16 }, /* 74: (5, 3) 0100101010100011 */ |
848 | 3 | Andreas Steffen | { 19116, 16 }, /* 75: (5, 4) 0100101010101100 */ |
849 | 3 | Andreas Steffen | { 19124, 16 }, /* 76: (5, 5) 0100101010110100 */ |
850 | 3 | Andreas Steffen | { 19130, 16 }, /* 77: (5, 6) 0100101010111010 */ |
851 | 3 | Andreas Steffen | |
852 | 3 | Andreas Steffen | { 19135, 16 }, /* 78: (6,-6) 0100101010111111 */ |
853 | 3 | Andreas Steffen | { 19133, 16 }, /* 79: (6,-5) 0100101010111101 */ |
854 | 3 | Andreas Steffen | { 19129, 16 }, /* 80: (6,-4) 0100101010111001 */ |
855 | 3 | Andreas Steffen | { 19123, 16 }, /* 81: (6,-3) 0100101010110011 */ |
856 | 3 | Andreas Steffen | { 19119, 16 }, /* 82: (6,-2) 0100101010101111 */ |
857 | 3 | Andreas Steffen | { 19113, 16 }, /* 83: (6,-1) 0100101010101001 */ |
858 | 3 | Andreas Steffen | { 19111, 16 }, /* 84: (6, 0) 0100101010100111 */ |
859 | 3 | Andreas Steffen | { 19112, 16 }, /* 85: (6, 1) 0100101010101000 */ |
860 | 3 | Andreas Steffen | { 19118, 16 }, /* 86: (6, 2) 0100101010101110 */ |
861 | 3 | Andreas Steffen | { 19122, 16 }, /* 87: (6, 3) 0100101010110010 */ |
862 | 3 | Andreas Steffen | { 19128, 16 }, /* 88: (6, 4) 0100101010111000 */ |
863 | 3 | Andreas Steffen | { 19132, 16 }, /* 89: (6, 5) 0100101010111100 */ |
864 | 3 | Andreas Steffen | { 19134, 16 }, /* 90: (6, 6) 0100101010111110 */ |
865 | 3 | Andreas Steffen | }; |
866 | 3 | Andreas Steffen | |
867 | 3 | Andreas Steffen | /* code_length = 3.3967 bits/tuple (1740 bits) */ |
868 | 2 | Andreas Steffen | </pre> |
869 | 2 | Andreas Steffen | |
870 | 4 | Andreas Steffen | h3. Parameter Set |
871 | 1 | Andreas Steffen | <pre> |
872 | 3 | Andreas Steffen | bliss_huffman_code_t bliss_huffman_code_4 = { |
873 | 3 | Andreas Steffen | .n_z1 = 7, |
874 | 3 | Andreas Steffen | .n_z2 = 7, |
875 | 3 | Andreas Steffen | .tuples = tuples, |
876 | 3 | Andreas Steffen | .nodes = nodes |
877 | 3 | Andreas Steffen | }; |
878 | 1 | Andreas Steffen | </pre> |