File failed to load: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.3/config/TeX-MML-AM_CHTML/MathJax.js
DGtal 2.0.0
Bits.h
1
16
17#pragma once
28#ifndef BITS_HPP
29#define BITS_HPP
30
31#include <string>
32#include <algorithm>
33#include "DGtal/base/Common.h"
34
35namespace DGtal
36{
37
38 struct Bits
39 {
46
47
55 template <typename T>
56 static std::string bitString(T value, unsigned nbBits = 0)
57 {
58 std::string bitStr;
59
60 // if the requested number of bit is 0, use the size of the data type instead
61 if(nbBits == 0) nbBits = sizeof(T)*8;
62 int i = (int)(std::min((DGtal::int64_t)sizeof(T)*8-1, (DGtal::int64_t)nbBits-1));
63
64 for(; i>=0; i--)
65 {
66 T mask = ((T)1) << i; // if you take these parenthesis out,
67 // a mountain of incredible runtime
68 // errors will jump on you.(I warned
69 // ya !)
70 if(value & mask)
71 bitStr += "1" ;
72 else
73 bitStr += "0" ;
74 }
75 return bitStr;
76 }
77
78
79 // ---------------------------------------------------------------------
80 // Other functions
81 // ---------------------------------------------------------------------
82
86 template<typename T>
87 static inline T mask(unsigned nthBit)
88 {
89 return static_cast<T>(static_cast<T>(1) << nthBit);
90 }
91
95 template <typename T>
96 static inline bool getBit(T key, unsigned nthBit)
97 {
98 return ( key & mask<T>(nthBit) );
99 }
100
101
106 template <typename T>
107 static inline T firstSetBit(T val)
108 {
109 return ( (val & -val) | (val & (~val + 1)) );
110 }
111
112
117 template <typename T>
118 static inline T firstUnsetBit(T val)
119 {
120 return ~val & (val + 1);
121 }
122
123
127 template <typename T>
128 static inline unsigned int nbSetBits(T val)
129 {
130#ifdef TRACE_BITS
131 std::cerr << "unsigned int nbSetBits(T val)" << std::endl;
132#endif
133 unsigned int i = 0;
134 for ( ; val; ++i) {val ^= val & -val; }
135 return i;
136 }
137
142 static inline
143 unsigned int nbSetBits( DGtal::uint8_t val )
144 {
145#ifdef TRACE_BITS
146 std::cerr << "unsigned int nbSetBits( DGtal::uint8_t val )" << std::endl;
147#endif
148 return myBitCount[ val ];
149 }
150
155 static inline
156 unsigned int nbSetBits( DGtal::uint16_t val )
157 {
158#ifdef TRACE_BITS
159 std::cerr << "unsigned int nbSetBits( DGtal::uint16_t val )" << std::endl;
160#endif
161 return nbSetBits( static_cast<DGtal::uint8_t>( val & 0xff ) )
162 + nbSetBits( static_cast<DGtal::uint8_t>( val >> 8 ) );
163 }
164
169 static inline
170 unsigned int nbSetBits( DGtal::uint32_t val )
171 {
172#ifdef TRACE_BITS
173 std::cerr << "unsigned int nbSetBits( DGtal::uint32_t val )" << std::endl;
174#endif
175 return nbSetBits( static_cast<DGtal::uint16_t>( val & 0xffff ) )
176 + nbSetBits( static_cast<DGtal::uint16_t>( val >> 16 ) );
177 }
178
183 static inline
184 unsigned int nbSetBits( DGtal::uint64_t val )
185 {
186#ifdef TRACE_BITS
187 std::cerr << "unsigned int nbSetBits( DGtal::uint64_t val )" << std::endl;
188#endif
189 return nbSetBits( static_cast<DGtal::uint32_t>( val & 0xffffffffLL ) )
190 + nbSetBits( static_cast<DGtal::uint32_t>( val >> 32 ) );
191 }
192
204 static inline
205 unsigned int indexInSetBits( DGtal::uint8_t n, unsigned int b )
206 {
207 ASSERT( b < 8 );
208 return myIndexInSetBits[ b ][ n ];
209 }
210
222 static inline
223 unsigned int indexInSetBits( DGtal::uint16_t n, unsigned int b )
224 {
225 ASSERT( b < 16 );
226 if ( b < 8 )
227 return indexInSetBits( static_cast<DGtal::uint8_t>( n & 0xff ), b );
228 else
229 {
230 unsigned int idx = indexInSetBits( static_cast<DGtal::uint8_t>( n >> 8 ), b - 8 );
231 return ( idx == 0 )
232 ? 0 // bit b is not set
233 : idx + nbSetBits( static_cast<DGtal::uint8_t>( n & 0xff ) );
234 }
235 }
236
248 static inline
249 unsigned int indexInSetBits( DGtal::uint32_t n, unsigned int b )
250 {
251 ASSERT( b < 32 );
252 if ( b < 16 )
253 return indexInSetBits( static_cast<DGtal::uint16_t>( n & 0xffff ), b );
254 else
255 {
256 unsigned int idx = indexInSetBits( static_cast<DGtal::uint16_t>( n >> 16 ), b - 16 );
257 return ( idx == 0 )
258 ? 0 // bit b is not set
259 : idx + nbSetBits( static_cast<DGtal::uint16_t>( n & 0xffff ) );
260 }
261 }
262
274 static inline
275 unsigned int indexInSetBits( DGtal::uint64_t n, unsigned int b )
276 {
277 ASSERT( b < 64 );
278 if ( b < 32 )
279 return indexInSetBits( static_cast<DGtal::uint32_t>( n & 0xffffffffLL ), b );
280 else
281 {
282 unsigned int idx = indexInSetBits( static_cast<DGtal::uint32_t>( n >> 32 ), b - 32 );
283 return ( idx == 0 )
284 ? 0 // bit b is not set
285 : idx + nbSetBits( static_cast<DGtal::uint32_t>( n & 0xffffffffLL ) );
286 }
287 }
288
289
294 static inline
296 {
297 return myLSB[ n ];
298 }
299
304 static inline
306 {
307 return ( n & 0xff )
309 : 8 + leastSignificantBit( (DGtal::uint8_t) (n>>8) );
310 }
311
316 static inline
318 {
319 return ( n & 0xffff )
321 : 16 + leastSignificantBit( (DGtal::uint16_t) (n>>16) );
322 }
323
328 static inline
330 {
331 return ( n & 0xffffffffLL )
333 : 32 + leastSignificantBit( (DGtal::uint32_t) (n>>32) );
334 }
335
340 static inline
342 {
343 return myMSB[ n ];
344 }
345
350 static inline
352 {
353 return ( n & 0xff00 )
354 ? 8 + mostSignificantBit( (DGtal::uint8_t) (n>>8) )
356 }
357
362 static inline
364 {
365 return ( n & 0xffff0000 )
366 ? 16 + mostSignificantBit( (DGtal::uint16_t) (n>>16) )
368 }
369
374 static inline
376 {
377 return ( n & 0xffffffff00000000LL )
378 ? 32 + mostSignificantBit( (DGtal::uint32_t) (n>>32) )
380 }
381
382
383
388 static const DGtal::uint8_t myBitCount[ 256 ];
389
393 static const DGtal::uint8_t myLSB[ 256 ];
394
398 static const DGtal::uint8_t myMSB[ 256 ];
399
409 static const DGtal::uint8_t myIndexInSetBits[ 8 ][ 256 ];
410
411
412 };//struct
413}
414
416// class Bits
418
422namespace DGtal
423{
424 // Lookup tables for find and count operations.
429 constexpr inline DGtal::uint8_t Bits::myBitCount[] = {
430 0, /* 0 */ 1, /* 1 */ 1, /* 2 */ 2, /* 3 */ 1, /* 4 */
431 2, /* 5 */ 2, /* 6 */ 3, /* 7 */ 1, /* 8 */ 2, /* 9 */
432 2, /* 10 */ 3, /* 11 */ 2, /* 12 */ 3, /* 13 */ 3, /* 14 */
433 4, /* 15 */ 1, /* 16 */ 2, /* 17 */ 2, /* 18 */ 3, /* 19 */
434 2, /* 20 */ 3, /* 21 */ 3, /* 22 */ 4, /* 23 */ 2, /* 24 */
435 3, /* 25 */ 3, /* 26 */ 4, /* 27 */ 3, /* 28 */ 4, /* 29 */
436 4, /* 30 */ 5, /* 31 */ 1, /* 32 */ 2, /* 33 */ 2, /* 34 */
437 3, /* 35 */ 2, /* 36 */ 3, /* 37 */ 3, /* 38 */ 4, /* 39 */
438 2, /* 40 */ 3, /* 41 */ 3, /* 42 */ 4, /* 43 */ 3, /* 44 */
439 4, /* 45 */ 4, /* 46 */ 5, /* 47 */ 2, /* 48 */ 3, /* 49 */
440 3, /* 50 */ 4, /* 51 */ 3, /* 52 */ 4, /* 53 */ 4, /* 54 */
441 5, /* 55 */ 3, /* 56 */ 4, /* 57 */ 4, /* 58 */ 5, /* 59 */
442 4, /* 60 */ 5, /* 61 */ 5, /* 62 */ 6, /* 63 */ 1, /* 64 */
443 2, /* 65 */ 2, /* 66 */ 3, /* 67 */ 2, /* 68 */ 3, /* 69 */
444 3, /* 70 */ 4, /* 71 */ 2, /* 72 */ 3, /* 73 */ 3, /* 74 */
445 4, /* 75 */ 3, /* 76 */ 4, /* 77 */ 4, /* 78 */ 5, /* 79 */
446 2, /* 80 */ 3, /* 81 */ 3, /* 82 */ 4, /* 83 */ 3, /* 84 */
447 4, /* 85 */ 4, /* 86 */ 5, /* 87 */ 3, /* 88 */ 4, /* 89 */
448 4, /* 90 */ 5, /* 91 */ 4, /* 92 */ 5, /* 93 */ 5, /* 94 */
449 6, /* 95 */ 2, /* 96 */ 3, /* 97 */ 3, /* 98 */ 4, /* 99 */
450 3, /* 100 */ 4, /* 101 */ 4, /* 102 */ 5, /* 103 */ 3, /* 104 */
451 4, /* 105 */ 4, /* 106 */ 5, /* 107 */ 4, /* 108 */ 5, /* 109 */
452 5, /* 110 */ 6, /* 111 */ 3, /* 112 */ 4, /* 113 */ 4, /* 114 */
453 5, /* 115 */ 4, /* 116 */ 5, /* 117 */ 5, /* 118 */ 6, /* 119 */
454 4, /* 120 */ 5, /* 121 */ 5, /* 122 */ 6, /* 123 */ 5, /* 124 */
455 6, /* 125 */ 6, /* 126 */ 7, /* 127 */ 1, /* 128 */ 2, /* 129 */
456 2, /* 130 */ 3, /* 131 */ 2, /* 132 */ 3, /* 133 */ 3, /* 134 */
457 4, /* 135 */ 2, /* 136 */ 3, /* 137 */ 3, /* 138 */ 4, /* 139 */
458 3, /* 140 */ 4, /* 141 */ 4, /* 142 */ 5, /* 143 */ 2, /* 144 */
459 3, /* 145 */ 3, /* 146 */ 4, /* 147 */ 3, /* 148 */ 4, /* 149 */
460 4, /* 150 */ 5, /* 151 */ 3, /* 152 */ 4, /* 153 */ 4, /* 154 */
461 5, /* 155 */ 4, /* 156 */ 5, /* 157 */ 5, /* 158 */ 6, /* 159 */
462 2, /* 160 */ 3, /* 161 */ 3, /* 162 */ 4, /* 163 */ 3, /* 164 */
463 4, /* 165 */ 4, /* 166 */ 5, /* 167 */ 3, /* 168 */ 4, /* 169 */
464 4, /* 170 */ 5, /* 171 */ 4, /* 172 */ 5, /* 173 */ 5, /* 174 */
465 6, /* 175 */ 3, /* 176 */ 4, /* 177 */ 4, /* 178 */ 5, /* 179 */
466 4, /* 180 */ 5, /* 181 */ 5, /* 182 */ 6, /* 183 */ 4, /* 184 */
467 5, /* 185 */ 5, /* 186 */ 6, /* 187 */ 5, /* 188 */ 6, /* 189 */
468 6, /* 190 */ 7, /* 191 */ 2, /* 192 */ 3, /* 193 */ 3, /* 194 */
469 4, /* 195 */ 3, /* 196 */ 4, /* 197 */ 4, /* 198 */ 5, /* 199 */
470 3, /* 200 */ 4, /* 201 */ 4, /* 202 */ 5, /* 203 */ 4, /* 204 */
471 5, /* 205 */ 5, /* 206 */ 6, /* 207 */ 3, /* 208 */ 4, /* 209 */
472 4, /* 210 */ 5, /* 211 */ 4, /* 212 */ 5, /* 213 */ 5, /* 214 */
473 6, /* 215 */ 4, /* 216 */ 5, /* 217 */ 5, /* 218 */ 6, /* 219 */
474 5, /* 220 */ 6, /* 221 */ 6, /* 222 */ 7, /* 223 */ 3, /* 224 */
475 4, /* 225 */ 4, /* 226 */ 5, /* 227 */ 4, /* 228 */ 5, /* 229 */
476 5, /* 230 */ 6, /* 231 */ 4, /* 232 */ 5, /* 233 */ 5, /* 234 */
477 6, /* 235 */ 5, /* 236 */ 6, /* 237 */ 6, /* 238 */ 7, /* 239 */
478 4, /* 240 */ 5, /* 241 */ 5, /* 242 */ 6, /* 243 */ 5, /* 244 */
479 6, /* 245 */ 6, /* 246 */ 7, /* 247 */ 5, /* 248 */ 6, /* 249 */
480 6, /* 250 */ 7, /* 251 */ 6, /* 252 */ 7, /* 253 */ 7, /* 254 */
481 8 /* 255 */
482 }; // end _Bit_count
483
490 constexpr inline DGtal::uint8_t Bits::myLSB[] = {
491 0, /* 0 */ 0, /* 1 */ 1, /* 2 */ 0, /* 3 */ 2, /* 4 */
492 0, /* 5 */ 1, /* 6 */ 0, /* 7 */ 3, /* 8 */ 0, /* 9 */
493 1, /* 10 */ 0, /* 11 */ 2, /* 12 */ 0, /* 13 */ 1, /* 14 */
494 0, /* 15 */ 4, /* 16 */ 0, /* 17 */ 1, /* 18 */ 0, /* 19 */
495 2, /* 20 */ 0, /* 21 */ 1, /* 22 */ 0, /* 23 */ 3, /* 24 */
496 0, /* 25 */ 1, /* 26 */ 0, /* 27 */ 2, /* 28 */ 0, /* 29 */
497 1, /* 30 */ 0, /* 31 */ 5, /* 32 */ 0, /* 33 */ 1, /* 34 */
498 0, /* 35 */ 2, /* 36 */ 0, /* 37 */ 1, /* 38 */ 0, /* 39 */
499 3, /* 40 */ 0, /* 41 */ 1, /* 42 */ 0, /* 43 */ 2, /* 44 */
500 0, /* 45 */ 1, /* 46 */ 0, /* 47 */ 4, /* 48 */ 0, /* 49 */
501 1, /* 50 */ 0, /* 51 */ 2, /* 52 */ 0, /* 53 */ 1, /* 54 */
502 0, /* 55 */ 3, /* 56 */ 0, /* 57 */ 1, /* 58 */ 0, /* 59 */
503 2, /* 60 */ 0, /* 61 */ 1, /* 62 */ 0, /* 63 */ 6, /* 64 */
504 0, /* 65 */ 1, /* 66 */ 0, /* 67 */ 2, /* 68 */ 0, /* 69 */
505 1, /* 70 */ 0, /* 71 */ 3, /* 72 */ 0, /* 73 */ 1, /* 74 */
506 0, /* 75 */ 2, /* 76 */ 0, /* 77 */ 1, /* 78 */ 0, /* 79 */
507 4, /* 80 */ 0, /* 81 */ 1, /* 82 */ 0, /* 83 */ 2, /* 84 */
508 0, /* 85 */ 1, /* 86 */ 0, /* 87 */ 3, /* 88 */ 0, /* 89 */
509 1, /* 90 */ 0, /* 91 */ 2, /* 92 */ 0, /* 93 */ 1, /* 94 */
510 0, /* 95 */ 5, /* 96 */ 0, /* 97 */ 1, /* 98 */ 0, /* 99 */
511 2, /* 100 */ 0, /* 101 */ 1, /* 102 */ 0, /* 103 */ 3, /* 104 */
512 0, /* 105 */ 1, /* 106 */ 0, /* 107 */ 2, /* 108 */ 0, /* 109 */
513 1, /* 110 */ 0, /* 111 */ 4, /* 112 */ 0, /* 113 */ 1, /* 114 */
514 0, /* 115 */ 2, /* 116 */ 0, /* 117 */ 1, /* 118 */ 0, /* 119 */
515 3, /* 120 */ 0, /* 121 */ 1, /* 122 */ 0, /* 123 */ 2, /* 124 */
516 0, /* 125 */ 1, /* 126 */ 0, /* 127 */ 7, /* 128 */ 0, /* 129 */
517 1, /* 130 */ 0, /* 131 */ 2, /* 132 */ 0, /* 133 */ 1, /* 134 */
518 0, /* 135 */ 3, /* 136 */ 0, /* 137 */ 1, /* 138 */ 0, /* 139 */
519 2, /* 140 */ 0, /* 141 */ 1, /* 142 */ 0, /* 143 */ 4, /* 144 */
520 0, /* 145 */ 1, /* 146 */ 0, /* 147 */ 2, /* 148 */ 0, /* 149 */
521 1, /* 150 */ 0, /* 151 */ 3, /* 152 */ 0, /* 153 */ 1, /* 154 */
522 0, /* 155 */ 2, /* 156 */ 0, /* 157 */ 1, /* 158 */ 0, /* 159 */
523 5, /* 160 */ 0, /* 161 */ 1, /* 162 */ 0, /* 163 */ 2, /* 164 */
524 0, /* 165 */ 1, /* 166 */ 0, /* 167 */ 3, /* 168 */ 0, /* 169 */
525 1, /* 170 */ 0, /* 171 */ 2, /* 172 */ 0, /* 173 */ 1, /* 174 */
526 0, /* 175 */ 4, /* 176 */ 0, /* 177 */ 1, /* 178 */ 0, /* 179 */
527 2, /* 180 */ 0, /* 181 */ 1, /* 182 */ 0, /* 183 */ 3, /* 184 */
528 0, /* 185 */ 1, /* 186 */ 0, /* 187 */ 2, /* 188 */ 0, /* 189 */
529 1, /* 190 */ 0, /* 191 */ 6, /* 192 */ 0, /* 193 */ 1, /* 194 */
530 0, /* 195 */ 2, /* 196 */ 0, /* 197 */ 1, /* 198 */ 0, /* 199 */
531 3, /* 200 */ 0, /* 201 */ 1, /* 202 */ 0, /* 203 */ 2, /* 204 */
532 0, /* 205 */ 1, /* 206 */ 0, /* 207 */ 4, /* 208 */ 0, /* 209 */
533 1, /* 210 */ 0, /* 211 */ 2, /* 212 */ 0, /* 213 */ 1, /* 214 */
534 0, /* 215 */ 3, /* 216 */ 0, /* 217 */ 1, /* 218 */ 0, /* 219 */
535 2, /* 220 */ 0, /* 221 */ 1, /* 222 */ 0, /* 223 */ 5, /* 224 */
536 0, /* 225 */ 1, /* 226 */ 0, /* 227 */ 2, /* 228 */ 0, /* 229 */
537 1, /* 230 */ 0, /* 231 */ 3, /* 232 */ 0, /* 233 */ 1, /* 234 */
538 0, /* 235 */ 2, /* 236 */ 0, /* 237 */ 1, /* 238 */ 0, /* 239 */
539 4, /* 240 */ 0, /* 241 */ 1, /* 242 */ 0, /* 243 */ 2, /* 244 */
540 0, /* 245 */ 1, /* 246 */ 0, /* 247 */ 3, /* 248 */ 0, /* 249 */
541 1, /* 250 */ 0, /* 251 */ 2, /* 252 */ 0, /* 253 */ 1, /* 254 */
542 0, /* 255 */
543 }; // end _First_one
544
545
552 constexpr inline DGtal::uint8_t Bits::myMSB[] = {
553 0 /* 0*/ ,
554 0 /* 1*/ ,1 /* 2*/ ,1 /* 3*/ ,2 /* 4*/ ,2 /* 5*/ ,
555 2 /* 6*/ ,2 /* 7*/ ,3 /* 8*/ ,3 /* 9*/ ,3 /* 10*/ ,
556 3 /* 11*/ ,3 /* 12*/ ,3 /* 13*/ ,3 /* 14*/ ,3 /* 15*/ ,
557 4 /* 16*/ ,4 /* 17*/ ,4 /* 18*/ ,4 /* 19*/ ,4 /* 20*/ ,
558 4 /* 21*/ ,4 /* 22*/ ,4 /* 23*/ ,4 /* 24*/ ,4 /* 25*/ ,
559 4 /* 26*/ ,4 /* 27*/ ,4 /* 28*/ ,4 /* 29*/ ,4 /* 30*/ ,
560 4 /* 31*/ ,5 /* 32*/ ,5 /* 33*/ ,5 /* 34*/ ,5 /* 35*/ ,
561 5 /* 36*/ ,5 /* 37*/ ,5 /* 38*/ ,5 /* 39*/ ,5 /* 40*/ ,
562 5 /* 41*/ ,5 /* 42*/ ,5 /* 43*/ ,5 /* 44*/ ,5 /* 45*/ ,
563 5 /* 46*/ ,5 /* 47*/ ,5 /* 48*/ ,5 /* 49*/ ,5 /* 50*/ ,
564 5 /* 51*/ ,5 /* 52*/ ,5 /* 53*/ ,5 /* 54*/ ,5 /* 55*/ ,
565 5 /* 56*/ ,5 /* 57*/ ,5 /* 58*/ ,5 /* 59*/ ,5 /* 60*/ ,
566 5 /* 61*/ ,5 /* 62*/ ,5 /* 63*/ ,6 /* 64*/ ,6 /* 65*/ ,
567 6 /* 66*/ ,6 /* 67*/ ,6 /* 68*/ ,6 /* 69*/ ,6 /* 70*/ ,
568 6 /* 71*/ ,6 /* 72*/ ,6 /* 73*/ ,6 /* 74*/ ,6 /* 75*/ ,
569 6 /* 76*/ ,6 /* 77*/ ,6 /* 78*/ ,6 /* 79*/ ,6 /* 80*/ ,
570 6 /* 81*/ ,6 /* 82*/ ,6 /* 83*/ ,6 /* 84*/ ,6 /* 85*/ ,
571 6 /* 86*/ ,6 /* 87*/ ,6 /* 88*/ ,6 /* 89*/ ,6 /* 90*/ ,
572 6 /* 91*/ ,6 /* 92*/ ,6 /* 93*/ ,6 /* 94*/ ,6 /* 95*/ ,
573 6 /* 96*/ ,6 /* 97*/ ,6 /* 98*/ ,6 /* 99*/ ,6 /* 100*/ ,
574 6 /* 101*/ ,6 /* 102*/ ,6 /* 103*/ ,6 /* 104*/ ,6 /* 105*/ ,
575 6 /* 106*/ ,6 /* 107*/ ,6 /* 108*/ ,6 /* 109*/ ,6 /* 110*/ ,
576 6 /* 111*/ ,6 /* 112*/ ,6 /* 113*/ ,6 /* 114*/ ,6 /* 115*/ ,
577 6 /* 116*/ ,6 /* 117*/ ,6 /* 118*/ ,6 /* 119*/ ,6 /* 120*/ ,
578 6 /* 121*/ ,6 /* 122*/ ,6 /* 123*/ ,6 /* 124*/ ,6 /* 125*/ ,
579 6 /* 126*/ ,6 /* 127*/ ,7 /* 128*/ ,7 /* 129*/ ,7 /* 130*/ ,
580 7 /* 131*/ ,7 /* 132*/ ,7 /* 133*/ ,7 /* 134*/ ,7 /* 135*/ ,
581 7 /* 136*/ ,7 /* 137*/ ,7 /* 138*/ ,7 /* 139*/ ,7 /* 140*/ ,
582 7 /* 141*/ ,7 /* 142*/ ,7 /* 143*/ ,7 /* 144*/ ,7 /* 145*/ ,
583 7 /* 146*/ ,7 /* 147*/ ,7 /* 148*/ ,7 /* 149*/ ,7 /* 150*/ ,
584 7 /* 151*/ ,7 /* 152*/ ,7 /* 153*/ ,7 /* 154*/ ,7 /* 155*/ ,
585 7 /* 156*/ ,7 /* 157*/ ,7 /* 158*/ ,7 /* 159*/ ,7 /* 160*/ ,
586 7 /* 161*/ ,7 /* 162*/ ,7 /* 163*/ ,7 /* 164*/ ,7 /* 165*/ ,
587 7 /* 166*/ ,7 /* 167*/ ,7 /* 168*/ ,7 /* 169*/ ,7 /* 170*/ ,
588 7 /* 171*/ ,7 /* 172*/ ,7 /* 173*/ ,7 /* 174*/ ,7 /* 175*/ ,
589 7 /* 176*/ ,7 /* 177*/ ,7 /* 178*/ ,7 /* 179*/ ,7 /* 180*/ ,
590 7 /* 181*/ ,7 /* 182*/ ,7 /* 183*/ ,7 /* 184*/ ,7 /* 185*/ ,
591 7 /* 186*/ ,7 /* 187*/ ,7 /* 188*/ ,7 /* 189*/ ,7 /* 190*/ ,
592 7 /* 191*/ ,7 /* 192*/ ,7 /* 193*/ ,7 /* 194*/ ,7 /* 195*/ ,
593 7 /* 196*/ ,7 /* 197*/ ,7 /* 198*/ ,7 /* 199*/ ,7 /* 200*/ ,
594 7 /* 201*/ ,7 /* 202*/ ,7 /* 203*/ ,7 /* 204*/ ,7 /* 205*/ ,
595 7 /* 206*/ ,7 /* 207*/ ,7 /* 208*/ ,7 /* 209*/ ,7 /* 210*/ ,
596 7 /* 211*/ ,7 /* 212*/ ,7 /* 213*/ ,7 /* 214*/ ,7 /* 215*/ ,
597 7 /* 216*/ ,7 /* 217*/ ,7 /* 218*/ ,7 /* 219*/ ,7 /* 220*/ ,
598 7 /* 221*/ ,7 /* 222*/ ,7 /* 223*/ ,7 /* 224*/ ,7 /* 225*/ ,
599 7 /* 226*/ ,7 /* 227*/ ,7 /* 228*/ ,7 /* 229*/ ,7 /* 230*/ ,
600 7 /* 231*/ ,7 /* 232*/ ,7 /* 233*/ ,7 /* 234*/ ,7 /* 235*/ ,
601 7 /* 236*/ ,7 /* 237*/ ,7 /* 238*/ ,7 /* 239*/ ,7 /* 240*/ ,
602 7 /* 241*/ ,7 /* 242*/ ,7 /* 243*/ ,7 /* 244*/ ,7 /* 245*/ ,
603 7 /* 246*/ ,7 /* 247*/ ,7 /* 248*/ ,7 /* 249*/ ,7 /* 250*/ ,
604 7 /* 251*/ ,7 /* 252*/ ,7 /* 253*/ ,7 /* 254*/ ,7 /* 255*/ }; // end _First_one
605
615 constexpr inline DGtal::uint8_t Bits::myIndexInSetBits[ 8 ][ 256 ] = {
616 // Table for bit 0.
617 { 0 /*0*/, 1 /*1*/, 0 /*2*/, 1 /*3*/, 0 /*4*/, 1 /*5*/, 0 /*6*/, 1 /*7*/,
618 0 /*8*/, 1 /*9*/, 0 /*10*/, 1 /*11*/, 0 /*12*/, 1 /*13*/, 0 /*14*/, 1 /*15*/,
619 0 /*16*/, 1 /*17*/, 0 /*18*/, 1 /*19*/, 0 /*20*/, 1 /*21*/, 0 /*22*/, 1 /*23*/,
620 0 /*24*/, 1 /*25*/, 0 /*26*/, 1 /*27*/, 0 /*28*/, 1 /*29*/, 0 /*30*/, 1 /*31*/,
621 0 /*32*/, 1 /*33*/, 0 /*34*/, 1 /*35*/, 0 /*36*/, 1 /*37*/, 0 /*38*/, 1 /*39*/,
622 0 /*40*/, 1 /*41*/, 0 /*42*/, 1 /*43*/, 0 /*44*/, 1 /*45*/, 0 /*46*/, 1 /*47*/,
623 0 /*48*/, 1 /*49*/, 0 /*50*/, 1 /*51*/, 0 /*52*/, 1 /*53*/, 0 /*54*/, 1 /*55*/,
624 0 /*56*/, 1 /*57*/, 0 /*58*/, 1 /*59*/, 0 /*60*/, 1 /*61*/, 0 /*62*/, 1 /*63*/,
625 0 /*64*/, 1 /*65*/, 0 /*66*/, 1 /*67*/, 0 /*68*/, 1 /*69*/, 0 /*70*/, 1 /*71*/,
626 0 /*72*/, 1 /*73*/, 0 /*74*/, 1 /*75*/, 0 /*76*/, 1 /*77*/, 0 /*78*/, 1 /*79*/,
627 0 /*80*/, 1 /*81*/, 0 /*82*/, 1 /*83*/, 0 /*84*/, 1 /*85*/, 0 /*86*/, 1 /*87*/,
628 0 /*88*/, 1 /*89*/, 0 /*90*/, 1 /*91*/, 0 /*92*/, 1 /*93*/, 0 /*94*/, 1 /*95*/,
629 0 /*96*/, 1 /*97*/, 0 /*98*/, 1 /*99*/, 0 /*100*/, 1 /*101*/, 0 /*102*/, 1 /*103*/,
630 0 /*104*/, 1 /*105*/, 0 /*106*/, 1 /*107*/, 0 /*108*/, 1 /*109*/, 0 /*110*/, 1 /*111*/,
631 0 /*112*/, 1 /*113*/, 0 /*114*/, 1 /*115*/, 0 /*116*/, 1 /*117*/, 0 /*118*/, 1 /*119*/,
632 0 /*120*/, 1 /*121*/, 0 /*122*/, 1 /*123*/, 0 /*124*/, 1 /*125*/, 0 /*126*/, 1 /*127*/,
633 0 /*128*/, 1 /*129*/, 0 /*130*/, 1 /*131*/, 0 /*132*/, 1 /*133*/, 0 /*134*/, 1 /*135*/,
634 0 /*136*/, 1 /*137*/, 0 /*138*/, 1 /*139*/, 0 /*140*/, 1 /*141*/, 0 /*142*/, 1 /*143*/,
635 0 /*144*/, 1 /*145*/, 0 /*146*/, 1 /*147*/, 0 /*148*/, 1 /*149*/, 0 /*150*/, 1 /*151*/,
636 0 /*152*/, 1 /*153*/, 0 /*154*/, 1 /*155*/, 0 /*156*/, 1 /*157*/, 0 /*158*/, 1 /*159*/,
637 0 /*160*/, 1 /*161*/, 0 /*162*/, 1 /*163*/, 0 /*164*/, 1 /*165*/, 0 /*166*/, 1 /*167*/,
638 0 /*168*/, 1 /*169*/, 0 /*170*/, 1 /*171*/, 0 /*172*/, 1 /*173*/, 0 /*174*/, 1 /*175*/,
639 0 /*176*/, 1 /*177*/, 0 /*178*/, 1 /*179*/, 0 /*180*/, 1 /*181*/, 0 /*182*/, 1 /*183*/,
640 0 /*184*/, 1 /*185*/, 0 /*186*/, 1 /*187*/, 0 /*188*/, 1 /*189*/, 0 /*190*/, 1 /*191*/,
641 0 /*192*/, 1 /*193*/, 0 /*194*/, 1 /*195*/, 0 /*196*/, 1 /*197*/, 0 /*198*/, 1 /*199*/,
642 0 /*200*/, 1 /*201*/, 0 /*202*/, 1 /*203*/, 0 /*204*/, 1 /*205*/, 0 /*206*/, 1 /*207*/,
643 0 /*208*/, 1 /*209*/, 0 /*210*/, 1 /*211*/, 0 /*212*/, 1 /*213*/, 0 /*214*/, 1 /*215*/,
644 0 /*216*/, 1 /*217*/, 0 /*218*/, 1 /*219*/, 0 /*220*/, 1 /*221*/, 0 /*222*/, 1 /*223*/,
645 0 /*224*/, 1 /*225*/, 0 /*226*/, 1 /*227*/, 0 /*228*/, 1 /*229*/, 0 /*230*/, 1 /*231*/,
646 0 /*232*/, 1 /*233*/, 0 /*234*/, 1 /*235*/, 0 /*236*/, 1 /*237*/, 0 /*238*/, 1 /*239*/,
647 0 /*240*/, 1 /*241*/, 0 /*242*/, 1 /*243*/, 0 /*244*/, 1 /*245*/, 0 /*246*/, 1 /*247*/,
648 0 /*248*/, 1 /*249*/, 0 /*250*/, 1 /*251*/, 0 /*252*/, 1 /*253*/, 0 /*254*/, 1 /*255*/ },
649 // Table for bit 1.
650 { 0 /*0*/, 0 /*1*/, 1 /*2*/, 2 /*3*/, 0 /*4*/, 0 /*5*/, 1 /*6*/, 2 /*7*/,
651 0 /*8*/, 0 /*9*/, 1 /*10*/, 2 /*11*/, 0 /*12*/, 0 /*13*/, 1 /*14*/, 2 /*15*/,
652 0 /*16*/, 0 /*17*/, 1 /*18*/, 2 /*19*/, 0 /*20*/, 0 /*21*/, 1 /*22*/, 2 /*23*/,
653 0 /*24*/, 0 /*25*/, 1 /*26*/, 2 /*27*/, 0 /*28*/, 0 /*29*/, 1 /*30*/, 2 /*31*/,
654 0 /*32*/, 0 /*33*/, 1 /*34*/, 2 /*35*/, 0 /*36*/, 0 /*37*/, 1 /*38*/, 2 /*39*/,
655 0 /*40*/, 0 /*41*/, 1 /*42*/, 2 /*43*/, 0 /*44*/, 0 /*45*/, 1 /*46*/, 2 /*47*/,
656 0 /*48*/, 0 /*49*/, 1 /*50*/, 2 /*51*/, 0 /*52*/, 0 /*53*/, 1 /*54*/, 2 /*55*/,
657 0 /*56*/, 0 /*57*/, 1 /*58*/, 2 /*59*/, 0 /*60*/, 0 /*61*/, 1 /*62*/, 2 /*63*/,
658 0 /*64*/, 0 /*65*/, 1 /*66*/, 2 /*67*/, 0 /*68*/, 0 /*69*/, 1 /*70*/, 2 /*71*/,
659 0 /*72*/, 0 /*73*/, 1 /*74*/, 2 /*75*/, 0 /*76*/, 0 /*77*/, 1 /*78*/, 2 /*79*/,
660 0 /*80*/, 0 /*81*/, 1 /*82*/, 2 /*83*/, 0 /*84*/, 0 /*85*/, 1 /*86*/, 2 /*87*/,
661 0 /*88*/, 0 /*89*/, 1 /*90*/, 2 /*91*/, 0 /*92*/, 0 /*93*/, 1 /*94*/, 2 /*95*/,
662 0 /*96*/, 0 /*97*/, 1 /*98*/, 2 /*99*/, 0 /*100*/, 0 /*101*/, 1 /*102*/, 2 /*103*/,
663 0 /*104*/, 0 /*105*/, 1 /*106*/, 2 /*107*/, 0 /*108*/, 0 /*109*/, 1 /*110*/, 2 /*111*/,
664 0 /*112*/, 0 /*113*/, 1 /*114*/, 2 /*115*/, 0 /*116*/, 0 /*117*/, 1 /*118*/, 2 /*119*/,
665 0 /*120*/, 0 /*121*/, 1 /*122*/, 2 /*123*/, 0 /*124*/, 0 /*125*/, 1 /*126*/, 2 /*127*/,
666 0 /*128*/, 0 /*129*/, 1 /*130*/, 2 /*131*/, 0 /*132*/, 0 /*133*/, 1 /*134*/, 2 /*135*/,
667 0 /*136*/, 0 /*137*/, 1 /*138*/, 2 /*139*/, 0 /*140*/, 0 /*141*/, 1 /*142*/, 2 /*143*/,
668 0 /*144*/, 0 /*145*/, 1 /*146*/, 2 /*147*/, 0 /*148*/, 0 /*149*/, 1 /*150*/, 2 /*151*/,
669 0 /*152*/, 0 /*153*/, 1 /*154*/, 2 /*155*/, 0 /*156*/, 0 /*157*/, 1 /*158*/, 2 /*159*/,
670 0 /*160*/, 0 /*161*/, 1 /*162*/, 2 /*163*/, 0 /*164*/, 0 /*165*/, 1 /*166*/, 2 /*167*/,
671 0 /*168*/, 0 /*169*/, 1 /*170*/, 2 /*171*/, 0 /*172*/, 0 /*173*/, 1 /*174*/, 2 /*175*/,
672 0 /*176*/, 0 /*177*/, 1 /*178*/, 2 /*179*/, 0 /*180*/, 0 /*181*/, 1 /*182*/, 2 /*183*/,
673 0 /*184*/, 0 /*185*/, 1 /*186*/, 2 /*187*/, 0 /*188*/, 0 /*189*/, 1 /*190*/, 2 /*191*/,
674 0 /*192*/, 0 /*193*/, 1 /*194*/, 2 /*195*/, 0 /*196*/, 0 /*197*/, 1 /*198*/, 2 /*199*/,
675 0 /*200*/, 0 /*201*/, 1 /*202*/, 2 /*203*/, 0 /*204*/, 0 /*205*/, 1 /*206*/, 2 /*207*/,
676 0 /*208*/, 0 /*209*/, 1 /*210*/, 2 /*211*/, 0 /*212*/, 0 /*213*/, 1 /*214*/, 2 /*215*/,
677 0 /*216*/, 0 /*217*/, 1 /*218*/, 2 /*219*/, 0 /*220*/, 0 /*221*/, 1 /*222*/, 2 /*223*/,
678 0 /*224*/, 0 /*225*/, 1 /*226*/, 2 /*227*/, 0 /*228*/, 0 /*229*/, 1 /*230*/, 2 /*231*/,
679 0 /*232*/, 0 /*233*/, 1 /*234*/, 2 /*235*/, 0 /*236*/, 0 /*237*/, 1 /*238*/, 2 /*239*/,
680 0 /*240*/, 0 /*241*/, 1 /*242*/, 2 /*243*/, 0 /*244*/, 0 /*245*/, 1 /*246*/, 2 /*247*/,
681 0 /*248*/, 0 /*249*/, 1 /*250*/, 2 /*251*/, 0 /*252*/, 0 /*253*/, 1 /*254*/, 2 /*255*/},
682 // Table for bit 2.
683 { 0 /*0*/, 0 /*1*/, 0 /*2*/, 0 /*3*/, 1 /*4*/, 2 /*5*/, 2 /*6*/, 3 /*7*/,
684 0 /*8*/, 0 /*9*/, 0 /*10*/, 0 /*11*/, 1 /*12*/, 2 /*13*/, 2 /*14*/, 3 /*15*/,
685 0 /*16*/, 0 /*17*/, 0 /*18*/, 0 /*19*/, 1 /*20*/, 2 /*21*/, 2 /*22*/, 3 /*23*/,
686 0 /*24*/, 0 /*25*/, 0 /*26*/, 0 /*27*/, 1 /*28*/, 2 /*29*/, 2 /*30*/, 3 /*31*/,
687 0 /*32*/, 0 /*33*/, 0 /*34*/, 0 /*35*/, 1 /*36*/, 2 /*37*/, 2 /*38*/, 3 /*39*/,
688 0 /*40*/, 0 /*41*/, 0 /*42*/, 0 /*43*/, 1 /*44*/, 2 /*45*/, 2 /*46*/, 3 /*47*/,
689 0 /*48*/, 0 /*49*/, 0 /*50*/, 0 /*51*/, 1 /*52*/, 2 /*53*/, 2 /*54*/, 3 /*55*/,
690 0 /*56*/, 0 /*57*/, 0 /*58*/, 0 /*59*/, 1 /*60*/, 2 /*61*/, 2 /*62*/, 3 /*63*/,
691 0 /*64*/, 0 /*65*/, 0 /*66*/, 0 /*67*/, 1 /*68*/, 2 /*69*/, 2 /*70*/, 3 /*71*/,
692 0 /*72*/, 0 /*73*/, 0 /*74*/, 0 /*75*/, 1 /*76*/, 2 /*77*/, 2 /*78*/, 3 /*79*/,
693 0 /*80*/, 0 /*81*/, 0 /*82*/, 0 /*83*/, 1 /*84*/, 2 /*85*/, 2 /*86*/, 3 /*87*/,
694 0 /*88*/, 0 /*89*/, 0 /*90*/, 0 /*91*/, 1 /*92*/, 2 /*93*/, 2 /*94*/, 3 /*95*/,
695 0 /*96*/, 0 /*97*/, 0 /*98*/, 0 /*99*/, 1 /*100*/, 2 /*101*/, 2 /*102*/, 3 /*103*/,
696 0 /*104*/, 0 /*105*/, 0 /*106*/, 0 /*107*/, 1 /*108*/, 2 /*109*/, 2 /*110*/, 3 /*111*/,
697 0 /*112*/, 0 /*113*/, 0 /*114*/, 0 /*115*/, 1 /*116*/, 2 /*117*/, 2 /*118*/, 3 /*119*/,
698 0 /*120*/, 0 /*121*/, 0 /*122*/, 0 /*123*/, 1 /*124*/, 2 /*125*/, 2 /*126*/, 3 /*127*/,
699 0 /*128*/, 0 /*129*/, 0 /*130*/, 0 /*131*/, 1 /*132*/, 2 /*133*/, 2 /*134*/, 3 /*135*/,
700 0 /*136*/, 0 /*137*/, 0 /*138*/, 0 /*139*/, 1 /*140*/, 2 /*141*/, 2 /*142*/, 3 /*143*/,
701 0 /*144*/, 0 /*145*/, 0 /*146*/, 0 /*147*/, 1 /*148*/, 2 /*149*/, 2 /*150*/, 3 /*151*/,
702 0 /*152*/, 0 /*153*/, 0 /*154*/, 0 /*155*/, 1 /*156*/, 2 /*157*/, 2 /*158*/, 3 /*159*/,
703 0 /*160*/, 0 /*161*/, 0 /*162*/, 0 /*163*/, 1 /*164*/, 2 /*165*/, 2 /*166*/, 3 /*167*/,
704 0 /*168*/, 0 /*169*/, 0 /*170*/, 0 /*171*/, 1 /*172*/, 2 /*173*/, 2 /*174*/, 3 /*175*/,
705 0 /*176*/, 0 /*177*/, 0 /*178*/, 0 /*179*/, 1 /*180*/, 2 /*181*/, 2 /*182*/, 3 /*183*/,
706 0 /*184*/, 0 /*185*/, 0 /*186*/, 0 /*187*/, 1 /*188*/, 2 /*189*/, 2 /*190*/, 3 /*191*/,
707 0 /*192*/, 0 /*193*/, 0 /*194*/, 0 /*195*/, 1 /*196*/, 2 /*197*/, 2 /*198*/, 3 /*199*/,
708 0 /*200*/, 0 /*201*/, 0 /*202*/, 0 /*203*/, 1 /*204*/, 2 /*205*/, 2 /*206*/, 3 /*207*/,
709 0 /*208*/, 0 /*209*/, 0 /*210*/, 0 /*211*/, 1 /*212*/, 2 /*213*/, 2 /*214*/, 3 /*215*/,
710 0 /*216*/, 0 /*217*/, 0 /*218*/, 0 /*219*/, 1 /*220*/, 2 /*221*/, 2 /*222*/, 3 /*223*/,
711 0 /*224*/, 0 /*225*/, 0 /*226*/, 0 /*227*/, 1 /*228*/, 2 /*229*/, 2 /*230*/, 3 /*231*/,
712 0 /*232*/, 0 /*233*/, 0 /*234*/, 0 /*235*/, 1 /*236*/, 2 /*237*/, 2 /*238*/, 3 /*239*/,
713 0 /*240*/, 0 /*241*/, 0 /*242*/, 0 /*243*/, 1 /*244*/, 2 /*245*/, 2 /*246*/, 3 /*247*/,
714 0 /*248*/, 0 /*249*/, 0 /*250*/, 0 /*251*/, 1 /*252*/, 2 /*253*/, 2 /*254*/, 3 /*255*/},
715 // Table for bit 3.
716 { 0 /*0*/, 0 /*1*/, 0 /*2*/, 0 /*3*/, 0 /*4*/, 0 /*5*/, 0 /*6*/, 0 /*7*/,
717 1 /*8*/, 2 /*9*/, 2 /*10*/, 3 /*11*/, 2 /*12*/, 3 /*13*/, 3 /*14*/, 4 /*15*/,
718 0 /*16*/, 0 /*17*/, 0 /*18*/, 0 /*19*/, 0 /*20*/, 0 /*21*/, 0 /*22*/, 0 /*23*/,
719 1 /*24*/, 2 /*25*/, 2 /*26*/, 3 /*27*/, 2 /*28*/, 3 /*29*/, 3 /*30*/, 4 /*31*/,
720 0 /*32*/, 0 /*33*/, 0 /*34*/, 0 /*35*/, 0 /*36*/, 0 /*37*/, 0 /*38*/, 0 /*39*/,
721 1 /*40*/, 2 /*41*/, 2 /*42*/, 3 /*43*/, 2 /*44*/, 3 /*45*/, 3 /*46*/, 4 /*47*/,
722 0 /*48*/, 0 /*49*/, 0 /*50*/, 0 /*51*/, 0 /*52*/, 0 /*53*/, 0 /*54*/, 0 /*55*/,
723 1 /*56*/, 2 /*57*/, 2 /*58*/, 3 /*59*/, 2 /*60*/, 3 /*61*/, 3 /*62*/, 4 /*63*/,
724 0 /*64*/, 0 /*65*/, 0 /*66*/, 0 /*67*/, 0 /*68*/, 0 /*69*/, 0 /*70*/, 0 /*71*/,
725 1 /*72*/, 2 /*73*/, 2 /*74*/, 3 /*75*/, 2 /*76*/, 3 /*77*/, 3 /*78*/, 4 /*79*/,
726 0 /*80*/, 0 /*81*/, 0 /*82*/, 0 /*83*/, 0 /*84*/, 0 /*85*/, 0 /*86*/, 0 /*87*/,
727 1 /*88*/, 2 /*89*/, 2 /*90*/, 3 /*91*/, 2 /*92*/, 3 /*93*/, 3 /*94*/, 4 /*95*/,
728 0 /*96*/, 0 /*97*/, 0 /*98*/, 0 /*99*/, 0 /*100*/, 0 /*101*/, 0 /*102*/, 0 /*103*/,
729 1 /*104*/, 2 /*105*/, 2 /*106*/, 3 /*107*/, 2 /*108*/, 3 /*109*/, 3 /*110*/, 4 /*111*/,
730 0 /*112*/, 0 /*113*/, 0 /*114*/, 0 /*115*/, 0 /*116*/, 0 /*117*/, 0 /*118*/, 0 /*119*/,
731 1 /*120*/, 2 /*121*/, 2 /*122*/, 3 /*123*/, 2 /*124*/, 3 /*125*/, 3 /*126*/, 4 /*127*/,
732 0 /*128*/, 0 /*129*/, 0 /*130*/, 0 /*131*/, 0 /*132*/, 0 /*133*/, 0 /*134*/, 0 /*135*/,
733 1 /*136*/, 2 /*137*/, 2 /*138*/, 3 /*139*/, 2 /*140*/, 3 /*141*/, 3 /*142*/, 4 /*143*/,
734 0 /*144*/, 0 /*145*/, 0 /*146*/, 0 /*147*/, 0 /*148*/, 0 /*149*/, 0 /*150*/, 0 /*151*/,
735 1 /*152*/, 2 /*153*/, 2 /*154*/, 3 /*155*/, 2 /*156*/, 3 /*157*/, 3 /*158*/, 4 /*159*/,
736 0 /*160*/, 0 /*161*/, 0 /*162*/, 0 /*163*/, 0 /*164*/, 0 /*165*/, 0 /*166*/, 0 /*167*/,
737 1 /*168*/, 2 /*169*/, 2 /*170*/, 3 /*171*/, 2 /*172*/, 3 /*173*/, 3 /*174*/, 4 /*175*/,
738 0 /*176*/, 0 /*177*/, 0 /*178*/, 0 /*179*/, 0 /*180*/, 0 /*181*/, 0 /*182*/, 0 /*183*/,
739 1 /*184*/, 2 /*185*/, 2 /*186*/, 3 /*187*/, 2 /*188*/, 3 /*189*/, 3 /*190*/, 4 /*191*/,
740 0 /*192*/, 0 /*193*/, 0 /*194*/, 0 /*195*/, 0 /*196*/, 0 /*197*/, 0 /*198*/, 0 /*199*/,
741 1 /*200*/, 2 /*201*/, 2 /*202*/, 3 /*203*/, 2 /*204*/, 3 /*205*/, 3 /*206*/, 4 /*207*/,
742 0 /*208*/, 0 /*209*/, 0 /*210*/, 0 /*211*/, 0 /*212*/, 0 /*213*/, 0 /*214*/, 0 /*215*/,
743 1 /*216*/, 2 /*217*/, 2 /*218*/, 3 /*219*/, 2 /*220*/, 3 /*221*/, 3 /*222*/, 4 /*223*/,
744 0 /*224*/, 0 /*225*/, 0 /*226*/, 0 /*227*/, 0 /*228*/, 0 /*229*/, 0 /*230*/, 0 /*231*/,
745 1 /*232*/, 2 /*233*/, 2 /*234*/, 3 /*235*/, 2 /*236*/, 3 /*237*/, 3 /*238*/, 4 /*239*/,
746 0 /*240*/, 0 /*241*/, 0 /*242*/, 0 /*243*/, 0 /*244*/, 0 /*245*/, 0 /*246*/, 0 /*247*/,
747 1 /*248*/, 2 /*249*/, 2 /*250*/, 3 /*251*/, 2 /*252*/, 3 /*253*/, 3 /*254*/, 4 /*255*/},
748 // Table for bit 4.
749 { 0 /*0*/, 0 /*1*/, 0 /*2*/, 0 /*3*/, 0 /*4*/, 0 /*5*/, 0 /*6*/, 0 /*7*/,
750 0 /*8*/, 0 /*9*/, 0 /*10*/, 0 /*11*/, 0 /*12*/, 0 /*13*/, 0 /*14*/, 0 /*15*/,
751 1 /*16*/, 2 /*17*/, 2 /*18*/, 3 /*19*/, 2 /*20*/, 3 /*21*/, 3 /*22*/, 4 /*23*/,
752 2 /*24*/, 3 /*25*/, 3 /*26*/, 4 /*27*/, 3 /*28*/, 4 /*29*/, 4 /*30*/, 5 /*31*/,
753 0 /*32*/, 0 /*33*/, 0 /*34*/, 0 /*35*/, 0 /*36*/, 0 /*37*/, 0 /*38*/, 0 /*39*/,
754 0 /*40*/, 0 /*41*/, 0 /*42*/, 0 /*43*/, 0 /*44*/, 0 /*45*/, 0 /*46*/, 0 /*47*/,
755 1 /*48*/, 2 /*49*/, 2 /*50*/, 3 /*51*/, 2 /*52*/, 3 /*53*/, 3 /*54*/, 4 /*55*/,
756 2 /*56*/, 3 /*57*/, 3 /*58*/, 4 /*59*/, 3 /*60*/, 4 /*61*/, 4 /*62*/, 5 /*63*/,
757 0 /*64*/, 0 /*65*/, 0 /*66*/, 0 /*67*/, 0 /*68*/, 0 /*69*/, 0 /*70*/, 0 /*71*/,
758 0 /*72*/, 0 /*73*/, 0 /*74*/, 0 /*75*/, 0 /*76*/, 0 /*77*/, 0 /*78*/, 0 /*79*/,
759 1 /*80*/, 2 /*81*/, 2 /*82*/, 3 /*83*/, 2 /*84*/, 3 /*85*/, 3 /*86*/, 4 /*87*/,
760 2 /*88*/, 3 /*89*/, 3 /*90*/, 4 /*91*/, 3 /*92*/, 4 /*93*/, 4 /*94*/, 5 /*95*/,
761 0 /*96*/, 0 /*97*/, 0 /*98*/, 0 /*99*/, 0 /*100*/, 0 /*101*/, 0 /*102*/, 0 /*103*/,
762 0 /*104*/, 0 /*105*/, 0 /*106*/, 0 /*107*/, 0 /*108*/, 0 /*109*/, 0 /*110*/, 0 /*111*/,
763 1 /*112*/, 2 /*113*/, 2 /*114*/, 3 /*115*/, 2 /*116*/, 3 /*117*/, 3 /*118*/, 4 /*119*/,
764 2 /*120*/, 3 /*121*/, 3 /*122*/, 4 /*123*/, 3 /*124*/, 4 /*125*/, 4 /*126*/, 5 /*127*/,
765 0 /*128*/, 0 /*129*/, 0 /*130*/, 0 /*131*/, 0 /*132*/, 0 /*133*/, 0 /*134*/, 0 /*135*/,
766 0 /*136*/, 0 /*137*/, 0 /*138*/, 0 /*139*/, 0 /*140*/, 0 /*141*/, 0 /*142*/, 0 /*143*/,
767 1 /*144*/, 2 /*145*/, 2 /*146*/, 3 /*147*/, 2 /*148*/, 3 /*149*/, 3 /*150*/, 4 /*151*/,
768 2 /*152*/, 3 /*153*/, 3 /*154*/, 4 /*155*/, 3 /*156*/, 4 /*157*/, 4 /*158*/, 5 /*159*/,
769 0 /*160*/, 0 /*161*/, 0 /*162*/, 0 /*163*/, 0 /*164*/, 0 /*165*/, 0 /*166*/, 0 /*167*/,
770 0 /*168*/, 0 /*169*/, 0 /*170*/, 0 /*171*/, 0 /*172*/, 0 /*173*/, 0 /*174*/, 0 /*175*/,
771 1 /*176*/, 2 /*177*/, 2 /*178*/, 3 /*179*/, 2 /*180*/, 3 /*181*/, 3 /*182*/, 4 /*183*/,
772 2 /*184*/, 3 /*185*/, 3 /*186*/, 4 /*187*/, 3 /*188*/, 4 /*189*/, 4 /*190*/, 5 /*191*/,
773 0 /*192*/, 0 /*193*/, 0 /*194*/, 0 /*195*/, 0 /*196*/, 0 /*197*/, 0 /*198*/, 0 /*199*/,
774 0 /*200*/, 0 /*201*/, 0 /*202*/, 0 /*203*/, 0 /*204*/, 0 /*205*/, 0 /*206*/, 0 /*207*/,
775 1 /*208*/, 2 /*209*/, 2 /*210*/, 3 /*211*/, 2 /*212*/, 3 /*213*/, 3 /*214*/, 4 /*215*/,
776 2 /*216*/, 3 /*217*/, 3 /*218*/, 4 /*219*/, 3 /*220*/, 4 /*221*/, 4 /*222*/, 5 /*223*/,
777 0 /*224*/, 0 /*225*/, 0 /*226*/, 0 /*227*/, 0 /*228*/, 0 /*229*/, 0 /*230*/, 0 /*231*/,
778 0 /*232*/, 0 /*233*/, 0 /*234*/, 0 /*235*/, 0 /*236*/, 0 /*237*/, 0 /*238*/, 0 /*239*/,
779 1 /*240*/, 2 /*241*/, 2 /*242*/, 3 /*243*/, 2 /*244*/, 3 /*245*/, 3 /*246*/, 4 /*247*/,
780 2 /*248*/, 3 /*249*/, 3 /*250*/, 4 /*251*/, 3 /*252*/, 4 /*253*/, 4 /*254*/, 5 /*255*/ },
781 // Table for bit 5.
782 { 0 /*0*/, 0 /*1*/, 0 /*2*/, 0 /*3*/, 0 /*4*/, 0 /*5*/, 0 /*6*/, 0 /*7*/,
783 0 /*8*/, 0 /*9*/, 0 /*10*/, 0 /*11*/, 0 /*12*/, 0 /*13*/, 0 /*14*/, 0 /*15*/,
784 0 /*16*/, 0 /*17*/, 0 /*18*/, 0 /*19*/, 0 /*20*/, 0 /*21*/, 0 /*22*/, 0 /*23*/,
785 0 /*24*/, 0 /*25*/, 0 /*26*/, 0 /*27*/, 0 /*28*/, 0 /*29*/, 0 /*30*/, 0 /*31*/,
786 1 /*32*/, 2 /*33*/, 2 /*34*/, 3 /*35*/, 2 /*36*/, 3 /*37*/, 3 /*38*/, 4 /*39*/,
787 2 /*40*/, 3 /*41*/, 3 /*42*/, 4 /*43*/, 3 /*44*/, 4 /*45*/, 4 /*46*/, 5 /*47*/,
788 2 /*48*/, 3 /*49*/, 3 /*50*/, 4 /*51*/, 3 /*52*/, 4 /*53*/, 4 /*54*/, 5 /*55*/,
789 3 /*56*/, 4 /*57*/, 4 /*58*/, 5 /*59*/, 4 /*60*/, 5 /*61*/, 5 /*62*/, 6 /*63*/,
790 0 /*64*/, 0 /*65*/, 0 /*66*/, 0 /*67*/, 0 /*68*/, 0 /*69*/, 0 /*70*/, 0 /*71*/,
791 0 /*72*/, 0 /*73*/, 0 /*74*/, 0 /*75*/, 0 /*76*/, 0 /*77*/, 0 /*78*/, 0 /*79*/,
792 0 /*80*/, 0 /*81*/, 0 /*82*/, 0 /*83*/, 0 /*84*/, 0 /*85*/, 0 /*86*/, 0 /*87*/,
793 0 /*88*/, 0 /*89*/, 0 /*90*/, 0 /*91*/, 0 /*92*/, 0 /*93*/, 0 /*94*/, 0 /*95*/,
794 1 /*96*/, 2 /*97*/, 2 /*98*/, 3 /*99*/, 2 /*100*/, 3 /*101*/, 3 /*102*/, 4 /*103*/,
795 2 /*104*/, 3 /*105*/, 3 /*106*/, 4 /*107*/, 3 /*108*/, 4 /*109*/, 4 /*110*/, 5 /*111*/,
796 2 /*112*/, 3 /*113*/, 3 /*114*/, 4 /*115*/, 3 /*116*/, 4 /*117*/, 4 /*118*/, 5 /*119*/,
797 3 /*120*/, 4 /*121*/, 4 /*122*/, 5 /*123*/, 4 /*124*/, 5 /*125*/, 5 /*126*/, 6 /*127*/,
798 0 /*128*/, 0 /*129*/, 0 /*130*/, 0 /*131*/, 0 /*132*/, 0 /*133*/, 0 /*134*/, 0 /*135*/,
799 0 /*136*/, 0 /*137*/, 0 /*138*/, 0 /*139*/, 0 /*140*/, 0 /*141*/, 0 /*142*/, 0 /*143*/,
800 0 /*144*/, 0 /*145*/, 0 /*146*/, 0 /*147*/, 0 /*148*/, 0 /*149*/, 0 /*150*/, 0 /*151*/,
801 0 /*152*/, 0 /*153*/, 0 /*154*/, 0 /*155*/, 0 /*156*/, 0 /*157*/, 0 /*158*/, 0 /*159*/,
802 1 /*160*/, 2 /*161*/, 2 /*162*/, 3 /*163*/, 2 /*164*/, 3 /*165*/, 3 /*166*/, 4 /*167*/,
803 2 /*168*/, 3 /*169*/, 3 /*170*/, 4 /*171*/, 3 /*172*/, 4 /*173*/, 4 /*174*/, 5 /*175*/,
804 2 /*176*/, 3 /*177*/, 3 /*178*/, 4 /*179*/, 3 /*180*/, 4 /*181*/, 4 /*182*/, 5 /*183*/,
805 3 /*184*/, 4 /*185*/, 4 /*186*/, 5 /*187*/, 4 /*188*/, 5 /*189*/, 5 /*190*/, 6 /*191*/,
806 0 /*192*/, 0 /*193*/, 0 /*194*/, 0 /*195*/, 0 /*196*/, 0 /*197*/, 0 /*198*/, 0 /*199*/,
807 0 /*200*/, 0 /*201*/, 0 /*202*/, 0 /*203*/, 0 /*204*/, 0 /*205*/, 0 /*206*/, 0 /*207*/,
808 0 /*208*/, 0 /*209*/, 0 /*210*/, 0 /*211*/, 0 /*212*/, 0 /*213*/, 0 /*214*/, 0 /*215*/,
809 0 /*216*/, 0 /*217*/, 0 /*218*/, 0 /*219*/, 0 /*220*/, 0 /*221*/, 0 /*222*/, 0 /*223*/,
810 1 /*224*/, 2 /*225*/, 2 /*226*/, 3 /*227*/, 2 /*228*/, 3 /*229*/, 3 /*230*/, 4 /*231*/,
811 2 /*232*/, 3 /*233*/, 3 /*234*/, 4 /*235*/, 3 /*236*/, 4 /*237*/, 4 /*238*/, 5 /*239*/,
812 2 /*240*/, 3 /*241*/, 3 /*242*/, 4 /*243*/, 3 /*244*/, 4 /*245*/, 4 /*246*/, 5 /*247*/,
813 3 /*248*/, 4 /*249*/, 4 /*250*/, 5 /*251*/, 4 /*252*/, 5 /*253*/, 5 /*254*/, 6 /*255*/},
814 // Table for bit 6.
815 { 0 /*0*/, 0 /*1*/, 0 /*2*/, 0 /*3*/, 0 /*4*/, 0 /*5*/, 0 /*6*/, 0 /*7*/,
816 0 /*8*/, 0 /*9*/, 0 /*10*/, 0 /*11*/, 0 /*12*/, 0 /*13*/, 0 /*14*/, 0 /*15*/,
817 0 /*16*/, 0 /*17*/, 0 /*18*/, 0 /*19*/, 0 /*20*/, 0 /*21*/, 0 /*22*/, 0 /*23*/,
818 0 /*24*/, 0 /*25*/, 0 /*26*/, 0 /*27*/, 0 /*28*/, 0 /*29*/, 0 /*30*/, 0 /*31*/,
819 0 /*32*/, 0 /*33*/, 0 /*34*/, 0 /*35*/, 0 /*36*/, 0 /*37*/, 0 /*38*/, 0 /*39*/,
820 0 /*40*/, 0 /*41*/, 0 /*42*/, 0 /*43*/, 0 /*44*/, 0 /*45*/, 0 /*46*/, 0 /*47*/,
821 0 /*48*/, 0 /*49*/, 0 /*50*/, 0 /*51*/, 0 /*52*/, 0 /*53*/, 0 /*54*/, 0 /*55*/,
822 0 /*56*/, 0 /*57*/, 0 /*58*/, 0 /*59*/, 0 /*60*/, 0 /*61*/, 0 /*62*/, 0 /*63*/,
823 1 /*64*/, 2 /*65*/, 2 /*66*/, 3 /*67*/, 2 /*68*/, 3 /*69*/, 3 /*70*/, 4 /*71*/,
824 2 /*72*/, 3 /*73*/, 3 /*74*/, 4 /*75*/, 3 /*76*/, 4 /*77*/, 4 /*78*/, 5 /*79*/,
825 2 /*80*/, 3 /*81*/, 3 /*82*/, 4 /*83*/, 3 /*84*/, 4 /*85*/, 4 /*86*/, 5 /*87*/,
826 3 /*88*/, 4 /*89*/, 4 /*90*/, 5 /*91*/, 4 /*92*/, 5 /*93*/, 5 /*94*/, 6 /*95*/,
827 2 /*96*/, 3 /*97*/, 3 /*98*/, 4 /*99*/, 3 /*100*/, 4 /*101*/, 4 /*102*/, 5 /*103*/,
828 3 /*104*/, 4 /*105*/, 4 /*106*/, 5 /*107*/, 4 /*108*/, 5 /*109*/, 5 /*110*/, 6 /*111*/,
829 3 /*112*/, 4 /*113*/, 4 /*114*/, 5 /*115*/, 4 /*116*/, 5 /*117*/, 5 /*118*/, 6 /*119*/,
830 4 /*120*/, 5 /*121*/, 5 /*122*/, 6 /*123*/, 5 /*124*/, 6 /*125*/, 6 /*126*/, 7 /*127*/,
831 0 /*128*/, 0 /*129*/, 0 /*130*/, 0 /*131*/, 0 /*132*/, 0 /*133*/, 0 /*134*/, 0 /*135*/,
832 0 /*136*/, 0 /*137*/, 0 /*138*/, 0 /*139*/, 0 /*140*/, 0 /*141*/, 0 /*142*/, 0 /*143*/,
833 0 /*144*/, 0 /*145*/, 0 /*146*/, 0 /*147*/, 0 /*148*/, 0 /*149*/, 0 /*150*/, 0 /*151*/,
834 0 /*152*/, 0 /*153*/, 0 /*154*/, 0 /*155*/, 0 /*156*/, 0 /*157*/, 0 /*158*/, 0 /*159*/,
835 0 /*160*/, 0 /*161*/, 0 /*162*/, 0 /*163*/, 0 /*164*/, 0 /*165*/, 0 /*166*/, 0 /*167*/,
836 0 /*168*/, 0 /*169*/, 0 /*170*/, 0 /*171*/, 0 /*172*/, 0 /*173*/, 0 /*174*/, 0 /*175*/,
837 0 /*176*/, 0 /*177*/, 0 /*178*/, 0 /*179*/, 0 /*180*/, 0 /*181*/, 0 /*182*/, 0 /*183*/,
838 0 /*184*/, 0 /*185*/, 0 /*186*/, 0 /*187*/, 0 /*188*/, 0 /*189*/, 0 /*190*/, 0 /*191*/,
839 1 /*192*/, 2 /*193*/, 2 /*194*/, 3 /*195*/, 2 /*196*/, 3 /*197*/, 3 /*198*/, 4 /*199*/,
840 2 /*200*/, 3 /*201*/, 3 /*202*/, 4 /*203*/, 3 /*204*/, 4 /*205*/, 4 /*206*/, 5 /*207*/,
841 2 /*208*/, 3 /*209*/, 3 /*210*/, 4 /*211*/, 3 /*212*/, 4 /*213*/, 4 /*214*/, 5 /*215*/,
842 3 /*216*/, 4 /*217*/, 4 /*218*/, 5 /*219*/, 4 /*220*/, 5 /*221*/, 5 /*222*/, 6 /*223*/,
843 2 /*224*/, 3 /*225*/, 3 /*226*/, 4 /*227*/, 3 /*228*/, 4 /*229*/, 4 /*230*/, 5 /*231*/,
844 3 /*232*/, 4 /*233*/, 4 /*234*/, 5 /*235*/, 4 /*236*/, 5 /*237*/, 5 /*238*/, 6 /*239*/,
845 3 /*240*/, 4 /*241*/, 4 /*242*/, 5 /*243*/, 4 /*244*/, 5 /*245*/, 5 /*246*/, 6 /*247*/,
846 4 /*248*/, 5 /*249*/, 5 /*250*/, 6 /*251*/, 5 /*252*/, 6 /*253*/, 6 /*254*/, 7 /*255*/ },
847 // Table for bit 7.
848 { 0 /*0*/, 0 /*1*/, 0 /*2*/, 0 /*3*/, 0 /*4*/, 0 /*5*/, 0 /*6*/, 0 /*7*/,
849 0 /*8*/, 0 /*9*/, 0 /*10*/, 0 /*11*/, 0 /*12*/, 0 /*13*/, 0 /*14*/, 0 /*15*/,
850 0 /*16*/, 0 /*17*/, 0 /*18*/, 0 /*19*/, 0 /*20*/, 0 /*21*/, 0 /*22*/, 0 /*23*/,
851 0 /*24*/, 0 /*25*/, 0 /*26*/, 0 /*27*/, 0 /*28*/, 0 /*29*/, 0 /*30*/, 0 /*31*/,
852 0 /*32*/, 0 /*33*/, 0 /*34*/, 0 /*35*/, 0 /*36*/, 0 /*37*/, 0 /*38*/, 0 /*39*/,
853 0 /*40*/, 0 /*41*/, 0 /*42*/, 0 /*43*/, 0 /*44*/, 0 /*45*/, 0 /*46*/, 0 /*47*/,
854 0 /*48*/, 0 /*49*/, 0 /*50*/, 0 /*51*/, 0 /*52*/, 0 /*53*/, 0 /*54*/, 0 /*55*/,
855 0 /*56*/, 0 /*57*/, 0 /*58*/, 0 /*59*/, 0 /*60*/, 0 /*61*/, 0 /*62*/, 0 /*63*/,
856 0 /*64*/, 0 /*65*/, 0 /*66*/, 0 /*67*/, 0 /*68*/, 0 /*69*/, 0 /*70*/, 0 /*71*/,
857 0 /*72*/, 0 /*73*/, 0 /*74*/, 0 /*75*/, 0 /*76*/, 0 /*77*/, 0 /*78*/, 0 /*79*/,
858 0 /*80*/, 0 /*81*/, 0 /*82*/, 0 /*83*/, 0 /*84*/, 0 /*85*/, 0 /*86*/, 0 /*87*/,
859 0 /*88*/, 0 /*89*/, 0 /*90*/, 0 /*91*/, 0 /*92*/, 0 /*93*/, 0 /*94*/, 0 /*95*/,
860 0 /*96*/, 0 /*97*/, 0 /*98*/, 0 /*99*/, 0 /*100*/, 0 /*101*/, 0 /*102*/, 0 /*103*/,
861 0 /*104*/, 0 /*105*/, 0 /*106*/, 0 /*107*/, 0 /*108*/, 0 /*109*/, 0 /*110*/, 0 /*111*/,
862 0 /*112*/, 0 /*113*/, 0 /*114*/, 0 /*115*/, 0 /*116*/, 0 /*117*/, 0 /*118*/, 0 /*119*/,
863 0 /*120*/, 0 /*121*/, 0 /*122*/, 0 /*123*/, 0 /*124*/, 0 /*125*/, 0 /*126*/, 0 /*127*/,
864 1 /*128*/, 2 /*129*/, 2 /*130*/, 3 /*131*/, 2 /*132*/, 3 /*133*/, 3 /*134*/, 4 /*135*/,
865 2 /*136*/, 3 /*137*/, 3 /*138*/, 4 /*139*/, 3 /*140*/, 4 /*141*/, 4 /*142*/, 5 /*143*/,
866 2 /*144*/, 3 /*145*/, 3 /*146*/, 4 /*147*/, 3 /*148*/, 4 /*149*/, 4 /*150*/, 5 /*151*/,
867 3 /*152*/, 4 /*153*/, 4 /*154*/, 5 /*155*/, 4 /*156*/, 5 /*157*/, 5 /*158*/, 6 /*159*/,
868 2 /*160*/, 3 /*161*/, 3 /*162*/, 4 /*163*/, 3 /*164*/, 4 /*165*/, 4 /*166*/, 5 /*167*/,
869 3 /*168*/, 4 /*169*/, 4 /*170*/, 5 /*171*/, 4 /*172*/, 5 /*173*/, 5 /*174*/, 6 /*175*/,
870 3 /*176*/, 4 /*177*/, 4 /*178*/, 5 /*179*/, 4 /*180*/, 5 /*181*/, 5 /*182*/, 6 /*183*/,
871 4 /*184*/, 5 /*185*/, 5 /*186*/, 6 /*187*/, 5 /*188*/, 6 /*189*/, 6 /*190*/, 7 /*191*/,
872 2 /*192*/, 3 /*193*/, 3 /*194*/, 4 /*195*/, 3 /*196*/, 4 /*197*/, 4 /*198*/, 5 /*199*/,
873 3 /*200*/, 4 /*201*/, 4 /*202*/, 5 /*203*/, 4 /*204*/, 5 /*205*/, 5 /*206*/, 6 /*207*/,
874 3 /*208*/, 4 /*209*/, 4 /*210*/, 5 /*211*/, 4 /*212*/, 5 /*213*/, 5 /*214*/, 6 /*215*/,
875 4 /*216*/, 5 /*217*/, 5 /*218*/, 6 /*219*/, 5 /*220*/, 6 /*221*/, 6 /*222*/, 7 /*223*/,
876 3 /*224*/, 4 /*225*/, 4 /*226*/, 5 /*227*/, 4 /*228*/, 5 /*229*/, 5 /*230*/, 6 /*231*/,
877 4 /*232*/, 5 /*233*/, 5 /*234*/, 6 /*235*/, 5 /*236*/, 6 /*237*/, 6 /*238*/, 7 /*239*/,
878 4 /*240*/, 5 /*241*/, 5 /*242*/, 6 /*243*/, 5 /*244*/, 6 /*245*/, 6 /*246*/, 7 /*247*/,
879 5 /*248*/, 6 /*249*/, 6 /*250*/, 7 /*251*/, 6 /*252*/, 7 /*253*/, 7 /*254*/, 8 /*255*/ }
880 };
881
882}
883// //
885
886
887#endif
DGtal is the top-level namespace which contains all DGtal functions and types.
std::uint64_t uint64_t
unsigned 64-bit integer.
Definition BasicTypes.h:64
std::int64_t int64_t
signed 94-bit integer.
Definition BasicTypes.h:73
std::uint32_t uint32_t
unsigned 32-bit integer.
Definition BasicTypes.h:62
std::uint16_t uint16_t
unsigned 16-bit integer.
Definition BasicTypes.h:59
std::uint8_t uint8_t
unsigned 8-bit integer.
Definition BasicTypes.h:57
static T firstUnsetBit(T val)
Definition Bits.h:118
static unsigned int indexInSetBits(DGtal::uint8_t n, unsigned int b)
Definition Bits.h:205
static unsigned int indexInSetBits(DGtal::uint32_t n, unsigned int b)
Definition Bits.h:249
static unsigned int mostSignificantBit(DGtal::uint8_t n)
Definition Bits.h:341
static unsigned int leastSignificantBit(DGtal::uint64_t n)
Definition Bits.h:329
static unsigned int leastSignificantBit(DGtal::uint16_t n)
Definition Bits.h:305
static const DGtal::uint8_t myLSB[256]
Definition Bits.h:393
static unsigned int mostSignificantBit(DGtal::uint64_t n)
Definition Bits.h:375
static unsigned int leastSignificantBit(DGtal::uint32_t n)
Definition Bits.h:317
static unsigned int nbSetBits(T val)
Definition Bits.h:128
static unsigned int leastSignificantBit(DGtal::uint8_t n)
Definition Bits.h:295
static unsigned int mostSignificantBit(DGtal::uint32_t n)
Definition Bits.h:363
static T firstSetBit(T val)
Definition Bits.h:107
static unsigned int indexInSetBits(DGtal::uint64_t n, unsigned int b)
Definition Bits.h:275
static const DGtal::uint8_t myMSB[256]
Definition Bits.h:398
static unsigned int nbSetBits(DGtal::uint64_t val)
Definition Bits.h:184
static T mask(unsigned nthBit)
Definition Bits.h:87
static unsigned int nbSetBits(DGtal::uint8_t val)
Definition Bits.h:143
static unsigned int mostSignificantBit(DGtal::uint16_t n)
Definition Bits.h:351
static unsigned int nbSetBits(DGtal::uint16_t val)
Definition Bits.h:156
static unsigned int indexInSetBits(DGtal::uint16_t n, unsigned int b)
Definition Bits.h:223
static unsigned int nbSetBits(DGtal::uint32_t val)
Definition Bits.h:170
static bool getBit(T key, unsigned nthBit)
Definition Bits.h:96
static std::string bitString(T value, unsigned nbBits=0)
Bits Structs grouping all the functions of this tiny library for bitwise calculation.
Definition Bits.h:56
static const DGtal::uint8_t myBitCount[256]
Definition Bits.h:388
static const DGtal::uint8_t myIndexInSetBits[8][256]
Definition Bits.h:409