@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().replace(optSuffix, suffix)); 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 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 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(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()); }
@Override public void visit(MultivectorComponent mc) { System.out.println("MyComponentVisit"); StringBuilder temp = new StringBuilder(); temp.append(mc.getName()); temp.append(mc.getBladeIndex()); // VerilogVariableNode newnode =new VerilogVariableNode(dfg); // newnode.setNode(mc); // newnode.setVarname(temp.toString()); lastcomponent = temp.toString(); System.out.println(lastcomponent); toappend = null; if (isVariable == false) { // getAssignmentToNodeMap().get(getStringToNode().get(lastcomponent)).appendDFGNode(newnode); toappend = getAssignmentToOperationMap().get( getStringToAssignment().get(lastcomponent)); } } @Override
private String getVarName(Variable var) { if (!(var instanceof MultivectorComponent)) { return var.getName() + "$0"; } else { return var.getName() + "$" + ((MultivectorComponent) var).getBladeIndex(); } }
@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(AssignmentNode node) { String name = node.getVariable().getName(); Multivector mv; if (!multivectors.containsKey(name)) { mv = new Multivector(16); multivectors.put(name, mv); } else mv = multivectors.get(name); MultivectorComponent mvC = (MultivectorComponent) node.getVariable(); mv.entries[mvC.getBladeIndex()] = ((FloatConstant) node.getValue()).getValue(); super.visit(node); }
/** * 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//dfg public void visit(Exponentiation node) { if (isSquare(node) && (node.getLeft() instanceof Variable)) { String varname = null; if(node.getLeft() instanceof MultivectorComponent){ varname = ((MultivectorComponent)node.getLeft()).getName() + ((MultivectorComponent)node.getLeft()).getBladeIndex(); } else varname= ((Variable)node.getLeft()).getName(); if (!myHashmap.containsKey(varname)){ myHashmap.put(varname, ( varname + "_quad")); AddedExponentiationBang = new AssignmentNode(cfg, new Variable(varname+"_quad"), new Multiplication(node.getLeft(), node.getLeft())); //new AssignmentNode(cfg,new Variable(varname+"_quad"),node.copy()); currentAssignment.insertBefore(AddedExponentiationBang); } nx = new Variable(myHashmap.get(varname)); } else // left is novariable or node is no square { node.getLeft().accept(this); Expression lhs =nx; node.getRight().accept(this); Expression rhs =nx; nx = new Exponentiation(lhs, rhs); } }
@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; }
@Override public void visit(AssignmentNode node) { appendIndentation(); declaredLocal.add(getVarName(node.getVariable())); node.getVariable().accept(this); append(" = "); node.getValue().accept(this); if (node.getVariable() instanceof MultivectorComponent) { append(';'); append(" // "); MultivectorComponent component = (MultivectorComponent) node.getVariable(); append(node.getGraph().getAlgebraDefinitionFile().getBladeString(component.getBladeIndex())); } append(";\n"); node.getSuccessor().accept(this); }