hamming_distance

Function hamming_distance 

Source
pub fn hamming_distance(a: &[u8; 96], b: &[u8; 96]) -> u32
Expand description

Computes Hamming distance using the best available SIMD implementation.

This function automatically detects CPU capabilities at runtime and dispatches to the fastest available implementation:

  • AVX2 (x86_64 with AVX2): ~47 cycles per comparison
  • Portable: ~300 cycles (safe fallback)

§Arguments

  • a - First 96-byte binary vector (768 bits)
  • b - Second 96-byte binary vector (768 bits)

§Returns

The number of differing bits (0..=768)

§Performance

Target: <50 CPU cycles on AVX2-capable hardware.

§Safety

This function is completely safe. All unsafe operations are internal and guarded by runtime CPU feature detection.

§Example

use edgevec::quantization::simd;

let a = [0xAA; 96]; // 10101010...
let b = [0x55; 96]; // 01010101...

// All 768 bits differ
let distance = simd::hamming_distance(&a, &b);
assert_eq!(distance, 768);