diff options
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/tensor/DirectIndexedAddress.java')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/tensor/DirectIndexedAddress.java | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/DirectIndexedAddress.java b/vespajlib/src/main/java/com/yahoo/tensor/DirectIndexedAddress.java index 37752361876..4379d50520c 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/DirectIndexedAddress.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/DirectIndexedAddress.java @@ -7,19 +7,25 @@ package com.yahoo.tensor; * long stride = addr.getStride(dimension) * i = 0...size_of_dimension * double value = tensor.get(base + i * stride); + * + * @author baldersheim */ public final class DirectIndexedAddress { + private final DimensionSizes sizes; - private final int [] indexes; + private final int[] indexes; private long directIndex; + private DirectIndexedAddress(DimensionSizes sizes) { this.sizes = sizes; indexes = new int[sizes.dimensions()]; directIndex = 0; } + static DirectIndexedAddress of(DimensionSizes sizes) { return new DirectIndexedAddress(sizes); } + /** Sets the current index of a dimension */ public void setIndex(int dimension, int index) { if (index < 0 || index >= sizes.size(dimension)) { @@ -29,10 +35,13 @@ public final class DirectIndexedAddress { directIndex += getStride(dimension) * diff; indexes[dimension] = index; } + /** Retrieve the index that can be used for direct lookup in an indexed tensor. */ public long getDirectIndex() { return directIndex; } + /** returns the stride to be used for the given dimension */ public long getStride(int dimension) { return sizes.productOfDimensionsAfter(dimension); } + } |