DGtal  1.2.0
Bits.cpp
1 
30 #include "DGtal/base/Bits.h"
32 
33 #include <iostream>
34 
35 
37 // class Bits
39 
43 namespace DGtal
44 {
45  // Lookup tables for find and count operations.
51  0, /* 0 */ 1, /* 1 */ 1, /* 2 */ 2, /* 3 */ 1, /* 4 */
52  2, /* 5 */ 2, /* 6 */ 3, /* 7 */ 1, /* 8 */ 2, /* 9 */
53  2, /* 10 */ 3, /* 11 */ 2, /* 12 */ 3, /* 13 */ 3, /* 14 */
54  4, /* 15 */ 1, /* 16 */ 2, /* 17 */ 2, /* 18 */ 3, /* 19 */
55  2, /* 20 */ 3, /* 21 */ 3, /* 22 */ 4, /* 23 */ 2, /* 24 */
56  3, /* 25 */ 3, /* 26 */ 4, /* 27 */ 3, /* 28 */ 4, /* 29 */
57  4, /* 30 */ 5, /* 31 */ 1, /* 32 */ 2, /* 33 */ 2, /* 34 */
58  3, /* 35 */ 2, /* 36 */ 3, /* 37 */ 3, /* 38 */ 4, /* 39 */
59  2, /* 40 */ 3, /* 41 */ 3, /* 42 */ 4, /* 43 */ 3, /* 44 */
60  4, /* 45 */ 4, /* 46 */ 5, /* 47 */ 2, /* 48 */ 3, /* 49 */
61  3, /* 50 */ 4, /* 51 */ 3, /* 52 */ 4, /* 53 */ 4, /* 54 */
62  5, /* 55 */ 3, /* 56 */ 4, /* 57 */ 4, /* 58 */ 5, /* 59 */
63  4, /* 60 */ 5, /* 61 */ 5, /* 62 */ 6, /* 63 */ 1, /* 64 */
64  2, /* 65 */ 2, /* 66 */ 3, /* 67 */ 2, /* 68 */ 3, /* 69 */
65  3, /* 70 */ 4, /* 71 */ 2, /* 72 */ 3, /* 73 */ 3, /* 74 */
66  4, /* 75 */ 3, /* 76 */ 4, /* 77 */ 4, /* 78 */ 5, /* 79 */
67  2, /* 80 */ 3, /* 81 */ 3, /* 82 */ 4, /* 83 */ 3, /* 84 */
68  4, /* 85 */ 4, /* 86 */ 5, /* 87 */ 3, /* 88 */ 4, /* 89 */
69  4, /* 90 */ 5, /* 91 */ 4, /* 92 */ 5, /* 93 */ 5, /* 94 */
70  6, /* 95 */ 2, /* 96 */ 3, /* 97 */ 3, /* 98 */ 4, /* 99 */
71  3, /* 100 */ 4, /* 101 */ 4, /* 102 */ 5, /* 103 */ 3, /* 104 */
72  4, /* 105 */ 4, /* 106 */ 5, /* 107 */ 4, /* 108 */ 5, /* 109 */
73  5, /* 110 */ 6, /* 111 */ 3, /* 112 */ 4, /* 113 */ 4, /* 114 */
74  5, /* 115 */ 4, /* 116 */ 5, /* 117 */ 5, /* 118 */ 6, /* 119 */
75  4, /* 120 */ 5, /* 121 */ 5, /* 122 */ 6, /* 123 */ 5, /* 124 */
76  6, /* 125 */ 6, /* 126 */ 7, /* 127 */ 1, /* 128 */ 2, /* 129 */
77  2, /* 130 */ 3, /* 131 */ 2, /* 132 */ 3, /* 133 */ 3, /* 134 */
78  4, /* 135 */ 2, /* 136 */ 3, /* 137 */ 3, /* 138 */ 4, /* 139 */
79  3, /* 140 */ 4, /* 141 */ 4, /* 142 */ 5, /* 143 */ 2, /* 144 */
80  3, /* 145 */ 3, /* 146 */ 4, /* 147 */ 3, /* 148 */ 4, /* 149 */
81  4, /* 150 */ 5, /* 151 */ 3, /* 152 */ 4, /* 153 */ 4, /* 154 */
82  5, /* 155 */ 4, /* 156 */ 5, /* 157 */ 5, /* 158 */ 6, /* 159 */
83  2, /* 160 */ 3, /* 161 */ 3, /* 162 */ 4, /* 163 */ 3, /* 164 */
84  4, /* 165 */ 4, /* 166 */ 5, /* 167 */ 3, /* 168 */ 4, /* 169 */
85  4, /* 170 */ 5, /* 171 */ 4, /* 172 */ 5, /* 173 */ 5, /* 174 */
86  6, /* 175 */ 3, /* 176 */ 4, /* 177 */ 4, /* 178 */ 5, /* 179 */
87  4, /* 180 */ 5, /* 181 */ 5, /* 182 */ 6, /* 183 */ 4, /* 184 */
88  5, /* 185 */ 5, /* 186 */ 6, /* 187 */ 5, /* 188 */ 6, /* 189 */
89  6, /* 190 */ 7, /* 191 */ 2, /* 192 */ 3, /* 193 */ 3, /* 194 */
90  4, /* 195 */ 3, /* 196 */ 4, /* 197 */ 4, /* 198 */ 5, /* 199 */
91  3, /* 200 */ 4, /* 201 */ 4, /* 202 */ 5, /* 203 */ 4, /* 204 */
92  5, /* 205 */ 5, /* 206 */ 6, /* 207 */ 3, /* 208 */ 4, /* 209 */
93  4, /* 210 */ 5, /* 211 */ 4, /* 212 */ 5, /* 213 */ 5, /* 214 */
94  6, /* 215 */ 4, /* 216 */ 5, /* 217 */ 5, /* 218 */ 6, /* 219 */
95  5, /* 220 */ 6, /* 221 */ 6, /* 222 */ 7, /* 223 */ 3, /* 224 */
96  4, /* 225 */ 4, /* 226 */ 5, /* 227 */ 4, /* 228 */ 5, /* 229 */
97  5, /* 230 */ 6, /* 231 */ 4, /* 232 */ 5, /* 233 */ 5, /* 234 */
98  6, /* 235 */ 5, /* 236 */ 6, /* 237 */ 6, /* 238 */ 7, /* 239 */
99  4, /* 240 */ 5, /* 241 */ 5, /* 242 */ 6, /* 243 */ 5, /* 244 */
100  6, /* 245 */ 6, /* 246 */ 7, /* 247 */ 5, /* 248 */ 6, /* 249 */
101  6, /* 250 */ 7, /* 251 */ 6, /* 252 */ 7, /* 253 */ 7, /* 254 */
102  8 /* 255 */
103  }; // end _Bit_count
104 
111  const DGtal::uint8_t Bits::myLSB[] = {
112  0, /* 0 */ 0, /* 1 */ 1, /* 2 */ 0, /* 3 */ 2, /* 4 */
113  0, /* 5 */ 1, /* 6 */ 0, /* 7 */ 3, /* 8 */ 0, /* 9 */
114  1, /* 10 */ 0, /* 11 */ 2, /* 12 */ 0, /* 13 */ 1, /* 14 */
115  0, /* 15 */ 4, /* 16 */ 0, /* 17 */ 1, /* 18 */ 0, /* 19 */
116  2, /* 20 */ 0, /* 21 */ 1, /* 22 */ 0, /* 23 */ 3, /* 24 */
117  0, /* 25 */ 1, /* 26 */ 0, /* 27 */ 2, /* 28 */ 0, /* 29 */
118  1, /* 30 */ 0, /* 31 */ 5, /* 32 */ 0, /* 33 */ 1, /* 34 */
119  0, /* 35 */ 2, /* 36 */ 0, /* 37 */ 1, /* 38 */ 0, /* 39 */
120  3, /* 40 */ 0, /* 41 */ 1, /* 42 */ 0, /* 43 */ 2, /* 44 */
121  0, /* 45 */ 1, /* 46 */ 0, /* 47 */ 4, /* 48 */ 0, /* 49 */
122  1, /* 50 */ 0, /* 51 */ 2, /* 52 */ 0, /* 53 */ 1, /* 54 */
123  0, /* 55 */ 3, /* 56 */ 0, /* 57 */ 1, /* 58 */ 0, /* 59 */
124  2, /* 60 */ 0, /* 61 */ 1, /* 62 */ 0, /* 63 */ 6, /* 64 */
125  0, /* 65 */ 1, /* 66 */ 0, /* 67 */ 2, /* 68 */ 0, /* 69 */
126  1, /* 70 */ 0, /* 71 */ 3, /* 72 */ 0, /* 73 */ 1, /* 74 */
127  0, /* 75 */ 2, /* 76 */ 0, /* 77 */ 1, /* 78 */ 0, /* 79 */
128  4, /* 80 */ 0, /* 81 */ 1, /* 82 */ 0, /* 83 */ 2, /* 84 */
129  0, /* 85 */ 1, /* 86 */ 0, /* 87 */ 3, /* 88 */ 0, /* 89 */
130  1, /* 90 */ 0, /* 91 */ 2, /* 92 */ 0, /* 93 */ 1, /* 94 */
131  0, /* 95 */ 5, /* 96 */ 0, /* 97 */ 1, /* 98 */ 0, /* 99 */
132  2, /* 100 */ 0, /* 101 */ 1, /* 102 */ 0, /* 103 */ 3, /* 104 */
133  0, /* 105 */ 1, /* 106 */ 0, /* 107 */ 2, /* 108 */ 0, /* 109 */
134  1, /* 110 */ 0, /* 111 */ 4, /* 112 */ 0, /* 113 */ 1, /* 114 */
135  0, /* 115 */ 2, /* 116 */ 0, /* 117 */ 1, /* 118 */ 0, /* 119 */
136  3, /* 120 */ 0, /* 121 */ 1, /* 122 */ 0, /* 123 */ 2, /* 124 */
137  0, /* 125 */ 1, /* 126 */ 0, /* 127 */ 7, /* 128 */ 0, /* 129 */
138  1, /* 130 */ 0, /* 131 */ 2, /* 132 */ 0, /* 133 */ 1, /* 134 */
139  0, /* 135 */ 3, /* 136 */ 0, /* 137 */ 1, /* 138 */ 0, /* 139 */
140  2, /* 140 */ 0, /* 141 */ 1, /* 142 */ 0, /* 143 */ 4, /* 144 */
141  0, /* 145 */ 1, /* 146 */ 0, /* 147 */ 2, /* 148 */ 0, /* 149 */
142  1, /* 150 */ 0, /* 151 */ 3, /* 152 */ 0, /* 153 */ 1, /* 154 */
143  0, /* 155 */ 2, /* 156 */ 0, /* 157 */ 1, /* 158 */ 0, /* 159 */
144  5, /* 160 */ 0, /* 161 */ 1, /* 162 */ 0, /* 163 */ 2, /* 164 */
145  0, /* 165 */ 1, /* 166 */ 0, /* 167 */ 3, /* 168 */ 0, /* 169 */
146  1, /* 170 */ 0, /* 171 */ 2, /* 172 */ 0, /* 173 */ 1, /* 174 */
147  0, /* 175 */ 4, /* 176 */ 0, /* 177 */ 1, /* 178 */ 0, /* 179 */
148  2, /* 180 */ 0, /* 181 */ 1, /* 182 */ 0, /* 183 */ 3, /* 184 */
149  0, /* 185 */ 1, /* 186 */ 0, /* 187 */ 2, /* 188 */ 0, /* 189 */
150  1, /* 190 */ 0, /* 191 */ 6, /* 192 */ 0, /* 193 */ 1, /* 194 */
151  0, /* 195 */ 2, /* 196 */ 0, /* 197 */ 1, /* 198 */ 0, /* 199 */
152  3, /* 200 */ 0, /* 201 */ 1, /* 202 */ 0, /* 203 */ 2, /* 204 */
153  0, /* 205 */ 1, /* 206 */ 0, /* 207 */ 4, /* 208 */ 0, /* 209 */
154  1, /* 210 */ 0, /* 211 */ 2, /* 212 */ 0, /* 213 */ 1, /* 214 */
155  0, /* 215 */ 3, /* 216 */ 0, /* 217 */ 1, /* 218 */ 0, /* 219 */
156  2, /* 220 */ 0, /* 221 */ 1, /* 222 */ 0, /* 223 */ 5, /* 224 */
157  0, /* 225 */ 1, /* 226 */ 0, /* 227 */ 2, /* 228 */ 0, /* 229 */
158  1, /* 230 */ 0, /* 231 */ 3, /* 232 */ 0, /* 233 */ 1, /* 234 */
159  0, /* 235 */ 2, /* 236 */ 0, /* 237 */ 1, /* 238 */ 0, /* 239 */
160  4, /* 240 */ 0, /* 241 */ 1, /* 242 */ 0, /* 243 */ 2, /* 244 */
161  0, /* 245 */ 1, /* 246 */ 0, /* 247 */ 3, /* 248 */ 0, /* 249 */
162  1, /* 250 */ 0, /* 251 */ 2, /* 252 */ 0, /* 253 */ 1, /* 254 */
163  0, /* 255 */
164  }; // end _First_one
165 
166 
173  const DGtal::uint8_t Bits::myMSB[] = {
174 0 /* 0*/ ,
175 0 /* 1*/ ,1 /* 2*/ ,1 /* 3*/ ,2 /* 4*/ ,2 /* 5*/ ,
176 2 /* 6*/ ,2 /* 7*/ ,3 /* 8*/ ,3 /* 9*/ ,3 /* 10*/ ,
177 3 /* 11*/ ,3 /* 12*/ ,3 /* 13*/ ,3 /* 14*/ ,3 /* 15*/ ,
178 4 /* 16*/ ,4 /* 17*/ ,4 /* 18*/ ,4 /* 19*/ ,4 /* 20*/ ,
179 4 /* 21*/ ,4 /* 22*/ ,4 /* 23*/ ,4 /* 24*/ ,4 /* 25*/ ,
180 4 /* 26*/ ,4 /* 27*/ ,4 /* 28*/ ,4 /* 29*/ ,4 /* 30*/ ,
181 4 /* 31*/ ,5 /* 32*/ ,5 /* 33*/ ,5 /* 34*/ ,5 /* 35*/ ,
182 5 /* 36*/ ,5 /* 37*/ ,5 /* 38*/ ,5 /* 39*/ ,5 /* 40*/ ,
183 5 /* 41*/ ,5 /* 42*/ ,5 /* 43*/ ,5 /* 44*/ ,5 /* 45*/ ,
184 5 /* 46*/ ,5 /* 47*/ ,5 /* 48*/ ,5 /* 49*/ ,5 /* 50*/ ,
185 5 /* 51*/ ,5 /* 52*/ ,5 /* 53*/ ,5 /* 54*/ ,5 /* 55*/ ,
186 5 /* 56*/ ,5 /* 57*/ ,5 /* 58*/ ,5 /* 59*/ ,5 /* 60*/ ,
187 5 /* 61*/ ,5 /* 62*/ ,5 /* 63*/ ,6 /* 64*/ ,6 /* 65*/ ,
188 6 /* 66*/ ,6 /* 67*/ ,6 /* 68*/ ,6 /* 69*/ ,6 /* 70*/ ,
189 6 /* 71*/ ,6 /* 72*/ ,6 /* 73*/ ,6 /* 74*/ ,6 /* 75*/ ,
190 6 /* 76*/ ,6 /* 77*/ ,6 /* 78*/ ,6 /* 79*/ ,6 /* 80*/ ,
191 6 /* 81*/ ,6 /* 82*/ ,6 /* 83*/ ,6 /* 84*/ ,6 /* 85*/ ,
192 6 /* 86*/ ,6 /* 87*/ ,6 /* 88*/ ,6 /* 89*/ ,6 /* 90*/ ,
193 6 /* 91*/ ,6 /* 92*/ ,6 /* 93*/ ,6 /* 94*/ ,6 /* 95*/ ,
194 6 /* 96*/ ,6 /* 97*/ ,6 /* 98*/ ,6 /* 99*/ ,6 /* 100*/ ,
195 6 /* 101*/ ,6 /* 102*/ ,6 /* 103*/ ,6 /* 104*/ ,6 /* 105*/ ,
196 6 /* 106*/ ,6 /* 107*/ ,6 /* 108*/ ,6 /* 109*/ ,6 /* 110*/ ,
197 6 /* 111*/ ,6 /* 112*/ ,6 /* 113*/ ,6 /* 114*/ ,6 /* 115*/ ,
198 6 /* 116*/ ,6 /* 117*/ ,6 /* 118*/ ,6 /* 119*/ ,6 /* 120*/ ,
199 6 /* 121*/ ,6 /* 122*/ ,6 /* 123*/ ,6 /* 124*/ ,6 /* 125*/ ,
200 6 /* 126*/ ,6 /* 127*/ ,7 /* 128*/ ,7 /* 129*/ ,7 /* 130*/ ,
201 7 /* 131*/ ,7 /* 132*/ ,7 /* 133*/ ,7 /* 134*/ ,7 /* 135*/ ,
202 7 /* 136*/ ,7 /* 137*/ ,7 /* 138*/ ,7 /* 139*/ ,7 /* 140*/ ,
203 7 /* 141*/ ,7 /* 142*/ ,7 /* 143*/ ,7 /* 144*/ ,7 /* 145*/ ,
204 7 /* 146*/ ,7 /* 147*/ ,7 /* 148*/ ,7 /* 149*/ ,7 /* 150*/ ,
205 7 /* 151*/ ,7 /* 152*/ ,7 /* 153*/ ,7 /* 154*/ ,7 /* 155*/ ,
206 7 /* 156*/ ,7 /* 157*/ ,7 /* 158*/ ,7 /* 159*/ ,7 /* 160*/ ,
207 7 /* 161*/ ,7 /* 162*/ ,7 /* 163*/ ,7 /* 164*/ ,7 /* 165*/ ,
208 7 /* 166*/ ,7 /* 167*/ ,7 /* 168*/ ,7 /* 169*/ ,7 /* 170*/ ,
209 7 /* 171*/ ,7 /* 172*/ ,7 /* 173*/ ,7 /* 174*/ ,7 /* 175*/ ,
210 7 /* 176*/ ,7 /* 177*/ ,7 /* 178*/ ,7 /* 179*/ ,7 /* 180*/ ,
211 7 /* 181*/ ,7 /* 182*/ ,7 /* 183*/ ,7 /* 184*/ ,7 /* 185*/ ,
212 7 /* 186*/ ,7 /* 187*/ ,7 /* 188*/ ,7 /* 189*/ ,7 /* 190*/ ,
213 7 /* 191*/ ,7 /* 192*/ ,7 /* 193*/ ,7 /* 194*/ ,7 /* 195*/ ,
214 7 /* 196*/ ,7 /* 197*/ ,7 /* 198*/ ,7 /* 199*/ ,7 /* 200*/ ,
215 7 /* 201*/ ,7 /* 202*/ ,7 /* 203*/ ,7 /* 204*/ ,7 /* 205*/ ,
216 7 /* 206*/ ,7 /* 207*/ ,7 /* 208*/ ,7 /* 209*/ ,7 /* 210*/ ,
217 7 /* 211*/ ,7 /* 212*/ ,7 /* 213*/ ,7 /* 214*/ ,7 /* 215*/ ,
218 7 /* 216*/ ,7 /* 217*/ ,7 /* 218*/ ,7 /* 219*/ ,7 /* 220*/ ,
219 7 /* 221*/ ,7 /* 222*/ ,7 /* 223*/ ,7 /* 224*/ ,7 /* 225*/ ,
220 7 /* 226*/ ,7 /* 227*/ ,7 /* 228*/ ,7 /* 229*/ ,7 /* 230*/ ,
221 7 /* 231*/ ,7 /* 232*/ ,7 /* 233*/ ,7 /* 234*/ ,7 /* 235*/ ,
222 7 /* 236*/ ,7 /* 237*/ ,7 /* 238*/ ,7 /* 239*/ ,7 /* 240*/ ,
223 7 /* 241*/ ,7 /* 242*/ ,7 /* 243*/ ,7 /* 244*/ ,7 /* 245*/ ,
224 7 /* 246*/ ,7 /* 247*/ ,7 /* 248*/ ,7 /* 249*/ ,7 /* 250*/ ,
225 7 /* 251*/ ,7 /* 252*/ ,7 /* 253*/ ,7 /* 254*/ ,7 /* 255*/ }; // end _First_one
226 
236  const DGtal::uint8_t Bits::myIndexInSetBits[ 8 ][ 256 ] = {
237  // Table for bit 0.
238  { 0 /*0*/, 1 /*1*/, 0 /*2*/, 1 /*3*/, 0 /*4*/, 1 /*5*/, 0 /*6*/, 1 /*7*/,
239  0 /*8*/, 1 /*9*/, 0 /*10*/, 1 /*11*/, 0 /*12*/, 1 /*13*/, 0 /*14*/, 1 /*15*/,
240  0 /*16*/, 1 /*17*/, 0 /*18*/, 1 /*19*/, 0 /*20*/, 1 /*21*/, 0 /*22*/, 1 /*23*/,
241  0 /*24*/, 1 /*25*/, 0 /*26*/, 1 /*27*/, 0 /*28*/, 1 /*29*/, 0 /*30*/, 1 /*31*/,
242  0 /*32*/, 1 /*33*/, 0 /*34*/, 1 /*35*/, 0 /*36*/, 1 /*37*/, 0 /*38*/, 1 /*39*/,
243  0 /*40*/, 1 /*41*/, 0 /*42*/, 1 /*43*/, 0 /*44*/, 1 /*45*/, 0 /*46*/, 1 /*47*/,
244  0 /*48*/, 1 /*49*/, 0 /*50*/, 1 /*51*/, 0 /*52*/, 1 /*53*/, 0 /*54*/, 1 /*55*/,
245  0 /*56*/, 1 /*57*/, 0 /*58*/, 1 /*59*/, 0 /*60*/, 1 /*61*/, 0 /*62*/, 1 /*63*/,
246  0 /*64*/, 1 /*65*/, 0 /*66*/, 1 /*67*/, 0 /*68*/, 1 /*69*/, 0 /*70*/, 1 /*71*/,
247  0 /*72*/, 1 /*73*/, 0 /*74*/, 1 /*75*/, 0 /*76*/, 1 /*77*/, 0 /*78*/, 1 /*79*/,
248  0 /*80*/, 1 /*81*/, 0 /*82*/, 1 /*83*/, 0 /*84*/, 1 /*85*/, 0 /*86*/, 1 /*87*/,
249  0 /*88*/, 1 /*89*/, 0 /*90*/, 1 /*91*/, 0 /*92*/, 1 /*93*/, 0 /*94*/, 1 /*95*/,
250  0 /*96*/, 1 /*97*/, 0 /*98*/, 1 /*99*/, 0 /*100*/, 1 /*101*/, 0 /*102*/, 1 /*103*/,
251  0 /*104*/, 1 /*105*/, 0 /*106*/, 1 /*107*/, 0 /*108*/, 1 /*109*/, 0 /*110*/, 1 /*111*/,
252  0 /*112*/, 1 /*113*/, 0 /*114*/, 1 /*115*/, 0 /*116*/, 1 /*117*/, 0 /*118*/, 1 /*119*/,
253  0 /*120*/, 1 /*121*/, 0 /*122*/, 1 /*123*/, 0 /*124*/, 1 /*125*/, 0 /*126*/, 1 /*127*/,
254  0 /*128*/, 1 /*129*/, 0 /*130*/, 1 /*131*/, 0 /*132*/, 1 /*133*/, 0 /*134*/, 1 /*135*/,
255  0 /*136*/, 1 /*137*/, 0 /*138*/, 1 /*139*/, 0 /*140*/, 1 /*141*/, 0 /*142*/, 1 /*143*/,
256  0 /*144*/, 1 /*145*/, 0 /*146*/, 1 /*147*/, 0 /*148*/, 1 /*149*/, 0 /*150*/, 1 /*151*/,
257  0 /*152*/, 1 /*153*/, 0 /*154*/, 1 /*155*/, 0 /*156*/, 1 /*157*/, 0 /*158*/, 1 /*159*/,
258  0 /*160*/, 1 /*161*/, 0 /*162*/, 1 /*163*/, 0 /*164*/, 1 /*165*/, 0 /*166*/, 1 /*167*/,
259  0 /*168*/, 1 /*169*/, 0 /*170*/, 1 /*171*/, 0 /*172*/, 1 /*173*/, 0 /*174*/, 1 /*175*/,
260  0 /*176*/, 1 /*177*/, 0 /*178*/, 1 /*179*/, 0 /*180*/, 1 /*181*/, 0 /*182*/, 1 /*183*/,
261  0 /*184*/, 1 /*185*/, 0 /*186*/, 1 /*187*/, 0 /*188*/, 1 /*189*/, 0 /*190*/, 1 /*191*/,
262  0 /*192*/, 1 /*193*/, 0 /*194*/, 1 /*195*/, 0 /*196*/, 1 /*197*/, 0 /*198*/, 1 /*199*/,
263  0 /*200*/, 1 /*201*/, 0 /*202*/, 1 /*203*/, 0 /*204*/, 1 /*205*/, 0 /*206*/, 1 /*207*/,
264  0 /*208*/, 1 /*209*/, 0 /*210*/, 1 /*211*/, 0 /*212*/, 1 /*213*/, 0 /*214*/, 1 /*215*/,
265  0 /*216*/, 1 /*217*/, 0 /*218*/, 1 /*219*/, 0 /*220*/, 1 /*221*/, 0 /*222*/, 1 /*223*/,
266  0 /*224*/, 1 /*225*/, 0 /*226*/, 1 /*227*/, 0 /*228*/, 1 /*229*/, 0 /*230*/, 1 /*231*/,
267  0 /*232*/, 1 /*233*/, 0 /*234*/, 1 /*235*/, 0 /*236*/, 1 /*237*/, 0 /*238*/, 1 /*239*/,
268  0 /*240*/, 1 /*241*/, 0 /*242*/, 1 /*243*/, 0 /*244*/, 1 /*245*/, 0 /*246*/, 1 /*247*/,
269  0 /*248*/, 1 /*249*/, 0 /*250*/, 1 /*251*/, 0 /*252*/, 1 /*253*/, 0 /*254*/, 1 /*255*/ },
270  // Table for bit 1.
271  { 0 /*0*/, 0 /*1*/, 1 /*2*/, 2 /*3*/, 0 /*4*/, 0 /*5*/, 1 /*6*/, 2 /*7*/,
272  0 /*8*/, 0 /*9*/, 1 /*10*/, 2 /*11*/, 0 /*12*/, 0 /*13*/, 1 /*14*/, 2 /*15*/,
273  0 /*16*/, 0 /*17*/, 1 /*18*/, 2 /*19*/, 0 /*20*/, 0 /*21*/, 1 /*22*/, 2 /*23*/,
274  0 /*24*/, 0 /*25*/, 1 /*26*/, 2 /*27*/, 0 /*28*/, 0 /*29*/, 1 /*30*/, 2 /*31*/,
275  0 /*32*/, 0 /*33*/, 1 /*34*/, 2 /*35*/, 0 /*36*/, 0 /*37*/, 1 /*38*/, 2 /*39*/,
276  0 /*40*/, 0 /*41*/, 1 /*42*/, 2 /*43*/, 0 /*44*/, 0 /*45*/, 1 /*46*/, 2 /*47*/,
277  0 /*48*/, 0 /*49*/, 1 /*50*/, 2 /*51*/, 0 /*52*/, 0 /*53*/, 1 /*54*/, 2 /*55*/,
278  0 /*56*/, 0 /*57*/, 1 /*58*/, 2 /*59*/, 0 /*60*/, 0 /*61*/, 1 /*62*/, 2 /*63*/,
279  0 /*64*/, 0 /*65*/, 1 /*66*/, 2 /*67*/, 0 /*68*/, 0 /*69*/, 1 /*70*/, 2 /*71*/,
280  0 /*72*/, 0 /*73*/, 1 /*74*/, 2 /*75*/, 0 /*76*/, 0 /*77*/, 1 /*78*/, 2 /*79*/,
281  0 /*80*/, 0 /*81*/, 1 /*82*/, 2 /*83*/, 0 /*84*/, 0 /*85*/, 1 /*86*/, 2 /*87*/,
282  0 /*88*/, 0 /*89*/, 1 /*90*/, 2 /*91*/, 0 /*92*/, 0 /*93*/, 1 /*94*/, 2 /*95*/,
283  0 /*96*/, 0 /*97*/, 1 /*98*/, 2 /*99*/, 0 /*100*/, 0 /*101*/, 1 /*102*/, 2 /*103*/,
284  0 /*104*/, 0 /*105*/, 1 /*106*/, 2 /*107*/, 0 /*108*/, 0 /*109*/, 1 /*110*/, 2 /*111*/,
285  0 /*112*/, 0 /*113*/, 1 /*114*/, 2 /*115*/, 0 /*116*/, 0 /*117*/, 1 /*118*/, 2 /*119*/,
286  0 /*120*/, 0 /*121*/, 1 /*122*/, 2 /*123*/, 0 /*124*/, 0 /*125*/, 1 /*126*/, 2 /*127*/,
287  0 /*128*/, 0 /*129*/, 1 /*130*/, 2 /*131*/, 0 /*132*/, 0 /*133*/, 1 /*134*/, 2 /*135*/,
288  0 /*136*/, 0 /*137*/, 1 /*138*/, 2 /*139*/, 0 /*140*/, 0 /*141*/, 1 /*142*/, 2 /*143*/,
289  0 /*144*/, 0 /*145*/, 1 /*146*/, 2 /*147*/, 0 /*148*/, 0 /*149*/, 1 /*150*/, 2 /*151*/,
290  0 /*152*/, 0 /*153*/, 1 /*154*/, 2 /*155*/, 0 /*156*/, 0 /*157*/, 1 /*158*/, 2 /*159*/,
291  0 /*160*/, 0 /*161*/, 1 /*162*/, 2 /*163*/, 0 /*164*/, 0 /*165*/, 1 /*166*/, 2 /*167*/,
292  0 /*168*/, 0 /*169*/, 1 /*170*/, 2 /*171*/, 0 /*172*/, 0 /*173*/, 1 /*174*/, 2 /*175*/,
293  0 /*176*/, 0 /*177*/, 1 /*178*/, 2 /*179*/, 0 /*180*/, 0 /*181*/, 1 /*182*/, 2 /*183*/,
294  0 /*184*/, 0 /*185*/, 1 /*186*/, 2 /*187*/, 0 /*188*/, 0 /*189*/, 1 /*190*/, 2 /*191*/,
295  0 /*192*/, 0 /*193*/, 1 /*194*/, 2 /*195*/, 0 /*196*/, 0 /*197*/, 1 /*198*/, 2 /*199*/,
296  0 /*200*/, 0 /*201*/, 1 /*202*/, 2 /*203*/, 0 /*204*/, 0 /*205*/, 1 /*206*/, 2 /*207*/,
297  0 /*208*/, 0 /*209*/, 1 /*210*/, 2 /*211*/, 0 /*212*/, 0 /*213*/, 1 /*214*/, 2 /*215*/,
298  0 /*216*/, 0 /*217*/, 1 /*218*/, 2 /*219*/, 0 /*220*/, 0 /*221*/, 1 /*222*/, 2 /*223*/,
299  0 /*224*/, 0 /*225*/, 1 /*226*/, 2 /*227*/, 0 /*228*/, 0 /*229*/, 1 /*230*/, 2 /*231*/,
300  0 /*232*/, 0 /*233*/, 1 /*234*/, 2 /*235*/, 0 /*236*/, 0 /*237*/, 1 /*238*/, 2 /*239*/,
301  0 /*240*/, 0 /*241*/, 1 /*242*/, 2 /*243*/, 0 /*244*/, 0 /*245*/, 1 /*246*/, 2 /*247*/,
302  0 /*248*/, 0 /*249*/, 1 /*250*/, 2 /*251*/, 0 /*252*/, 0 /*253*/, 1 /*254*/, 2 /*255*/},
303  // Table for bit 2.
304  { 0 /*0*/, 0 /*1*/, 0 /*2*/, 0 /*3*/, 1 /*4*/, 2 /*5*/, 2 /*6*/, 3 /*7*/,
305  0 /*8*/, 0 /*9*/, 0 /*10*/, 0 /*11*/, 1 /*12*/, 2 /*13*/, 2 /*14*/, 3 /*15*/,
306  0 /*16*/, 0 /*17*/, 0 /*18*/, 0 /*19*/, 1 /*20*/, 2 /*21*/, 2 /*22*/, 3 /*23*/,
307  0 /*24*/, 0 /*25*/, 0 /*26*/, 0 /*27*/, 1 /*28*/, 2 /*29*/, 2 /*30*/, 3 /*31*/,
308  0 /*32*/, 0 /*33*/, 0 /*34*/, 0 /*35*/, 1 /*36*/, 2 /*37*/, 2 /*38*/, 3 /*39*/,
309  0 /*40*/, 0 /*41*/, 0 /*42*/, 0 /*43*/, 1 /*44*/, 2 /*45*/, 2 /*46*/, 3 /*47*/,
310  0 /*48*/, 0 /*49*/, 0 /*50*/, 0 /*51*/, 1 /*52*/, 2 /*53*/, 2 /*54*/, 3 /*55*/,
311  0 /*56*/, 0 /*57*/, 0 /*58*/, 0 /*59*/, 1 /*60*/, 2 /*61*/, 2 /*62*/, 3 /*63*/,
312  0 /*64*/, 0 /*65*/, 0 /*66*/, 0 /*67*/, 1 /*68*/, 2 /*69*/, 2 /*70*/, 3 /*71*/,
313  0 /*72*/, 0 /*73*/, 0 /*74*/, 0 /*75*/, 1 /*76*/, 2 /*77*/, 2 /*78*/, 3 /*79*/,
314  0 /*80*/, 0 /*81*/, 0 /*82*/, 0 /*83*/, 1 /*84*/, 2 /*85*/, 2 /*86*/, 3 /*87*/,
315  0 /*88*/, 0 /*89*/, 0 /*90*/, 0 /*91*/, 1 /*92*/, 2 /*93*/, 2 /*94*/, 3 /*95*/,
316  0 /*96*/, 0 /*97*/, 0 /*98*/, 0 /*99*/, 1 /*100*/, 2 /*101*/, 2 /*102*/, 3 /*103*/,
317  0 /*104*/, 0 /*105*/, 0 /*106*/, 0 /*107*/, 1 /*108*/, 2 /*109*/, 2 /*110*/, 3 /*111*/,
318  0 /*112*/, 0 /*113*/, 0 /*114*/, 0 /*115*/, 1 /*116*/, 2 /*117*/, 2 /*118*/, 3 /*119*/,
319  0 /*120*/, 0 /*121*/, 0 /*122*/, 0 /*123*/, 1 /*124*/, 2 /*125*/, 2 /*126*/, 3 /*127*/,
320  0 /*128*/, 0 /*129*/, 0 /*130*/, 0 /*131*/, 1 /*132*/, 2 /*133*/, 2 /*134*/, 3 /*135*/,
321  0 /*136*/, 0 /*137*/, 0 /*138*/, 0 /*139*/, 1 /*140*/, 2 /*141*/, 2 /*142*/, 3 /*143*/,
322  0 /*144*/, 0 /*145*/, 0 /*146*/, 0 /*147*/, 1 /*148*/, 2 /*149*/, 2 /*150*/, 3 /*151*/,
323  0 /*152*/, 0 /*153*/, 0 /*154*/, 0 /*155*/, 1 /*156*/, 2 /*157*/, 2 /*158*/, 3 /*159*/,
324  0 /*160*/, 0 /*161*/, 0 /*162*/, 0 /*163*/, 1 /*164*/, 2 /*165*/, 2 /*166*/, 3 /*167*/,
325  0 /*168*/, 0 /*169*/, 0 /*170*/, 0 /*171*/, 1 /*172*/, 2 /*173*/, 2 /*174*/, 3 /*175*/,
326  0 /*176*/, 0 /*177*/, 0 /*178*/, 0 /*179*/, 1 /*180*/, 2 /*181*/, 2 /*182*/, 3 /*183*/,
327  0 /*184*/, 0 /*185*/, 0 /*186*/, 0 /*187*/, 1 /*188*/, 2 /*189*/, 2 /*190*/, 3 /*191*/,
328  0 /*192*/, 0 /*193*/, 0 /*194*/, 0 /*195*/, 1 /*196*/, 2 /*197*/, 2 /*198*/, 3 /*199*/,
329  0 /*200*/, 0 /*201*/, 0 /*202*/, 0 /*203*/, 1 /*204*/, 2 /*205*/, 2 /*206*/, 3 /*207*/,
330  0 /*208*/, 0 /*209*/, 0 /*210*/, 0 /*211*/, 1 /*212*/, 2 /*213*/, 2 /*214*/, 3 /*215*/,
331  0 /*216*/, 0 /*217*/, 0 /*218*/, 0 /*219*/, 1 /*220*/, 2 /*221*/, 2 /*222*/, 3 /*223*/,
332  0 /*224*/, 0 /*225*/, 0 /*226*/, 0 /*227*/, 1 /*228*/, 2 /*229*/, 2 /*230*/, 3 /*231*/,
333  0 /*232*/, 0 /*233*/, 0 /*234*/, 0 /*235*/, 1 /*236*/, 2 /*237*/, 2 /*238*/, 3 /*239*/,
334  0 /*240*/, 0 /*241*/, 0 /*242*/, 0 /*243*/, 1 /*244*/, 2 /*245*/, 2 /*246*/, 3 /*247*/,
335  0 /*248*/, 0 /*249*/, 0 /*250*/, 0 /*251*/, 1 /*252*/, 2 /*253*/, 2 /*254*/, 3 /*255*/},
336  // Table for bit 3.
337  { 0 /*0*/, 0 /*1*/, 0 /*2*/, 0 /*3*/, 0 /*4*/, 0 /*5*/, 0 /*6*/, 0 /*7*/,
338  1 /*8*/, 2 /*9*/, 2 /*10*/, 3 /*11*/, 2 /*12*/, 3 /*13*/, 3 /*14*/, 4 /*15*/,
339  0 /*16*/, 0 /*17*/, 0 /*18*/, 0 /*19*/, 0 /*20*/, 0 /*21*/, 0 /*22*/, 0 /*23*/,
340  1 /*24*/, 2 /*25*/, 2 /*26*/, 3 /*27*/, 2 /*28*/, 3 /*29*/, 3 /*30*/, 4 /*31*/,
341  0 /*32*/, 0 /*33*/, 0 /*34*/, 0 /*35*/, 0 /*36*/, 0 /*37*/, 0 /*38*/, 0 /*39*/,
342  1 /*40*/, 2 /*41*/, 2 /*42*/, 3 /*43*/, 2 /*44*/, 3 /*45*/, 3 /*46*/, 4 /*47*/,
343  0 /*48*/, 0 /*49*/, 0 /*50*/, 0 /*51*/, 0 /*52*/, 0 /*53*/, 0 /*54*/, 0 /*55*/,
344  1 /*56*/, 2 /*57*/, 2 /*58*/, 3 /*59*/, 2 /*60*/, 3 /*61*/, 3 /*62*/, 4 /*63*/,
345  0 /*64*/, 0 /*65*/, 0 /*66*/, 0 /*67*/, 0 /*68*/, 0 /*69*/, 0 /*70*/, 0 /*71*/,
346  1 /*72*/, 2 /*73*/, 2 /*74*/, 3 /*75*/, 2 /*76*/, 3 /*77*/, 3 /*78*/, 4 /*79*/,
347  0 /*80*/, 0 /*81*/, 0 /*82*/, 0 /*83*/, 0 /*84*/, 0 /*85*/, 0 /*86*/, 0 /*87*/,
348  1 /*88*/, 2 /*89*/, 2 /*90*/, 3 /*91*/, 2 /*92*/, 3 /*93*/, 3 /*94*/, 4 /*95*/,
349  0 /*96*/, 0 /*97*/, 0 /*98*/, 0 /*99*/, 0 /*100*/, 0 /*101*/, 0 /*102*/, 0 /*103*/,
350  1 /*104*/, 2 /*105*/, 2 /*106*/, 3 /*107*/, 2 /*108*/, 3 /*109*/, 3 /*110*/, 4 /*111*/,
351  0 /*112*/, 0 /*113*/, 0 /*114*/, 0 /*115*/, 0 /*116*/, 0 /*117*/, 0 /*118*/, 0 /*119*/,
352  1 /*120*/, 2 /*121*/, 2 /*122*/, 3 /*123*/, 2 /*124*/, 3 /*125*/, 3 /*126*/, 4 /*127*/,
353  0 /*128*/, 0 /*129*/, 0 /*130*/, 0 /*131*/, 0 /*132*/, 0 /*133*/, 0 /*134*/, 0 /*135*/,
354  1 /*136*/, 2 /*137*/, 2 /*138*/, 3 /*139*/, 2 /*140*/, 3 /*141*/, 3 /*142*/, 4 /*143*/,
355  0 /*144*/, 0 /*145*/, 0 /*146*/, 0 /*147*/, 0 /*148*/, 0 /*149*/, 0 /*150*/, 0 /*151*/,
356  1 /*152*/, 2 /*153*/, 2 /*154*/, 3 /*155*/, 2 /*156*/, 3 /*157*/, 3 /*158*/, 4 /*159*/,
357  0 /*160*/, 0 /*161*/, 0 /*162*/, 0 /*163*/, 0 /*164*/, 0 /*165*/, 0 /*166*/, 0 /*167*/,
358  1 /*168*/, 2 /*169*/, 2 /*170*/, 3 /*171*/, 2 /*172*/, 3 /*173*/, 3 /*174*/, 4 /*175*/,
359  0 /*176*/, 0 /*177*/, 0 /*178*/, 0 /*179*/, 0 /*180*/, 0 /*181*/, 0 /*182*/, 0 /*183*/,
360  1 /*184*/, 2 /*185*/, 2 /*186*/, 3 /*187*/, 2 /*188*/, 3 /*189*/, 3 /*190*/, 4 /*191*/,
361  0 /*192*/, 0 /*193*/, 0 /*194*/, 0 /*195*/, 0 /*196*/, 0 /*197*/, 0 /*198*/, 0 /*199*/,
362  1 /*200*/, 2 /*201*/, 2 /*202*/, 3 /*203*/, 2 /*204*/, 3 /*205*/, 3 /*206*/, 4 /*207*/,
363  0 /*208*/, 0 /*209*/, 0 /*210*/, 0 /*211*/, 0 /*212*/, 0 /*213*/, 0 /*214*/, 0 /*215*/,
364  1 /*216*/, 2 /*217*/, 2 /*218*/, 3 /*219*/, 2 /*220*/, 3 /*221*/, 3 /*222*/, 4 /*223*/,
365  0 /*224*/, 0 /*225*/, 0 /*226*/, 0 /*227*/, 0 /*228*/, 0 /*229*/, 0 /*230*/, 0 /*231*/,
366  1 /*232*/, 2 /*233*/, 2 /*234*/, 3 /*235*/, 2 /*236*/, 3 /*237*/, 3 /*238*/, 4 /*239*/,
367  0 /*240*/, 0 /*241*/, 0 /*242*/, 0 /*243*/, 0 /*244*/, 0 /*245*/, 0 /*246*/, 0 /*247*/,
368  1 /*248*/, 2 /*249*/, 2 /*250*/, 3 /*251*/, 2 /*252*/, 3 /*253*/, 3 /*254*/, 4 /*255*/},
369  // Table for bit 4.
370  { 0 /*0*/, 0 /*1*/, 0 /*2*/, 0 /*3*/, 0 /*4*/, 0 /*5*/, 0 /*6*/, 0 /*7*/,
371  0 /*8*/, 0 /*9*/, 0 /*10*/, 0 /*11*/, 0 /*12*/, 0 /*13*/, 0 /*14*/, 0 /*15*/,
372  1 /*16*/, 2 /*17*/, 2 /*18*/, 3 /*19*/, 2 /*20*/, 3 /*21*/, 3 /*22*/, 4 /*23*/,
373  2 /*24*/, 3 /*25*/, 3 /*26*/, 4 /*27*/, 3 /*28*/, 4 /*29*/, 4 /*30*/, 5 /*31*/,
374  0 /*32*/, 0 /*33*/, 0 /*34*/, 0 /*35*/, 0 /*36*/, 0 /*37*/, 0 /*38*/, 0 /*39*/,
375  0 /*40*/, 0 /*41*/, 0 /*42*/, 0 /*43*/, 0 /*44*/, 0 /*45*/, 0 /*46*/, 0 /*47*/,
376  1 /*48*/, 2 /*49*/, 2 /*50*/, 3 /*51*/, 2 /*52*/, 3 /*53*/, 3 /*54*/, 4 /*55*/,
377  2 /*56*/, 3 /*57*/, 3 /*58*/, 4 /*59*/, 3 /*60*/, 4 /*61*/, 4 /*62*/, 5 /*63*/,
378  0 /*64*/, 0 /*65*/, 0 /*66*/, 0 /*67*/, 0 /*68*/, 0 /*69*/, 0 /*70*/, 0 /*71*/,
379  0 /*72*/, 0 /*73*/, 0 /*74*/, 0 /*75*/, 0 /*76*/, 0 /*77*/, 0 /*78*/, 0 /*79*/,
380  1 /*80*/, 2 /*81*/, 2 /*82*/, 3 /*83*/, 2 /*84*/, 3 /*85*/, 3 /*86*/, 4 /*87*/,
381  2 /*88*/, 3 /*89*/, 3 /*90*/, 4 /*91*/, 3 /*92*/, 4 /*93*/, 4 /*94*/, 5 /*95*/,
382  0 /*96*/, 0 /*97*/, 0 /*98*/, 0 /*99*/, 0 /*100*/, 0 /*101*/, 0 /*102*/, 0 /*103*/,
383  0 /*104*/, 0 /*105*/, 0 /*106*/, 0 /*107*/, 0 /*108*/, 0 /*109*/, 0 /*110*/, 0 /*111*/,
384  1 /*112*/, 2 /*113*/, 2 /*114*/, 3 /*115*/, 2 /*116*/, 3 /*117*/, 3 /*118*/, 4 /*119*/,
385  2 /*120*/, 3 /*121*/, 3 /*122*/, 4 /*123*/, 3 /*124*/, 4 /*125*/, 4 /*126*/, 5 /*127*/,
386  0 /*128*/, 0 /*129*/, 0 /*130*/, 0 /*131*/, 0 /*132*/, 0 /*133*/, 0 /*134*/, 0 /*135*/,
387  0 /*136*/, 0 /*137*/, 0 /*138*/, 0 /*139*/, 0 /*140*/, 0 /*141*/, 0 /*142*/, 0 /*143*/,
388  1 /*144*/, 2 /*145*/, 2 /*146*/, 3 /*147*/, 2 /*148*/, 3 /*149*/, 3 /*150*/, 4 /*151*/,
389  2 /*152*/, 3 /*153*/, 3 /*154*/, 4 /*155*/, 3 /*156*/, 4 /*157*/, 4 /*158*/, 5 /*159*/,
390  0 /*160*/, 0 /*161*/, 0 /*162*/, 0 /*163*/, 0 /*164*/, 0 /*165*/, 0 /*166*/, 0 /*167*/,
391  0 /*168*/, 0 /*169*/, 0 /*170*/, 0 /*171*/, 0 /*172*/, 0 /*173*/, 0 /*174*/, 0 /*175*/,
392  1 /*176*/, 2 /*177*/, 2 /*178*/, 3 /*179*/, 2 /*180*/, 3 /*181*/, 3 /*182*/, 4 /*183*/,
393  2 /*184*/, 3 /*185*/, 3 /*186*/, 4 /*187*/, 3 /*188*/, 4 /*189*/, 4 /*190*/, 5 /*191*/,
394  0 /*192*/, 0 /*193*/, 0 /*194*/, 0 /*195*/, 0 /*196*/, 0 /*197*/, 0 /*198*/, 0 /*199*/,
395  0 /*200*/, 0 /*201*/, 0 /*202*/, 0 /*203*/, 0 /*204*/, 0 /*205*/, 0 /*206*/, 0 /*207*/,
396  1 /*208*/, 2 /*209*/, 2 /*210*/, 3 /*211*/, 2 /*212*/, 3 /*213*/, 3 /*214*/, 4 /*215*/,
397  2 /*216*/, 3 /*217*/, 3 /*218*/, 4 /*219*/, 3 /*220*/, 4 /*221*/, 4 /*222*/, 5 /*223*/,
398  0 /*224*/, 0 /*225*/, 0 /*226*/, 0 /*227*/, 0 /*228*/, 0 /*229*/, 0 /*230*/, 0 /*231*/,
399  0 /*232*/, 0 /*233*/, 0 /*234*/, 0 /*235*/, 0 /*236*/, 0 /*237*/, 0 /*238*/, 0 /*239*/,
400  1 /*240*/, 2 /*241*/, 2 /*242*/, 3 /*243*/, 2 /*244*/, 3 /*245*/, 3 /*246*/, 4 /*247*/,
401  2 /*248*/, 3 /*249*/, 3 /*250*/, 4 /*251*/, 3 /*252*/, 4 /*253*/, 4 /*254*/, 5 /*255*/ },
402  // Table for bit 5.
403  { 0 /*0*/, 0 /*1*/, 0 /*2*/, 0 /*3*/, 0 /*4*/, 0 /*5*/, 0 /*6*/, 0 /*7*/,
404  0 /*8*/, 0 /*9*/, 0 /*10*/, 0 /*11*/, 0 /*12*/, 0 /*13*/, 0 /*14*/, 0 /*15*/,
405  0 /*16*/, 0 /*17*/, 0 /*18*/, 0 /*19*/, 0 /*20*/, 0 /*21*/, 0 /*22*/, 0 /*23*/,
406  0 /*24*/, 0 /*25*/, 0 /*26*/, 0 /*27*/, 0 /*28*/, 0 /*29*/, 0 /*30*/, 0 /*31*/,
407  1 /*32*/, 2 /*33*/, 2 /*34*/, 3 /*35*/, 2 /*36*/, 3 /*37*/, 3 /*38*/, 4 /*39*/,
408  2 /*40*/, 3 /*41*/, 3 /*42*/, 4 /*43*/, 3 /*44*/, 4 /*45*/, 4 /*46*/, 5 /*47*/,
409  2 /*48*/, 3 /*49*/, 3 /*50*/, 4 /*51*/, 3 /*52*/, 4 /*53*/, 4 /*54*/, 5 /*55*/,
410  3 /*56*/, 4 /*57*/, 4 /*58*/, 5 /*59*/, 4 /*60*/, 5 /*61*/, 5 /*62*/, 6 /*63*/,
411  0 /*64*/, 0 /*65*/, 0 /*66*/, 0 /*67*/, 0 /*68*/, 0 /*69*/, 0 /*70*/, 0 /*71*/,
412  0 /*72*/, 0 /*73*/, 0 /*74*/, 0 /*75*/, 0 /*76*/, 0 /*77*/, 0 /*78*/, 0 /*79*/,
413  0 /*80*/, 0 /*81*/, 0 /*82*/, 0 /*83*/, 0 /*84*/, 0 /*85*/, 0 /*86*/, 0 /*87*/,
414  0 /*88*/, 0 /*89*/, 0 /*90*/, 0 /*91*/, 0 /*92*/, 0 /*93*/, 0 /*94*/, 0 /*95*/,
415  1 /*96*/, 2 /*97*/, 2 /*98*/, 3 /*99*/, 2 /*100*/, 3 /*101*/, 3 /*102*/, 4 /*103*/,
416  2 /*104*/, 3 /*105*/, 3 /*106*/, 4 /*107*/, 3 /*108*/, 4 /*109*/, 4 /*110*/, 5 /*111*/,
417  2 /*112*/, 3 /*113*/, 3 /*114*/, 4 /*115*/, 3 /*116*/, 4 /*117*/, 4 /*118*/, 5 /*119*/,
418  3 /*120*/, 4 /*121*/, 4 /*122*/, 5 /*123*/, 4 /*124*/, 5 /*125*/, 5 /*126*/, 6 /*127*/,
419  0 /*128*/, 0 /*129*/, 0 /*130*/, 0 /*131*/, 0 /*132*/, 0 /*133*/, 0 /*134*/, 0 /*135*/,
420  0 /*136*/, 0 /*137*/, 0 /*138*/, 0 /*139*/, 0 /*140*/, 0 /*141*/, 0 /*142*/, 0 /*143*/,
421  0 /*144*/, 0 /*145*/, 0 /*146*/, 0 /*147*/, 0 /*148*/, 0 /*149*/, 0 /*150*/, 0 /*151*/,
422  0 /*152*/, 0 /*153*/, 0 /*154*/, 0 /*155*/, 0 /*156*/, 0 /*157*/, 0 /*158*/, 0 /*159*/,
423  1 /*160*/, 2 /*161*/, 2 /*162*/, 3 /*163*/, 2 /*164*/, 3 /*165*/, 3 /*166*/, 4 /*167*/,
424  2 /*168*/, 3 /*169*/, 3 /*170*/, 4 /*171*/, 3 /*172*/, 4 /*173*/, 4 /*174*/, 5 /*175*/,
425  2 /*176*/, 3 /*177*/, 3 /*178*/, 4 /*179*/, 3 /*180*/, 4 /*181*/, 4 /*182*/, 5 /*183*/,
426  3 /*184*/, 4 /*185*/, 4 /*186*/, 5 /*187*/, 4 /*188*/, 5 /*189*/, 5 /*190*/, 6 /*191*/,
427  0 /*192*/, 0 /*193*/, 0 /*194*/, 0 /*195*/, 0 /*196*/, 0 /*197*/, 0 /*198*/, 0 /*199*/,
428  0 /*200*/, 0 /*201*/, 0 /*202*/, 0 /*203*/, 0 /*204*/, 0 /*205*/, 0 /*206*/, 0 /*207*/,
429  0 /*208*/, 0 /*209*/, 0 /*210*/, 0 /*211*/, 0 /*212*/, 0 /*213*/, 0 /*214*/, 0 /*215*/,
430  0 /*216*/, 0 /*217*/, 0 /*218*/, 0 /*219*/, 0 /*220*/, 0 /*221*/, 0 /*222*/, 0 /*223*/,
431  1 /*224*/, 2 /*225*/, 2 /*226*/, 3 /*227*/, 2 /*228*/, 3 /*229*/, 3 /*230*/, 4 /*231*/,
432  2 /*232*/, 3 /*233*/, 3 /*234*/, 4 /*235*/, 3 /*236*/, 4 /*237*/, 4 /*238*/, 5 /*239*/,
433  2 /*240*/, 3 /*241*/, 3 /*242*/, 4 /*243*/, 3 /*244*/, 4 /*245*/, 4 /*246*/, 5 /*247*/,
434  3 /*248*/, 4 /*249*/, 4 /*250*/, 5 /*251*/, 4 /*252*/, 5 /*253*/, 5 /*254*/, 6 /*255*/},
435  // Table for bit 6.
436  { 0 /*0*/, 0 /*1*/, 0 /*2*/, 0 /*3*/, 0 /*4*/, 0 /*5*/, 0 /*6*/, 0 /*7*/,
437  0 /*8*/, 0 /*9*/, 0 /*10*/, 0 /*11*/, 0 /*12*/, 0 /*13*/, 0 /*14*/, 0 /*15*/,
438  0 /*16*/, 0 /*17*/, 0 /*18*/, 0 /*19*/, 0 /*20*/, 0 /*21*/, 0 /*22*/, 0 /*23*/,
439  0 /*24*/, 0 /*25*/, 0 /*26*/, 0 /*27*/, 0 /*28*/, 0 /*29*/, 0 /*30*/, 0 /*31*/,
440  0 /*32*/, 0 /*33*/, 0 /*34*/, 0 /*35*/, 0 /*36*/, 0 /*37*/, 0 /*38*/, 0 /*39*/,
441  0 /*40*/, 0 /*41*/, 0 /*42*/, 0 /*43*/, 0 /*44*/, 0 /*45*/, 0 /*46*/, 0 /*47*/,
442  0 /*48*/, 0 /*49*/, 0 /*50*/, 0 /*51*/, 0 /*52*/, 0 /*53*/, 0 /*54*/, 0 /*55*/,
443  0 /*56*/, 0 /*57*/, 0 /*58*/, 0 /*59*/, 0 /*60*/, 0 /*61*/, 0 /*62*/, 0 /*63*/,
444  1 /*64*/, 2 /*65*/, 2 /*66*/, 3 /*67*/, 2 /*68*/, 3 /*69*/, 3 /*70*/, 4 /*71*/,
445  2 /*72*/, 3 /*73*/, 3 /*74*/, 4 /*75*/, 3 /*76*/, 4 /*77*/, 4 /*78*/, 5 /*79*/,
446  2 /*80*/, 3 /*81*/, 3 /*82*/, 4 /*83*/, 3 /*84*/, 4 /*85*/, 4 /*86*/, 5 /*87*/,
447  3 /*88*/, 4 /*89*/, 4 /*90*/, 5 /*91*/, 4 /*92*/, 5 /*93*/, 5 /*94*/, 6 /*95*/,
448  2 /*96*/, 3 /*97*/, 3 /*98*/, 4 /*99*/, 3 /*100*/, 4 /*101*/, 4 /*102*/, 5 /*103*/,
449  3 /*104*/, 4 /*105*/, 4 /*106*/, 5 /*107*/, 4 /*108*/, 5 /*109*/, 5 /*110*/, 6 /*111*/,
450  3 /*112*/, 4 /*113*/, 4 /*114*/, 5 /*115*/, 4 /*116*/, 5 /*117*/, 5 /*118*/, 6 /*119*/,
451  4 /*120*/, 5 /*121*/, 5 /*122*/, 6 /*123*/, 5 /*124*/, 6 /*125*/, 6 /*126*/, 7 /*127*/,
452  0 /*128*/, 0 /*129*/, 0 /*130*/, 0 /*131*/, 0 /*132*/, 0 /*133*/, 0 /*134*/, 0 /*135*/,
453  0 /*136*/, 0 /*137*/, 0 /*138*/, 0 /*139*/, 0 /*140*/, 0 /*141*/, 0 /*142*/, 0 /*143*/,
454  0 /*144*/, 0 /*145*/, 0 /*146*/, 0 /*147*/, 0 /*148*/, 0 /*149*/, 0 /*150*/, 0 /*151*/,
455  0 /*152*/, 0 /*153*/, 0 /*154*/, 0 /*155*/, 0 /*156*/, 0 /*157*/, 0 /*158*/, 0 /*159*/,
456  0 /*160*/, 0 /*161*/, 0 /*162*/, 0 /*163*/, 0 /*164*/, 0 /*165*/, 0 /*166*/, 0 /*167*/,
457  0 /*168*/, 0 /*169*/, 0 /*170*/, 0 /*171*/, 0 /*172*/, 0 /*173*/, 0 /*174*/, 0 /*175*/,
458  0 /*176*/, 0 /*177*/, 0 /*178*/, 0 /*179*/, 0 /*180*/, 0 /*181*/, 0 /*182*/, 0 /*183*/,
459  0 /*184*/, 0 /*185*/, 0 /*186*/, 0 /*187*/, 0 /*188*/, 0 /*189*/, 0 /*190*/, 0 /*191*/,
460  1 /*192*/, 2 /*193*/, 2 /*194*/, 3 /*195*/, 2 /*196*/, 3 /*197*/, 3 /*198*/, 4 /*199*/,
461  2 /*200*/, 3 /*201*/, 3 /*202*/, 4 /*203*/, 3 /*204*/, 4 /*205*/, 4 /*206*/, 5 /*207*/,
462  2 /*208*/, 3 /*209*/, 3 /*210*/, 4 /*211*/, 3 /*212*/, 4 /*213*/, 4 /*214*/, 5 /*215*/,
463  3 /*216*/, 4 /*217*/, 4 /*218*/, 5 /*219*/, 4 /*220*/, 5 /*221*/, 5 /*222*/, 6 /*223*/,
464  2 /*224*/, 3 /*225*/, 3 /*226*/, 4 /*227*/, 3 /*228*/, 4 /*229*/, 4 /*230*/, 5 /*231*/,
465  3 /*232*/, 4 /*233*/, 4 /*234*/, 5 /*235*/, 4 /*236*/, 5 /*237*/, 5 /*238*/, 6 /*239*/,
466  3 /*240*/, 4 /*241*/, 4 /*242*/, 5 /*243*/, 4 /*244*/, 5 /*245*/, 5 /*246*/, 6 /*247*/,
467  4 /*248*/, 5 /*249*/, 5 /*250*/, 6 /*251*/, 5 /*252*/, 6 /*253*/, 6 /*254*/, 7 /*255*/ },
468  // Table for bit 7.
469  { 0 /*0*/, 0 /*1*/, 0 /*2*/, 0 /*3*/, 0 /*4*/, 0 /*5*/, 0 /*6*/, 0 /*7*/,
470  0 /*8*/, 0 /*9*/, 0 /*10*/, 0 /*11*/, 0 /*12*/, 0 /*13*/, 0 /*14*/, 0 /*15*/,
471  0 /*16*/, 0 /*17*/, 0 /*18*/, 0 /*19*/, 0 /*20*/, 0 /*21*/, 0 /*22*/, 0 /*23*/,
472  0 /*24*/, 0 /*25*/, 0 /*26*/, 0 /*27*/, 0 /*28*/, 0 /*29*/, 0 /*30*/, 0 /*31*/,
473  0 /*32*/, 0 /*33*/, 0 /*34*/, 0 /*35*/, 0 /*36*/, 0 /*37*/, 0 /*38*/, 0 /*39*/,
474  0 /*40*/, 0 /*41*/, 0 /*42*/, 0 /*43*/, 0 /*44*/, 0 /*45*/, 0 /*46*/, 0 /*47*/,
475  0 /*48*/, 0 /*49*/, 0 /*50*/, 0 /*51*/, 0 /*52*/, 0 /*53*/, 0 /*54*/, 0 /*55*/,
476  0 /*56*/, 0 /*57*/, 0 /*58*/, 0 /*59*/, 0 /*60*/, 0 /*61*/, 0 /*62*/, 0 /*63*/,
477  0 /*64*/, 0 /*65*/, 0 /*66*/, 0 /*67*/, 0 /*68*/, 0 /*69*/, 0 /*70*/, 0 /*71*/,
478  0 /*72*/, 0 /*73*/, 0 /*74*/, 0 /*75*/, 0 /*76*/, 0 /*77*/, 0 /*78*/, 0 /*79*/,
479  0 /*80*/, 0 /*81*/, 0 /*82*/, 0 /*83*/, 0 /*84*/, 0 /*85*/, 0 /*86*/, 0 /*87*/,
480  0 /*88*/, 0 /*89*/, 0 /*90*/, 0 /*91*/, 0 /*92*/, 0 /*93*/, 0 /*94*/, 0 /*95*/,
481  0 /*96*/, 0 /*97*/, 0 /*98*/, 0 /*99*/, 0 /*100*/, 0 /*101*/, 0 /*102*/, 0 /*103*/,
482  0 /*104*/, 0 /*105*/, 0 /*106*/, 0 /*107*/, 0 /*108*/, 0 /*109*/, 0 /*110*/, 0 /*111*/,
483  0 /*112*/, 0 /*113*/, 0 /*114*/, 0 /*115*/, 0 /*116*/, 0 /*117*/, 0 /*118*/, 0 /*119*/,
484  0 /*120*/, 0 /*121*/, 0 /*122*/, 0 /*123*/, 0 /*124*/, 0 /*125*/, 0 /*126*/, 0 /*127*/,
485  1 /*128*/, 2 /*129*/, 2 /*130*/, 3 /*131*/, 2 /*132*/, 3 /*133*/, 3 /*134*/, 4 /*135*/,
486  2 /*136*/, 3 /*137*/, 3 /*138*/, 4 /*139*/, 3 /*140*/, 4 /*141*/, 4 /*142*/, 5 /*143*/,
487  2 /*144*/, 3 /*145*/, 3 /*146*/, 4 /*147*/, 3 /*148*/, 4 /*149*/, 4 /*150*/, 5 /*151*/,
488  3 /*152*/, 4 /*153*/, 4 /*154*/, 5 /*155*/, 4 /*156*/, 5 /*157*/, 5 /*158*/, 6 /*159*/,
489  2 /*160*/, 3 /*161*/, 3 /*162*/, 4 /*163*/, 3 /*164*/, 4 /*165*/, 4 /*166*/, 5 /*167*/,
490  3 /*168*/, 4 /*169*/, 4 /*170*/, 5 /*171*/, 4 /*172*/, 5 /*173*/, 5 /*174*/, 6 /*175*/,
491  3 /*176*/, 4 /*177*/, 4 /*178*/, 5 /*179*/, 4 /*180*/, 5 /*181*/, 5 /*182*/, 6 /*183*/,
492  4 /*184*/, 5 /*185*/, 5 /*186*/, 6 /*187*/, 5 /*188*/, 6 /*189*/, 6 /*190*/, 7 /*191*/,
493  2 /*192*/, 3 /*193*/, 3 /*194*/, 4 /*195*/, 3 /*196*/, 4 /*197*/, 4 /*198*/, 5 /*199*/,
494  3 /*200*/, 4 /*201*/, 4 /*202*/, 5 /*203*/, 4 /*204*/, 5 /*205*/, 5 /*206*/, 6 /*207*/,
495  3 /*208*/, 4 /*209*/, 4 /*210*/, 5 /*211*/, 4 /*212*/, 5 /*213*/, 5 /*214*/, 6 /*215*/,
496  4 /*216*/, 5 /*217*/, 5 /*218*/, 6 /*219*/, 5 /*220*/, 6 /*221*/, 6 /*222*/, 7 /*223*/,
497  3 /*224*/, 4 /*225*/, 4 /*226*/, 5 /*227*/, 4 /*228*/, 5 /*229*/, 5 /*230*/, 6 /*231*/,
498  4 /*232*/, 5 /*233*/, 5 /*234*/, 6 /*235*/, 5 /*236*/, 6 /*237*/, 6 /*238*/, 7 /*239*/,
499  4 /*240*/, 5 /*241*/, 5 /*242*/, 6 /*243*/, 5 /*244*/, 6 /*245*/, 6 /*246*/, 7 /*247*/,
500  5 /*248*/, 6 /*249*/, 6 /*250*/, 7 /*251*/, 6 /*252*/, 7 /*253*/, 7 /*254*/, 8 /*255*/ }
501  };
502 
503 }
504 // //
DGtal is the top-level namespace which contains all DGtal functions and types.
boost::uint8_t uint8_t
unsigned 8-bit integer.
Definition: BasicTypes.h:59
static const DGtal::uint8_t myIndexInSetBits[8][256]
Definition: Bits.h:411
static const DGtal::uint8_t myMSB[256]
Definition: Bits.h:400
static const DGtal::uint8_t myBitCount[256]
Definition: Bits.h:390
static const DGtal::uint8_t myLSB[256]
Definition: Bits.h:395