/** * Returns new tensor instance with i-th sub-tensor replaced by provided * tensor. * * @param i index of sub-tensor to be replaced * @param tensor tensor to replace i-th sub-tensor * @return new instance of tensor */ public Tensor set(int i, Tensor tensor) { int size = size(); if (i >= size || i < 0) throw new IndexOutOfBoundsException(); if (tensor == null) throw new NullPointerException(); TensorBuilder builder = getBuilder(); for (int j = 0; j < size; ++j) if (j == i) builder.put(tensor); else builder.put(get(j)); return builder.build(); }
/** * Applies transformation to all first descendants (but not to the tensor itself) * * @param tensor * @param transformation * @return result */ public static Tensor applyToEachChild(Tensor tensor, final Transformation transformation) { TensorBuilder builder = null; Tensor c, oc; for (int i = 0, size = tensor.size(); i < size; ++i) { c = transformation.transform(oc = tensor.get(i)); if (builder != null || c != oc) { if (builder == null) { builder = tensor.getBuilder(); for (int j = 0; j < i; ++j) builder.put(tensor.get(j)); } builder.put(c); } } if (builder == null) return tensor; return builder.build(); }
TensorBuilder rebuild = result.getBuilder(); List<Tensor[]> list; for (Tensor t : result) {
if (tensor instanceof TensorField) { boolean applied = false; TensorBuilder builder = tensor.getBuilder(); Tensor temp, current; for (int i = 0, size = tensor.size(); i < size; ++i) { TensorBuilder builder = tensor.getBuilder(); for (Tensor term : data) builder.put(term);
Tensor[] scalars = ((Product) argument).getAllScalars(); if (scalars.length > 1) { TensorBuilder pb = argument.getBuilder();//creating product builder for (Tensor t : scalars)
if (c.get(i) instanceof Sum) { if (pb == null) { pb = c.getBuilder(); for (int j = c.size() - 1; j > i; --j) pb.put(c.get(j));