diff options
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/tensor/functions')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/tensor/functions/Generate.java | 18 | ||||
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/tensor/functions/Join.java | 1 |
2 files changed, 17 insertions, 2 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Generate.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Generate.java index 508e322c3a1..9c92ca00eac 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Generate.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Generate.java @@ -1,6 +1,7 @@ package com.yahoo.tensor.functions; import com.google.common.annotations.Beta; +import com.yahoo.tensor.IndexedTensor; import com.yahoo.tensor.Tensor; import com.yahoo.tensor.TensorType; import com.yahoo.tensor.evaluation.EvaluationContext; @@ -58,9 +59,22 @@ public class Generate extends PrimitiveTensorFunction { @Override public Tensor evaluate(EvaluationContext context) { - throw new UnsupportedOperationException("Not implemented"); // TODO + Tensor.Builder builder = Tensor.Builder.of(type); + IndexedTensor.Indexes indexes = IndexedTensor.Indexes.of(dimensionSizes(type)); + for (int i = 0; i < indexes.size(); i++) { + indexes.next(); + builder.cell(generator.apply(indexes.toList()), indexes.indexesForReading()); + } + return builder.build(); } - + + private int[] dimensionSizes(TensorType type) { + int dimensionSizes[] = new int[type.dimensions().size()]; + for (int i = 0; i < dimensionSizes.length; i++) + dimensionSizes[i] = type.dimensions().get(i).size().get(); + return dimensionSizes; + } + @Override public String toString(ToStringContext context) { return type + "(" + generator + ")"; } diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Join.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Join.java index 6128611302f..ebec5efa436 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Join.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Join.java @@ -143,6 +143,7 @@ public class Join extends PrimitiveTensorFunction { subspaceInSuper, subspaceInSuper.size(), reversedArgumentOrder, builder); } + return builder.build(); } |