summaryrefslogtreecommitdiffstats
path: root/vespajlib
diff options
context:
space:
mode:
authorJon Bratseth <jonbratseth@yahoo.com>2017-11-09 14:56:22 +0100
committerGitHub <noreply@github.com>2017-11-09 14:56:22 +0100
commit34e7f7e3315e6298371ec92a2ea0aaa97ca41683 (patch)
tree0bf7524680f3d16d6a3773ce531c8800060b6846 /vespajlib
parentd22fadfe8b4403b1afb1ef6b87db3e3cfa1c44ec (diff)
parentdf12bdce00a06a7662797ec13dc931ff5eed7033 (diff)
Merge pull request #4066 from vespa-engine/lesters/add-java-tensor-conformance-test
Lesters/add java tensor conformance test
Diffstat (limited to 'vespajlib')
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java12
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/Tensor.java4
2 files changed, 13 insertions, 3 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java b/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java
index 6750c99bf98..c207dabca3a 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java
@@ -125,8 +125,12 @@ public class IndexedTensor implements Tensor {
if (indexes.length == 0) return 0; // for speed
int valueIndex = 0;
- for (int i = 0; i < indexes.length; i++)
+ for (int i = 0; i < indexes.length; i++) {
+ if (indexes[i] >= sizes.size(i)) {
+ throw new IndexOutOfBoundsException();
+ }
valueIndex += productOfDimensionsAfter(i, sizes) * indexes[i];
+ }
return valueIndex;
}
@@ -134,8 +138,12 @@ public class IndexedTensor implements Tensor {
if (address.isEmpty()) return 0;
int valueIndex = 0;
- for (int i = 0; i < address.size(); i++)
+ for (int i = 0; i < address.size(); i++) {
+ if (address.intLabel(i) >= sizes.size(i)) {
+ throw new IndexOutOfBoundsException();
+ }
valueIndex += productOfDimensionsAfter(i, sizes) * address.intLabel(i);
+ }
return valueIndex;
}
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java b/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java
index 75bdb6fb15d..8fc80e3b440 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java
@@ -259,7 +259,9 @@ public interface Tensor {
if ( a.size() != b.size()) return false;
for (Iterator<Cell> aIterator = a.cellIterator(); aIterator.hasNext(); ) {
Cell aCell = aIterator.next();
- if ( ! aCell.getValue().equals(b.get(aCell.getKey()))) return false;
+ double aValue = aCell.getValue();
+ double bValue = b.get(aCell.getKey());
+ if (Math.abs(aValue-bValue) > 1e-7) return false; // TODO: determine relative precision
}
return true;
}