ChrisHegarty commented on PR #12727:
URL: https://github.com/apache/lucene/pull/12727#issuecomment-1783913908
Hi @benwtrent I think that this is fine - LGTM, just dropping a few small
comments / questions.
I grabbed and modified your test, and was able to repo this on both my Linux
and Mac. Here's what I did.
```
diff --git
a/lucene/core/src/test/org/apache/lucene/internal/vectorization/TestVectorUtilSupport.java
b/lucene/core/src/test/org/apache/lucene/internal/vectorization/TestVectorUtilSupport.java
index 9fe5ddd0e2b..e0fd056ce33 100644
---
a/lucene/core/src/test/org/apache/lucene/internal/vectorization/TestVectorUtilSupport.java
+++
b/lucene/core/src/test/org/apache/lucene/internal/vectorization/TestVectorUtilSupport.java
@@ -104,4 +104,25 @@ public class TestVectorUtilSupport extends
BaseVectorizationTestCase {
func.applyAsInt(LUCENE_PROVIDER.getVectorUtilSupport()),
func.applyAsInt(PANAMA_PROVIDER.getVectorUtilSupport()));
}
+
+ public void testExtremeNumericsCosine() {
+ float[] v1 = new float[1536];
+ float[] v2 = new float[1536];
+ float[] v3 = new float[1536];
+ for (int i = 0; i <1536; i++) {
+ v1[i] = -0.888888f;
+ v2[i] = 0.888888f;
+ v3[i] = -0.777777f;
+ }
+ float v = (1 + LUCENE_PROVIDER.getVectorUtilSupport().cosine(v1, v3)) /
2;
+ assertTrue("expected >=0 got:" + v, v >= 0);
+ v = (1 + PANAMA_PROVIDER.getVectorUtilSupport().cosine(v1, v3)) / 2;
+ assertTrue("expected >=0 got:" + v, v >= 0);
+
+ v = (1 + LUCENE_PROVIDER.getVectorUtilSupport().cosine(v2, v3)) / 2;
+ assertTrue("expected >=0 got:" + v, v >= 0);
+ v = (1 + PANAMA_PROVIDER.getVectorUtilSupport().cosine(v2, v3)) / 2;
+ assertTrue("expected >=0 got:" + v, v >= 0);
+ }
}
```
```
davekim$ env | grep -i java
RUNTIME_JAVA_HOME=/home/chegar/binaries/jdk-21
JAVA_HOME=/home/chegar/binaries/jdk-19.0.2/
davekim$ export CI=true; ./gradlew :lucene:core:test --tests
"org.apache.lucene.internal.vectorization.TestVectorUtilSupport.testExtremeNumericsCosine"
```
It fails reliably on the final assert.
```
org.apache.lucene.internal.vectorization.TestVectorUtilSupport >
testExtremeNumericsCosine {p0=64 seed=[955C5CC916EEAA95:C5EFC08B75B72D11]}
FAILED
java.lang.AssertionError: expected >=0 got:-1.7881393E-7
at
__randomizedtesting.SeedInfo.seed([955C5CC916EEAA95:C5EFC08B75B72D11]:0)
at org.junit.Assert.fail(Assert.java:89)
at org.junit.Assert.assertTrue(Assert.java:42)
at
org.apache.lucene.internal.vectorization.TestVectorUtilSupport.testExtremeNumericsCosine(TestVectorUtilSupport.java:125)
```
Maybe we could go with a variant of this, but as you had it in
TestVectorUtil - testing the outer similarity which will pick different
providers depending on the environment - which is fine. I think we just need
the v2 v3 comparison?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]