Add unit tests for distance functions (L2, cosine, hamming)

Add test-only wrappers behind SQLITE_VEC_TEST compile flag to expose
static distance functions for unit testing. Includes tests for
distance_l2_sqr_float (4 cases), distance_cosine_float (3 cases),
and distance_hamming (4 cases). Print active SIMD flags at test start.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Alex Garcia 2026-03-02 18:04:30 -08:00
parent 79d5818015
commit aab9b37de2
4 changed files with 141 additions and 1 deletions

View file

@ -562,6 +562,18 @@ static f32 distance_hamming(const void *a, const void *b, const void *d) {
return distance_hamming_u8((u8 *)a, (u8 *)b, dimensions / CHAR_BIT);
}
#ifdef SQLITE_VEC_TEST
f32 _test_distance_l2_sqr_float(const f32 *a, const f32 *b, size_t dims) {
return distance_l2_sqr_float(a, b, &dims);
}
f32 _test_distance_cosine_float(const f32 *a, const f32 *b, size_t dims) {
return distance_cosine_float(a, b, &dims);
}
f32 _test_distance_hamming(const u8 *a, const u8 *b, size_t dims) {
return distance_hamming(a, b, &dims);
}
#endif
// from SQLite source:
// https://github.com/sqlite/sqlite/blob/a509a90958ddb234d1785ed7801880ccb18b497e/src/json.c#L153
static const char vecJsonIsSpaceX[] = {