@Override public void visit(MultivectorComponent node) { variables.add(node.getName()); }
@Override public void visit(MultivectorComponent node) { variables.add(node.getName()); }
@Override public void visit(MultivectorComponent component) { code.append(component.getName().replace(optSuffix, suffix)); code.append('('); code.append(component.getBladeIndex() + 1); code.append(')'); }
@Override public void visit(MultivectorComponent component) { code.append(component.getName().replace(suffix, "")); code.append('['); code.append(component.getBladeIndex()); code.append(']'); }
@Override public void visit(MultivectorComponent component) { code.append(component.getName()); code.append('('); code.append(component.getBladeIndex() + 1); code.append(')'); }
@Override public void visit(MultivectorComponent component) { code.append(component.getName()); code.append('('); code.append(component.getBladeIndex() + 1); code.append(')'); }
@Override public void visit(MultivectorComponent node) { result.append(node.getName()); result.append("\\$"); result.append(node.getBladeIndex()); }
@Override public void visit(MultivectorComponent component) { // this method is for reading multivector components // get blade pos in array final String name = component.getName().replace(suffix, ""); final int pos = mvBladeMap.get(name).get(component.getBladeIndex()); // standard definition code.append(name); if(mvSizes.get(name) > 1) code.append("[" + pos + "]"); }
@Override public MultivectorComponent copy() { return new MultivectorComponent(getName(), bladeIndex); }
@Override public void visit(MultivectorComponent node) { resultValue = values.get(node.getName())[node.getBladeIndex()]; }
@Override public void visit(MultivectorComponent component) { addIdentifier(component.getName().replace("_opt", "")); code.append("_{"); code.append(component.getBladeIndex()); code.append('}'); }
@Override public void visit(AssignmentNode node) { MultivectorComponent mvComp = (MultivectorComponent)node.getVariable(); if(mvComp == null) return; Integer numEntries = mvSizes.get(mvComp.getName()); if(numEntries == null) numEntries = 1; else ++numEntries; mvSizes.put(mvComp.getName(), numEntries); node.getSuccessor().accept(this); }
@Override public void visit(AssignmentNode node) { node.getValue().accept(this); MultivectorComponent mvC = (MultivectorComponent) node.getVariable(); double[] arrValues; if (values.containsKey(mvC.getName())) arrValues = values.get(mvC.getName()); else { arrValues = new double[16]; Arrays.fill(arrValues, 0); values.put(mvC.getName(), arrValues); } arrValues[mvC.getBladeIndex()] = resultValue; super.visit(node); }
@Override public void visit(MultivectorComponent node) { variables.add(new VariableComponent(node.getName(), node.getBladeIndex(), node)); } }
@Override public void visit(MultivectorComponent node) { String nameMV = multivector.getName().replace("_opt", ""); String nameNode = node.getName().replace("_opt", ""); if (nameMV.equals(nameNode) ) multivector.addComponent(node.getBladeIndex()); }
/** * Returns the VariableComponent for a expression * @param expression The expression * @return The VariableComponent */ private VariableComponent getVariableComponent(Expression expression) { DFGNodeType typeValue = DFGNodeTypeGetter.getTypeOfDFGNode(expression); if (typeValue == DFGNodeType.MultivectorComponent) { MultivectorComponent comp = (MultivectorComponent) expression; return new VariableComponent(comp.getName(), comp.getBladeIndex(), expression); } if (typeValue == DFGNodeType.Variable) { Variable comp = (Variable) expression; return new VariableComponent(comp.getName(), 0, expression); } return null; }
private void fillMaximaInput(LinkedList<AssignmentNode> toDerive, MaximaInput input, MultivectorComponent variable) { for (AssignmentNode node : toDerive) { DFGToMaximaCode dfg = new DFGToMaximaCode(); node.getValue().accept(dfg); input.add("ratsimp(diff("+dfg.getResultString() + ","+variable.getName()+"\\$"+variable.getBladeIndex()+",1));"); } }
@Override public Object visitMvComponent(MvComponent mvComponent, Object arg) { GAPPMultivector mvTmp = gappCreator.createMv(); PosSelectorset selDestSet = new PosSelectorset(); selDestSet.add(new PosSelector(0, algebra.getBlade(0).toString())); Selectorset selSrcSet = new Selectorset(); selSrcSet.add(new Selector( mvComponent.getMultivectorComponent().getBladeIndex(), mvComponent.isNegated() ? (byte) -1 : (byte) 1, algebra.getBlade(mvComponent.getMultivectorComponent().getBladeIndex()).toString())); gappCreator.gapp.addInstruction(new GAPPSetMv(mvTmp, new GAPPMultivector( mvComponent.getMultivectorComponent().getName()), selDestSet, selSrcSet)); return mvTmp; }
@Override public Object visitMvComponent(MvComponent mvComponent, Object arg) { //arg must be filled! GAPPMultivectorComponent destination = (GAPPMultivectorComponent) arg; PosSelectorset selDestSet = new PosSelectorset(); selDestSet.add(new PosSelector(destination.getBladeIndex(), algebra.getBlade(destination.getBladeIndex()).toString())); Selectorset selSrcSet = new Selectorset(); selSrcSet.add(new Selector( mvComponent.getMultivectorComponent().getBladeIndex(), (mvComponent.isNegated()) ? (byte) -1 : (byte) 1, algebra.getBlade(mvComponent.getMultivectorComponent().getBladeIndex()).toString())); gapp.addInstruction(new GAPPSetMv( new GAPPMultivector(destination.getName()), new GAPPMultivector(mvComponent.getMultivectorComponent().getName()), selDestSet, selSrcSet)); return null; }