summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@yahooinc.com>2022-08-24 17:13:51 +0200
committerGitHub <noreply@github.com>2022-08-24 17:13:51 +0200
commitc8faaace7d59d9aec058e134ea0c24d202134817 (patch)
treefc1e67b9cd4da6458903f821f286918a1e37796e
parent7d996b3298994e7cc81bae8006e5d5357108235a (diff)
parent13abe229dd8faa5f4e61db2774ee1a9a3b175174 (diff)
Merge pull request #23771 from vespa-engine/toregge/use-double-data-type-when-normalizing-vector
Use double data type when normalizing vector.
-rw-r--r--ann_benchmark/src/tests/ann_benchmark/test_angular.py2
-rw-r--r--ann_benchmark/src/vespa/ann_benchmark/vespa_ann_benchmark.cpp7
2 files changed, 5 insertions, 4 deletions
diff --git a/ann_benchmark/src/tests/ann_benchmark/test_angular.py b/ann_benchmark/src/tests/ann_benchmark/test_angular.py
index 6fe15bf3c58..15e718906d6 100644
--- a/ann_benchmark/src/tests/ann_benchmark/test_angular.py
+++ b/ann_benchmark/src/tests/ann_benchmark/test_angular.py
@@ -21,7 +21,7 @@ class Fixture:
top = self.find(10, [1, 1])
assert [top[0][0], top[1][0]] == [0, 1]
# Allow some rounding errors
- epsilon = 5e-8
+ epsilon = 6e-8
assert abs((1 - top[0][1]) - math.sqrt(0.5)) < epsilon
assert abs((1 - top[1][1]) - 1) < epsilon
top2 = self.find(10, [0, 2])
diff --git a/ann_benchmark/src/vespa/ann_benchmark/vespa_ann_benchmark.cpp b/ann_benchmark/src/vespa/ann_benchmark/vespa_ann_benchmark.cpp
index f9a4d5b43cc..fe7fd9d25fb 100644
--- a/ann_benchmark/src/vespa/ann_benchmark/vespa_ann_benchmark.cpp
+++ b/ann_benchmark/src/vespa/ann_benchmark/vespa_ann_benchmark.cpp
@@ -132,11 +132,12 @@ HnswIndex::get_typed_cells(const std::vector<float>& value, std::vector<float>&
if (!_normalize_vectors) {
return {&value[0], CellType::FLOAT, value.size()};
}
- float sum_of_squared = 0.0f;
+ double sum_of_squared = 0.0;
for (auto elem : value) {
- sum_of_squared += elem * elem;
+ double delem = elem;
+ sum_of_squared += delem * delem;
}
- float factor = 1.0f / (sqrtf(sum_of_squared) + 1e-40f);
+ double factor = 1.0 / (sqrt(sum_of_squared) + 1e-40);
normalized_value.reserve(value.size());
normalized_value.clear();
for (auto elem : value) {