[−][src]Crate swar
Computing hamming weights in parallel
use swar::*; let n = 0xAAAA_AAAA_AAAA_AAAA_AAAA_AAAA_AAAA_AAAAu128; let weight: u128 = Bits1(n).sum_weight2() .sum_weight2() .sum_weight2() .sum_weight2() .sum_weight2() .sum_weight2() .sum_weight2() .into(); assert_eq!(weight as u32, n.count_ones()); assert_eq!(Bits1(n).sum_weight2().sum_weight2().0, 0x2222_2222_2222_2222_2222_2222_2222_2222); assert_eq!(Bits1(n).sum_weight2().sum_weight2().split().0, Bits8(0x0202_0202_0202_0202_0202_0202_0202_0202));
Finding hamming weight differences in parallel
use swar::*; // All combinations of inputs 0-2 (hamming weights) let a = Bits2(0b00_01_10_00_01_10_00_01_10u128); let b = Bits2(0b00_00_00_01_01_01_10_10_10u128); // Expected output weights let expected = Bits2(0b00_01_10_01_00_01_10_01_00u128); assert_eq!(a.minhwd(b), expected);
Modules
u128 |
Structs
Bits1 | This is used when each bit is a number stored in parallel. |
Bits2 | This is used when every |
Bits4 | This is used when every |
Bits8 | This is used when every |
Bits16 | This is used when every |
Bits32 | This is used when every |
Bits64 | This is used when every |
Bits128 | This is used when every |