rurban / smhasher

Hash function quality and speed tests
https://rurban.github.io/smhasher/
Other
1.84k stars 177 forks source link

Update discohash to v2, add discoNONG #272

Closed o0101 closed 1 year ago

o0101 commented 1 year ago

Results for the new variant:

-------------------------------------------------------------------------------
--- Testing discocrypto "DISCoHAsH Crypto 512-bit internal state 64 (was BEBB4185)" GOOD

[[[ Sanity Tests ]]]

Verification value 0x9182A886 ....... PASS
Running sanity check 1     .......... PASS
Running AppendedZeroesTest .......... PASS

[[[ Speed Tests ]]]

Bulk speed test - 262144-byte keys
Alignment  7 -  2.852 bytes/cycle - 8158.32 MiB/sec @ 3 ghz
Alignment  6 -  2.851 bytes/cycle - 8155.49 MiB/sec @ 3 ghz
Alignment  5 -  2.850 bytes/cycle - 8154.50 MiB/sec @ 3 ghz
Alignment  4 -  2.852 bytes/cycle - 8159.64 MiB/sec @ 3 ghz
Alignment  3 -  2.852 bytes/cycle - 8158.30 MiB/sec @ 3 ghz
Alignment  2 -  2.844 bytes/cycle - 8137.31 MiB/sec @ 3 ghz
Alignment  1 -  2.849 bytes/cycle - 8150.15 MiB/sec @ 3 ghz
Alignment  0 -  2.854 bytes/cycle - 8165.71 MiB/sec @ 3 ghz
Average      -  2.850 bytes/cycle - 8154.93 MiB/sec @ 3 ghz

Small key speed test -    1-byte keys -   142.21 cycles/hash
Small key speed test -    2-byte keys -   149.87 cycles/hash
Small key speed test -    3-byte keys -   158.18 cycles/hash
Small key speed test -    4-byte keys -   165.32 cycles/hash
Small key speed test -    5-byte keys -   171.85 cycles/hash
Small key speed test -    6-byte keys -   180.85 cycles/hash
Small key speed test -    7-byte keys -   188.19 cycles/hash
Small key speed test -    8-byte keys -   130.87 cycles/hash
Small key speed test -    9-byte keys -   139.10 cycles/hash
Small key speed test -   10-byte keys -   147.60 cycles/hash
Small key speed test -   11-byte keys -   153.98 cycles/hash
Small key speed test -   12-byte keys -   161.92 cycles/hash
Small key speed test -   13-byte keys -   169.38 cycles/hash
Small key speed test -   14-byte keys -   176.52 cycles/hash
Small key speed test -   15-byte keys -   190.37 cycles/hash
Small key speed test -   16-byte keys -   140.69 cycles/hash
Small key speed test -   17-byte keys -   170.37 cycles/hash
Small key speed test -   18-byte keys -   176.28 cycles/hash
Small key speed test -   19-byte keys -   185.20 cycles/hash
Small key speed test -   20-byte keys -   193.00 cycles/hash
Small key speed test -   21-byte keys -   200.92 cycles/hash
Small key speed test -   22-byte keys -   220.82 cycles/hash
Small key speed test -   23-byte keys -   225.78 cycles/hash
Small key speed test -   24-byte keys -   166.16 cycles/hash
Small key speed test -   25-byte keys -   168.51 cycles/hash
Small key speed test -   26-byte keys -   177.78 cycles/hash
Small key speed test -   27-byte keys -   186.12 cycles/hash
Small key speed test -   28-byte keys -   187.98 cycles/hash
Small key speed test -   29-byte keys -   213.60 cycles/hash
Small key speed test -   30-byte keys -   217.86 cycles/hash
Small key speed test -   31-byte keys -   216.96 cycles/hash
Average                                    176.588 cycles/hash

[[[ 'Hashmap' Speed Tests ]]]

std::unordered_map
Init std HashMapTest:     262.972 cycles/op (235976 inserts, 1% deletions)
Running std HashMapTest:  225.817 cycles/op (7.3 stdv)

greg7mdp/parallel-hashmap
Init fast HashMapTest:    444.077 cycles/op (235976 inserts, 1% deletions)
Running fast HashMapTest: 240.056 cycles/op (4.2 stdv)  ....... PASS

[[[ Avalanche Tests ]]]

Testing   24-bit keys ->  64-bit hashes, 300000 reps.......... worst bias is 0.629333%
Testing   32-bit keys ->  64-bit hashes, 300000 reps.......... worst bias is 0.592667%
Testing   40-bit keys ->  64-bit hashes, 300000 reps.......... worst bias is 0.726000%
Testing   48-bit keys ->  64-bit hashes, 300000 reps.......... worst bias is 0.632667%
Testing   56-bit keys ->  64-bit hashes, 300000 reps.......... worst bias is 0.750667%
Testing   64-bit keys ->  64-bit hashes, 300000 reps.......... worst bias is 0.631333%
Testing   72-bit keys ->  64-bit hashes, 300000 reps.......... worst bias is 0.652667%
Testing   80-bit keys ->  64-bit hashes, 300000 reps.......... worst bias is 0.774000%
Testing   96-bit keys ->  64-bit hashes, 300000 reps.......... worst bias is 0.712000%
Testing  112-bit keys ->  64-bit hashes, 300000 reps.......... worst bias is 0.776000%
Testing  128-bit keys ->  64-bit hashes, 300000 reps.......... worst bias is 0.813333%
Testing  160-bit keys ->  64-bit hashes, 300000 reps.......... worst bias is 0.714000%
Testing  512-bit keys ->  64-bit hashes, 300000 reps.......... worst bias is 0.758667%
Testing 1024-bit keys ->  64-bit hashes, 300000 reps.......... worst bias is 0.786000%

[[[ Keyset 'Sparse' Tests ]]]

Keyset 'Sparse' - 16-bit keys with up to 9 bits set - 50643 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected          0.3, actual      0 (0.00x)
Testing collisions (high 19-25 bits) - Worst is 24 bits: 77/76 (1.01x)
Testing collisions (low  32-bit) - Expected          0.3, actual      0 (0.00x)
Testing collisions (low  19-25 bits) - Worst is 21 bits: 605/606 (1.00x)
Testing distribution - Worst bias is the 13-bit window at bit 43 - 0.653%

Keyset 'Sparse' - 24-bit keys with up to 8 bits set - 1271626 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        188.2, actual    191 (1.01x) (3)
Testing collisions (high 24-35 bits) - Worst is 35 bits: 28/23 (1.19x)
Testing collisions (low  32-bit) - Expected        188.2, actual    184 (0.98x)
Testing collisions (low  24-35 bits) - Worst is 30 bits: 761/752 (1.01x)
Testing distribution - Worst bias is the 17-bit window at bit 10 - 0.103%

Keyset 'Sparse' - 32-bit keys with up to 7 bits set - 4514873 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       2372.2, actual   2396 (1.01x) (24)
Testing collisions (high 25-38 bits) - Worst is 35 bits: 336/296 (1.13x)
Testing collisions (low  32-bit) - Expected       2372.2, actual   2415 (1.02x) (43)
Testing collisions (low  25-38 bits) - Worst is 35 bits: 327/296 (1.10x)
Testing distribution - Worst bias is the 19-bit window at bit 49 - 0.055%

Keyset 'Sparse' - 40-bit keys with up to 6 bits set - 4598479 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       2460.8, actual   2421 (0.98x) (-39)
Testing collisions (high 25-38 bits) - Worst is 31 bits: 4988/4919 (1.01x)
Testing collisions (low  32-bit) - Expected       2460.8, actual   2483 (1.01x) (23)
Testing collisions (low  25-38 bits) - Worst is 36 bits: 174/153 (1.13x)
Testing distribution - Worst bias is the 19-bit window at bit 20 - 0.026%

Keyset 'Sparse' - 48-bit keys with up to 6 bits set - 14196869 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected      23437.8, actual  23361 (1.00x) (-76)
Testing collisions (high 27-42 bits) - Worst is 42 bits: 27/22 (1.18x)
Testing collisions (low  32-bit) - Expected      23437.8, actual  23436 (1.00x) (-1)
Testing collisions (low  27-42 bits) - Worst is 34 bits: 5882/5864 (1.00x)
Testing distribution - Worst bias is the 20-bit window at bit 51 - 0.033%

Keyset 'Sparse' - 56-bit keys with up to 5 bits set - 4216423 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       2069.0, actual   2055 (0.99x) (-13)
Testing collisions (high 25-38 bits) - Worst is 36 bits: 146/129 (1.13x)
Testing collisions (low  32-bit) - Expected       2069.0, actual   2105 (1.02x) (37)
Testing collisions (low  25-38 bits) - Worst is 38 bits: 36/32 (1.11x)
Testing distribution - Worst bias is the 19-bit window at bit 47 - 0.039%

Keyset 'Sparse' - 64-bit keys with up to 5 bits set - 8303633 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       8021.7, actual   8102 (1.01x) (81)
Testing collisions (high 26-40 bits) - Worst is 40 bits: 35/31 (1.12x)
Testing collisions (low  32-bit) - Expected       8021.7, actual   8197 (1.02x) (176)
Testing collisions (low  26-40 bits) - Worst is 36 bits: 561/501 (1.12x)
Testing distribution - Worst bias is the 20-bit window at bit 49 - 0.034%

Keyset 'Sparse' - 72-bit keys with up to 5 bits set - 15082603 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected      26451.8, actual  26743 (1.01x) (292)
Testing collisions (high 27-42 bits) - Worst is 39 bits: 215/206 (1.04x)
Testing collisions (low  32-bit) - Expected      26451.8, actual  26533 (1.00x) (82)
Testing collisions (low  27-42 bits) - Worst is 39 bits: 217/206 (1.05x)
Testing distribution - Worst bias is the 20-bit window at bit  5 - 0.023%

Keyset 'Sparse' - 96-bit keys with up to 4 bits set - 3469497 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       1401.0, actual   1359 (0.97x)
Testing collisions (high 25-38 bits) - Worst is 36 bits: 90/87 (1.03x)
Testing collisions (low  32-bit) - Expected       1401.0, actual   1426 (1.02x) (26)
Testing collisions (low  25-38 bits) - Worst is 35 bits: 187/175 (1.07x)
Testing distribution - Worst bias is the 19-bit window at bit  9 - 0.087%

Keyset 'Sparse' - 160-bit keys with up to 4 bits set - 26977161 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected      84546.1, actual  84541 (1.00x) (-5)
Testing collisions (high 28-44 bits) - Worst is 43 bits: 58/41 (1.40x)
Testing collisions (low  32-bit) - Expected      84546.1, actual  84678 (1.00x) (132)
Testing collisions (low  28-44 bits) - Worst is 40 bits: 339/330 (1.02x)
Testing distribution - Worst bias is the 20-bit window at bit 32 - 0.011%

Keyset 'Sparse' - 256-bit keys with up to 3 bits set - 2796417 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        910.2, actual    889 (0.98x)
Testing collisions (high 25-37 bits) - Worst is 25 bits: 114336/113355 (1.01x)
Testing collisions (low  32-bit) - Expected        910.2, actual    885 (0.97x)
Testing collisions (low  25-37 bits) - Worst is 37 bits: 31/28 (1.09x)
Testing distribution - Worst bias is the 19-bit window at bit  7 - 0.076%

Keyset 'Sparse' - 512-bit keys with up to 3 bits set - 22370049 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected      58155.4, actual  58308 (1.00x) (153)
Testing collisions (high 28-43 bits) - Worst is 43 bits: 31/28 (1.09x)
Testing collisions (low  32-bit) - Expected      58155.4, actual  58088 (1.00x) (-67)
Testing collisions (low  28-43 bits) - Worst is 42 bits: 64/56 (1.12x)
Testing distribution - Worst bias is the 20-bit window at bit 36 - 0.013%

Keyset 'Sparse' - 1024-bit keys with up to 2 bits set - 524801 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected         32.1, actual     29 (0.90x)
Testing collisions (high 22-32 bits) - Worst is 29 bits: 285/256 (1.11x)
Testing collisions (low  32-bit) - Expected         32.1, actual     44 (1.37x) (12)
Testing collisions (low  22-32 bits) - Worst is 32 bits: 44/32 (1.37x)
Testing distribution - Worst bias is the 16-bit window at bit  5 - 0.134%

Keyset 'Sparse' - 2048-bit keys with up to 2 bits set - 2098177 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        512.4, actual    479 (0.93x)
Testing collisions (high 24-36 bits) - Worst is 26 bits: 32688/32460 (1.01x)
Testing collisions (low  32-bit) - Expected        512.4, actual    542 (1.06x) (30)
Testing collisions (low  24-36 bits) - Worst is 34 bits: 151/128 (1.18x)
Testing distribution - Worst bias is the 18-bit window at bit 62 - 0.087%

[[[ Keyset 'Permutation' Tests ]]]

Combination Lowbits Tests:
Keyset 'Combination' - up to 7 blocks from a set of 8 - 2396744 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        668.6, actual    691 (1.03x) (23)
Testing collisions (high 24-37 bits) - Worst is 34 bits: 183/167 (1.09x)
Testing collisions (low  32-bit) - Expected        668.6, actual    645 (0.96x)
Testing collisions (low  24-37 bits) - Worst is 31 bits: 1340/1336 (1.00x)
Testing distribution - Worst bias is the 18-bit window at bit 25 - 0.067%

Combination Highbits Tests
Keyset 'Combination' - up to 7 blocks from a set of 8 - 2396744 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        668.6, actual    679 (1.02x) (11)
Testing collisions (high 24-37 bits) - Worst is 33 bits: 352/334 (1.05x)
Testing collisions (low  32-bit) - Expected        668.6, actual    665 (0.99x) (-3)
Testing collisions (low  24-37 bits) - Worst is 25 bits: 83828/83595 (1.00x)
Testing distribution - Worst bias is the 18-bit window at bit 52 - 0.092%

Combination Hi-Lo Tests:
Keyset 'Combination' - up to 6 blocks from a set of 15 - 12204240 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected      17322.9, actual  17299 (1.00x) (-23)
Testing collisions (high 27-41 bits) - Worst is 40 bits: 84/67 (1.24x)
Testing collisions (low  32-bit) - Expected      17322.9, actual  17301 (1.00x) (-21)
Testing collisions (low  27-41 bits) - Worst is 40 bits: 75/67 (1.11x)
Testing distribution - Worst bias is the 20-bit window at bit 38 - 0.039%

Combination 0x8000000 Tests:
Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       8186.7, actual   8274 (1.01x) (88)
Testing collisions (high 26-40 bits) - Worst is 39 bits: 74/63 (1.16x)
Testing collisions (low  32-bit) - Expected       8186.7, actual   8179 (1.00x) (-7)
Testing collisions (low  26-40 bits) - Worst is 40 bits: 35/31 (1.09x)
Testing distribution - Worst bias is the 20-bit window at bit 60 - 0.032%

Combination 0x0000001 Tests:
Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       8186.7, actual   8348 (1.02x) (162)
Testing collisions (high 26-40 bits) - Worst is 39 bits: 68/63 (1.06x)
Testing collisions (low  32-bit) - Expected       8186.7, actual   8164 (1.00x) (-22)
Testing collisions (low  26-40 bits) - Worst is 38 bits: 133/127 (1.04x)
Testing distribution - Worst bias is the 20-bit window at bit 56 - 0.039%

Combination 0x800000000000000 Tests:
Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       8186.7, actual   8235 (1.01x) (49)
Testing collisions (high 26-40 bits) - Worst is 34 bits: 2122/2047 (1.04x)
Testing collisions (low  32-bit) - Expected       8186.7, actual   8118 (0.99x) (-68)
Testing collisions (low  26-40 bits) - Worst is 40 bits: 35/31 (1.09x)
Testing distribution - Worst bias is the 20-bit window at bit 47 - 0.048%

Combination 0x000000000000001 Tests:
Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       8186.7, actual   8082 (0.99x) (-104)
Testing collisions (high 26-40 bits) - Worst is 36 bits: 534/511 (1.04x)
Testing collisions (low  32-bit) - Expected       8186.7, actual   8119 (0.99x) (-67)
Testing collisions (low  26-40 bits) - Worst is 34 bits: 2121/2047 (1.04x)
Testing distribution - Worst bias is the 20-bit window at bit 18 - 0.049%

Combination 16-bytes [0-1] Tests:
Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       8186.7, actual   8263 (1.01x) (77)
Testing collisions (high 26-40 bits) - Worst is 37 bits: 270/255 (1.05x)
Testing collisions (low  32-bit) - Expected       8186.7, actual   8081 (0.99x) (-105)
Testing collisions (low  26-40 bits) - Worst is 38 bits: 152/127 (1.19x)
Testing distribution - Worst bias is the 20-bit window at bit 30 - 0.033%

Combination 16-bytes [0-last] Tests:
Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       8186.7, actual   8233 (1.01x) (47)
Testing collisions (high 26-40 bits) - Worst is 32 bits: 8233/8186 (1.01x)
Testing collisions (low  32-bit) - Expected       8186.7, actual   8245 (1.01x) (59)
Testing collisions (low  26-40 bits) - Worst is 31 bits: 16512/16362 (1.01x)
Testing distribution - Worst bias is the 20-bit window at bit 20 - 0.036%

Combination 32-bytes [0-1] Tests:
Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       8186.7, actual   8268 (1.01x) (82)
Testing collisions (high 26-40 bits) - Worst is 40 bits: 36/31 (1.13x)
Testing collisions (low  32-bit) - Expected       8186.7, actual   8108 (0.99x) (-78)
Testing collisions (low  26-40 bits) - Worst is 37 bits: 265/255 (1.04x)
Testing distribution - Worst bias is the 20-bit window at bit 12 - 0.043%

Combination 32-bytes [0-last] Tests:
Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       8186.7, actual   8167 (1.00x) (-19)
Testing collisions (high 26-40 bits) - Worst is 40 bits: 42/31 (1.31x)
Testing collisions (low  32-bit) - Expected       8186.7, actual   8174 (1.00x) (-12)
Testing collisions (low  26-40 bits) - Worst is 40 bits: 52/31 (1.63x)
Testing distribution - Worst bias is the 20-bit window at bit 11 - 0.041%

Combination 64-bytes [0-1] Tests:
Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       8186.7, actual   8179 (1.00x) (-7)
Testing collisions (high 26-40 bits) - Worst is 35 bits: 1046/1023 (1.02x)
Testing collisions (low  32-bit) - Expected       8186.7, actual   8051 (0.98x) (-135)
Testing collisions (low  26-40 bits) - Worst is 33 bits: 4104/4094 (1.00x)
Testing distribution - Worst bias is the 20-bit window at bit 17 - 0.041%

Combination 64-bytes [0-last] Tests:
Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       8186.7, actual   8209 (1.00x) (23)
Testing collisions (high 26-40 bits) - Worst is 38 bits: 143/127 (1.12x)
Testing collisions (low  32-bit) - Expected       8186.7, actual   8230 (1.01x) (44)
Testing collisions (low  26-40 bits) - Worst is 37 bits: 294/255 (1.15x)
Testing distribution - Worst bias is the 20-bit window at bit 23 - 0.047%

Combination 128-bytes [0-1] Tests:
Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       8186.7, actual   8197 (1.00x) (11)
Testing collisions (high 26-40 bits) - Worst is 37 bits: 258/255 (1.01x)
Testing collisions (low  32-bit) - Expected       8186.7, actual   8077 (0.99x) (-109)
Testing collisions (low  26-40 bits) - Worst is 40 bits: 36/31 (1.13x)
Testing distribution - Worst bias is the 20-bit window at bit 16 - 0.045%

Combination 128-bytes [0-last] Tests:
Keyset 'Combination' - up to 22 blocks from a set of 2 - 8388606 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       8186.7, actual   8255 (1.01x) (69)
Testing collisions (high 26-40 bits) - Worst is 40 bits: 36/31 (1.13x)
Testing collisions (low  32-bit) - Expected       8186.7, actual   8165 (1.00x) (-21)
Testing collisions (low  26-40 bits) - Worst is 40 bits: 39/31 (1.22x)
Testing distribution - Worst bias is the 20-bit window at bit 49 - 0.041%

[[[ Keyset 'Window' Tests ]]]

Keyset 'Window' -  32-bit key,  25-bit window - 32 tests, 33554432 keys per test
Window at   0 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at   1 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at   2 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at   3 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at   4 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at   5 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at   6 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at   7 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at   8 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at   9 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  10 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  11 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  12 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  13 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  14 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  15 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  16 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  17 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  18 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  19 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  20 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  21 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  22 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  23 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  24 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  25 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  26 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  27 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  28 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  29 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  30 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  31 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Window at  32 - Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)

[[[ Keyset 'Cyclic' Tests ]]]

Keyset 'Cyclic' - 8 cycles of 8 bytes - 1000000 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        116.4, actual    112 (0.96x)
Testing collisions (high 23-34 bits) - Worst is 27 bits: 3776/3716 (1.02x)
Testing collisions (low  32-bit) - Expected        116.4, actual    121 (1.04x) (5)
Testing collisions (low  23-34 bits) - Worst is 34 bits: 32/29 (1.10x)
Testing distribution - Worst bias is the 17-bit window at bit 61 - 0.121%

Keyset 'Cyclic' - 8 cycles of 9 bytes - 1000000 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        116.4, actual    108 (0.93x)
Testing collisions (high 23-34 bits) - Worst is 28 bits: 1882/1860 (1.01x)
Testing collisions (low  32-bit) - Expected        116.4, actual    110 (0.94x)
Testing collisions (low  23-34 bits) - Worst is 23 bits: 57216/57305 (1.00x)
Testing distribution - Worst bias is the 17-bit window at bit 12 - 0.167%

Keyset 'Cyclic' - 8 cycles of 10 bytes - 1000000 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        116.4, actual    135 (1.16x) (19)
Testing collisions (high 23-34 bits) - Worst is 32 bits: 135/116 (1.16x)
Testing collisions (low  32-bit) - Expected        116.4, actual    119 (1.02x) (3)
Testing collisions (low  23-34 bits) - Worst is 28 bits: 1921/1860 (1.03x)
Testing distribution - Worst bias is the 17-bit window at bit 55 - 0.083%

Keyset 'Cyclic' - 8 cycles of 11 bytes - 1000000 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        116.4, actual    116 (1.00x)
Testing collisions (high 23-34 bits) - Worst is 24 bits: 29368/29218 (1.01x)
Testing collisions (low  32-bit) - Expected        116.4, actual    126 (1.08x) (10)
Testing collisions (low  23-34 bits) - Worst is 32 bits: 126/116 (1.08x)
Testing distribution - Worst bias is the 17-bit window at bit 55 - 0.088%

Keyset 'Cyclic' - 8 cycles of 12 bytes - 1000000 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        116.4, actual    129 (1.11x) (13)
Testing collisions (high 23-34 bits) - Worst is 34 bits: 37/29 (1.27x)
Testing collisions (low  32-bit) - Expected        116.4, actual    103 (0.88x)
Testing collisions (low  23-34 bits) - Worst is 23 bits: 57106/57305 (1.00x)
Testing distribution - Worst bias is the 17-bit window at bit 55 - 0.121%

Keyset 'Cyclic' - 8 cycles of 16 bytes - 1000000 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        116.4, actual    116 (1.00x)
Testing collisions (high 23-34 bits) - Worst is 29 bits: 984/930 (1.06x)
Testing collisions (low  32-bit) - Expected        116.4, actual    123 (1.06x) (7)
Testing collisions (low  23-34 bits) - Worst is 32 bits: 123/116 (1.06x)
Testing distribution - Worst bias is the 17-bit window at bit 57 - 0.127%

[[[ Keyset 'TwoBytes' Tests ]]]

Keyset 'TwoBytes' - up-to-4-byte keys, 652545 total keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected         49.6, actual     49 (0.99x)
Testing collisions (high 23-33 bits) - Worst is 33 bits: 28/24 (1.13x)
Testing collisions (low  32-bit) - Expected         49.6, actual     40 (0.81x)
Testing collisions (low  23-33 bits) - Worst is 24 bits: 12595/12527 (1.01x)
Testing distribution - Worst bias is the 16-bit window at bit  6 - 0.101%

Keyset 'TwoBytes' - up-to-8-byte keys, 5471025 total keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       3483.1, actual   3500 (1.00x) (17)
Testing collisions (high 26-39 bits) - Worst is 30 bits: 13993/13914 (1.01x)
Testing collisions (low  32-bit) - Expected       3483.1, actual   3481 (1.00x) (-2)
Testing collisions (low  26-39 bits) - Worst is 33 bits: 1749/1741 (1.00x)
Testing distribution - Worst bias is the 20-bit window at bit 43 - 0.032%

Keyset 'TwoBytes' - up-to-12-byte keys, 18616785 total keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected      40289.5, actual  40282 (1.00x) (-7)
Testing collisions (high 27-42 bits) - Worst is 42 bits: 44/39 (1.12x)
Testing collisions (low  32-bit) - Expected      40289.5, actual  40060 (0.99x) (-229)
Testing collisions (low  27-42 bits) - Worst is 35 bits: 5074/5042 (1.01x)
Testing distribution - Worst bias is the 20-bit window at bit 39 - 0.017%

Keyset 'TwoBytes' - up-to-16-byte keys, 44251425 total keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected     227182.3, actual 227790 (1.00x) (608)
Testing collisions (high 29-45 bits) - Worst is 42 bits: 245/222 (1.10x)
Testing collisions (low  32-bit) - Expected     227182.3, actual 227526 (1.00x) (344)
Testing collisions (low  29-45 bits) - Worst is 43 bits: 115/111 (1.03x)
Testing distribution - Worst bias is the 20-bit window at bit 15 - 0.008%

Keyset 'TwoBytes' - up-to-20-byte keys, 86536545 total keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected     865959.1, actual 867690 (1.00x) (1731)
Testing collisions (high 30-47 bits) - Worst is 47 bits: 27/26 (1.01x)
Testing collisions (low  32-bit) - Expected     865959.1, actual 866567 (1.00x) (608)
Testing collisions (low  30-47 bits) - Worst is 46 bits: 64/53 (1.20x)
Testing distribution - Worst bias is the 20-bit window at bit 38 - 0.004%

[[[ Keyset 'Text' Tests ]]]

Keyset 'Text' - keys of form "FooXXXXBar" - 14776336 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected      25389.0, actual  25278 (1.00x) (-111)
Testing collisions (high 27-42 bits) - Worst is 39 bits: 209/198 (1.05x)
Testing collisions (low  32-bit) - Expected      25389.0, actual  25257 (0.99x) (-132)
Testing collisions (low  27-42 bits) - Worst is 40 bits: 111/99 (1.12x)
Testing distribution - Worst bias is the 20-bit window at bit  6 - 0.018%

Keyset 'Text' - keys of form "FooBarXXXX" - 14776336 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected      25389.0, actual  25508 (1.00x) (119)
Testing collisions (high 27-42 bits) - Worst is 39 bits: 216/198 (1.09x)
Testing collisions (low  32-bit) - Expected      25389.0, actual  25371 (1.00x) (-18)
Testing collisions (low  27-42 bits) - Worst is 42 bits: 33/24 (1.33x)
Testing distribution - Worst bias is the 20-bit window at bit 10 - 0.019%

Keyset 'Text' - keys of form "XXXXFooBar" - 14776336 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected      25389.0, actual  25507 (1.00x) (118)
Testing collisions (high 27-42 bits) - Worst is 36 bits: 1632/1588 (1.03x)
Testing collisions (low  32-bit) - Expected      25389.0, actual  25382 (1.00x) (-7)
Testing collisions (low  27-42 bits) - Worst is 42 bits: 32/24 (1.29x)
Testing distribution - Worst bias is the 20-bit window at bit 56 - 0.019%

Keyset 'Words' - 4000000 random keys of len 6-16 from alnum charset
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       1862.1, actual   1895 (1.02x) (33)
Testing collisions (high 25-38 bits) - Worst is 35 bits: 252/232 (1.08x)
Testing collisions (low  32-bit) - Expected       1862.1, actual   1864 (1.00x) (2)
Testing collisions (low  25-38 bits) - Worst is 35 bits: 237/232 (1.02x)
Testing distribution - Worst bias is the 19-bit window at bit 22 - 0.069%

Keyset 'Words' - 4000000 random keys of len 6-16 from password charset
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       1862.1, actual   1834 (0.98x) (-28)
Testing collisions (high 25-38 bits) - Worst is 30 bits: 7463/7441 (1.00x)
Testing collisions (low  32-bit) - Expected       1862.1, actual   1846 (0.99x) (-16)
Testing collisions (low  25-38 bits) - Worst is 38 bits: 39/29 (1.34x)
Testing distribution - Worst bias is the 19-bit window at bit  5 - 0.053%

Keyset 'Words' - 235976 dict words
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected          6.5, actual      7 (1.08x) (1)
Testing collisions (high 21-30 bits) - Worst is 30 bits: 27/25 (1.04x)
Testing collisions (low  32-bit) - Expected          6.5, actual      7 (1.08x) (1)
Testing collisions (low  21-30 bits) - Worst is 30 bits: 31/25 (1.20x)
Testing distribution - Worst bias is the 15-bit window at bit  6 - 0.209%

[[[ Keyset 'Zeroes' Tests ]]]

Keyset 'Zeroes' - 204800 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected          4.9, actual      7 (1.43x) (3)
Testing collisions (high 21-29 bits) - Worst is 29 bits: 42/39 (1.08x)
Testing collisions (low  32-bit) - Expected          4.9, actual      6 (1.23x) (2)
Testing collisions (low  21-29 bits) - Worst is 29 bits: 47/39 (1.20x)
Testing distribution - Worst bias is the 15-bit window at bit 33 - 0.376%

[[[ Keyset 'Seed' Tests ]]]

Keyset 'Seed' - 5000000 keys
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       2909.3, actual   2969 (1.02x) (60)
Testing collisions (high 26-39 bits) - Worst is 35 bits: 389/363 (1.07x)
Testing collisions (low  32-bit) - Expected       2909.3, actual   2887 (0.99x) (-22)
Testing collisions (low  26-39 bits) - Worst is 39 bits: 25/22 (1.10x)
Testing distribution - Worst bias is the 19-bit window at bit 18 - 0.046%

[[[ Keyset 'PerlinNoise' Tests ]]]

Testing 16777216 coordinates (L2) :
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected      32725.4, actual  32412 (0.99x) (-313)
Testing collisions (high 27-42 bits) - Worst is 42 bits: 40/31 (1.25x)
Testing collisions (low  32-bit) - Expected      32725.4, actual  32856 (1.00x) (131)
Testing collisions (low  27-42 bits) - Worst is 36 bits: 2065/2047 (1.01x)

Testing AV variant, 128 count with 4 spacing, 4-12:
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected       1116.2, actual   1025 (0.92x)
Testing collisions (high 25-37 bits) - Worst is 25 bits: 138456/138605 (1.00x)
Testing collisions (low  32-bit) - Expected       1116.2, actual   1124 (1.01x) (8)
Testing collisions (low  25-37 bits) - Worst is 33 bits: 571/558 (1.02x)

[[[ Diff 'Differential' Tests ]]]

Testing 8303632 up-to-5-bit differentials in 64-bit keys -> 64 bit hashes.
1000 reps, 8303632000 total tests, expecting 0.00 random collisions..........
0 total collisions, of which 0 single collisions were ignored

Testing 11017632 up-to-4-bit differentials in 128-bit keys -> 64 bit hashes.
1000 reps, 11017632000 total tests, expecting 0.00 random collisions.........
[
.
0 total collisions, of which 0 single collisions were ignored

Testing 2796416 up-to-3-bit differentials in 256-bit keys -> 64 bit hashes.
1000 reps, 2796416000 total tests, expecting 0.00 random collisions..........
0 total collisions, of which 0 single collisions were ignored

[[[ DiffDist 'Differential Distribution' Tests ]]]

Testing bit 0
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    537 (1.05x) (26)
Testing collisions (high 24-36 bits) - Worst is 32 bits: 537/511 (1.05x)
Testing collisions (low  32-bit) - Expected        511.9, actual    507 (0.99x) (-4)
Testing collisions (low  24-36 bits) - Worst is 36 bits: 39/31 (1.22x)
Testing distribution - Worst bias is the 18-bit window at bit 14 - 0.071%

Testing bit 1
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    495 (0.97x)
Testing collisions (high 24-36 bits) - Worst is 24 bits: 125739/125777 (1.00x)
Testing collisions (low  32-bit) - Expected        511.9, actual    520 (1.02x) (9)
Testing collisions (low  24-36 bits) - Worst is 35 bits: 70/63 (1.09x)
Testing distribution - Worst bias is the 18-bit window at bit 20 - 0.094%

Testing bit 2
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    501 (0.98x)
Testing collisions (high 24-36 bits) - Worst is 31 bits: 1033/1023 (1.01x)
Testing collisions (low  32-bit) - Expected        511.9, actual    520 (1.02x) (9)
Testing collisions (low  24-36 bits) - Worst is 32 bits: 520/511 (1.02x)
Testing distribution - Worst bias is the 18-bit window at bit 26 - 0.075%

Testing bit 3
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    484 (0.95x)
Testing collisions (high 24-36 bits) - Worst is 36 bits: 35/31 (1.09x)
Testing collisions (low  32-bit) - Expected        511.9, actual    536 (1.05x) (25)
Testing collisions (low  24-36 bits) - Worst is 36 bits: 38/31 (1.19x)
Testing distribution - Worst bias is the 18-bit window at bit 47 - 0.076%

Testing bit 4
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    522 (1.02x) (11)
Testing collisions (high 24-36 bits) - Worst is 36 bits: 43/31 (1.34x)
Testing collisions (low  32-bit) - Expected        511.9, actual    489 (0.96x)
Testing collisions (low  24-36 bits) - Worst is 36 bits: 35/31 (1.09x)
Testing distribution - Worst bias is the 18-bit window at bit  4 - 0.092%

Testing bit 5
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    520 (1.02x) (9)
Testing collisions (high 24-36 bits) - Worst is 34 bits: 133/127 (1.04x)
Testing collisions (low  32-bit) - Expected        511.9, actual    486 (0.95x)
Testing collisions (low  24-36 bits) - Worst is 36 bits: 42/31 (1.31x)
Testing distribution - Worst bias is the 18-bit window at bit 56 - 0.079%

Testing bit 6
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    503 (0.98x) (-8)
Testing collisions (high 24-36 bits) - Worst is 34 bits: 134/127 (1.05x)
Testing collisions (low  32-bit) - Expected        511.9, actual    535 (1.05x) (24)
Testing collisions (low  24-36 bits) - Worst is 36 bits: 39/31 (1.22x)
Testing distribution - Worst bias is the 18-bit window at bit 48 - 0.061%

Testing bit 7
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    519 (1.01x) (8)
Testing collisions (high 24-36 bits) - Worst is 35 bits: 76/63 (1.19x)
Testing collisions (low  32-bit) - Expected        511.9, actual    496 (0.97x)
Testing collisions (low  24-36 bits) - Worst is 36 bits: 38/31 (1.19x)
Testing distribution - Worst bias is the 18-bit window at bit 63 - 0.089%

Testing bit 8
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    517 (1.01x) (6)
Testing collisions (high 24-36 bits) - Worst is 35 bits: 74/63 (1.16x)
Testing collisions (low  32-bit) - Expected        511.9, actual    522 (1.02x) (11)
Testing collisions (low  24-36 bits) - Worst is 36 bits: 40/31 (1.25x)
Testing distribution - Worst bias is the 18-bit window at bit 26 - 0.054%

Testing bit 9
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    499 (0.97x)
Testing collisions (high 24-36 bits) - Worst is 31 bits: 1042/1023 (1.02x)
Testing collisions (low  32-bit) - Expected        511.9, actual    500 (0.98x)
Testing collisions (low  24-36 bits) - Worst is 35 bits: 71/63 (1.11x)
Testing distribution - Worst bias is the 18-bit window at bit  1 - 0.097%

Testing bit 10
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    507 (0.99x) (-4)
Testing collisions (high 24-36 bits) - Worst is 33 bits: 273/255 (1.07x)
Testing collisions (low  32-bit) - Expected        511.9, actual    524 (1.02x) (13)
Testing collisions (low  24-36 bits) - Worst is 35 bits: 73/63 (1.14x)
Testing distribution - Worst bias is the 18-bit window at bit 35 - 0.080%

Testing bit 11
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    499 (0.97x)
Testing collisions (high 24-36 bits) - Worst is 34 bits: 134/127 (1.05x)
Testing collisions (low  32-bit) - Expected        511.9, actual    530 (1.04x) (19)
Testing collisions (low  24-36 bits) - Worst is 34 bits: 146/127 (1.14x)
Testing distribution - Worst bias is the 18-bit window at bit 43 - 0.059%

Testing bit 12
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    530 (1.04x) (19)
Testing collisions (high 24-36 bits) - Worst is 36 bits: 41/31 (1.28x)
Testing collisions (low  32-bit) - Expected        511.9, actual    504 (0.98x) (-7)
Testing collisions (low  24-36 bits) - Worst is 36 bits: 41/31 (1.28x)
Testing distribution - Worst bias is the 18-bit window at bit 39 - 0.086%

Testing bit 13
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    532 (1.04x) (21)
Testing collisions (high 24-36 bits) - Worst is 36 bits: 38/31 (1.19x)
Testing collisions (low  32-bit) - Expected        511.9, actual    518 (1.01x) (7)
Testing collisions (low  24-36 bits) - Worst is 31 bits: 1056/1023 (1.03x)
Testing distribution - Worst bias is the 18-bit window at bit 24 - 0.073%

Testing bit 14
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    567 (1.11x) (56)
Testing collisions (high 24-36 bits) - Worst is 35 bits: 72/63 (1.13x)
Testing collisions (low  32-bit) - Expected        511.9, actual    475 (0.93x)
Testing collisions (low  24-36 bits) - Worst is 27 bits: 16359/16298 (1.00x)
Testing distribution - Worst bias is the 18-bit window at bit 25 - 0.083%

Testing bit 15
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    503 (0.98x) (-8)
Testing collisions (high 24-36 bits) - Worst is 25 bits: 64651/64191 (1.01x)
Testing collisions (low  32-bit) - Expected        511.9, actual    530 (1.04x) (19)
Testing collisions (low  24-36 bits) - Worst is 35 bits: 75/63 (1.17x)
Testing distribution - Worst bias is the 18-bit window at bit 13 - 0.120%

Testing bit 16
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    518 (1.01x) (7)
Testing collisions (high 24-36 bits) - Worst is 34 bits: 141/127 (1.10x)
Testing collisions (low  32-bit) - Expected        511.9, actual    513 (1.00x) (2)
Testing collisions (low  24-36 bits) - Worst is 34 bits: 137/127 (1.07x)
Testing distribution - Worst bias is the 18-bit window at bit 18 - 0.066%

Testing bit 17
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    521 (1.02x) (10)
Testing collisions (high 24-36 bits) - Worst is 36 bits: 44/31 (1.38x)
Testing collisions (low  32-bit) - Expected        511.9, actual    522 (1.02x) (11)
Testing collisions (low  24-36 bits) - Worst is 36 bits: 38/31 (1.19x)
Testing distribution - Worst bias is the 18-bit window at bit  4 - 0.094%

Testing bit 18
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    526 (1.03x) (15)
Testing collisions (high 24-36 bits) - Worst is 36 bits: 36/31 (1.13x)
Testing collisions (low  32-bit) - Expected        511.9, actual    512 (1.00x) (1)
Testing collisions (low  24-36 bits) - Worst is 31 bits: 1052/1023 (1.03x)
Testing distribution - Worst bias is the 18-bit window at bit 45 - 0.133%

Testing bit 19
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    506 (0.99x) (-5)
Testing collisions (high 24-36 bits) - Worst is 29 bits: 4207/4090 (1.03x)
Testing collisions (low  32-bit) - Expected        511.9, actual    534 (1.04x) (23)
Testing collisions (low  24-36 bits) - Worst is 32 bits: 534/511 (1.04x)
Testing distribution - Worst bias is the 18-bit window at bit 63 - 0.083%

Testing bit 20
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    510 (1.00x) (-1)
Testing collisions (high 24-36 bits) - Worst is 34 bits: 132/127 (1.03x)
Testing collisions (low  32-bit) - Expected        511.9, actual    518 (1.01x) (7)
Testing collisions (low  24-36 bits) - Worst is 35 bits: 70/63 (1.09x)
Testing distribution - Worst bias is the 18-bit window at bit 49 - 0.069%

Testing bit 21
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    489 (0.96x)
Testing collisions (high 24-36 bits) - Worst is 36 bits: 39/31 (1.22x)
Testing collisions (low  32-bit) - Expected        511.9, actual    491 (0.96x)
Testing collisions (low  24-36 bits) - Worst is 35 bits: 65/63 (1.02x)
Testing distribution - Worst bias is the 18-bit window at bit 21 - 0.077%

Testing bit 22
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    523 (1.02x) (12)
Testing collisions (high 24-36 bits) - Worst is 35 bits: 79/63 (1.23x)
Testing collisions (low  32-bit) - Expected        511.9, actual    530 (1.04x) (19)
Testing collisions (low  24-36 bits) - Worst is 32 bits: 530/511 (1.04x)
Testing distribution - Worst bias is the 18-bit window at bit 29 - 0.060%

Testing bit 23
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    512 (1.00x) (1)
Testing collisions (high 24-36 bits) - Worst is 35 bits: 70/63 (1.09x)
Testing collisions (low  32-bit) - Expected        511.9, actual    508 (0.99x) (-3)
Testing collisions (low  24-36 bits) - Worst is 34 bits: 139/127 (1.09x)
Testing distribution - Worst bias is the 18-bit window at bit 57 - 0.096%

Testing bit 24
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    492 (0.96x)
Testing collisions (high 24-36 bits) - Worst is 35 bits: 66/63 (1.03x)
Testing collisions (low  32-bit) - Expected        511.9, actual    501 (0.98x)
Testing collisions (low  24-36 bits) - Worst is 36 bits: 33/31 (1.03x)
Testing distribution - Worst bias is the 18-bit window at bit  8 - 0.058%

Testing bit 25
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    502 (0.98x) (-9)
Testing collisions (high 24-36 bits) - Worst is 36 bits: 43/31 (1.34x)
Testing collisions (low  32-bit) - Expected        511.9, actual    514 (1.00x) (3)
Testing collisions (low  24-36 bits) - Worst is 29 bits: 4185/4090 (1.02x)
Testing distribution - Worst bias is the 18-bit window at bit 62 - 0.049%

Testing bit 26
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    566 (1.11x) (55)
Testing collisions (high 24-36 bits) - Worst is 36 bits: 39/31 (1.22x)
Testing collisions (low  32-bit) - Expected        511.9, actual    534 (1.04x) (23)
Testing collisions (low  24-36 bits) - Worst is 33 bits: 284/255 (1.11x)
Testing distribution - Worst bias is the 18-bit window at bit 14 - 0.085%

Testing bit 27
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    502 (0.98x) (-9)
Testing collisions (high 24-36 bits) - Worst is 36 bits: 33/31 (1.03x)
Testing collisions (low  32-bit) - Expected        511.9, actual    527 (1.03x) (16)
Testing collisions (low  24-36 bits) - Worst is 32 bits: 527/511 (1.03x)
Testing distribution - Worst bias is the 18-bit window at bit 49 - 0.083%

Testing bit 28
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    493 (0.96x)
Testing collisions (high 24-36 bits) - Worst is 36 bits: 36/31 (1.13x)
Testing collisions (low  32-bit) - Expected        511.9, actual    488 (0.95x)
Testing collisions (low  24-36 bits) - Worst is 35 bits: 65/63 (1.02x)
Testing distribution - Worst bias is the 18-bit window at bit 48 - 0.068%

Testing bit 29
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    511 (1.00x)
Testing collisions (high 24-36 bits) - Worst is 33 bits: 257/255 (1.00x)
Testing collisions (low  32-bit) - Expected        511.9, actual    513 (1.00x) (2)
Testing collisions (low  24-36 bits) - Worst is 31 bits: 1042/1023 (1.02x)
Testing distribution - Worst bias is the 18-bit window at bit  3 - 0.099%

Testing bit 30
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    524 (1.02x) (13)
Testing collisions (high 24-36 bits) - Worst is 31 bits: 1070/1023 (1.05x)
Testing collisions (low  32-bit) - Expected        511.9, actual    518 (1.01x) (7)
Testing collisions (low  24-36 bits) - Worst is 32 bits: 518/511 (1.01x)
Testing distribution - Worst bias is the 18-bit window at bit 26 - 0.077%

Testing bit 31
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    548 (1.07x) (37)
Testing collisions (high 24-36 bits) - Worst is 36 bits: 37/31 (1.16x)
Testing collisions (low  32-bit) - Expected        511.9, actual    539 (1.05x) (28)
Testing collisions (low  24-36 bits) - Worst is 32 bits: 539/511 (1.05x)
Testing distribution - Worst bias is the 18-bit window at bit 50 - 0.064%

Testing bit 32
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    523 (1.02x) (12)
Testing collisions (high 24-36 bits) - Worst is 35 bits: 69/63 (1.08x)
Testing collisions (low  32-bit) - Expected        511.9, actual    539 (1.05x) (28)
Testing collisions (low  24-36 bits) - Worst is 34 bits: 148/127 (1.16x)
Testing distribution - Worst bias is the 18-bit window at bit 13 - 0.072%

Testing bit 33
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    517 (1.01x) (6)
Testing collisions (high 24-36 bits) - Worst is 32 bits: 517/511 (1.01x)
Testing collisions (low  32-bit) - Expected        511.9, actual    516 (1.01x) (5)
Testing collisions (low  24-36 bits) - Worst is 36 bits: 41/31 (1.28x)
Testing distribution - Worst bias is the 18-bit window at bit 19 - 0.070%

Testing bit 34
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    465 (0.91x)
Testing collisions (high 24-36 bits) - Worst is 26 bits: 32637/32429 (1.01x)
Testing collisions (low  32-bit) - Expected        511.9, actual    540 (1.05x) (29)
Testing collisions (low  24-36 bits) - Worst is 35 bits: 70/63 (1.09x)
Testing distribution - Worst bias is the 17-bit window at bit  1 - 0.091%

Testing bit 35
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    467 (0.91x)
Testing collisions (high 24-36 bits) - Worst is 26 bits: 32630/32429 (1.01x)
Testing collisions (low  32-bit) - Expected        511.9, actual    508 (0.99x) (-3)
Testing collisions (low  24-36 bits) - Worst is 36 bits: 36/31 (1.13x)
Testing distribution - Worst bias is the 18-bit window at bit 13 - 0.069%

Testing bit 36
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    510 (1.00x) (-1)
Testing collisions (high 24-36 bits) - Worst is 31 bits: 1053/1023 (1.03x)
Testing collisions (low  32-bit) - Expected        511.9, actual    460 (0.90x)
Testing collisions (low  24-36 bits) - Worst is 26 bits: 32486/32429 (1.00x)
Testing distribution - Worst bias is the 18-bit window at bit 42 - 0.105%

Testing bit 37
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    526 (1.03x) (15)
Testing collisions (high 24-36 bits) - Worst is 36 bits: 34/31 (1.06x)
Testing collisions (low  32-bit) - Expected        511.9, actual    521 (1.02x) (10)
Testing collisions (low  24-36 bits) - Worst is 35 bits: 75/63 (1.17x)
Testing distribution - Worst bias is the 18-bit window at bit 49 - 0.094%

Testing bit 38
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    509 (0.99x) (-2)
Testing collisions (high 24-36 bits) - Worst is 30 bits: 2093/2046 (1.02x)
Testing collisions (low  32-bit) - Expected        511.9, actual    522 (1.02x) (11)
Testing collisions (low  24-36 bits) - Worst is 35 bits: 71/63 (1.11x)
Testing distribution - Worst bias is the 18-bit window at bit 56 - 0.071%

Testing bit 39
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    528 (1.03x) (17)
Testing collisions (high 24-36 bits) - Worst is 35 bits: 75/63 (1.17x)
Testing collisions (low  32-bit) - Expected        511.9, actual    550 (1.07x) (39)
Testing collisions (low  24-36 bits) - Worst is 36 bits: 40/31 (1.25x)
Testing distribution - Worst bias is the 18-bit window at bit 41 - 0.126%

Testing bit 40
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    524 (1.02x) (13)
Testing collisions (high 24-36 bits) - Worst is 32 bits: 524/511 (1.02x)
Testing collisions (low  32-bit) - Expected        511.9, actual    510 (1.00x) (-1)
Testing collisions (low  24-36 bits) - Worst is 36 bits: 33/31 (1.03x)
Testing distribution - Worst bias is the 18-bit window at bit  4 - 0.050%

Testing bit 41
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    504 (0.98x) (-7)
Testing collisions (high 24-36 bits) - Worst is 33 bits: 273/255 (1.07x)
Testing collisions (low  32-bit) - Expected        511.9, actual    515 (1.01x) (4)
Testing collisions (low  24-36 bits) - Worst is 36 bits: 43/31 (1.34x)
Testing distribution - Worst bias is the 18-bit window at bit 17 - 0.062%

Testing bit 42
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    483 (0.94x)
Testing collisions (high 24-36 bits) - Worst is 28 bits: 8205/8170 (1.00x)
Testing collisions (low  32-bit) - Expected        511.9, actual    480 (0.94x)
Testing collisions (low  24-36 bits) - Worst is 36 bits: 36/31 (1.13x)
Testing distribution - Worst bias is the 18-bit window at bit 61 - 0.050%

Testing bit 43
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    504 (0.98x) (-7)
Testing collisions (high 24-36 bits) - Worst is 33 bits: 262/255 (1.02x)
Testing collisions (low  32-bit) - Expected        511.9, actual    547 (1.07x) (36)
Testing collisions (low  24-36 bits) - Worst is 31 bits: 1112/1023 (1.09x)
Testing distribution - Worst bias is the 18-bit window at bit 12 - 0.078%

Testing bit 44
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    544 (1.06x) (33)
Testing collisions (high 24-36 bits) - Worst is 33 bits: 276/255 (1.08x)
Testing collisions (low  32-bit) - Expected        511.9, actual    522 (1.02x) (11)
Testing collisions (low  24-36 bits) - Worst is 33 bits: 269/255 (1.05x)
Testing distribution - Worst bias is the 18-bit window at bit 40 - 0.090%

Testing bit 45
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    497 (0.97x)
Testing collisions (high 24-36 bits) - Worst is 30 bits: 2117/2046 (1.03x)
Testing collisions (low  32-bit) - Expected        511.9, actual    527 (1.03x) (16)
Testing collisions (low  24-36 bits) - Worst is 35 bits: 69/63 (1.08x)
Testing distribution - Worst bias is the 18-bit window at bit 54 - 0.088%

Testing bit 46
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    472 (0.92x)
Testing collisions (high 24-36 bits) - Worst is 36 bits: 33/31 (1.03x)
Testing collisions (low  32-bit) - Expected        511.9, actual    515 (1.01x) (4)
Testing collisions (low  24-36 bits) - Worst is 33 bits: 260/255 (1.02x)
Testing distribution - Worst bias is the 17-bit window at bit 46 - 0.055%

Testing bit 47
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    503 (0.98x) (-8)
Testing collisions (high 24-36 bits) - Worst is 33 bits: 260/255 (1.02x)
Testing collisions (low  32-bit) - Expected        511.9, actual    550 (1.07x) (39)
Testing collisions (low  24-36 bits) - Worst is 35 bits: 81/63 (1.27x)
Testing distribution - Worst bias is the 18-bit window at bit 44 - 0.093%

Testing bit 48
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    548 (1.07x) (37)
Testing collisions (high 24-36 bits) - Worst is 32 bits: 548/511 (1.07x)
Testing collisions (low  32-bit) - Expected        511.9, actual    510 (1.00x) (-1)
Testing collisions (low  24-36 bits) - Worst is 33 bits: 264/255 (1.03x)
Testing distribution - Worst bias is the 18-bit window at bit 30 - 0.071%

Testing bit 49
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    533 (1.04x) (22)
Testing collisions (high 24-36 bits) - Worst is 35 bits: 80/63 (1.25x)
Testing collisions (low  32-bit) - Expected        511.9, actual    556 (1.09x) (45)
Testing collisions (low  24-36 bits) - Worst is 36 bits: 45/31 (1.41x)
Testing distribution - Worst bias is the 18-bit window at bit 37 - 0.068%

Testing bit 50
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    523 (1.02x) (12)
Testing collisions (high 24-36 bits) - Worst is 36 bits: 40/31 (1.25x)
Testing collisions (low  32-bit) - Expected        511.9, actual    465 (0.91x)
Testing collisions (low  24-36 bits) - Worst is 31 bits: 1044/1023 (1.02x)
Testing distribution - Worst bias is the 18-bit window at bit 13 - 0.077%

Testing bit 51
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    506 (0.99x) (-5)
Testing collisions (high 24-36 bits) - Worst is 33 bits: 261/255 (1.02x)
Testing collisions (low  32-bit) - Expected        511.9, actual    516 (1.01x) (5)
Testing collisions (low  24-36 bits) - Worst is 32 bits: 516/511 (1.01x)
Testing distribution - Worst bias is the 18-bit window at bit 23 - 0.090%

Testing bit 52
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    505 (0.99x) (-6)
Testing collisions (high 24-36 bits) - Worst is 33 bits: 261/255 (1.02x)
Testing collisions (low  32-bit) - Expected        511.9, actual    501 (0.98x)
Testing collisions (low  24-36 bits) - Worst is 29 bits: 4155/4090 (1.02x)
Testing distribution - Worst bias is the 17-bit window at bit 42 - 0.050%

Testing bit 53
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    562 (1.10x) (51)
Testing collisions (high 24-36 bits) - Worst is 36 bits: 37/31 (1.16x)
Testing collisions (low  32-bit) - Expected        511.9, actual    524 (1.02x) (13)
Testing collisions (low  24-36 bits) - Worst is 32 bits: 524/511 (1.02x)
Testing distribution - Worst bias is the 18-bit window at bit 39 - 0.059%

Testing bit 54
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    507 (0.99x) (-4)
Testing collisions (high 24-36 bits) - Worst is 34 bits: 134/127 (1.05x)
Testing collisions (low  32-bit) - Expected        511.9, actual    499 (0.97x)
Testing collisions (low  24-36 bits) - Worst is 28 bits: 8295/8170 (1.02x)
Testing distribution - Worst bias is the 18-bit window at bit 19 - 0.084%

Testing bit 55
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    499 (0.97x)
Testing collisions (high 24-36 bits) - Worst is 29 bits: 4124/4090 (1.01x)
Testing collisions (low  32-bit) - Expected        511.9, actual    484 (0.95x)
Testing collisions (low  24-36 bits) - Worst is 36 bits: 38/31 (1.19x)
Testing distribution - Worst bias is the 18-bit window at bit 29 - 0.061%

Testing bit 56
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    479 (0.94x)
Testing collisions (high 24-36 bits) - Worst is 36 bits: 37/31 (1.16x)
Testing collisions (low  32-bit) - Expected        511.9, actual    520 (1.02x) (9)
Testing collisions (low  24-36 bits) - Worst is 35 bits: 69/63 (1.08x)
Testing distribution - Worst bias is the 18-bit window at bit 14 - 0.054%

Testing bit 57
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    524 (1.02x) (13)
Testing collisions (high 24-36 bits) - Worst is 36 bits: 39/31 (1.22x)
Testing collisions (low  32-bit) - Expected        511.9, actual    562 (1.10x) (51)
Testing collisions (low  24-36 bits) - Worst is 32 bits: 562/511 (1.10x)
Testing distribution - Worst bias is the 18-bit window at bit 40 - 0.073%

Testing bit 58
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    524 (1.02x) (13)
Testing collisions (high 24-36 bits) - Worst is 36 bits: 41/31 (1.28x)
Testing collisions (low  32-bit) - Expected        511.9, actual    495 (0.97x)
Testing collisions (low  24-36 bits) - Worst is 31 bits: 1040/1023 (1.02x)
Testing distribution - Worst bias is the 18-bit window at bit  8 - 0.065%

Testing bit 59
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    519 (1.01x) (8)
Testing collisions (high 24-36 bits) - Worst is 32 bits: 519/511 (1.01x)
Testing collisions (low  32-bit) - Expected        511.9, actual    484 (0.95x)
Testing collisions (low  24-36 bits) - Worst is 36 bits: 34/31 (1.06x)
Testing distribution - Worst bias is the 18-bit window at bit 59 - 0.107%

Testing bit 60
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    499 (0.97x)
Testing collisions (high 24-36 bits) - Worst is 29 bits: 4156/4090 (1.02x)
Testing collisions (low  32-bit) - Expected        511.9, actual    489 (0.96x)
Testing collisions (low  24-36 bits) - Worst is 34 bits: 157/127 (1.23x)
Testing distribution - Worst bias is the 18-bit window at bit  0 - 0.085%

Testing bit 61
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    479 (0.94x)
Testing collisions (high 24-36 bits) - Worst is 31 bits: 1038/1023 (1.01x)
Testing collisions (low  32-bit) - Expected        511.9, actual    498 (0.97x)
Testing collisions (low  24-36 bits) - Worst is 34 bits: 140/127 (1.09x)
Testing distribution - Worst bias is the 18-bit window at bit 33 - 0.062%

Testing bit 62
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    545 (1.06x) (34)
Testing collisions (high 24-36 bits) - Worst is 32 bits: 545/511 (1.06x)
Testing collisions (low  32-bit) - Expected        511.9, actual    490 (0.96x)
Testing collisions (low  24-36 bits) - Worst is 28 bits: 8246/8170 (1.01x)
Testing distribution - Worst bias is the 18-bit window at bit  7 - 0.075%

Testing bit 63
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected        511.9, actual    494 (0.97x)
Testing collisions (high 24-36 bits) - Worst is 34 bits: 135/127 (1.05x)
Testing collisions (low  32-bit) - Expected        511.9, actual    493 (0.96x)
Testing collisions (low  24-36 bits) - Worst is 36 bits: 33/31 (1.03x)
Testing distribution - Worst bias is the 18-bit window at bit  4 - 0.064%

[[[ MomentChi2 Tests ]]]

Analyze hashes produced from a serie of linearly increasing numbers of 32-bit, using a step of 2 ...
Target values to approximate : 38918200.000000 - 273633.333333
4 threads starting...  done
Popcount 1 stats : 38919126.287410 - 273655.000244
Popcount 0 stats : 38918944.893707 - 273656.625367
MomentChi2 for bits 1 :   1.56774
MomentChi2 for bits 0 :   1.01384

Derivative stats (transition from 2 consecutive values) :
Popcount 1 stats : 38919425.498115 - 273650.025379
Popcount 0 stats : 38918416.065960 - 273639.396778
MomentChi2 for deriv b1 :   2.74418
MomentChi2 for deriv b0 :  0.0853039

  Great

[[[ Prng Tests ]]]

Generating 33554432 random numbers :
Testing collisions ( 64-bit) - Expected    0.0, actual      0 (0.00x)
Testing collisions (high 32-bit) - Expected     130731.3, actual 130582 (1.00x) (-149)
Testing collisions (high 28-44 bits) - Worst is 41 bits: 270/255 (1.05x)
Testing collisions (low  32-bit) - Expected     130731.3, actual 130338 (1.00x) (-393)
Testing collisions (low  28-44 bits) - Worst is 43 bits: 73/63 (1.14x)

[[[ BadSeeds Tests ]]]

Testing 0 internal secrets:
0x0 PASS

Input vcode 0x00000001, Output vcode 0x00000001, Result vcode 0x00000001
Verification value is 0x00000001 - Testing took 9686.695928 seconds
alpominth commented 1 year ago

I can confirm that it's working: https://paste.ee/p/euV9K

System:

Processor: AMD Ryzen 5 1400 Memory: 2133 DDR4 Cmake version: 3.25.1 GCC version: (Debian 12.2.0-14) 12.2.0 Host system: Debian testing amd64 64-bits

o0101 commented 1 year ago

@rurban DONE! :)

rurban commented 1 year ago

No, you cannot just call it crypto without cryptoanalysis, and esp. not with 64bit. Submit it to a crypto competition first with the 128bit variant. Like this: https://csrc.nist.gov/projects/lightweight-cryptography Or rename it to discohash512.

o0101 commented 1 year ago

Sure!

o0101 commented 1 year ago

@rurban OK! DONE! :) thank you for review ❤️

rurban commented 1 year ago

I"m afraid, but discohash v2 has tons of bad seeds, I forgot to add. the 512 variant also. also the old version try ./testseeds.sh discohash

o0101 commented 1 year ago

@rurban Thank you! :)

o0101 commented 1 year ago

@rurban that should fix the bad seeds...mostly! :)

o0101 commented 1 year ago

@rurban That looks good! :)

o0101 commented 1 year ago

@rurban BTW - can you suggest a cheaper or better way to do the alignment of key? I'm not a C++ expert so I'm sort of flying by the seat of my pants on things like that :)

rurban commented 1 year ago

@rurban BTW - can you suggest a cheaper or better way to do the alignment of key? I'm not a C++ expert so I'm sort of flying by the seat of my pants on things like that :)

You did fine with alignas()

rurban commented 1 year ago

the latest is much faster and better. testing today

rurban commented 1 year ago

Had to provide a bad seeds checker.

o0101 commented 1 year ago

@rurban thanks! I read somewhere that bad seeds in Disco were due to not the algorithm but data being incorrectly accessed across threads somehow. I still have a few minor updates to make, as well as a new hash to push. I'll make a new PR in a few days. I appreciate your work on this, thank you again! :)

rurban commented 1 year ago

No, threads certainly not. It's a bad mixer, mostly

o0101 commented 1 year ago

OK well let's see how it works out in the next couple days! :) Thanks again, @rurban for your work on this -- I really appreciate it! Hope you're well! :)