diff options
author | Jon Bratseth <jonbratseth@yahoo.com> | 2017-11-09 14:56:22 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-09 14:56:22 +0100 |
commit | 34e7f7e3315e6298371ec92a2ea0aaa97ca41683 (patch) | |
tree | 0bf7524680f3d16d6a3773ce531c8800060b6846 /vespajlib | |
parent | d22fadfe8b4403b1afb1ef6b87db3e3cfa1c44ec (diff) | |
parent | df12bdce00a06a7662797ec13dc931ff5eed7033 (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.java | 12 | ||||
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/tensor/Tensor.java | 4 |
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; } |