@Override Tensor newTo_(Tensor currentNode, SubstitutionIterator iterator) { Mapping mapping = IndexMappings.getFirst(from, currentNode); if (mapping == null) return currentNode; return applyIndexMappingToTo(currentNode, to, mapping, iterator); } }
private static Mapping0 buildMapping(Tensor eps, Tensor part) { if (!(part instanceof Product)) return null; Product p = (Product) part; Complex factor = p.getFactor(); Mapping mapping = IndexMappings.getFirst(eps, p.getDataSubProduct()); if (mapping == null) return null; return new Mapping0(factor, mapping); }
@Override public Tensor transform(Tensor tensor) { TreeTraverseIterator iterator = new TreeTraverseIterator(tensor); TraverseState state; Tensor current; while ((state = iterator.next()) != null) { if (state != TraverseState.Leaving) continue; current = iterator.current(); Mapping mapping = IndexMappings.getFirst(from, current); if (mapping != null) { Tensor newFrom = ApplyIndexMapping.applyIndexMapping(to, mapping); iterator.set(newFrom); } } return iterator.result(); } }
match = IndexMappings.getFirst(transformed[0], oldCoefficient); if (match != null) { newCoefficient = match.getSign() ? Tensors.negate(transformed[1]) : transformed[1];
dataBijection = new int[1]; currentData = new Tensor[]{content.data}; mapping = getFirst(fromContent.get(0), content.data);