Merge pull request #487 from RCasatta/map_with_u128

use u128 in map_to_range
This commit is contained in:
Elichai Turkel 2020-11-15 15:42:00 +02:00 committed by GitHub
commit 7c05673b86
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 1 additions and 14 deletions

View File

@ -324,20 +324,7 @@ impl GCSFilterReader {
// fast reduction of hash to [0, nm) range
fn map_to_range(hash: u64, nm: u64) -> u64 {
// Use this once we upgrade to rustc >= 1.26
// ((hash as u128 * nm as u128) >> 64) as u64
#[inline]
fn l(n: u64) -> u64 { n & 0xffffffff }
#[inline]
fn h(n: u64) -> u64 { n >> 32 }
let a = h(hash);
let b = l(hash);
let c = h(nm);
let d = l(nm);
a * c + h(a * d + c * b + h(b * d))
((hash as u128 * nm as u128) >> 64) as u64
}
/// Colomb-Rice encoded filter writer