summaryrefslogtreecommitdiffstats
path: root/vespajlib/src/main/java/com/yahoo/tensor/functions
diff options
context:
space:
mode:
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/tensor/functions')
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Generate.java18
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Join.java1
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();
}