diff --git a/Hashes.h b/Hashes.h
index e5bf51a5..16b9319a 100644
--- a/Hashes.h
+++ b/Hashes.h
@@ -1255,15 +1255,17 @@ void nmhash32_test ( const void * key, int len, uint32_t seed, void * out );
void nmhash32x_test ( const void * key, int len, uint32_t seed, void * out );
#ifdef HAVE_INT64
-// objsize: ???
extern "C" {
#include "pearson_hash/pearsonb.h"
+// objsize: 417b50-417dfb = 683
inline void pearsonb64_test ( const void * key, int len, uint32_t seed, void * out ) {
*(uint64_t*)out = pearsonb_hash_64 ((const uint8_t*)key, (size_t) len, (uint64_t) seed);
}
+// objsize: 41a1f0-41a65e: 1134
inline void pearsonb128_test ( const void * key, int len, uint32_t seed, void * out ) {
pearsonb_hash_128 ((uint8_t*)out, (const uint8_t*)key, (size_t) len, (uint64_t) seed);
}
+// 41a660-41a9ac: 844
inline void pearsonb256_test ( const void * key, int len, uint32_t seed, void * out ) {
pearsonb_hash_256 ((uint8_t*)out, (const uint8_t*)key, (size_t) len, (uint64_t) seed);
}
diff --git a/README.md b/README.md
index 8d87ee02..c2cc088c 100644
--- a/README.md
+++ b/README.md
@@ -79,9 +79,6 @@ SMhasher
| [pearsonhash64](doc/pearsonhash64.txt) | 287.95 | 174.11 | 196.50 (1) | | Avalanche, Seed, SSSE3 only. broken MSVC |
| [pearsonhash128](doc/pearsonhash128.txt) | 287.95 | 171.72 | 194.61 (1) | | Avalanche, Seed, SSSE3 only. broken MSVC |
| [pearsonhash256](doc/pearsonhash256.txt) | 264.51 | 184.87 | 218.79 (0) | | Avalanche, Seed, SSSE3 only. broken MSVC |
-| [pearsonbhash64](doc/pearsonbhash64.txt) | 1486.34 | 104.32 | 185.03 (2) | | Seed, Perlin |
-| [pearsonbhash128](doc/pearsonbhash128.txt) | 1347.03 | 121.75 | 214.84 (2) | | Seed, Perlin |
-| [pearsonbhash256](doc/pearsonbhash256.txt) | 998.65 | 161.85 | 528.97 (12)| | Seed, Perlin |
| [VHASH_32](doc/VHASH_32.txt) | 9404.99 | 77.01 | 250.57 (2) |1231 | sanity, Seed, MomentChi2 |
| [VHASH_64](doc/VHASH_64.txt) | 9392.39 | 74.72 | 227.92 (2) |1231 | sanity, Seed, Sparse |
| [farsh32](doc/farsh32.txt) | 14053.09 | 74.29 | 245.33 (3) | 944 | insecure: AppendedZeroes, collisions+bias, MomentChi2, LongNeighbors |
@@ -132,6 +129,9 @@ SMhasher
| [SipHash](doc/SipHash.txt) | 980.88 | 127.77 | 246.19 (4) |1071 | |
| [HalfSipHash](doc/HalfSipHash.txt) | 755.78 | 114.47 | 243.72 (4) | 700 | zeroes |
| [GoodOAAT](doc/GoodOAAT.txt) | 1052.00 | 71.62 | 192.19 (1) | 237 | |
+| [pearsonbhash64](doc/pearsonbhash64.txt) | 1486.34 | 104.32 | 185.03 (2) | 683 | |
+| [pearsonbhash128](doc/pearsonbhash128.txt) | 1347.03 | 121.75 | 214.84 (2) |1134 | |
+| [pearsonbhash256](doc/pearsonbhash256.txt) | 998.90 | 167.05 | 261.29 (3) | 844 | |
| [prvhash64_64m](doc/prvhash64_64m.txt) | 2386.19 | 51.18 | 186.87 (1) | 349 | |
| [prvhash64_64](doc/prvhash64_64.txt) | 2375.72 | 51.61 | 190.97 (2) | 384 | |
| [prvhash64_128](doc/prvhash64_128.txt) | 2383.57 | 103.44 | 246.45 (1) | 718 | |
diff --git a/doc/air.html b/doc/air.html
index 01361b83..d600056d 100644
--- a/doc/air.html
+++ b/doc/air.html
@@ -609,30 +609,6 @@
Avalanche, Seed, SSSE3 only. broken MSVC |
-pearsonbhash64 |
-2321.28 |
-71.86 |
-390.69 (18) |
- |
- Seed, Perlin |
-
-
-pearsonbhash128 |
-2221.71 |
-79.17 |
-400.51 (20) |
- |
- Seed, Perlin |
-
-
-pearsonbhash256 |
-1850.94 |
-91.40 |
-414.29 (19) |
- |
- Seed, Perlin |
-
-
VHASH_32 |
7713.21 |
68.96 |
@@ -1025,6 +1001,30 @@
|
+pearsonbhash64 |
+2321.28 |
+71.86 |
+390.69 (18) |
+683 |
+ |
+
+
+pearsonbhash128 |
+2221.71 |
+79.17 |
+400.51 (20) |
+1134 |
+ |
+
+
+pearsonbhash256 |
+1850.94 |
+91.40 |
+414.29 (19) |
+844 |
+ |
+
+
prvhash64_64m |
3848.16 |
35.92 |
diff --git a/doc/i686.html b/doc/i686.html
index 3485b77a..f940c5ba 100644
--- a/doc/i686.html
+++ b/doc/i686.html
@@ -497,30 +497,6 @@
UB, too many bad seeds, MSVC specific |
-pearsonbhash64 |
-845.46 |
-185.49 |
-277.92 (1) |
- |
- Seed, Perlin |
-
-
-pearsonbhash128 |
-640.96 |
-238.74 |
-330.63 (3) |
- |
- Seed, Perlin |
-
-
-pearsonbhash256 |
-393.20 |
-395.52 |
-459.62 (1) |
- |
- Seed, Perlin |
-
-
VHASH_32 |
1197.22 |
181.18 |
@@ -913,6 +889,30 @@
|
+pearsonbhash64 |
+845.46 |
+185.49 |
+277.92 (1) |
+683 |
+ |
+
+
+pearsonbhash128 |
+640.96 |
+238.74 |
+330.63 (3) |
+1134 |
+ |
+
+
+pearsonbhash256 |
+393.20 |
+395.52 |
+459.62 (1) |
+844 |
+ |
+
+
prvhash64_64m |
1412.90 |
112.08 |
diff --git a/doc/pearsonbhash128.txt b/doc/pearsonbhash128.txt
index 260e07a1..065ec32c 100644
--- a/doc/pearsonbhash128.txt
+++ b/doc/pearsonbhash128.txt
@@ -1,67 +1,67 @@
-------------------------------------------------------------------------------
---- Testing pearsonbhash128 "Pearson block hash, 128-bit, low 64-bits part" GOOD
+--- Testing pearsonbhash128 "Pearson block hash, 128-bit, low 64-bit" POOR
[[[ Sanity Tests ]]]
-Verification value 0x824DA7ED ....... PASS
+Verification value 0x6BEFE6EA ....... PASS
Running sanity check 1 .......... PASS
Running AppendedZeroesTest .......... PASS
[[[ Speed Tests ]]]
Bulk speed test - 262144-byte keys
-Alignment 7 - 0.471 bytes/cycle - 1346.26 MiB/sec @ 3 ghz
-Alignment 6 - 0.471 bytes/cycle - 1346.25 MiB/sec @ 3 ghz
-Alignment 5 - 0.471 bytes/cycle - 1346.25 MiB/sec @ 3 ghz
-Alignment 4 - 0.471 bytes/cycle - 1346.25 MiB/sec @ 3 ghz
-Alignment 3 - 0.471 bytes/cycle - 1346.26 MiB/sec @ 3 ghz
-Alignment 2 - 0.471 bytes/cycle - 1346.26 MiB/sec @ 3 ghz
-Alignment 1 - 0.471 bytes/cycle - 1346.27 MiB/sec @ 3 ghz
-Alignment 0 - 0.473 bytes/cycle - 1352.43 MiB/sec @ 3 ghz
-Average - 0.471 bytes/cycle - 1347.03 MiB/sec @ 3 ghz
-
-Small key speed test - 1-byte keys - 49.65 cycles/hash
-Small key speed test - 2-byte keys - 66.60 cycles/hash
-Small key speed test - 3-byte keys - 83.77 cycles/hash
-Small key speed test - 4-byte keys - 101.00 cycles/hash
-Small key speed test - 5-byte keys - 119.00 cycles/hash
-Small key speed test - 6-byte keys - 135.00 cycles/hash
-Small key speed test - 7-byte keys - 152.73 cycles/hash
-Small key speed test - 8-byte keys - 50.00 cycles/hash
-Small key speed test - 9-byte keys - 67.85 cycles/hash
-Small key speed test - 10-byte keys - 84.98 cycles/hash
-Small key speed test - 11-byte keys - 102.00 cycles/hash
-Small key speed test - 12-byte keys - 119.15 cycles/hash
-Small key speed test - 13-byte keys - 136.20 cycles/hash
-Small key speed test - 14-byte keys - 153.50 cycles/hash
-Small key speed test - 15-byte keys - 170.77 cycles/hash
-Small key speed test - 16-byte keys - 67.00 cycles/hash
-Small key speed test - 17-byte keys - 85.00 cycles/hash
-Small key speed test - 18-byte keys - 102.25 cycles/hash
-Small key speed test - 19-byte keys - 119.23 cycles/hash
-Small key speed test - 20-byte keys - 137.00 cycles/hash
-Small key speed test - 21-byte keys - 153.00 cycles/hash
-Small key speed test - 22-byte keys - 170.92 cycles/hash
-Small key speed test - 23-byte keys - 188.00 cycles/hash
-Small key speed test - 24-byte keys - 84.00 cycles/hash
-Small key speed test - 25-byte keys - 102.00 cycles/hash
-Small key speed test - 26-byte keys - 119.00 cycles/hash
-Small key speed test - 27-byte keys - 136.78 cycles/hash
-Small key speed test - 28-byte keys - 153.98 cycles/hash
-Small key speed test - 29-byte keys - 170.42 cycles/hash
-Small key speed test - 30-byte keys - 188.00 cycles/hash
-Small key speed test - 31-byte keys - 205.42 cycles/hash
-Average 121.748 cycles/hash
+Alignment 7 - 0.705 bytes/cycle - 2017.78 MiB/sec @ 3 ghz
+Alignment 6 - 0.706 bytes/cycle - 2019.31 MiB/sec @ 3 ghz
+Alignment 5 - 0.706 bytes/cycle - 2019.16 MiB/sec @ 3 ghz
+Alignment 4 - 0.706 bytes/cycle - 2019.71 MiB/sec @ 3 ghz
+Alignment 3 - 0.697 bytes/cycle - 1994.44 MiB/sec @ 3 ghz
+Alignment 2 - 0.706 bytes/cycle - 2019.73 MiB/sec @ 3 ghz
+Alignment 1 - 0.706 bytes/cycle - 2019.79 MiB/sec @ 3 ghz
+Alignment 0 - 0.695 bytes/cycle - 1987.25 MiB/sec @ 3 ghz
+Average - 0.703 bytes/cycle - 2012.15 MiB/sec @ 3 ghz
+
+Small key speed test - 1-byte keys - 39.96 cycles/hash
+Small key speed test - 2-byte keys - 50.99 cycles/hash
+Small key speed test - 3-byte keys - 62.00 cycles/hash
+Small key speed test - 4-byte keys - 73.82 cycles/hash
+Small key speed test - 5-byte keys - 85.80 cycles/hash
+Small key speed test - 6-byte keys - 96.55 cycles/hash
+Small key speed test - 7-byte keys - 107.96 cycles/hash
+Small key speed test - 8-byte keys - 40.00 cycles/hash
+Small key speed test - 9-byte keys - 51.92 cycles/hash
+Small key speed test - 10-byte keys - 62.91 cycles/hash
+Small key speed test - 11-byte keys - 74.26 cycles/hash
+Small key speed test - 12-byte keys - 85.49 cycles/hash
+Small key speed test - 13-byte keys - 97.37 cycles/hash
+Small key speed test - 14-byte keys - 108.46 cycles/hash
+Small key speed test - 15-byte keys - 120.60 cycles/hash
+Small key speed test - 16-byte keys - 51.74 cycles/hash
+Small key speed test - 17-byte keys - 62.92 cycles/hash
+Small key speed test - 18-byte keys - 74.00 cycles/hash
+Small key speed test - 19-byte keys - 84.93 cycles/hash
+Small key speed test - 20-byte keys - 97.24 cycles/hash
+Small key speed test - 21-byte keys - 107.99 cycles/hash
+Small key speed test - 22-byte keys - 119.85 cycles/hash
+Small key speed test - 23-byte keys - 132.00 cycles/hash
+Small key speed test - 24-byte keys - 62.96 cycles/hash
+Small key speed test - 25-byte keys - 74.00 cycles/hash
+Small key speed test - 26-byte keys - 85.46 cycles/hash
+Small key speed test - 27-byte keys - 96.56 cycles/hash
+Small key speed test - 28-byte keys - 108.24 cycles/hash
+Small key speed test - 29-byte keys - 119.67 cycles/hash
+Small key speed test - 30-byte keys - 130.59 cycles/hash
+Small key speed test - 31-byte keys - 142.76 cycles/hash
+Average 87.387 cycles/hash
[[[ 'Hashmap' Speed Tests ]]]
std::unordered_map
-Init std HashMapTest: 764.744 cycles/op (479826 inserts, 1% deletions)
-Running std HashMapTest: 650.368 cycles/op (4.9 stdv)
+Init std HashMapTest: 881.431 cycles/op (479826 inserts, 1% deletions)
+Running std HashMapTest: 705.687 cycles/op (16.6 stdv)
greg7mdp/parallel-hashmap
-Init fast HashMapTest: 837.306 cycles/op (479826 inserts, 1% deletions)
-Running fast HashMapTest: 480.549 cycles/op (4.5 stdv) ....... PASS
+Init fast HashMapTest: 1079.890 cycles/op (479826 inserts, 1% deletions)
+Running fast HashMapTest: 546.932 cycles/op (17.1 stdv) ....... PASS
[[[ Avalanche Tests ]]]
@@ -753,37 +753,35 @@ Testing distribution - Worst bias is the 15-bit window at bit 93 - 0.435%
[[[ Keyset 'Seed' Tests ]]]
Keyset 'Seed' - 5000000 keys
-Testing collisions (128-bit) - Expected 0.0, actual 4999999 (136112946768375379225981996761088.00x) (4999999) !!!!!
-Testing collisions (high 64-bit) - Expected 0.0, actual 4999999 (7378697629483.82x) (4999999) !!!!!
-Testing collisions (high 32-bit) - Expected 2910.4, actual 4999999 (1717.99x) (4997089) !!!!!
-Testing collisions (high 26-39 bits) - Worst is 39 bits: 4999999/22 (219902.33x) !!!!!
-Testing collisions (high 12-bit) - Expected 4995904.0, actual 4999999 (1.00x) (4095)
-Testing collisions (high 8-bit) - Expected 4999744.0, actual 4999999 (1.00x) (255)
-Testing collisions (low 64-bit) - Expected 0.0, actual 4999999 (7378697629483.82x) (4999999) !!!!!
-Testing collisions (low 32-bit) - Expected 2910.4, actual 4999999 (1717.99x) (4997089) !!!!!
-Testing collisions (low 26-39 bits) - Worst is 39 bits: 4999999/22 (219902.33x) !!!!!
-Testing collisions (low 12-bit) - Expected 4995904.0, actual 4999999 (1.00x) (4095)
-Testing collisions (low 8-bit) - Expected 4999744.0, actual 4999999 (1.00x) (255)
-Testing distribution - Worst bias is the 19-bit window at bit 0 - 100.000% !!!!!
-
-*********FAIL*********
+Testing collisions (128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 2910.4, actual 2897 (1.00x) (-13)
+Testing collisions (high 26-39 bits) - Worst is 30 bits: 11609/11641 (1.00x)
+Testing collisions (high 12-bit) - Expected 4995904.0, actual 4995904 (1.00x)
+Testing collisions (high 8-bit) - Expected 4999744.0, actual 4999744 (1.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 2910.4, actual 3003 (1.03x) (93)
+Testing collisions (low 26-39 bits) - Worst is 39 bits: 31/22 (1.36x)
+Testing collisions (low 12-bit) - Expected 4995904.0, actual 4995904 (1.00x)
+Testing collisions (low 8-bit) - Expected 4999744.0, actual 4999744 (1.00x)
+Testing distribution - Worst bias is the 19-bit window at bit 33 - 0.057%
+
[[[ Keyset 'PerlinNoise' Tests ]]]
Testing 16777216 coordinates (L2) :
-Testing collisions (128-bit) - Expected 0.0, actual 16773120 (40554918104250545339783029194752.00x) (16773120) !!!!!
-Testing collisions (high 64-bit) - Expected 0.0, actual 16773120 (2198486515680.01x) (16773120) !!!!!
-Testing collisions (high 32-bit) - Expected 32768.0, actual 16773120 (511.88x) (16740353) !!!!!
-Testing collisions (high 27-42 bits) - Worst is 42 bits: 16773120/31 (524160.03x) !!!!!
-Testing collisions (high 12-bit) - Expected 16773120.0, actual 16774628 (1.00x) (1508)
+Testing collisions (128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 32768.0, actual 32506 (0.99x) (-261)
+Testing collisions (high 27-42 bits) - Worst is 38 bits: 512/511 (1.00x)
+Testing collisions (high 12-bit) - Expected 16773120.0, actual 16773120 (1.00x)
Testing collisions (high 8-bit) - Expected 16776960.0, actual 16776960 (1.00x)
-Testing collisions (low 64-bit) - Expected 0.0, actual 16773120 (2198486515680.01x) (16773120) !!!!!
-Testing collisions (low 32-bit) - Expected 32768.0, actual 16773120 (511.88x) (16740353) !!!!!
-Testing collisions (low 27-42 bits) - Worst is 42 bits: 16773120/31 (524160.03x) !!!!!
-Testing collisions (low 12-bit) - Expected 16773120.0, actual 16774630 (1.00x) (1510)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 32768.0, actual 32749 (1.00x) (-18)
+Testing collisions (low 27-42 bits) - Worst is 41 bits: 71/63 (1.11x)
+Testing collisions (low 12-bit) - Expected 16773120.0, actual 16773120 (1.00x)
Testing collisions (low 8-bit) - Expected 16776960.0, actual 16776960 (1.00x)
-*********FAIL*********
[[[ Diff 'Differential' Tests ]]]
@@ -1676,5 +1674,5 @@ Testing 0 internal secrets:
Input vcode 0x00000001, Output vcode 0x00000001, Result vcode 0x00000001
-Verification value is 0x00000001 - Testing took 1581.439220 seconds
+Verification value is 0x00000001 - Testing took 1668.600249 seconds
-------------------------------------------------------------------------------
diff --git a/doc/pearsonbhash256.txt b/doc/pearsonbhash256.txt
index 53d346ac..f6fb9b39 100644
--- a/doc/pearsonbhash256.txt
+++ b/doc/pearsonbhash256.txt
@@ -1,67 +1,67 @@
-------------------------------------------------------------------------------
---- Testing pearsonbhash256 "Pearson block hash, 256-bit, low 64-bits part" GOOD
+--- Testing pearsonbhash256 "Pearson block hash, 256-bit, low 64-bit" POOR
[[[ Sanity Tests ]]]
-Verification value 0xE42B44CE ....... PASS
+Verification value 0x999B3C19 ....... PASS
Running sanity check 1 .......... PASS
Running AppendedZeroesTest .......... PASS
[[[ Speed Tests ]]]
Bulk speed test - 262144-byte keys
-Alignment 7 - 0.349 bytes/cycle - 998.32 MiB/sec @ 3 ghz
-Alignment 6 - 0.349 bytes/cycle - 998.32 MiB/sec @ 3 ghz
-Alignment 5 - 0.349 bytes/cycle - 998.32 MiB/sec @ 3 ghz
-Alignment 4 - 0.349 bytes/cycle - 998.32 MiB/sec @ 3 ghz
-Alignment 3 - 0.349 bytes/cycle - 998.32 MiB/sec @ 3 ghz
-Alignment 2 - 0.349 bytes/cycle - 998.28 MiB/sec @ 3 ghz
-Alignment 1 - 0.349 bytes/cycle - 998.28 MiB/sec @ 3 ghz
-Alignment 0 - 0.351 bytes/cycle - 1003.06 MiB/sec @ 3 ghz
-Average - 0.349 bytes/cycle - 998.90 MiB/sec @ 3 ghz
-
-Small key speed test - 1-byte keys - 72.00 cycles/hash
-Small key speed test - 2-byte keys - 95.28 cycles/hash
-Small key speed test - 3-byte keys - 118.96 cycles/hash
-Small key speed test - 4-byte keys - 140.94 cycles/hash
-Small key speed test - 5-byte keys - 164.00 cycles/hash
-Small key speed test - 6-byte keys - 187.00 cycles/hash
-Small key speed test - 7-byte keys - 210.50 cycles/hash
-Small key speed test - 8-byte keys - 75.77 cycles/hash
-Small key speed test - 9-byte keys - 98.00 cycles/hash
-Small key speed test - 10-byte keys - 121.41 cycles/hash
-Small key speed test - 11-byte keys - 144.00 cycles/hash
-Small key speed test - 12-byte keys - 167.17 cycles/hash
-Small key speed test - 13-byte keys - 190.21 cycles/hash
-Small key speed test - 14-byte keys - 213.00 cycles/hash
-Small key speed test - 15-byte keys - 235.93 cycles/hash
-Small key speed test - 16-byte keys - 97.75 cycles/hash
-Small key speed test - 17-byte keys - 121.12 cycles/hash
-Small key speed test - 18-byte keys - 144.24 cycles/hash
-Small key speed test - 19-byte keys - 166.91 cycles/hash
-Small key speed test - 20-byte keys - 190.00 cycles/hash
-Small key speed test - 21-byte keys - 204.82 cycles/hash
-Small key speed test - 22-byte keys - 227.42 cycles/hash
-Small key speed test - 23-byte keys - 250.00 cycles/hash
-Small key speed test - 24-byte keys - 112.22 cycles/hash
-Small key speed test - 25-byte keys - 135.51 cycles/hash
-Small key speed test - 26-byte keys - 158.65 cycles/hash
-Small key speed test - 27-byte keys - 181.33 cycles/hash
-Small key speed test - 28-byte keys - 204.00 cycles/hash
-Small key speed test - 29-byte keys - 227.12 cycles/hash
-Small key speed test - 30-byte keys - 250.32 cycles/hash
-Small key speed test - 31-byte keys - 273.00 cycles/hash
-Average 167.050 cycles/hash
+Alignment 7 - 0.617 bytes/cycle - 1765.36 MiB/sec @ 3 ghz
+Alignment 6 - 0.617 bytes/cycle - 1764.52 MiB/sec @ 3 ghz
+Alignment 5 - 0.617 bytes/cycle - 1763.87 MiB/sec @ 3 ghz
+Alignment 4 - 0.616 bytes/cycle - 1763.15 MiB/sec @ 3 ghz
+Alignment 3 - 0.607 bytes/cycle - 1737.90 MiB/sec @ 3 ghz
+Alignment 2 - 0.607 bytes/cycle - 1737.27 MiB/sec @ 3 ghz
+Alignment 1 - 0.617 bytes/cycle - 1765.16 MiB/sec @ 3 ghz
+Alignment 0 - 0.617 bytes/cycle - 1765.18 MiB/sec @ 3 ghz
+Average - 0.614 bytes/cycle - 1757.80 MiB/sec @ 3 ghz
+
+Small key speed test - 1-byte keys - 46.65 cycles/hash
+Small key speed test - 2-byte keys - 58.99 cycles/hash
+Small key speed test - 3-byte keys - 72.50 cycles/hash
+Small key speed test - 4-byte keys - 85.64 cycles/hash
+Small key speed test - 5-byte keys - 98.67 cycles/hash
+Small key speed test - 6-byte keys - 111.71 cycles/hash
+Small key speed test - 7-byte keys - 125.11 cycles/hash
+Small key speed test - 8-byte keys - 45.80 cycles/hash
+Small key speed test - 9-byte keys - 60.56 cycles/hash
+Small key speed test - 10-byte keys - 72.72 cycles/hash
+Small key speed test - 11-byte keys - 86.17 cycles/hash
+Small key speed test - 12-byte keys - 99.66 cycles/hash
+Small key speed test - 13-byte keys - 112.70 cycles/hash
+Small key speed test - 14-byte keys - 125.80 cycles/hash
+Small key speed test - 15-byte keys - 139.60 cycles/hash
+Small key speed test - 16-byte keys - 59.00 cycles/hash
+Small key speed test - 17-byte keys - 72.89 cycles/hash
+Small key speed test - 18-byte keys - 86.19 cycles/hash
+Small key speed test - 19-byte keys - 99.66 cycles/hash
+Small key speed test - 20-byte keys - 113.16 cycles/hash
+Small key speed test - 21-byte keys - 125.76 cycles/hash
+Small key speed test - 22-byte keys - 138.81 cycles/hash
+Small key speed test - 23-byte keys - 152.24 cycles/hash
+Small key speed test - 24-byte keys - 72.48 cycles/hash
+Small key speed test - 25-byte keys - 84.98 cycles/hash
+Small key speed test - 26-byte keys - 98.59 cycles/hash
+Small key speed test - 27-byte keys - 112.00 cycles/hash
+Small key speed test - 28-byte keys - 125.53 cycles/hash
+Small key speed test - 29-byte keys - 138.56 cycles/hash
+Small key speed test - 30-byte keys - 152.19 cycles/hash
+Small key speed test - 31-byte keys - 165.32 cycles/hash
+Average 101.278 cycles/hash
[[[ 'Hashmap' Speed Tests ]]]
std::unordered_map
-Init std HashMapTest: 856.761 cycles/op (479826 inserts, 1% deletions)
-Running std HashMapTest: 684.588 cycles/op (11.0 stdv)
+Init std HashMapTest: 863.729 cycles/op (479826 inserts, 1% deletions)
+Running std HashMapTest: 717.501 cycles/op (16.0 stdv)
greg7mdp/parallel-hashmap
-Init fast HashMapTest: 923.976 cycles/op (479826 inserts, 1% deletions)
-Running fast HashMapTest: 528.969 cycles/op (11.5 stdv) ....... PASS
+Init fast HashMapTest: 919.039 cycles/op (479826 inserts, 1% deletions)
+Running fast HashMapTest: 567.499 cycles/op (20.0 stdv) ....... PASS
[[[ Avalanche Tests ]]]
@@ -202,3 +202,2131 @@ Testing distribution - Worst bias is the 19-bit window at bit 75 - 0.075%
Keyset 'Sparse' - 64-bit keys with up to 5 bits set - 8303633 keys
Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 8026.9, actual 8041 (1.00x) (15)
+Testing collisions (high 26-40 bits) - Worst is 40 bits: 39/31 (1.24x)
+Testing collisions (high 12-bit) - Expected 8299537.0, actual 8299537 (1.00x)
+Testing collisions (high 8-bit) - Expected 8303377.0, actual 8303377 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 8026.9, actual 7780 (0.97x)
+Testing collisions (low 26-40 bits) - Worst is 38 bits: 132/125 (1.05x)
+Testing collisions (low 12-bit) - Expected 8299537.0, actual 8299537 (1.00x)
+Testing collisions (low 8-bit) - Expected 8303377.0, actual 8303377 (1.00x)
+Testing distribution - Worst bias is the 20-bit window at bit 28 - 0.072%
+
+Keyset 'Sparse' - 72-bit keys with up to 5 bits set - 15082603 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 26482.7, actual 26567 (1.00x) (85)
+Testing collisions (high 27-42 bits) - Worst is 34 bits: 6751/6620 (1.02x)
+Testing collisions (high 12-bit) - Expected 15078507.0, actual 15078507 (1.00x)
+Testing collisions (high 8-bit) - Expected 15082347.0, actual 15082347 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 26482.7, actual 26296 (0.99x) (-186)
+Testing collisions (low 27-42 bits) - Worst is 39 bits: 210/206 (1.02x)
+Testing collisions (low 12-bit) - Expected 15078507.0, actual 15078507 (1.00x)
+Testing collisions (low 8-bit) - Expected 15082347.0, actual 15082347 (1.00x)
+Testing distribution - Worst bias is the 20-bit window at bit 203 - 0.027%
+
+Keyset 'Sparse' - 96-bit keys with up to 4 bits set - 3469497 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 1401.3, actual 1454 (1.04x) (53)
+Testing collisions (high 25-38 bits) - Worst is 35 bits: 189/175 (1.08x)
+Testing collisions (high 12-bit) - Expected 3465401.0, actual 3465401 (1.00x)
+Testing collisions (high 8-bit) - Expected 3469241.0, actual 3469241 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 1401.3, actual 1367 (0.98x)
+Testing collisions (low 25-38 bits) - Worst is 28 bits: 22370/22421 (1.00x)
+Testing collisions (low 12-bit) - Expected 3465401.0, actual 3465401 (1.00x)
+Testing collisions (low 8-bit) - Expected 3469241.0, actual 3469241 (1.00x)
+Testing distribution - Worst bias is the 19-bit window at bit 32 - 0.093%
+
+Keyset 'Sparse' - 160-bit keys with up to 4 bits set - 26977161 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 84723.3, actual 85215 (1.01x) (492)
+Testing collisions (high 28-44 bits) - Worst is 43 bits: 46/41 (1.11x)
+Testing collisions (high 12-bit) - Expected 26973065.0, actual 26973065 (1.00x)
+Testing collisions (high 8-bit) - Expected 26976905.0, actual 26976905 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 84723.3, actual 85016 (1.00x) (293)
+Testing collisions (low 28-44 bits) - Worst is 41 bits: 187/165 (1.13x)
+Testing collisions (low 12-bit) - Expected 26973065.0, actual 26973065 (1.00x)
+Testing collisions (low 8-bit) - Expected 26976905.0, actual 26976905 (1.00x)
+Testing distribution - Worst bias is the 20-bit window at bit 115 - 0.017%
+
+Keyset 'Sparse' - 256-bit keys with up to 3 bits set - 2796417 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 910.4, actual 862 (0.95x)
+Testing collisions (high 25-37 bits) - Worst is 36 bits: 63/56 (1.11x)
+Testing collisions (high 12-bit) - Expected 2792321.0, actual 2792321 (1.00x)
+Testing collisions (high 8-bit) - Expected 2796161.0, actual 2796161 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 910.4, actual 900 (0.99x) (-10)
+Testing collisions (low 25-37 bits) - Worst is 36 bits: 59/56 (1.04x)
+Testing collisions (low 12-bit) - Expected 2792321.0, actual 2792321 (1.00x)
+Testing collisions (low 8-bit) - Expected 2796161.0, actual 2796161 (1.00x)
+Testing distribution - Worst bias is the 19-bit window at bit 169 - 0.116%
+
+
+[[[ Keyset 'Permutation' Tests ]]]
+
+Combination Lowbits Tests:
+Keyset 'Combination' - up to 7 blocks from a set of 8 - 2396744 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 668.7, actual 675 (1.01x) (7)
+Testing collisions (high 25-37 bits) - Worst is 32 bits: 675/668 (1.01x)
+Testing collisions (high 12-bit) - Expected 2392648.0, actual 2392648 (1.00x)
+Testing collisions (high 8-bit) - Expected 2396488.0, actual 2396488 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 668.7, actual 662 (0.99x) (-6)
+Testing collisions (low 25-37 bits) - Worst is 36 bits: 48/41 (1.15x)
+Testing collisions (low 12-bit) - Expected 2392648.0, actual 2392648 (1.00x)
+Testing collisions (low 8-bit) - Expected 2396488.0, actual 2396488 (1.00x)
+Testing distribution - Worst bias is the 18-bit window at bit 173 - 0.090%
+
+
+Combination Highbits Tests
+Keyset 'Combination' - up to 7 blocks from a set of 8 - 2396744 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 668.7, actual 628 (0.94x)
+Testing collisions (high 25-37 bits) - Worst is 27 bits: 21304/21399 (1.00x)
+Testing collisions (high 12-bit) - Expected 2392648.0, actual 2392648 (1.00x)
+Testing collisions (high 8-bit) - Expected 2396488.0, actual 2396488 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 668.7, actual 643 (0.96x)
+Testing collisions (low 25-37 bits) - Worst is 36 bits: 43/41 (1.03x)
+Testing collisions (low 12-bit) - Expected 2392648.0, actual 2392648 (1.00x)
+Testing collisions (low 8-bit) - Expected 2396488.0, actual 2396488 (1.00x)
+Testing distribution - Worst bias is the 18-bit window at bit 143 - 0.073%
+
+
+Combination Hi-Lo Tests:
+Keyset 'Combination' - up to 6 blocks from a set of 15 - 12204240 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 17339.3, actual 17272 (1.00x) (-67)
+Testing collisions (high 27-41 bits) - Worst is 41 bits: 36/33 (1.06x)
+Testing collisions (high 12-bit) - Expected 12200144.0, actual 12200144 (1.00x)
+Testing collisions (high 8-bit) - Expected 12203984.0, actual 12203984 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 17339.3, actual 17307 (1.00x) (-32)
+Testing collisions (low 27-41 bits) - Worst is 34 bits: 4372/4334 (1.01x)
+Testing collisions (low 12-bit) - Expected 12200144.0, actual 12200144 (1.00x)
+Testing collisions (low 8-bit) - Expected 12203984.0, actual 12203984 (1.00x)
+Testing distribution - Worst bias is the 20-bit window at bit 232 - 0.030%
+
+
+Combination 0x8000000 Tests:
+Keyset 'Combination' - up to 17 blocks from a set of 2 - 262142 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 8.0, actual 7 (0.88x)
+Testing collisions (high 21-30 bits) - Worst is 23 bits: 4090/4095 (1.00x)
+Testing collisions (high 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (high 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 8.0, actual 5 (0.63x)
+Testing collisions (low 21-30 bits) - Worst is 28 bits: 128/127 (1.00x)
+Testing collisions (low 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (low 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing distribution - Worst bias is the 15-bit window at bit 170 - 0.321%
+
+
+Combination 0x0000001 Tests:
+Keyset 'Combination' - up to 17 blocks from a set of 2 - 262142 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 8.0, actual 6 (0.75x)
+Testing collisions (high 21-30 bits) - Worst is 29 bits: 72/63 (1.13x)
+Testing collisions (high 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (high 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 8.0, actual 9 (1.13x) (2)
+Testing collisions (low 21-30 bits) - Worst is 30 bits: 33/31 (1.03x)
+Testing collisions (low 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (low 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing distribution - Worst bias is the 15-bit window at bit 20 - 0.251%
+
+
+Combination 0x800000000000000 Tests:
+Keyset 'Combination' - up to 17 blocks from a set of 2 - 262142 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 8.0, actual 10 (1.25x) (3)
+Testing collisions (high 21-30 bits) - Worst is 24 bits: 2054/2047 (1.00x)
+Testing collisions (high 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (high 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 8.0, actual 7 (0.88x)
+Testing collisions (low 21-30 bits) - Worst is 24 bits: 1976/2047 (0.96x)
+Testing collisions (low 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (low 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing distribution - Worst bias is the 15-bit window at bit 121 - 0.240%
+
+
+Combination 0x000000000000001 Tests:
+Keyset 'Combination' - up to 17 blocks from a set of 2 - 262142 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 8.0, actual 6 (0.75x)
+Testing collisions (high 21-30 bits) - Worst is 25 bits: 1028/1023 (1.00x)
+Testing collisions (high 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (high 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 8.0, actual 6 (0.75x)
+Testing collisions (low 21-30 bits) - Worst is 28 bits: 142/127 (1.11x)
+Testing collisions (low 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (low 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing distribution - Worst bias is the 15-bit window at bit 114 - 0.261%
+
+
+Combination 16-bytes [0-1] Tests:
+Keyset 'Combination' - up to 17 blocks from a set of 2 - 262142 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 8.0, actual 6 (0.75x)
+Testing collisions (high 21-30 bits) - Worst is 28 bits: 129/127 (1.01x)
+Testing collisions (high 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (high 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 8.0, actual 9 (1.13x) (2)
+Testing collisions (low 21-30 bits) - Worst is 26 bits: 507/511 (0.99x)
+Testing collisions (low 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (low 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing distribution - Worst bias is the 15-bit window at bit 246 - 0.297%
+
+
+Combination 16-bytes [0-last] Tests:
+Keyset 'Combination' - up to 17 blocks from a set of 2 - 262142 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 8.0, actual 11 (1.38x) (4)
+Testing collisions (high 21-30 bits) - Worst is 29 bits: 69/63 (1.08x)
+Testing collisions (high 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (high 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 8.0, actual 5 (0.63x)
+Testing collisions (low 21-30 bits) - Worst is 24 bits: 2058/2047 (1.00x)
+Testing collisions (low 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (low 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing distribution - Worst bias is the 15-bit window at bit 251 - 0.293%
+
+
+Combination 32-bytes [0-1] Tests:
+Keyset 'Combination' - up to 17 blocks from a set of 2 - 262142 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 8.0, actual 6 (0.75x)
+Testing collisions (high 21-30 bits) - Worst is 25 bits: 1008/1023 (0.98x)
+Testing collisions (high 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (high 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 8.0, actual 10 (1.25x) (3)
+Testing collisions (low 21-30 bits) - Worst is 26 bits: 527/511 (1.03x)
+Testing collisions (low 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (low 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing distribution - Worst bias is the 15-bit window at bit 156 - 0.285%
+
+
+Combination 32-bytes [0-last] Tests:
+Keyset 'Combination' - up to 17 blocks from a set of 2 - 262142 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 8.0, actual 7 (0.88x)
+Testing collisions (high 21-30 bits) - Worst is 29 bits: 77/63 (1.20x)
+Testing collisions (high 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (high 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 8.0, actual 6 (0.75x)
+Testing collisions (low 21-30 bits) - Worst is 24 bits: 2071/2047 (1.01x)
+Testing collisions (low 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (low 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing distribution - Worst bias is the 15-bit window at bit 156 - 0.248%
+
+
+Combination 64-bytes [0-1] Tests:
+Keyset 'Combination' - up to 17 blocks from a set of 2 - 262142 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 8.0, actual 12 (1.50x) (5)
+Testing collisions (high 21-30 bits) - Worst is 28 bits: 133/127 (1.04x)
+Testing collisions (high 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (high 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 8.0, actual 8 (1.00x) (1)
+Testing collisions (low 21-30 bits) - Worst is 26 bits: 546/511 (1.07x)
+Testing collisions (low 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (low 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing distribution - Worst bias is the 15-bit window at bit 52 - 0.260%
+
+
+Combination 64-bytes [0-last] Tests:
+Keyset 'Combination' - up to 17 blocks from a set of 2 - 262142 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 8.0, actual 8 (1.00x) (1)
+Testing collisions (high 21-30 bits) - Worst is 28 bits: 149/127 (1.16x)
+Testing collisions (high 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (high 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 8.0, actual 6 (0.75x)
+Testing collisions (low 21-30 bits) - Worst is 27 bits: 269/255 (1.05x)
+Testing collisions (low 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (low 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing distribution - Worst bias is the 15-bit window at bit 187 - 0.323%
+
+
+Combination 128-bytes [0-1] Tests:
+Keyset 'Combination' - up to 17 blocks from a set of 2 - 262142 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 8.0, actual 6 (0.75x)
+Testing collisions (high 21-30 bits) - Worst is 24 bits: 2033/2047 (0.99x)
+Testing collisions (high 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (high 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 8.0, actual 12 (1.50x) (5)
+Testing collisions (low 21-30 bits) - Worst is 27 bits: 265/255 (1.04x)
+Testing collisions (low 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (low 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing distribution - Worst bias is the 15-bit window at bit 24 - 0.265%
+
+
+Combination 128-bytes [0-last] Tests:
+Keyset 'Combination' - up to 17 blocks from a set of 2 - 262142 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 8.0, actual 13 (1.63x) (6)
+Testing collisions (high 21-30 bits) - Worst is 25 bits: 1035/1023 (1.01x)
+Testing collisions (high 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (high 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 8.0, actual 13 (1.63x) (6)
+Testing collisions (low 21-30 bits) - Worst is 29 bits: 73/63 (1.14x)
+Testing collisions (low 12-bit) - Expected 258046.0, actual 258046 (1.00x)
+Testing collisions (low 8-bit) - Expected 261886.0, actual 261886 (1.00x)
+Testing distribution - Worst bias is the 15-bit window at bit 142 - 0.314%
+
+
+[[[ Keyset 'Window' Tests ]]]
+
+Keyset 'Window' - 32-bit key, 25-bit window - 32 tests, 33554432 keys per test
+Window at 0 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 1 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 2 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 3 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 4 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 5 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 6 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 7 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 8 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 9 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 10 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 11 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 12 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 13 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 14 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 15 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 16 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 17 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 18 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 19 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 20 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 21 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 22 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 23 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 24 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 25 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 26 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 27 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 28 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 29 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 30 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 31 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Window at 32 - Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+
+[[[ Keyset 'Cyclic' Tests ]]]
+
+Keyset 'Cyclic' - 8 cycles of 32 bytes - 1000000 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 116.4, actual 125 (1.07x) (9)
+Testing collisions (high 23-34 bits) - Worst is 32 bits: 125/116 (1.07x)
+Testing collisions (high 12-bit) - Expected 995904.0, actual 995904 (1.00x)
+Testing collisions (high 8-bit) - Expected 999744.0, actual 999744 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 116.4, actual 142 (1.22x) (26)
+Testing collisions (low 23-34 bits) - Worst is 34 bits: 38/29 (1.31x)
+Testing collisions (low 12-bit) - Expected 995904.0, actual 995904 (1.00x)
+Testing collisions (low 8-bit) - Expected 999744.0, actual 999744 (1.00x)
+Testing distribution - Worst bias is the 17-bit window at bit 84 - 0.112%
+
+Keyset 'Cyclic' - 8 cycles of 33 bytes - 1000000 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 116.4, actual 143 (1.23x) (27)
+Testing collisions (high 23-34 bits) - Worst is 34 bits: 39/29 (1.34x)
+Testing collisions (high 12-bit) - Expected 995904.0, actual 995904 (1.00x)
+Testing collisions (high 8-bit) - Expected 999744.0, actual 999744 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 116.4, actual 122 (1.05x) (6)
+Testing collisions (low 23-34 bits) - Worst is 33 bits: 72/58 (1.24x)
+Testing collisions (low 12-bit) - Expected 995904.0, actual 995904 (1.00x)
+Testing collisions (low 8-bit) - Expected 999744.0, actual 999744 (1.00x)
+Testing distribution - Worst bias is the 17-bit window at bit 128 - 0.136%
+
+Keyset 'Cyclic' - 8 cycles of 34 bytes - 1000000 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 116.4, actual 111 (0.95x)
+Testing collisions (high 23-34 bits) - Worst is 34 bits: 33/29 (1.13x)
+Testing collisions (high 12-bit) - Expected 995904.0, actual 995904 (1.00x)
+Testing collisions (high 8-bit) - Expected 999744.0, actual 999744 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 116.4, actual 110 (0.94x)
+Testing collisions (low 23-34 bits) - Worst is 29 bits: 945/931 (1.01x)
+Testing collisions (low 12-bit) - Expected 995904.0, actual 995904 (1.00x)
+Testing collisions (low 8-bit) - Expected 999744.0, actual 999744 (1.00x)
+Testing distribution - Worst bias is the 17-bit window at bit 226 - 0.168%
+
+Keyset 'Cyclic' - 8 cycles of 35 bytes - 1000000 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 116.4, actual 114 (0.98x)
+Testing collisions (high 23-34 bits) - Worst is 30 bits: 487/465 (1.05x)
+Testing collisions (high 12-bit) - Expected 995904.0, actual 995904 (1.00x)
+Testing collisions (high 8-bit) - Expected 999744.0, actual 999744 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 116.4, actual 110 (0.94x)
+Testing collisions (low 23-34 bits) - Worst is 34 bits: 31/29 (1.07x)
+Testing collisions (low 12-bit) - Expected 995904.0, actual 995904 (1.00x)
+Testing collisions (low 8-bit) - Expected 999744.0, actual 999744 (1.00x)
+Testing distribution - Worst bias is the 17-bit window at bit 207 - 0.151%
+
+Keyset 'Cyclic' - 8 cycles of 36 bytes - 1000000 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 116.4, actual 117 (1.01x) (1)
+Testing collisions (high 23-34 bits) - Worst is 34 bits: 30/29 (1.03x)
+Testing collisions (high 12-bit) - Expected 995904.0, actual 995904 (1.00x)
+Testing collisions (high 8-bit) - Expected 999744.0, actual 999744 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 116.4, actual 130 (1.12x) (14)
+Testing collisions (low 23-34 bits) - Worst is 33 bits: 67/58 (1.15x)
+Testing collisions (low 12-bit) - Expected 995904.0, actual 995904 (1.00x)
+Testing collisions (low 8-bit) - Expected 999744.0, actual 999744 (1.00x)
+Testing distribution - Worst bias is the 17-bit window at bit 103 - 0.165%
+
+Keyset 'Cyclic' - 8 cycles of 40 bytes - 1000000 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 116.4, actual 104 (0.89x)
+Testing collisions (high 23-34 bits) - Worst is 25 bits: 14612/14901 (0.98x)
+Testing collisions (high 12-bit) - Expected 995904.0, actual 995904 (1.00x)
+Testing collisions (high 8-bit) - Expected 999744.0, actual 999744 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 116.4, actual 99 (0.85x)
+Testing collisions (low 23-34 bits) - Worst is 33 bits: 60/58 (1.03x)
+Testing collisions (low 12-bit) - Expected 995904.0, actual 995904 (1.00x)
+Testing collisions (low 8-bit) - Expected 999744.0, actual 999744 (1.00x)
+Testing distribution - Worst bias is the 17-bit window at bit 211 - 0.118%
+
+
+[[[ Keyset 'TwoBytes' Tests ]]]
+
+Keyset 'TwoBytes' - up-to-4-byte keys, 652545 total keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 49.6, actual 40 (0.81x)
+Testing collisions (high 23-33 bits) - Worst is 25 bits: 6275/6345 (0.99x)
+Testing collisions (high 12-bit) - Expected 648449.0, actual 648449 (1.00x)
+Testing collisions (high 8-bit) - Expected 652289.0, actual 652289 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 49.6, actual 50 (1.01x) (1)
+Testing collisions (low 23-33 bits) - Worst is 32 bits: 50/49 (1.01x)
+Testing collisions (low 12-bit) - Expected 648449.0, actual 648449 (1.00x)
+Testing collisions (low 8-bit) - Expected 652289.0, actual 652289 (1.00x)
+Testing distribution - Worst bias is the 16-bit window at bit 167 - 0.159%
+
+Keyset 'TwoBytes' - up-to-8-byte keys, 5471025 total keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 3484.6, actual 3447 (0.99x) (-37)
+Testing collisions (high 26-39 bits) - Worst is 36 bits: 224/217 (1.03x)
+Testing collisions (high 12-bit) - Expected 5466929.0, actual 5466929 (1.00x)
+Testing collisions (high 8-bit) - Expected 5470769.0, actual 5470769 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 3484.6, actual 3448 (0.99x) (-36)
+Testing collisions (low 26-39 bits) - Worst is 39 bits: 34/27 (1.25x)
+Testing collisions (low 12-bit) - Expected 5466929.0, actual 5466929 (1.00x)
+Testing collisions (low 8-bit) - Expected 5470769.0, actual 5470769 (1.00x)
+Testing distribution - Worst bias is the 20-bit window at bit 70 - 0.080%
+
+Keyset 'TwoBytes' - up-to-12-byte keys, 18616785 total keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 40347.8, actual 40090 (0.99x) (-257)
+Testing collisions (high 27-42 bits) - Worst is 41 bits: 83/78 (1.05x)
+Testing collisions (high 12-bit) - Expected 18612689.0, actual 18612689 (1.00x)
+Testing collisions (high 8-bit) - Expected 18616529.0, actual 18616529 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 40347.8, actual 40196 (1.00x) (-151)
+Testing collisions (low 27-42 bits) - Worst is 37 bits: 1342/1260 (1.06x)
+Testing collisions (low 12-bit) - Expected 18612689.0, actual 18612689 (1.00x)
+Testing collisions (low 8-bit) - Expected 18616529.0, actual 18616529 (1.00x)
+Testing distribution - Worst bias is the 20-bit window at bit 191 - 0.023%
+
+
+[[[ Keyset 'Text' Tests ]]]
+
+Keyset 'Text' - keys of form "FooXXXXBar" - 14776336 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 25418.1, actual 25313 (1.00x) (-105)
+Testing collisions (high 27-42 bits) - Worst is 42 bits: 29/24 (1.17x)
+Testing collisions (high 12-bit) - Expected 14772240.0, actual 14772240 (1.00x)
+Testing collisions (high 8-bit) - Expected 14776080.0, actual 14776080 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 25418.1, actual 25662 (1.01x) (244)
+Testing collisions (low 27-42 bits) - Worst is 38 bits: 431/397 (1.09x)
+Testing collisions (low 12-bit) - Expected 14772240.0, actual 14772240 (1.00x)
+Testing collisions (low 8-bit) - Expected 14776080.0, actual 14776080 (1.00x)
+Testing distribution - Worst bias is the 20-bit window at bit 122 - 0.029%
+
+Keyset 'Text' - keys of form "FooBarXXXX" - 14776336 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 25418.1, actual 25129 (0.99x) (-289)
+Testing collisions (high 27-42 bits) - Worst is 36 bits: 1608/1588 (1.01x)
+Testing collisions (high 12-bit) - Expected 14772240.0, actual 14772240 (1.00x)
+Testing collisions (high 8-bit) - Expected 14776080.0, actual 14776080 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 25418.1, actual 25561 (1.01x) (143)
+Testing collisions (low 27-42 bits) - Worst is 42 bits: 29/24 (1.17x)
+Testing collisions (low 12-bit) - Expected 14772240.0, actual 14772240 (1.00x)
+Testing collisions (low 8-bit) - Expected 14776080.0, actual 14776080 (1.00x)
+Testing distribution - Worst bias is the 20-bit window at bit 111 - 0.036%
+
+Keyset 'Text' - keys of form "XXXXFooBar" - 14776336 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 25418.1, actual 25254 (0.99x) (-164)
+Testing collisions (high 27-42 bits) - Worst is 42 bits: 34/24 (1.37x)
+Testing collisions (high 12-bit) - Expected 14772240.0, actual 14772240 (1.00x)
+Testing collisions (high 8-bit) - Expected 14776080.0, actual 14776080 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 25418.1, actual 25350 (1.00x) (-68)
+Testing collisions (low 27-42 bits) - Worst is 39 bits: 209/198 (1.05x)
+Testing collisions (low 12-bit) - Expected 14772240.0, actual 14772240 (1.00x)
+Testing collisions (low 8-bit) - Expected 14776080.0, actual 14776080 (1.00x)
+Testing distribution - Worst bias is the 20-bit window at bit 129 - 0.026%
+
+Keyset 'Words' - 4000000 random keys of len 6-16 from alnum charset
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 1862.6, actual 1831 (0.98x) (-31)
+Testing collisions (high 25-38 bits) - Worst is 36 bits: 118/116 (1.01x)
+Testing collisions (high 12-bit) - Expected 3995904.0, actual 3995904 (1.00x)
+Testing collisions (high 8-bit) - Expected 3999744.0, actual 3999744 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 1862.6, actual 1846 (0.99x) (-16)
+Testing collisions (low 25-38 bits) - Worst is 36 bits: 121/116 (1.04x)
+Testing collisions (low 12-bit) - Expected 3995904.0, actual 3995904 (1.00x)
+Testing collisions (low 8-bit) - Expected 3999744.0, actual 3999744 (1.00x)
+Testing distribution - Worst bias is the 19-bit window at bit 123 - 0.065%
+
+Keyset 'Words' - 4000000 random keys of len 6-16 from password charset
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 1862.6, actual 1828 (0.98x) (-34)
+Testing collisions (high 25-38 bits) - Worst is 31 bits: 3761/3725 (1.01x)
+Testing collisions (high 12-bit) - Expected 3995904.0, actual 3995904 (1.00x)
+Testing collisions (high 8-bit) - Expected 3999744.0, actual 3999744 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 1862.6, actual 1836 (0.99x) (-26)
+Testing collisions (low 25-38 bits) - Worst is 35 bits: 249/232 (1.07x)
+Testing collisions (low 12-bit) - Expected 3995904.0, actual 3995904 (1.00x)
+Testing collisions (low 8-bit) - Expected 3999744.0, actual 3999744 (1.00x)
+Testing distribution - Worst bias is the 19-bit window at bit 194 - 0.054%
+
+Keyset 'Words' - 479826 dict words
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 26.8, actual 31 (1.16x) (5)
+Testing collisions (high 22-32 bits) - Worst is 32 bits: 31/26 (1.16x)
+Testing collisions (high 12-bit) - Expected 475730.0, actual 475730 (1.00x)
+Testing collisions (high 8-bit) - Expected 479570.0, actual 479570 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 26.8, actual 25 (0.93x)
+Testing collisions (low 22-32 bits) - Worst is 30 bits: 120/107 (1.12x)
+Testing collisions (low 12-bit) - Expected 475730.0, actual 475730 (1.00x)
+Testing collisions (low 8-bit) - Expected 479570.0, actual 479570 (1.00x)
+Testing distribution - Worst bias is the 16-bit window at bit 91 - 0.236%
+
+
+[[[ Keyset 'Zeroes' Tests ]]]
+
+Keyset 'Zeroes' - 204800 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 4.9, actual 8 (1.64x) (4)
+Testing collisions (high 21-29 bits) - Worst is 28 bits: 89/78 (1.14x)
+Testing collisions (high 12-bit) - Expected 200704.0, actual 200704 (1.00x)
+Testing collisions (high 8-bit) - Expected 204544.0, actual 204544 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 4.9, actual 5 (1.02x) (1)
+Testing collisions (low 21-29 bits) - Worst is 28 bits: 81/78 (1.04x)
+Testing collisions (low 12-bit) - Expected 200704.0, actual 200704 (1.00x)
+Testing collisions (low 8-bit) - Expected 204544.0, actual 204544 (1.00x)
+Testing distribution - Worst bias is the 15-bit window at bit 11 - 0.443%
+
+
+[[[ Keyset 'Seed' Tests ]]]
+
+Keyset 'Seed' - 5000000 keys
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 2910.4, actual 2897 (1.00x) (-13)
+Testing collisions (high 26-39 bits) - Worst is 30 bits: 11609/11641 (1.00x)
+Testing collisions (high 12-bit) - Expected 4995904.0, actual 4995904 (1.00x)
+Testing collisions (high 8-bit) - Expected 4999744.0, actual 4999744 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 2910.4, actual 2970 (1.02x) (60)
+Testing collisions (low 26-39 bits) - Worst is 38 bits: 50/45 (1.10x)
+Testing collisions (low 12-bit) - Expected 4995904.0, actual 4995904 (1.00x)
+Testing collisions (low 8-bit) - Expected 4999744.0, actual 4999744 (1.00x)
+Testing distribution - Worst bias is the 19-bit window at bit 161 - 0.057%
+
+
+[[[ Keyset 'PerlinNoise' Tests ]]]
+
+Testing 16777216 coordinates (L2) :
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 32768.0, actual 32506 (0.99x) (-261)
+Testing collisions (high 27-42 bits) - Worst is 38 bits: 512/511 (1.00x)
+Testing collisions (high 12-bit) - Expected 16773120.0, actual 16773120 (1.00x)
+Testing collisions (high 8-bit) - Expected 16776960.0, actual 16776960 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 32768.0, actual 33017 (1.01x) (250)
+Testing collisions (low 27-42 bits) - Worst is 33 bits: 16658/16383 (1.02x)
+Testing collisions (low 12-bit) - Expected 16773120.0, actual 16773120 (1.00x)
+Testing collisions (low 8-bit) - Expected 16776960.0, actual 16776960 (1.00x)
+
+
+[[[ Diff 'Differential' Tests ]]]
+
+Testing 8303632 up-to-5-bit differentials in 64-bit keys -> 256 bit hashes.
+100 reps, 830363200 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 -> 256 bit hashes.
+100 reps, 1101763200 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 -> 256 bit hashes.
+100 reps, 279641600 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 (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 483 (0.94x)
+Testing collisions (high 24-36 bits) - Worst is 28 bits: 8239/8191 (1.01x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 491 (0.96x)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 32/31 (1.00x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 1
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 478 (0.93x)
+Testing collisions (high 24-36 bits) - Worst is 28 bits: 8176/8191 (1.00x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 481 (0.94x)
+Testing collisions (low 24-36 bits) - Worst is 30 bits: 2080/2047 (1.02x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 2
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 527 (1.03x) (16)
+Testing collisions (high 24-36 bits) - Worst is 35 bits: 68/63 (1.06x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 486 (0.95x)
+Testing collisions (low 24-36 bits) - Worst is 30 bits: 2058/2047 (1.00x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 3
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 527 (1.03x) (16)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 37/31 (1.16x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 517 (1.01x) (6)
+Testing collisions (low 24-36 bits) - Worst is 34 bits: 138/127 (1.08x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 4
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 492 (0.96x)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 41/31 (1.28x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 506 (0.99x) (-5)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 36/31 (1.13x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 5
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 508 (0.99x) (-3)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 35/31 (1.09x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 516 (1.01x) (5)
+Testing collisions (low 24-36 bits) - Worst is 35 bits: 80/63 (1.25x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 6
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 517 (1.01x) (6)
+Testing collisions (high 24-36 bits) - Worst is 31 bits: 1047/1023 (1.02x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 550 (1.07x) (39)
+Testing collisions (low 24-36 bits) - Worst is 34 bits: 157/127 (1.23x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 7
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 542 (1.06x) (31)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 41/31 (1.28x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 525 (1.03x) (14)
+Testing collisions (low 24-36 bits) - Worst is 35 bits: 72/63 (1.13x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 8
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 510 (1.00x) (-1)
+Testing collisions (high 24-36 bits) - Worst is 35 bits: 74/63 (1.16x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 554 (1.08x) (43)
+Testing collisions (low 24-36 bits) - Worst is 32 bits: 554/511 (1.08x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 9
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 492 (0.96x)
+Testing collisions (high 24-36 bits) - Worst is 35 bits: 74/63 (1.16x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 475 (0.93x)
+Testing collisions (low 24-36 bits) - Worst is 30 bits: 2092/2047 (1.02x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 10
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 550 (1.07x) (39)
+Testing collisions (high 24-36 bits) - Worst is 35 bits: 78/63 (1.22x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 512 (1.00x) (1)
+Testing collisions (low 24-36 bits) - Worst is 33 bits: 266/255 (1.04x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 11
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 521 (1.02x) (10)
+Testing collisions (high 24-36 bits) - Worst is 31 bits: 1074/1023 (1.05x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 555 (1.08x) (44)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 42/31 (1.31x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 12
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 493 (0.96x)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 35/31 (1.09x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 498 (0.97x)
+Testing collisions (low 24-36 bits) - Worst is 28 bits: 8270/8191 (1.01x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 13
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 486 (0.95x)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 35/31 (1.09x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 517 (1.01x) (6)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 36/31 (1.13x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 14
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 490 (0.96x)
+Testing collisions (high 24-36 bits) - Worst is 28 bits: 8188/8191 (1.00x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 522 (1.02x) (11)
+Testing collisions (low 24-36 bits) - Worst is 35 bits: 80/63 (1.25x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 15
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 478 (0.93x)
+Testing collisions (high 24-36 bits) - Worst is 27 bits: 16412/16383 (1.00x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 521 (1.02x) (10)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 43/31 (1.34x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 16
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 474 (0.93x)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 38/31 (1.19x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 477 (0.93x)
+Testing collisions (low 24-36 bits) - Worst is 30 bits: 2059/2047 (1.01x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 17
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 523 (1.02x) (12)
+Testing collisions (high 24-36 bits) - Worst is 35 bits: 73/63 (1.14x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 525 (1.03x) (14)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 35/31 (1.09x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 18
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 548 (1.07x) (37)
+Testing collisions (high 24-36 bits) - Worst is 32 bits: 548/511 (1.07x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 495 (0.97x)
+Testing collisions (low 24-36 bits) - Worst is 28 bits: 8252/8191 (1.01x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 19
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 546 (1.07x) (35)
+Testing collisions (high 24-36 bits) - Worst is 32 bits: 546/511 (1.07x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 484 (0.95x)
+Testing collisions (low 24-36 bits) - Worst is 30 bits: 2058/2047 (1.00x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 20
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 493 (0.96x)
+Testing collisions (high 24-36 bits) - Worst is 35 bits: 68/63 (1.06x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 489 (0.96x)
+Testing collisions (low 24-36 bits) - Worst is 35 bits: 66/63 (1.03x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 21
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 495 (0.97x)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 38/31 (1.19x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 511 (1.00x)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 35/31 (1.09x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 22
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 497 (0.97x)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 40/31 (1.25x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 496 (0.97x)
+Testing collisions (low 24-36 bits) - Worst is 35 bits: 66/63 (1.03x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 23
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 479 (0.94x)
+Testing collisions (high 24-36 bits) - Worst is 30 bits: 2079/2047 (1.02x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 504 (0.98x) (-7)
+Testing collisions (low 24-36 bits) - Worst is 30 bits: 2045/2047 (1.00x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 24
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 463 (0.90x)
+Testing collisions (high 24-36 bits) - Worst is 29 bits: 4111/4095 (1.00x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 460 (0.90x)
+Testing collisions (low 24-36 bits) - Worst is 30 bits: 2047/2047 (1.00x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 25
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 533 (1.04x) (22)
+Testing collisions (high 24-36 bits) - Worst is 34 bits: 145/127 (1.13x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 531 (1.04x) (20)
+Testing collisions (low 24-36 bits) - Worst is 32 bits: 531/511 (1.04x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 26
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 484 (0.95x)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 35/31 (1.09x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 530 (1.04x) (19)
+Testing collisions (low 24-36 bits) - Worst is 33 bits: 281/255 (1.10x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 27
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 508 (0.99x) (-3)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 35/31 (1.09x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 512 (1.00x) (1)
+Testing collisions (low 24-36 bits) - Worst is 35 bits: 68/63 (1.06x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 28
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 528 (1.03x) (17)
+Testing collisions (high 24-36 bits) - Worst is 34 bits: 133/127 (1.04x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 502 (0.98x) (-9)
+Testing collisions (low 24-36 bits) - Worst is 27 bits: 16398/16383 (1.00x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 29
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 512 (1.00x) (1)
+Testing collisions (high 24-36 bits) - Worst is 29 bits: 4119/4095 (1.01x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 519 (1.01x) (8)
+Testing collisions (low 24-36 bits) - Worst is 32 bits: 519/511 (1.01x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 30
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 526 (1.03x) (15)
+Testing collisions (high 24-36 bits) - Worst is 33 bits: 271/255 (1.06x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 525 (1.03x) (14)
+Testing collisions (low 24-36 bits) - Worst is 32 bits: 525/511 (1.03x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 31
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 469 (0.92x)
+Testing collisions (high 24-36 bits) - Worst is 27 bits: 16241/16383 (0.99x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 529 (1.03x) (18)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 44/31 (1.38x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 32
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 513 (1.00x) (2)
+Testing collisions (high 24-36 bits) - Worst is 33 bits: 262/255 (1.02x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 575 (1.12x) (64)
+Testing collisions (low 24-36 bits) - Worst is 35 bits: 76/63 (1.19x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 33
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 531 (1.04x) (20)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 38/31 (1.19x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 533 (1.04x) (22)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 37/31 (1.16x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 34
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 535 (1.04x) (24)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 46/31 (1.44x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 475 (0.93x)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 35/31 (1.09x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 35
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 519 (1.01x) (8)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 37/31 (1.16x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 488 (0.95x)
+Testing collisions (low 24-36 bits) - Worst is 27 bits: 16461/16383 (1.00x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 36
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 521 (1.02x) (10)
+Testing collisions (high 24-36 bits) - Worst is 35 bits: 68/63 (1.06x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 507 (0.99x) (-4)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 40/31 (1.25x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 37
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 508 (0.99x) (-3)
+Testing collisions (high 24-36 bits) - Worst is 35 bits: 71/63 (1.11x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 504 (0.98x) (-7)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 37/31 (1.16x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 38
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 500 (0.98x)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 40/31 (1.25x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 523 (1.02x) (12)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 38/31 (1.19x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 39
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 508 (0.99x) (-3)
+Testing collisions (high 24-36 bits) - Worst is 35 bits: 69/63 (1.08x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 525 (1.03x) (14)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 34/31 (1.06x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 40
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 512 (1.00x) (1)
+Testing collisions (high 24-36 bits) - Worst is 35 bits: 74/63 (1.16x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 487 (0.95x)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 40/31 (1.25x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 41
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 497 (0.97x)
+Testing collisions (high 24-36 bits) - Worst is 28 bits: 8160/8191 (1.00x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 518 (1.01x) (7)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 35/31 (1.09x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 42
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 492 (0.96x)
+Testing collisions (high 24-36 bits) - Worst is 34 bits: 132/127 (1.03x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 506 (0.99x) (-5)
+Testing collisions (low 24-36 bits) - Worst is 33 bits: 263/255 (1.03x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 43
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 516 (1.01x) (5)
+Testing collisions (high 24-36 bits) - Worst is 34 bits: 143/127 (1.12x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 482 (0.94x)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 46/31 (1.44x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 44
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 542 (1.06x) (31)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 40/31 (1.25x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 531 (1.04x) (20)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 37/31 (1.16x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 45
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 509 (0.99x) (-2)
+Testing collisions (high 24-36 bits) - Worst is 35 bits: 71/63 (1.11x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 527 (1.03x) (16)
+Testing collisions (low 24-36 bits) - Worst is 31 bits: 1111/1023 (1.08x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 46
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 487 (0.95x)
+Testing collisions (high 24-36 bits) - Worst is 29 bits: 4169/4095 (1.02x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 502 (0.98x) (-9)
+Testing collisions (low 24-36 bits) - Worst is 35 bits: 71/63 (1.11x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 47
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 548 (1.07x) (37)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 50/31 (1.56x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 501 (0.98x)
+Testing collisions (low 24-36 bits) - Worst is 34 bits: 138/127 (1.08x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 48
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 500 (0.98x)
+Testing collisions (high 24-36 bits) - Worst is 33 bits: 274/255 (1.07x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 524 (1.02x) (13)
+Testing collisions (low 24-36 bits) - Worst is 35 bits: 68/63 (1.06x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 49
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 498 (0.97x)
+Testing collisions (high 24-36 bits) - Worst is 35 bits: 70/63 (1.09x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 508 (0.99x) (-3)
+Testing collisions (low 24-36 bits) - Worst is 29 bits: 4133/4095 (1.01x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 50
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 515 (1.01x) (4)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 39/31 (1.22x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 510 (1.00x) (-1)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 35/31 (1.09x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 51
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 505 (0.99x) (-6)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 39/31 (1.22x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 531 (1.04x) (20)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 37/31 (1.16x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 52
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 521 (1.02x) (10)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 38/31 (1.19x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 471 (0.92x)
+Testing collisions (low 24-36 bits) - Worst is 27 bits: 16278/16383 (0.99x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 53
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 495 (0.97x)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 33/31 (1.03x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 508 (0.99x) (-3)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 41/31 (1.28x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 54
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 511 (1.00x)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 48/31 (1.50x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 501 (0.98x)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 41/31 (1.28x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 55
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 544 (1.06x) (33)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 40/31 (1.25x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 519 (1.01x) (8)
+Testing collisions (low 24-36 bits) - Worst is 33 bits: 269/255 (1.05x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 56
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 503 (0.98x) (-8)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 35/31 (1.09x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 505 (0.99x) (-6)
+Testing collisions (low 24-36 bits) - Worst is 31 bits: 1090/1023 (1.06x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 57
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 511 (1.00x)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 34/31 (1.06x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 508 (0.99x) (-3)
+Testing collisions (low 24-36 bits) - Worst is 34 bits: 129/127 (1.01x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 58
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 553 (1.08x) (42)
+Testing collisions (high 24-36 bits) - Worst is 34 bits: 157/127 (1.23x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 505 (0.99x) (-6)
+Testing collisions (low 24-36 bits) - Worst is 36 bits: 34/31 (1.06x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 59
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 474 (0.93x)
+Testing collisions (high 24-36 bits) - Worst is 36 bits: 32/31 (1.00x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 497 (0.97x)
+Testing collisions (low 24-36 bits) - Worst is 31 bits: 1043/1023 (1.02x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 60
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 514 (1.00x) (3)
+Testing collisions (high 24-36 bits) - Worst is 34 bits: 144/127 (1.13x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 504 (0.98x) (-7)
+Testing collisions (low 24-36 bits) - Worst is 33 bits: 268/255 (1.05x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 61
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 526 (1.03x) (15)
+Testing collisions (high 24-36 bits) - Worst is 34 bits: 139/127 (1.09x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 505 (0.99x) (-6)
+Testing collisions (low 24-36 bits) - Worst is 27 bits: 16347/16383 (1.00x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 62
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 497 (0.97x)
+Testing collisions (high 24-36 bits) - Worst is 28 bits: 8120/8191 (0.99x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 525 (1.03x) (14)
+Testing collisions (low 24-36 bits) - Worst is 32 bits: 525/511 (1.03x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+Testing bit 63
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 512.0, actual 496 (0.97x)
+Testing collisions (high 24-36 bits) - Worst is 28 bits: 8202/8191 (1.00x)
+Testing collisions (high 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (high 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 512.0, actual 522 (1.02x) (11)
+Testing collisions (low 24-36 bits) - Worst is 35 bits: 73/63 (1.14x)
+Testing collisions (low 12-bit) - Expected 2093056.0, actual 2093056 (1.00x)
+Testing collisions (low 8-bit) - Expected 2096896.0, actual 2096896 (1.00x)
+
+
+[[[ MomentChi2 Tests ]]]
+
+Analyze hashes produced from a serie of linearly increasing numbers of 32-bit, using a step of 6 ...
+Target values to approximate : 38918200.000000 - 820900.000000
+4 threads starting... done
+Popcount 1 stats : 38917429.647441 - 820859.732099
+Popcount 0 stats : 38920051.741588 - 820941.878762
+MomentChi2 for bits 1 : 0.361468
+MomentChi2 for bits 0 : 2.08848
+
+Derivative stats (transition from 2 consecutive values) :
+Popcount 1 stats : 38918214.658934 - 820878.553216
+Popcount 0 stats : 38919486.088161 - 820963.496761
+MomentChi2 for deriv b1 : 0.000130885
+MomentChi2 for deriv b0 : 1.00741
+
+ Great !!
+
+
+[[[ Prng Tests ]]]
+
+Generating 33554432 random numbers :
+Testing collisions (256-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 131072.0, actual 130521 (1.00x) (-550)
+Testing collisions (high 28-44 bits) - Worst is 40 bits: 553/511 (1.08x)
+Testing collisions (high 12-bit) - Expected 33550336.0, actual 33550336 (1.00x)
+Testing collisions (high 8-bit) - Expected 33554176.0, actual 33554176 (1.00x)
+Testing collisions (low 224-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 160-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 128-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (low 32-bit) - Expected 131072.0, actual 131243 (1.00x) (172)
+Testing collisions (low 28-44 bits) - Worst is 39 bits: 1050/1023 (1.03x)
+Testing collisions (low 12-bit) - Expected 33550336.0, actual 33550336 (1.00x)
+Testing collisions (low 8-bit) - Expected 33554176.0, actual 33554176 (1.00x)
+
+[[[ BadSeeds Tests ]]]
+
+Testing 0 internal secrets:
+0x0 PASS
+
+
+Input vcode 0x00000001, Output vcode 0x00000001, Result vcode 0x00000001
+Verification value is 0x00000001 - Testing took 1673.881456 seconds
+-------------------------------------------------------------------------------
diff --git a/doc/pearsonbhash64.txt b/doc/pearsonbhash64.txt
index a2a5bff9..14ab2fdb 100644
--- a/doc/pearsonbhash64.txt
+++ b/doc/pearsonbhash64.txt
@@ -1,67 +1,67 @@
-------------------------------------------------------------------------------
---- Testing pearsonbhash64 "Pearson block hash, 64-bit" GOOD
+--- Testing pearsonbhash64 "Pearson block hash, 64-bit" POOR
[[[ Sanity Tests ]]]
-Verification value 0x715717DE ....... PASS
+Verification value 0xB6FF2DFC ....... PASS
Running sanity check 1 .......... PASS
Running AppendedZeroesTest .......... PASS
[[[ Speed Tests ]]]
Bulk speed test - 262144-byte keys
-Alignment 7 - 0.519 bytes/cycle - 1485.76 MiB/sec @ 3 ghz
-Alignment 6 - 0.519 bytes/cycle - 1485.76 MiB/sec @ 3 ghz
-Alignment 5 - 0.519 bytes/cycle - 1485.76 MiB/sec @ 3 ghz
-Alignment 4 - 0.519 bytes/cycle - 1485.76 MiB/sec @ 3 ghz
-Alignment 3 - 0.519 bytes/cycle - 1485.76 MiB/sec @ 3 ghz
-Alignment 2 - 0.519 bytes/cycle - 1485.76 MiB/sec @ 3 ghz
-Alignment 1 - 0.519 bytes/cycle - 1485.76 MiB/sec @ 3 ghz
-Alignment 0 - 0.521 bytes/cycle - 1490.38 MiB/sec @ 3 ghz
-Average - 0.520 bytes/cycle - 1486.34 MiB/sec @ 3 ghz
-
-Small key speed test - 1-byte keys - 41.00 cycles/hash
-Small key speed test - 2-byte keys - 56.00 cycles/hash
-Small key speed test - 3-byte keys - 70.00 cycles/hash
-Small key speed test - 4-byte keys - 84.00 cycles/hash
-Small key speed test - 5-byte keys - 99.00 cycles/hash
-Small key speed test - 6-byte keys - 113.00 cycles/hash
-Small key speed test - 7-byte keys - 128.43 cycles/hash
-Small key speed test - 8-byte keys - 45.00 cycles/hash
-Small key speed test - 9-byte keys - 59.00 cycles/hash
-Small key speed test - 10-byte keys - 73.00 cycles/hash
-Small key speed test - 11-byte keys - 87.00 cycles/hash
-Small key speed test - 12-byte keys - 101.00 cycles/hash
-Small key speed test - 13-byte keys - 116.00 cycles/hash
-Small key speed test - 14-byte keys - 130.00 cycles/hash
-Small key speed test - 15-byte keys - 145.69 cycles/hash
-Small key speed test - 16-byte keys - 60.00 cycles/hash
-Small key speed test - 17-byte keys - 74.00 cycles/hash
-Small key speed test - 18-byte keys - 88.00 cycles/hash
-Small key speed test - 19-byte keys - 103.00 cycles/hash
-Small key speed test - 20-byte keys - 117.00 cycles/hash
-Small key speed test - 21-byte keys - 131.99 cycles/hash
-Small key speed test - 22-byte keys - 145.95 cycles/hash
-Small key speed test - 23-byte keys - 161.00 cycles/hash
-Small key speed test - 24-byte keys - 75.00 cycles/hash
-Small key speed test - 25-byte keys - 89.92 cycles/hash
-Small key speed test - 26-byte keys - 104.00 cycles/hash
-Small key speed test - 27-byte keys - 118.29 cycles/hash
-Small key speed test - 28-byte keys - 132.52 cycles/hash
-Small key speed test - 29-byte keys - 147.00 cycles/hash
-Small key speed test - 30-byte keys - 161.00 cycles/hash
-Small key speed test - 31-byte keys - 177.00 cycles/hash
-Average 104.316 cycles/hash
+Alignment 7 - 0.769 bytes/cycle - 2200.44 MiB/sec @ 3 ghz
+Alignment 6 - 0.769 bytes/cycle - 2200.44 MiB/sec @ 3 ghz
+Alignment 5 - 0.769 bytes/cycle - 2200.44 MiB/sec @ 3 ghz
+Alignment 4 - 0.769 bytes/cycle - 2200.48 MiB/sec @ 3 ghz
+Alignment 3 - 0.739 bytes/cycle - 2115.15 MiB/sec @ 3 ghz
+Alignment 2 - 0.769 bytes/cycle - 2200.44 MiB/sec @ 3 ghz
+Alignment 1 - 0.769 bytes/cycle - 2200.44 MiB/sec @ 3 ghz
+Alignment 0 - 0.769 bytes/cycle - 2200.48 MiB/sec @ 3 ghz
+Average - 0.765 bytes/cycle - 2189.79 MiB/sec @ 3 ghz
+
+Small key speed test - 1-byte keys - 37.00 cycles/hash
+Small key speed test - 2-byte keys - 47.41 cycles/hash
+Small key speed test - 3-byte keys - 57.95 cycles/hash
+Small key speed test - 4-byte keys - 68.15 cycles/hash
+Small key speed test - 5-byte keys - 78.96 cycles/hash
+Small key speed test - 6-byte keys - 89.00 cycles/hash
+Small key speed test - 7-byte keys - 99.19 cycles/hash
+Small key speed test - 8-byte keys - 37.00 cycles/hash
+Small key speed test - 9-byte keys - 48.00 cycles/hash
+Small key speed test - 10-byte keys - 58.00 cycles/hash
+Small key speed test - 11-byte keys - 68.86 cycles/hash
+Small key speed test - 12-byte keys - 79.00 cycles/hash
+Small key speed test - 13-byte keys - 89.00 cycles/hash
+Small key speed test - 14-byte keys - 99.00 cycles/hash
+Small key speed test - 15-byte keys - 110.00 cycles/hash
+Small key speed test - 16-byte keys - 51.96 cycles/hash
+Small key speed test - 17-byte keys - 58.00 cycles/hash
+Small key speed test - 18-byte keys - 70.01 cycles/hash
+Small key speed test - 19-byte keys - 80.55 cycles/hash
+Small key speed test - 20-byte keys - 91.27 cycles/hash
+Small key speed test - 21-byte keys - 101.68 cycles/hash
+Small key speed test - 22-byte keys - 110.95 cycles/hash
+Small key speed test - 23-byte keys - 121.00 cycles/hash
+Small key speed test - 24-byte keys - 58.00 cycles/hash
+Small key speed test - 25-byte keys - 68.00 cycles/hash
+Small key speed test - 26-byte keys - 79.00 cycles/hash
+Small key speed test - 27-byte keys - 89.00 cycles/hash
+Small key speed test - 28-byte keys - 99.68 cycles/hash
+Small key speed test - 29-byte keys - 110.00 cycles/hash
+Small key speed test - 30-byte keys - 120.42 cycles/hash
+Small key speed test - 31-byte keys - 131.00 cycles/hash
+Average 80.872 cycles/hash
[[[ 'Hashmap' Speed Tests ]]]
std::unordered_map
-Init std HashMapTest: 747.064 cycles/op (479826 inserts, 1% deletions)
-Running std HashMapTest: 611.339 cycles/op (5.7 stdv)
+Init std HashMapTest: 835.193 cycles/op (479826 inserts, 1% deletions)
+Running std HashMapTest: 732.214 cycles/op (45.7 stdv)
greg7mdp/parallel-hashmap
-Init fast HashMapTest: 843.511 cycles/op (479826 inserts, 1% deletions)
-Running fast HashMapTest: 452.424 cycles/op (6.2 stdv) ....... PASS
+Init fast HashMapTest: 1054.934 cycles/op (479826 inserts, 1% deletions)
+Running fast HashMapTest: 558.874 cycles/op (17.0 stdv) ....... PASS
[[[ Avalanche Tests ]]]
@@ -731,33 +731,31 @@ Testing distribution - Worst bias is the 15-bit window at bit 34 - 0.237%
[[[ Keyset 'Seed' Tests ]]]
Keyset 'Seed' - 5000000 keys
-Testing collisions ( 64-bit) - Expected 0.0, actual 4999999 (7378697629483.82x) (4999999) !!!!!
-Testing collisions (high 32-bit) - Expected 2910.4, actual 4999999 (1717.99x) (4997089) !!!!!
-Testing collisions (high 26-39 bits) - Worst is 39 bits: 4999999/22 (219902.33x) !!!!!
-Testing collisions (high 12-bit) - Expected 4995904.0, actual 4999999 (1.00x) (4095)
-Testing collisions (high 8-bit) - Expected 4999744.0, actual 4999999 (1.00x) (255)
-Testing collisions (low 32-bit) - Expected 2910.4, actual 4999999 (1717.99x) (4997089) !!!!!
-Testing collisions (low 26-39 bits) - Worst is 39 bits: 4999999/22 (219902.33x) !!!!!
-Testing collisions (low 12-bit) - Expected 4995904.0, actual 4999999 (1.00x) (4095)
-Testing collisions (low 8-bit) - Expected 4999744.0, actual 4999999 (1.00x) (255)
-Testing distribution - Worst bias is the 19-bit window at bit 0 - 100.000% !!!!!
-
-*********FAIL*********
+Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 2910.4, actual 2838 (0.98x)
+Testing collisions (high 26-39 bits) - Worst is 30 bits: 11594/11641 (1.00x)
+Testing collisions (high 12-bit) - Expected 4995904.0, actual 4995904 (1.00x)
+Testing collisions (high 8-bit) - Expected 4999744.0, actual 4999744 (1.00x)
+Testing collisions (low 32-bit) - Expected 2910.4, actual 2897 (1.00x) (-13)
+Testing collisions (low 26-39 bits) - Worst is 39 bits: 24/22 (1.06x)
+Testing collisions (low 12-bit) - Expected 4995904.0, actual 4995904 (1.00x)
+Testing collisions (low 8-bit) - Expected 4999744.0, actual 4999744 (1.00x)
+Testing distribution - Worst bias is the 19-bit window at bit 46 - 0.060%
+
[[[ Keyset 'PerlinNoise' Tests ]]]
Testing 16777216 coordinates (L2) :
-Testing collisions ( 64-bit) - Expected 0.0, actual 16773120 (2198486515680.01x) (16773120) !!!!!
-Testing collisions (high 32-bit) - Expected 32768.0, actual 16773120 (511.88x) (16740353) !!!!!
-Testing collisions (high 27-42 bits) - Worst is 42 bits: 16773120/31 (524160.03x) !!!!!
-Testing collisions (high 12-bit) - Expected 16773120.0, actual 16774635 (1.00x) (1515)
+Testing collisions ( 64-bit) - Expected 0.0, actual 0 (0.00x)
+Testing collisions (high 32-bit) - Expected 32768.0, actual 33131 (1.01x) (364)
+Testing collisions (high 27-42 bits) - Worst is 32 bits: 33131/32767 (1.01x)
+Testing collisions (high 12-bit) - Expected 16773120.0, actual 16773120 (1.00x)
Testing collisions (high 8-bit) - Expected 16776960.0, actual 16776960 (1.00x)
-Testing collisions (low 32-bit) - Expected 32768.0, actual 16773120 (511.88x) (16740353) !!!!!
-Testing collisions (low 27-42 bits) - Worst is 42 bits: 16773120/31 (524160.03x) !!!!!
-Testing collisions (low 12-bit) - Expected 16773120.0, actual 16774640 (1.00x) (1520)
+Testing collisions (low 32-bit) - Expected 32768.0, actual 32506 (0.99x) (-261)
+Testing collisions (low 27-42 bits) - Worst is 42 bits: 35/31 (1.09x)
+Testing collisions (low 12-bit) - Expected 16773120.0, actual 16773120 (1.00x)
Testing collisions (low 8-bit) - Expected 16776960.0, actual 16776960 (1.00x)
-*********FAIL*********
[[[ Diff 'Differential' Tests ]]]
@@ -1520,5 +1518,5 @@ Testing 0 internal secrets:
Input vcode 0x00000001, Output vcode 0x00000001, Result vcode 0x00000001
-Verification value is 0x00000001 - Testing took 1220.126318 seconds
+Verification value is 0x00000001 - Testing took 1381.495974 seconds
-------------------------------------------------------------------------------
diff --git a/doc/phone.html b/doc/phone.html
index 49ccd783..6dc90652 100644
--- a/doc/phone.html
+++ b/doc/phone.html
@@ -583,30 +583,6 @@
UB, too many bad seeds, MSVC specific |
-pearsonbhash64 |
-2408.16 |
-64.63 |
-381.25 (0) |
- |
- Seed, Perlin |
-
-
-pearsonbhash128 |
-2405.80 |
-72.68 |
-390.00 (0) |
- |
- Seed, Perlin |
-
-
-pearsonbhash256 |
-1475.59 |
-110.08 |
-- |
- |
- Seed, Perlin |
-
-
VHASH_32 |
2719.68 |
71.21 |
@@ -983,6 +959,30 @@
|
+pearsonbhash64 |
+2408.16 |
+64.63 |
+381.25 (0) |
+683 |
+ |
+
+
+pearsonbhash128 |
+2405.80 |
+72.68 |
+390.00 (0) |
+1134 |
+ |
+
+
+pearsonbhash256 |
+1475.59 |
+110.08 |
+- |
+844 |
+ |
+
+
prvhash64_64m |
4626.31 |
32.68 |
diff --git a/doc/ryzen3.html b/doc/ryzen3.html
index 207846f8..61482528 100644
--- a/doc/ryzen3.html
+++ b/doc/ryzen3.html
@@ -985,6 +985,30 @@
|
+pearsonbhash64 |
+2951.62 |
+222.03 |
+343.63 (4) |
+683 |
+ |
+
+
+pearsonbhash128 |
+2951.62 |
+222.03 |
+343.63 (4) |
+1134 |
+ |
+
+
+pearsonbhash256 |
+2951.62 |
+222.03 |
+343.63 (4) |
+844 |
+ |
+
+
prvhash64_64m |
4293.39 |
38.70 |
@@ -1064,30 +1088,6 @@
|
Avalanche, Seed, SSSE3 only. broken MSVC |
-
-pearsonbhash64 |
-2951.62 |
-222.03 |
-343.63 (4) |
- |
- Seed, Perlin |
-
-
-pearsonbhash128 |
-2951.62 |
-222.03 |
-343.63 (4) |
- |
- Seed, Perlin |
-
-
-pearsonbhash256 |
-2951.62 |
-222.03 |
-343.63 (4) |
- |
- Seed, Perlin |
-
TSip |
5371.30 |
diff --git a/doc/table.html b/doc/table.html
index 7fe14591..e231efa4 100644
--- a/doc/table.html
+++ b/doc/table.html
@@ -609,30 +609,6 @@
Avalanche, Seed, SSSE3 only. broken MSVC |
-pearsonbhash64 |
-1486.34 |
-104.32 |
-185.03 (2) |
- |
- Seed, Perlin |
-
-
-pearsonbhash128 |
-1347.03 |
-121.75 |
-214.84 (2) |
- |
- Seed, Perlin |
-
-
-pearsonbhash256 |
-998.65 |
-161.85 |
-528.97 (12) |
- |
- Seed, Perlin |
-
-
VHASH_32 |
9404.99 |
77.01 |
@@ -1041,6 +1017,30 @@
|
+pearsonbhash64 |
+1486.34 |
+104.32 |
+185.03 (2) |
+683 |
+ |
+
+
+pearsonbhash128 |
+1347.03 |
+121.75 |
+214.84 (2) |
+1134 |
+ |
+
+
+pearsonbhash256 |
+998.90 |
+167.05 |
+261.29 (3) |
+844 |
+ |
+
+
prvhash64_64m |
2386.19 |
51.18 |
diff --git a/main.cpp b/main.cpp
index 6cc86d9a..db114777 100644
--- a/main.cpp
+++ b/main.cpp
@@ -421,9 +421,9 @@ HashInfo g_hashes[] =
{ pearson256_test, 256, 0x7F8BEB21, "pearsonhash256", "Pearson hash, 256-bit SSSE3, low 64-bit", POOR, {}},
#endif
#ifdef HAVE_INT64
- { pearsonb64_test, 64, 0xB6FF2DFC, "pearsonbhash64", "Pearson block hash, 64-bit", POOR, {}},
- { pearsonb128_test, 128, 0x6BEFE6EA, "pearsonbhash128", "Pearson block hash, 128-bit, low 64-bit", POOR, {}},
- { pearsonb256_test, 256, 0x999B3C19, "pearsonbhash256", "Pearson block hash, 256-bit, low 64-bit", POOR, {}},
+ { pearsonb64_test, 64, 0xB6FF2DFC, "pearsonbhash64", "Pearson block hash, 64-bit", GOOD, {}},
+ { pearsonb128_test, 128, 0x6BEFE6EA, "pearsonbhash128", "Pearson block hash, 128-bit, low 64-bit", GOOD, {}},
+ { pearsonb256_test, 256, 0x999B3C19, "pearsonbhash256", "Pearson block hash, 256-bit, low 64-bit", GOOD, {}},
#endif
// FIXME: seed
#ifdef __aarch64__