From b710dc68a0fe1da291705321460639358b0662f8 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Tue, 18 Jul 2023 16:10:17 -0700 Subject: [PATCH] Use fused multiply-add for cosine distance --- src/vector.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vector.c b/src/vector.c index bc878a6..78dc4e4 100644 --- a/src/vector.c +++ b/src/vector.c @@ -627,9 +627,9 @@ cosine_distance(PG_FUNCTION_ARGS) Vector *b = PG_GETARG_VECTOR_P(1); float *ax = a->x; float *bx = b->x; - double distance = 0.0; - double norma = 0.0; - double normb = 0.0; + float distance = 0.0; + float norma = 0.0; + float normb = 0.0; CheckDims(a, b); @@ -642,7 +642,7 @@ cosine_distance(PG_FUNCTION_ARGS) } /* Use sqrt(a * b) over sqrt(a) * sqrt(b) */ - PG_RETURN_FLOAT8(1 - (distance / sqrt(norma * normb))); + PG_RETURN_FLOAT8(1.0 - ((double) distance / sqrt((double) norma * (double) normb))); } /*