From 6eb697f628643fdfcaefbcf0a7d228f84eac80e1 Mon Sep 17 00:00:00 2001 From: Reini Urban Date: Mon, 10 May 2021 17:34:24 +0200 Subject: [PATCH] promote Pearson B to GOOD --- Hashes.h | 4 +- README.md | 6 +- doc/air.html | 48 +- doc/i686.html | 48 +- doc/pearsonbhash128.txt | 144 ++- doc/pearsonbhash256.txt | 2224 ++++++++++++++++++++++++++++++++++++++- doc/pearsonbhash64.txt | 136 ++- doc/phone.html | 48 +- doc/ryzen3.html | 48 +- doc/table.html | 48 +- main.cpp | 6 +- 11 files changed, 2443 insertions(+), 317 deletions(-) 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__