From f39354394d5839f7ab0af90225ab82de92f79f2e Mon Sep 17 00:00:00 2001 From: Lester Solbakken Date: Mon, 3 May 2021 09:30:29 +0200 Subject: Return 0.0 rather than nan for non-existing tensor cells in Java --- vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java | 4 ++-- vespajlib/src/main/java/com/yahoo/tensor/MappedTensor.java | 2 +- vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java | 4 ++-- vespajlib/src/main/java/com/yahoo/tensor/Tensor.java | 2 +- vespajlib/src/main/java/com/yahoo/tensor/functions/Slice.java | 7 +------ 5 files changed, 7 insertions(+), 12 deletions(-) (limited to 'vespajlib') diff --git a/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java b/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java index 67eace78c45..24578f035a3 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java @@ -106,7 +106,7 @@ public abstract class IndexedTensor implements Tensor { return getFloat((int)toValueIndex(indexes, dimensionSizes)); } - /** Returns the value at this address, or NaN if there is no value at this address */ + /** Returns the value at this address, or 0.0 if there is no value at this address */ @Override public double get(TensorAddress address) { // optimize for fast lookup within bounds: @@ -114,7 +114,7 @@ public abstract class IndexedTensor implements Tensor { return get((int)toValueIndex(address, dimensionSizes, type)); } catch (IllegalArgumentException e) { - return Double.NaN; + return 0.0; } } diff --git a/vespajlib/src/main/java/com/yahoo/tensor/MappedTensor.java b/vespajlib/src/main/java/com/yahoo/tensor/MappedTensor.java index 9d04e10bacb..996fad8a19d 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/MappedTensor.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/MappedTensor.java @@ -32,7 +32,7 @@ public class MappedTensor implements Tensor { public long size() { return cells.size(); } @Override - public double get(TensorAddress address) { return cells.getOrDefault(address, Double.NaN); } + public double get(TensorAddress address) { return cells.getOrDefault(address, 0.0); } @Override public boolean has(TensorAddress address) { return cells.containsKey(address); } diff --git a/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java b/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java index e686a42d530..6307acb88b4 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java @@ -54,10 +54,10 @@ public class MixedTensor implements Tensor { public double get(TensorAddress address) { long cellIndex = index.indexOf(address); if (cellIndex < 0 || cellIndex >= cells.size()) - return Double.NaN; + return 0.0; Cell cell = cells.get((int)cellIndex); if ( ! address.equals(cell.getKey())) - return Double.NaN; + return 0.0; return cell.getValue(); } diff --git a/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java b/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java index 8d014edd68f..4f0a08ac202 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java @@ -67,7 +67,7 @@ public interface Tensor { /** Returns the number of cells in this */ long size(); - /** Returns the value of a cell, or NaN if this cell does not exist/have no value */ + /** Returns the value of a cell, or 0.0 if this cell does not exist */ double get(TensorAddress address); /** Returns true if this cell exists */ diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Slice.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Slice.java index da24aef50bc..343cec7fe84 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Slice.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Slice.java @@ -64,12 +64,7 @@ public class Slice extends PrimitiveTensorFunction