This commit is contained in:
Alex Garcia 2024-05-26 20:54:37 -07:00
parent 163fc2db44
commit 29d4750c0f

View file

@ -304,9 +304,16 @@ static f32 distance_hamming_u64(u64 *a, u64 *b, size_t n) {
return (f32)same; return (f32)same;
} }
/**
* @brief Calculate the hamming distance between two bitvectors.
*
* @param a - first bitvector, MUST have d dimensions
* @param b - second bitvector, MUST have d dimensions
* @param d - pointer to size_t, MUST be divisible by CHAR_BIT
* @return f32
*/
static f32 distance_hamming(const void *a, const void *b, const void *d) { static f32 distance_hamming(const void *a, const void *b, const void *d) {
size_t dimensions = *((size_t *)d); size_t dimensions = *((size_t *)d);
todo_assert((dimensions % CHAR_BIT) == 0);
if ((dimensions % 64) == 0) { if ((dimensions % 64) == 0) {
return distance_hamming_u64((u64 *)a, (u64 *)b, dimensions / 8 / CHAR_BIT); return distance_hamming_u64((u64 *)a, (u64 *)b, dimensions / 8 / CHAR_BIT);