Edit

IABSD.fr/src/regress/include/bitstring/good/67

Branch :

  • Show log

    Commit

  • Author : bluhm
    Date : 2024-08-26 12:15:40
    Hash : a4a66a2b
    Message : Test bitstring macro evaluation. For all bitstring macros, add a test with side effects in the arguments. Also fix compiler warnings and wrap long line. In main() replace exit(0) with return(0) to check stack canary. Create expected test files with make target create-good. OK florian deraadt@

  • regress/include/bitstring/good/67
  • Testing with TEST_LENGTH = 67
    
    test _bit_byte, _bit_mask, and bitstr_size
      i   _bit_byte(i)   _bit_mask(i) bitstr_size(i)
      0              0              1              0
      1              0              2              1
      2              0              4              1
      3              0              8              1
      4              0             16              1
      5              0             32              1
      6              0             64              1
      7              0            128              1
      8              1              1              1
      9              1              2              2
     10              1              4              2
     11              1              8              2
     12              1             16              2
     13              1             32              2
     14              1             64              2
     15              1            128              2
     16              2              1              2
     17              2              2              3
     18              2              4              3
     19              2              8              3
     20              2             16              3
     21              2             32              3
     22              2             64              3
     23              2            128              3
     24              3              1              3
     25              3              2              4
     26              3              4              4
     27              3              8              4
     28              3             16              4
     29              3             32              4
     30              3             64              4
     31              3            128              4
     32              4              1              4
     33              4              2              5
     34              4              4              5
     35              4              8              5
     36              4             16              5
     37              4             32              5
     38              4             64              5
     39              4            128              5
     40              5              1              5
     41              5              2              6
     42              5              4              6
     43              5              8              6
     44              5             16              6
     45              5             32              6
     46              5             64              6
     47              5            128              6
     48              6              1              6
     49              6              2              7
     50              6              4              7
     51              6              8              7
     52              6             16              7
     53              6             32              7
     54              6             64              7
     55              6            128              7
     56              7              1              7
     57              7              2              8
     58              7              4              8
     59              7              8              8
     60              7             16              8
     61              7             32              8
     62              7             64              8
     63              7            128              8
     64              8              1              8
     65              8              2              9
     66              8              4              9
    
    test bit_alloc, clearbits, bit_ffc, bit_ffs
    be:   0  -1 0000000000000000000000000000000000000000000000000000000000000000000
    is:   0  -1 0000000000000000000000000000000000000000000000000000000000000000000
    
    test bit_set
    be:   1   0 1001001001001001001001001001001001001001001001001001001001001001001
    is:   1   0 1001001001001001001001001001001001001001001001001001001001001001001
    
    test bit_clear
    be:   0   3 0001000001000001000001000001000001000001000001000001000001000001000
    is:   0   3 0001000001000001000001000001000001000001000001000001000001000001000
    
    test bit_test using previous bitstring
      i    bit_test(i)
      0              0
      1              0
      2              0
      3              8
      4              0
      5              0
      6              0
      7              0
      8              0
      9              2
     10              0
     11              0
     12              0
     13              0
     14              0
     15            128
     16              0
     17              0
     18              0
     19              0
     20              0
     21             32
     22              0
     23              0
     24              0
     25              0
     26              0
     27              8
     28              0
     29              0
     30              0
     31              0
     32              0
     33              2
     34              0
     35              0
     36              0
     37              0
     38              0
     39            128
     40              0
     41              0
     42              0
     43              0
     44              0
     45             32
     46              0
     47              0
     48              0
     49              0
     50              0
     51              8
     52              0
     53              0
     54              0
     55              0
     56              0
     57              2
     58              0
     59              0
     60              0
     61              0
     62              0
     63            128
     64              0
     65              0
     66              0
    
    test clearbits
    be:   0  -1 0000000000000000000000000000000000000000000000000000000000000000000
    is:   0  -1 0000000000000000000000000000000000000000000000000000000000000000000
    
    test bit_nset and bit_nclear
    be:   0   1 0111111111111111111111111111111111111111111111111111111111111111110
    is:   0   1 0111111111111111111111111111111111111111111111111111111111111111110
    be:   0   1 0100000000000000000000000000000000000000000000000000000000000000010
    is:   0   1 0100000000000000000000000000000000000000000000000000000000000000010
    be:   0  -1 0000000000000000000000000000000000000000000000000000000000000000000
    is:   0  -1 0000000000000000000000000000000000000000000000000000000000000000000
    be:  66   0 1111111111111111111111111111111111111111111111111111111111111111110
    is:  66   0 1111111111111111111111111111111111111111111111111111111111111111110
    be:   0  -1 0000000000000000000000000000000000000000000000000000000000000000000
    is:   0  -1 0000000000000000000000000000000000000000000000000000000000000000000
    
    first 1 bit should move right 1 position each line
      0  -1   0 1111111111111111111111111111111111111111111111111111111111111111111
      1   0   1 0111111111111111111111111111111111111111111111111111111111111111111
      2   0   2 0011111111111111111111111111111111111111111111111111111111111111111
      3   0   3 0001111111111111111111111111111111111111111111111111111111111111111
      4   0   4 0000111111111111111111111111111111111111111111111111111111111111111
      5   0   5 0000011111111111111111111111111111111111111111111111111111111111111
      6   0   6 0000001111111111111111111111111111111111111111111111111111111111111
      7   0   7 0000000111111111111111111111111111111111111111111111111111111111111
      8   0   8 0000000011111111111111111111111111111111111111111111111111111111111
      9   0   9 0000000001111111111111111111111111111111111111111111111111111111111
     10   0  10 0000000000111111111111111111111111111111111111111111111111111111111
     11   0  11 0000000000011111111111111111111111111111111111111111111111111111111
     12   0  12 0000000000001111111111111111111111111111111111111111111111111111111
     13   0  13 0000000000000111111111111111111111111111111111111111111111111111111
     14   0  14 0000000000000011111111111111111111111111111111111111111111111111111
     15   0  15 0000000000000001111111111111111111111111111111111111111111111111111
     16   0  16 0000000000000000111111111111111111111111111111111111111111111111111
     17   0  17 0000000000000000011111111111111111111111111111111111111111111111111
     18   0  18 0000000000000000001111111111111111111111111111111111111111111111111
     19   0  19 0000000000000000000111111111111111111111111111111111111111111111111
     20   0  20 0000000000000000000011111111111111111111111111111111111111111111111
     21   0  21 0000000000000000000001111111111111111111111111111111111111111111111
     22   0  22 0000000000000000000000111111111111111111111111111111111111111111111
     23   0  23 0000000000000000000000011111111111111111111111111111111111111111111
     24   0  24 0000000000000000000000001111111111111111111111111111111111111111111
     25   0  25 0000000000000000000000000111111111111111111111111111111111111111111
     26   0  26 0000000000000000000000000011111111111111111111111111111111111111111
     27   0  27 0000000000000000000000000001111111111111111111111111111111111111111
     28   0  28 0000000000000000000000000000111111111111111111111111111111111111111
     29   0  29 0000000000000000000000000000011111111111111111111111111111111111111
     30   0  30 0000000000000000000000000000001111111111111111111111111111111111111
     31   0  31 0000000000000000000000000000000111111111111111111111111111111111111
     32   0  32 0000000000000000000000000000000011111111111111111111111111111111111
     33   0  33 0000000000000000000000000000000001111111111111111111111111111111111
     34   0  34 0000000000000000000000000000000000111111111111111111111111111111111
     35   0  35 0000000000000000000000000000000000011111111111111111111111111111111
     36   0  36 0000000000000000000000000000000000001111111111111111111111111111111
     37   0  37 0000000000000000000000000000000000000111111111111111111111111111111
     38   0  38 0000000000000000000000000000000000000011111111111111111111111111111
     39   0  39 0000000000000000000000000000000000000001111111111111111111111111111
     40   0  40 0000000000000000000000000000000000000000111111111111111111111111111
     41   0  41 0000000000000000000000000000000000000000011111111111111111111111111
     42   0  42 0000000000000000000000000000000000000000001111111111111111111111111
     43   0  43 0000000000000000000000000000000000000000000111111111111111111111111
     44   0  44 0000000000000000000000000000000000000000000011111111111111111111111
     45   0  45 0000000000000000000000000000000000000000000001111111111111111111111
     46   0  46 0000000000000000000000000000000000000000000000111111111111111111111
     47   0  47 0000000000000000000000000000000000000000000000011111111111111111111
     48   0  48 0000000000000000000000000000000000000000000000001111111111111111111
     49   0  49 0000000000000000000000000000000000000000000000000111111111111111111
     50   0  50 0000000000000000000000000000000000000000000000000011111111111111111
     51   0  51 0000000000000000000000000000000000000000000000000001111111111111111
     52   0  52 0000000000000000000000000000000000000000000000000000111111111111111
     53   0  53 0000000000000000000000000000000000000000000000000000011111111111111
     54   0  54 0000000000000000000000000000000000000000000000000000001111111111111
     55   0  55 0000000000000000000000000000000000000000000000000000000111111111111
     56   0  56 0000000000000000000000000000000000000000000000000000000011111111111
     57   0  57 0000000000000000000000000000000000000000000000000000000001111111111
     58   0  58 0000000000000000000000000000000000000000000000000000000000111111111
     59   0  59 0000000000000000000000000000000000000000000000000000000000011111111
     60   0  60 0000000000000000000000000000000000000000000000000000000000001111111
     61   0  61 0000000000000000000000000000000000000000000000000000000000000111111
     62   0  62 0000000000000000000000000000000000000000000000000000000000000011111
     63   0  63 0000000000000000000000000000000000000000000000000000000000000001111
     64   0  64 0000000000000000000000000000000000000000000000000000000000000000111
     65   0  65 0000000000000000000000000000000000000000000000000000000000000000011
     66   0  66 0000000000000000000000000000000000000000000000000000000000000000001
    
    first 0 bit should move right 1 position each line
      0   0  -1 0000000000000000000000000000000000000000000000000000000000000000000
      1   1   0 1000000000000000000000000000000000000000000000000000000000000000000
      2   2   0 1100000000000000000000000000000000000000000000000000000000000000000
      3   3   0 1110000000000000000000000000000000000000000000000000000000000000000
      4   4   0 1111000000000000000000000000000000000000000000000000000000000000000
      5   5   0 1111100000000000000000000000000000000000000000000000000000000000000
      6   6   0 1111110000000000000000000000000000000000000000000000000000000000000
      7   7   0 1111111000000000000000000000000000000000000000000000000000000000000
      8   8   0 1111111100000000000000000000000000000000000000000000000000000000000
      9   9   0 1111111110000000000000000000000000000000000000000000000000000000000
     10  10   0 1111111111000000000000000000000000000000000000000000000000000000000
     11  11   0 1111111111100000000000000000000000000000000000000000000000000000000
     12  12   0 1111111111110000000000000000000000000000000000000000000000000000000
     13  13   0 1111111111111000000000000000000000000000000000000000000000000000000
     14  14   0 1111111111111100000000000000000000000000000000000000000000000000000
     15  15   0 1111111111111110000000000000000000000000000000000000000000000000000
     16  16   0 1111111111111111000000000000000000000000000000000000000000000000000
     17  17   0 1111111111111111100000000000000000000000000000000000000000000000000
     18  18   0 1111111111111111110000000000000000000000000000000000000000000000000
     19  19   0 1111111111111111111000000000000000000000000000000000000000000000000
     20  20   0 1111111111111111111100000000000000000000000000000000000000000000000
     21  21   0 1111111111111111111110000000000000000000000000000000000000000000000
     22  22   0 1111111111111111111111000000000000000000000000000000000000000000000
     23  23   0 1111111111111111111111100000000000000000000000000000000000000000000
     24  24   0 1111111111111111111111110000000000000000000000000000000000000000000
     25  25   0 1111111111111111111111111000000000000000000000000000000000000000000
     26  26   0 1111111111111111111111111100000000000000000000000000000000000000000
     27  27   0 1111111111111111111111111110000000000000000000000000000000000000000
     28  28   0 1111111111111111111111111111000000000000000000000000000000000000000
     29  29   0 1111111111111111111111111111100000000000000000000000000000000000000
     30  30   0 1111111111111111111111111111110000000000000000000000000000000000000
     31  31   0 1111111111111111111111111111111000000000000000000000000000000000000
     32  32   0 1111111111111111111111111111111100000000000000000000000000000000000
     33  33   0 1111111111111111111111111111111110000000000000000000000000000000000
     34  34   0 1111111111111111111111111111111111000000000000000000000000000000000
     35  35   0 1111111111111111111111111111111111100000000000000000000000000000000
     36  36   0 1111111111111111111111111111111111110000000000000000000000000000000
     37  37   0 1111111111111111111111111111111111111000000000000000000000000000000
     38  38   0 1111111111111111111111111111111111111100000000000000000000000000000
     39  39   0 1111111111111111111111111111111111111110000000000000000000000000000
     40  40   0 1111111111111111111111111111111111111111000000000000000000000000000
     41  41   0 1111111111111111111111111111111111111111100000000000000000000000000
     42  42   0 1111111111111111111111111111111111111111110000000000000000000000000
     43  43   0 1111111111111111111111111111111111111111111000000000000000000000000
     44  44   0 1111111111111111111111111111111111111111111100000000000000000000000
     45  45   0 1111111111111111111111111111111111111111111110000000000000000000000
     46  46   0 1111111111111111111111111111111111111111111111000000000000000000000
     47  47   0 1111111111111111111111111111111111111111111111100000000000000000000
     48  48   0 1111111111111111111111111111111111111111111111110000000000000000000
     49  49   0 1111111111111111111111111111111111111111111111111000000000000000000
     50  50   0 1111111111111111111111111111111111111111111111111100000000000000000
     51  51   0 1111111111111111111111111111111111111111111111111110000000000000000
     52  52   0 1111111111111111111111111111111111111111111111111111000000000000000
     53  53   0 1111111111111111111111111111111111111111111111111111100000000000000
     54  54   0 1111111111111111111111111111111111111111111111111111110000000000000
     55  55   0 1111111111111111111111111111111111111111111111111111111000000000000
     56  56   0 1111111111111111111111111111111111111111111111111111111100000000000
     57  57   0 1111111111111111111111111111111111111111111111111111111110000000000
     58  58   0 1111111111111111111111111111111111111111111111111111111111000000000
     59  59   0 1111111111111111111111111111111111111111111111111111111111100000000
     60  60   0 1111111111111111111111111111111111111111111111111111111111110000000
     61  61   0 1111111111111111111111111111111111111111111111111111111111111000000
     62  62   0 1111111111111111111111111111111111111111111111111111111111111100000
     63  63   0 1111111111111111111111111111111111111111111111111111111111111110000
     64  64   0 1111111111111111111111111111111111111111111111111111111111111111000
     65  65   0 1111111111111111111111111111111111111111111111111111111111111111100
     66  66   0 1111111111111111111111111111111111111111111111111111111111111111110
    
    first 0 bit should move left 1 position each line
      0  -1   0 1111111111111111111111111111111111111111111111111111111111111111111
      1  66   0 1111111111111111111111111111111111111111111111111111111111111111110
      2  65   0 1111111111111111111111111111111111111111111111111111111111111111100
      3  64   0 1111111111111111111111111111111111111111111111111111111111111111000
      4  63   0 1111111111111111111111111111111111111111111111111111111111111110000
      5  62   0 1111111111111111111111111111111111111111111111111111111111111100000
      6  61   0 1111111111111111111111111111111111111111111111111111111111111000000
      7  60   0 1111111111111111111111111111111111111111111111111111111111110000000
      8  59   0 1111111111111111111111111111111111111111111111111111111111100000000
      9  58   0 1111111111111111111111111111111111111111111111111111111111000000000
     10  57   0 1111111111111111111111111111111111111111111111111111111110000000000
     11  56   0 1111111111111111111111111111111111111111111111111111111100000000000
     12  55   0 1111111111111111111111111111111111111111111111111111111000000000000
     13  54   0 1111111111111111111111111111111111111111111111111111110000000000000
     14  53   0 1111111111111111111111111111111111111111111111111111100000000000000
     15  52   0 1111111111111111111111111111111111111111111111111111000000000000000
     16  51   0 1111111111111111111111111111111111111111111111111110000000000000000
     17  50   0 1111111111111111111111111111111111111111111111111100000000000000000
     18  49   0 1111111111111111111111111111111111111111111111111000000000000000000
     19  48   0 1111111111111111111111111111111111111111111111110000000000000000000
     20  47   0 1111111111111111111111111111111111111111111111100000000000000000000
     21  46   0 1111111111111111111111111111111111111111111111000000000000000000000
     22  45   0 1111111111111111111111111111111111111111111110000000000000000000000
     23  44   0 1111111111111111111111111111111111111111111100000000000000000000000
     24  43   0 1111111111111111111111111111111111111111111000000000000000000000000
     25  42   0 1111111111111111111111111111111111111111110000000000000000000000000
     26  41   0 1111111111111111111111111111111111111111100000000000000000000000000
     27  40   0 1111111111111111111111111111111111111111000000000000000000000000000
     28  39   0 1111111111111111111111111111111111111110000000000000000000000000000
     29  38   0 1111111111111111111111111111111111111100000000000000000000000000000
     30  37   0 1111111111111111111111111111111111111000000000000000000000000000000
     31  36   0 1111111111111111111111111111111111110000000000000000000000000000000
     32  35   0 1111111111111111111111111111111111100000000000000000000000000000000
     33  34   0 1111111111111111111111111111111111000000000000000000000000000000000
     34  33   0 1111111111111111111111111111111110000000000000000000000000000000000
     35  32   0 1111111111111111111111111111111100000000000000000000000000000000000
     36  31   0 1111111111111111111111111111111000000000000000000000000000000000000
     37  30   0 1111111111111111111111111111110000000000000000000000000000000000000
     38  29   0 1111111111111111111111111111100000000000000000000000000000000000000
     39  28   0 1111111111111111111111111111000000000000000000000000000000000000000
     40  27   0 1111111111111111111111111110000000000000000000000000000000000000000
     41  26   0 1111111111111111111111111100000000000000000000000000000000000000000
     42  25   0 1111111111111111111111111000000000000000000000000000000000000000000
     43  24   0 1111111111111111111111110000000000000000000000000000000000000000000
     44  23   0 1111111111111111111111100000000000000000000000000000000000000000000
     45  22   0 1111111111111111111111000000000000000000000000000000000000000000000
     46  21   0 1111111111111111111110000000000000000000000000000000000000000000000
     47  20   0 1111111111111111111100000000000000000000000000000000000000000000000
     48  19   0 1111111111111111111000000000000000000000000000000000000000000000000
     49  18   0 1111111111111111110000000000000000000000000000000000000000000000000
     50  17   0 1111111111111111100000000000000000000000000000000000000000000000000
     51  16   0 1111111111111111000000000000000000000000000000000000000000000000000
     52  15   0 1111111111111110000000000000000000000000000000000000000000000000000
     53  14   0 1111111111111100000000000000000000000000000000000000000000000000000
     54  13   0 1111111111111000000000000000000000000000000000000000000000000000000
     55  12   0 1111111111110000000000000000000000000000000000000000000000000000000
     56  11   0 1111111111100000000000000000000000000000000000000000000000000000000
     57  10   0 1111111111000000000000000000000000000000000000000000000000000000000
     58   9   0 1111111110000000000000000000000000000000000000000000000000000000000
     59   8   0 1111111100000000000000000000000000000000000000000000000000000000000
     60   7   0 1111111000000000000000000000000000000000000000000000000000000000000
     61   6   0 1111110000000000000000000000000000000000000000000000000000000000000
     62   5   0 1111100000000000000000000000000000000000000000000000000000000000000
     63   4   0 1111000000000000000000000000000000000000000000000000000000000000000
     64   3   0 1110000000000000000000000000000000000000000000000000000000000000000
     65   2   0 1100000000000000000000000000000000000000000000000000000000000000000
     66   1   0 1000000000000000000000000000000000000000000000000000000000000000000
    
    first 1 bit should move left 1 position each line
      0   0  -1 0000000000000000000000000000000000000000000000000000000000000000000
      1   0  66 0000000000000000000000000000000000000000000000000000000000000000001
      2   0  65 0000000000000000000000000000000000000000000000000000000000000000011
      3   0  64 0000000000000000000000000000000000000000000000000000000000000000111
      4   0  63 0000000000000000000000000000000000000000000000000000000000000001111
      5   0  62 0000000000000000000000000000000000000000000000000000000000000011111
      6   0  61 0000000000000000000000000000000000000000000000000000000000000111111
      7   0  60 0000000000000000000000000000000000000000000000000000000000001111111
      8   0  59 0000000000000000000000000000000000000000000000000000000000011111111
      9   0  58 0000000000000000000000000000000000000000000000000000000000111111111
     10   0  57 0000000000000000000000000000000000000000000000000000000001111111111
     11   0  56 0000000000000000000000000000000000000000000000000000000011111111111
     12   0  55 0000000000000000000000000000000000000000000000000000000111111111111
     13   0  54 0000000000000000000000000000000000000000000000000000001111111111111
     14   0  53 0000000000000000000000000000000000000000000000000000011111111111111
     15   0  52 0000000000000000000000000000000000000000000000000000111111111111111
     16   0  51 0000000000000000000000000000000000000000000000000001111111111111111
     17   0  50 0000000000000000000000000000000000000000000000000011111111111111111
     18   0  49 0000000000000000000000000000000000000000000000000111111111111111111
     19   0  48 0000000000000000000000000000000000000000000000001111111111111111111
     20   0  47 0000000000000000000000000000000000000000000000011111111111111111111
     21   0  46 0000000000000000000000000000000000000000000000111111111111111111111
     22   0  45 0000000000000000000000000000000000000000000001111111111111111111111
     23   0  44 0000000000000000000000000000000000000000000011111111111111111111111
     24   0  43 0000000000000000000000000000000000000000000111111111111111111111111
     25   0  42 0000000000000000000000000000000000000000001111111111111111111111111
     26   0  41 0000000000000000000000000000000000000000011111111111111111111111111
     27   0  40 0000000000000000000000000000000000000000111111111111111111111111111
     28   0  39 0000000000000000000000000000000000000001111111111111111111111111111
     29   0  38 0000000000000000000000000000000000000011111111111111111111111111111
     30   0  37 0000000000000000000000000000000000000111111111111111111111111111111
     31   0  36 0000000000000000000000000000000000001111111111111111111111111111111
     32   0  35 0000000000000000000000000000000000011111111111111111111111111111111
     33   0  34 0000000000000000000000000000000000111111111111111111111111111111111
     34   0  33 0000000000000000000000000000000001111111111111111111111111111111111
     35   0  32 0000000000000000000000000000000011111111111111111111111111111111111
     36   0  31 0000000000000000000000000000000111111111111111111111111111111111111
     37   0  30 0000000000000000000000000000001111111111111111111111111111111111111
     38   0  29 0000000000000000000000000000011111111111111111111111111111111111111
     39   0  28 0000000000000000000000000000111111111111111111111111111111111111111
     40   0  27 0000000000000000000000000001111111111111111111111111111111111111111
     41   0  26 0000000000000000000000000011111111111111111111111111111111111111111
     42   0  25 0000000000000000000000000111111111111111111111111111111111111111111
     43   0  24 0000000000000000000000001111111111111111111111111111111111111111111
     44   0  23 0000000000000000000000011111111111111111111111111111111111111111111
     45   0  22 0000000000000000000000111111111111111111111111111111111111111111111
     46   0  21 0000000000000000000001111111111111111111111111111111111111111111111
     47   0  20 0000000000000000000011111111111111111111111111111111111111111111111
     48   0  19 0000000000000000000111111111111111111111111111111111111111111111111
     49   0  18 0000000000000000001111111111111111111111111111111111111111111111111
     50   0  17 0000000000000000011111111111111111111111111111111111111111111111111
     51   0  16 0000000000000000111111111111111111111111111111111111111111111111111
     52   0  15 0000000000000001111111111111111111111111111111111111111111111111111
     53   0  14 0000000000000011111111111111111111111111111111111111111111111111111
     54   0  13 0000000000000111111111111111111111111111111111111111111111111111111
     55   0  12 0000000000001111111111111111111111111111111111111111111111111111111
     56   0  11 0000000000011111111111111111111111111111111111111111111111111111111
     57   0  10 0000000000111111111111111111111111111111111111111111111111111111111
     58   0   9 0000000001111111111111111111111111111111111111111111111111111111111
     59   0   8 0000000011111111111111111111111111111111111111111111111111111111111
     60   0   7 0000000111111111111111111111111111111111111111111111111111111111111
     61   0   6 0000001111111111111111111111111111111111111111111111111111111111111
     62   0   5 0000011111111111111111111111111111111111111111111111111111111111111
     63   0   4 0000111111111111111111111111111111111111111111111111111111111111111
     64   0   3 0001111111111111111111111111111111111111111111111111111111111111111
     65   0   2 0011111111111111111111111111111111111111111111111111111111111111111
     66   0   1 0111111111111111111111111111111111111111111111111111111111111111111
    
    0 bit should move right 1 position each line
      0   0   1 0111111111111111111111111111111111111111111111111111111111111111111
      1   1   0 1011111111111111111111111111111111111111111111111111111111111111111
      2   2   0 1101111111111111111111111111111111111111111111111111111111111111111
      3   3   0 1110111111111111111111111111111111111111111111111111111111111111111
      4   4   0 1111011111111111111111111111111111111111111111111111111111111111111
      5   5   0 1111101111111111111111111111111111111111111111111111111111111111111
      6   6   0 1111110111111111111111111111111111111111111111111111111111111111111
      7   7   0 1111111011111111111111111111111111111111111111111111111111111111111
      8   8   0 1111111101111111111111111111111111111111111111111111111111111111111
      9   9   0 1111111110111111111111111111111111111111111111111111111111111111111
     10  10   0 1111111111011111111111111111111111111111111111111111111111111111111
     11  11   0 1111111111101111111111111111111111111111111111111111111111111111111
     12  12   0 1111111111110111111111111111111111111111111111111111111111111111111
     13  13   0 1111111111111011111111111111111111111111111111111111111111111111111
     14  14   0 1111111111111101111111111111111111111111111111111111111111111111111
     15  15   0 1111111111111110111111111111111111111111111111111111111111111111111
     16  16   0 1111111111111111011111111111111111111111111111111111111111111111111
     17  17   0 1111111111111111101111111111111111111111111111111111111111111111111
     18  18   0 1111111111111111110111111111111111111111111111111111111111111111111
     19  19   0 1111111111111111111011111111111111111111111111111111111111111111111
     20  20   0 1111111111111111111101111111111111111111111111111111111111111111111
     21  21   0 1111111111111111111110111111111111111111111111111111111111111111111
     22  22   0 1111111111111111111111011111111111111111111111111111111111111111111
     23  23   0 1111111111111111111111101111111111111111111111111111111111111111111
     24  24   0 1111111111111111111111110111111111111111111111111111111111111111111
     25  25   0 1111111111111111111111111011111111111111111111111111111111111111111
     26  26   0 1111111111111111111111111101111111111111111111111111111111111111111
     27  27   0 1111111111111111111111111110111111111111111111111111111111111111111
     28  28   0 1111111111111111111111111111011111111111111111111111111111111111111
     29  29   0 1111111111111111111111111111101111111111111111111111111111111111111
     30  30   0 1111111111111111111111111111110111111111111111111111111111111111111
     31  31   0 1111111111111111111111111111111011111111111111111111111111111111111
     32  32   0 1111111111111111111111111111111101111111111111111111111111111111111
     33  33   0 1111111111111111111111111111111110111111111111111111111111111111111
     34  34   0 1111111111111111111111111111111111011111111111111111111111111111111
     35  35   0 1111111111111111111111111111111111101111111111111111111111111111111
     36  36   0 1111111111111111111111111111111111110111111111111111111111111111111
     37  37   0 1111111111111111111111111111111111111011111111111111111111111111111
     38  38   0 1111111111111111111111111111111111111101111111111111111111111111111
     39  39   0 1111111111111111111111111111111111111110111111111111111111111111111
     40  40   0 1111111111111111111111111111111111111111011111111111111111111111111
     41  41   0 1111111111111111111111111111111111111111101111111111111111111111111
     42  42   0 1111111111111111111111111111111111111111110111111111111111111111111
     43  43   0 1111111111111111111111111111111111111111111011111111111111111111111
     44  44   0 1111111111111111111111111111111111111111111101111111111111111111111
     45  45   0 1111111111111111111111111111111111111111111110111111111111111111111
     46  46   0 1111111111111111111111111111111111111111111111011111111111111111111
     47  47   0 1111111111111111111111111111111111111111111111101111111111111111111
     48  48   0 1111111111111111111111111111111111111111111111110111111111111111111
     49  49   0 1111111111111111111111111111111111111111111111111011111111111111111
     50  50   0 1111111111111111111111111111111111111111111111111101111111111111111
     51  51   0 1111111111111111111111111111111111111111111111111110111111111111111
     52  52   0 1111111111111111111111111111111111111111111111111111011111111111111
     53  53   0 1111111111111111111111111111111111111111111111111111101111111111111
     54  54   0 1111111111111111111111111111111111111111111111111111110111111111111
     55  55   0 1111111111111111111111111111111111111111111111111111111011111111111
     56  56   0 1111111111111111111111111111111111111111111111111111111101111111111
     57  57   0 1111111111111111111111111111111111111111111111111111111110111111111
     58  58   0 1111111111111111111111111111111111111111111111111111111111011111111
     59  59   0 1111111111111111111111111111111111111111111111111111111111101111111
     60  60   0 1111111111111111111111111111111111111111111111111111111111110111111
     61  61   0 1111111111111111111111111111111111111111111111111111111111111011111
     62  62   0 1111111111111111111111111111111111111111111111111111111111111101111
     63  63   0 1111111111111111111111111111111111111111111111111111111111111110111
     64  64   0 1111111111111111111111111111111111111111111111111111111111111111011
     65  65   0 1111111111111111111111111111111111111111111111111111111111111111101
     66  66   0 1111111111111111111111111111111111111111111111111111111111111111110
    
    1 bit should move right 1 position each line
      0   1   0 1000000000000000000000000000000000000000000000000000000000000000000
      1   0   1 0100000000000000000000000000000000000000000000000000000000000000000
      2   0   2 0010000000000000000000000000000000000000000000000000000000000000000
      3   0   3 0001000000000000000000000000000000000000000000000000000000000000000
      4   0   4 0000100000000000000000000000000000000000000000000000000000000000000
      5   0   5 0000010000000000000000000000000000000000000000000000000000000000000
      6   0   6 0000001000000000000000000000000000000000000000000000000000000000000
      7   0   7 0000000100000000000000000000000000000000000000000000000000000000000
      8   0   8 0000000010000000000000000000000000000000000000000000000000000000000
      9   0   9 0000000001000000000000000000000000000000000000000000000000000000000
     10   0  10 0000000000100000000000000000000000000000000000000000000000000000000
     11   0  11 0000000000010000000000000000000000000000000000000000000000000000000
     12   0  12 0000000000001000000000000000000000000000000000000000000000000000000
     13   0  13 0000000000000100000000000000000000000000000000000000000000000000000
     14   0  14 0000000000000010000000000000000000000000000000000000000000000000000
     15   0  15 0000000000000001000000000000000000000000000000000000000000000000000
     16   0  16 0000000000000000100000000000000000000000000000000000000000000000000
     17   0  17 0000000000000000010000000000000000000000000000000000000000000000000
     18   0  18 0000000000000000001000000000000000000000000000000000000000000000000
     19   0  19 0000000000000000000100000000000000000000000000000000000000000000000
     20   0  20 0000000000000000000010000000000000000000000000000000000000000000000
     21   0  21 0000000000000000000001000000000000000000000000000000000000000000000
     22   0  22 0000000000000000000000100000000000000000000000000000000000000000000
     23   0  23 0000000000000000000000010000000000000000000000000000000000000000000
     24   0  24 0000000000000000000000001000000000000000000000000000000000000000000
     25   0  25 0000000000000000000000000100000000000000000000000000000000000000000
     26   0  26 0000000000000000000000000010000000000000000000000000000000000000000
     27   0  27 0000000000000000000000000001000000000000000000000000000000000000000
     28   0  28 0000000000000000000000000000100000000000000000000000000000000000000
     29   0  29 0000000000000000000000000000010000000000000000000000000000000000000
     30   0  30 0000000000000000000000000000001000000000000000000000000000000000000
     31   0  31 0000000000000000000000000000000100000000000000000000000000000000000
     32   0  32 0000000000000000000000000000000010000000000000000000000000000000000
     33   0  33 0000000000000000000000000000000001000000000000000000000000000000000
     34   0  34 0000000000000000000000000000000000100000000000000000000000000000000
     35   0  35 0000000000000000000000000000000000010000000000000000000000000000000
     36   0  36 0000000000000000000000000000000000001000000000000000000000000000000
     37   0  37 0000000000000000000000000000000000000100000000000000000000000000000
     38   0  38 0000000000000000000000000000000000000010000000000000000000000000000
     39   0  39 0000000000000000000000000000000000000001000000000000000000000000000
     40   0  40 0000000000000000000000000000000000000000100000000000000000000000000
     41   0  41 0000000000000000000000000000000000000000010000000000000000000000000
     42   0  42 0000000000000000000000000000000000000000001000000000000000000000000
     43   0  43 0000000000000000000000000000000000000000000100000000000000000000000
     44   0  44 0000000000000000000000000000000000000000000010000000000000000000000
     45   0  45 0000000000000000000000000000000000000000000001000000000000000000000
     46   0  46 0000000000000000000000000000000000000000000000100000000000000000000
     47   0  47 0000000000000000000000000000000000000000000000010000000000000000000
     48   0  48 0000000000000000000000000000000000000000000000001000000000000000000
     49   0  49 0000000000000000000000000000000000000000000000000100000000000000000
     50   0  50 0000000000000000000000000000000000000000000000000010000000000000000
     51   0  51 0000000000000000000000000000000000000000000000000001000000000000000
     52   0  52 0000000000000000000000000000000000000000000000000000100000000000000
     53   0  53 0000000000000000000000000000000000000000000000000000010000000000000
     54   0  54 0000000000000000000000000000000000000000000000000000001000000000000
     55   0  55 0000000000000000000000000000000000000000000000000000000100000000000
     56   0  56 0000000000000000000000000000000000000000000000000000000010000000000
     57   0  57 0000000000000000000000000000000000000000000000000000000001000000000
     58   0  58 0000000000000000000000000000000000000000000000000000000000100000000
     59   0  59 0000000000000000000000000000000000000000000000000000000000010000000
     60   0  60 0000000000000000000000000000000000000000000000000000000000001000000
     61   0  61 0000000000000000000000000000000000000000000000000000000000000100000
     62   0  62 0000000000000000000000000000000000000000000000000000000000000010000
     63   0  63 0000000000000000000000000000000000000000000000000000000000000001000
     64   0  64 0000000000000000000000000000000000000000000000000000000000000000100
     65   0  65 0000000000000000000000000000000000000000000000000000000000000000010
     66   0  66 0000000000000000000000000000000000000000000000000000000000000000001
    
    CHI square test
      0   1   0 1000000000000000000000000000000000000000000000000000000000000000001
      1   0   1 0100000000000000000000000000000000000000000000000000000000000000010
      2   0   2 0010000000000000000000000000000000000000000000000000000000000000100
      3   0   3 0001000000000000000000000000000000000000000000000000000000000001000
      4   0   4 0000100000000000000000000000000000000000000000000000000000000010000
      5   0   5 0000010000000000000000000000000000000000000000000000000000000100000
      6   0   6 0000001000000000000000000000000000000000000000000000000000001000000
      7   0   7 0000000100000000000000000000000000000000000000000000000000010000000
      8   0   8 0000000010000000000000000000000000000000000000000000000000100000000
      9   0   9 0000000001000000000000000000000000000000000000000000000001000000000
     10   0  10 0000000000100000000000000000000000000000000000000000000010000000000
     11   0  11 0000000000010000000000000000000000000000000000000000000100000000000
     12   0  12 0000000000001000000000000000000000000000000000000000001000000000000
     13   0  13 0000000000000100000000000000000000000000000000000000010000000000000
     14   0  14 0000000000000010000000000000000000000000000000000000100000000000000
     15   0  15 0000000000000001000000000000000000000000000000000001000000000000000
     16   0  16 0000000000000000100000000000000000000000000000000010000000000000000
     17   0  17 0000000000000000010000000000000000000000000000000100000000000000000
     18   0  18 0000000000000000001000000000000000000000000000001000000000000000000
     19   0  19 0000000000000000000100000000000000000000000000010000000000000000000
     20   0  20 0000000000000000000010000000000000000000000000100000000000000000000
     21   0  21 0000000000000000000001000000000000000000000001000000000000000000000
     22   0  22 0000000000000000000000100000000000000000000010000000000000000000000
     23   0  23 0000000000000000000000010000000000000000000100000000000000000000000
     24   0  24 0000000000000000000000001000000000000000001000000000000000000000000
     25   0  25 0000000000000000000000000100000000000000010000000000000000000000000
     26   0  26 0000000000000000000000000010000000000000100000000000000000000000000
     27   0  27 0000000000000000000000000001000000000001000000000000000000000000000
     28   0  28 0000000000000000000000000000100000000010000000000000000000000000000
     29   0  29 0000000000000000000000000000010000000100000000000000000000000000000
     30   0  30 0000000000000000000000000000001000001000000000000000000000000000000
     31   0  31 0000000000000000000000000000000100010000000000000000000000000000000
     32   0  32 0000000000000000000000000000000010100000000000000000000000000000000
     33   0  33 0000000000000000000000000000000001000000000000000000000000000000000
     34   0  32 0000000000000000000000000000000010100000000000000000000000000000000
     35   0  31 0000000000000000000000000000000100010000000000000000000000000000000
     36   0  30 0000000000000000000000000000001000001000000000000000000000000000000
     37   0  29 0000000000000000000000000000010000000100000000000000000000000000000
     38   0  28 0000000000000000000000000000100000000010000000000000000000000000000
     39   0  27 0000000000000000000000000001000000000001000000000000000000000000000
     40   0  26 0000000000000000000000000010000000000000100000000000000000000000000
     41   0  25 0000000000000000000000000100000000000000010000000000000000000000000
     42   0  24 0000000000000000000000001000000000000000001000000000000000000000000
     43   0  23 0000000000000000000000010000000000000000000100000000000000000000000
     44   0  22 0000000000000000000000100000000000000000000010000000000000000000000
     45   0  21 0000000000000000000001000000000000000000000001000000000000000000000
     46   0  20 0000000000000000000010000000000000000000000000100000000000000000000
     47   0  19 0000000000000000000100000000000000000000000000010000000000000000000
     48   0  18 0000000000000000001000000000000000000000000000001000000000000000000
     49   0  17 0000000000000000010000000000000000000000000000000100000000000000000
     50   0  16 0000000000000000100000000000000000000000000000000010000000000000000
     51   0  15 0000000000000001000000000000000000000000000000000001000000000000000
     52   0  14 0000000000000010000000000000000000000000000000000000100000000000000
     53   0  13 0000000000000100000000000000000000000000000000000000010000000000000
     54   0  12 0000000000001000000000000000000000000000000000000000001000000000000
     55   0  11 0000000000010000000000000000000000000000000000000000000100000000000
     56   0  10 0000000000100000000000000000000000000000000000000000000010000000000
     57   0   9 0000000001000000000000000000000000000000000000000000000001000000000
     58   0   8 0000000010000000000000000000000000000000000000000000000000100000000
     59   0   7 0000000100000000000000000000000000000000000000000000000000010000000
     60   0   6 0000001000000000000000000000000000000000000000000000000000001000000
     61   0   5 0000010000000000000000000000000000000000000000000000000000000100000
     62   0   4 0000100000000000000000000000000000000000000000000000000000000010000
     63   0   3 0001000000000000000000000000000000000000000000000000000000000001000
     64   0   2 0010000000000000000000000000000000000000000000000000000000000000100
     65   0   1 0100000000000000000000000000000000000000000000000000000000000000010
     66   1   0 1000000000000000000000000000000000000000000000000000000000000000001
    
    macros should evaluate arguments only once
    _bit_byte(0) -> 1
    _bit_mask(1) -> 2
    bitstr_size(2) -> 3
    bit_alloc(3) -> 4
    bit_alloc(4) -> 5
    bit_test(5) -> 6
    bit_set(6) -> 7
    bit_clear(7) -> 8
    bit_nclear(8, 9) -> 10
    bit_nset(10, 11) -> 12
    bit_ffc(12, 0) -> 13
    bit_ffs(13, 0) -> 14