public SequentialNode bladeAssignment(String name, String index, Expression expression) { assignments++; findUndeclaredVariables(expression); System.out.println("Blade Assignment"); Integer number = new Integer(index); // check needed. String hashname = NameTable.getInstance().add(name); if (vectorSet.get(hashname) == null) { System.err.println("Definition of variable " + name + " needed!!!"); } int gealgBlade = vectorSet.get(hashname).get(number); Variable variable = new MultivectorComponent(hashname, gealgBlade); AssignmentNode assignment = new AssignmentNode(graph, variable, expression); addNode(assignment); return assignment; }
@Override public void visit(AssignmentNode node) { node.getValue().accept(expressionVisitor); if (resultValue != null) { //Direct MathFunctionCalls won't need an extra temporary variable, //because they will be assigned to the AssignmentNode variable! //For this optimization the variable must be removed from the toInsertVars list toInsertVars.remove((Variable) resultValue); resultValue = null; } for (Variable var : toInsertVars) { AssignmentNode newNode = new AssignmentNode(node.getGraph(), var, toInsert.get(var)); node.insertBefore(newNode); } toInsertVars.clear(); toInsert.clear(); super.visit(node); } }
AssignmentNode assignment = new AssignmentNode(graph, variable, muVec.getExpression()); addNode(assignment);
AssignmentNode newNode = new AssignmentNode(null, new Variable(renderingExpressions.get(s).toString()), sumOfSquares); myNodes.add(newNode); listInsertBefore(myNodes, newNode, collect.get(s).getFirst());
public String getReplacementID (Expression e){ OperationToken optok = ReplaceAbleOpsSet.get(e.toString().hashCode()); if (!optok.isUsedToReplace()) { optok.getAssignment().insertBefore(new AssignmentNode(optok.getAssignment().getGraph(), new Variable(optok.getIdentifier()), optok.getExpression())); optok.setUsedToReplace(true); } return ReplaceAbleOpsSet.get(e.toString().hashCode()).getIdentifier(); }
@Override public LinkedList<AssignmentNode> differentiate(LinkedList<AssignmentNode> toDerive, MultivectorComponent variable) { LinkedList<AssignmentNode> result = new LinkedList<AssignmentNode>(); for (AssignmentNode node : toDerive) { Expression differentiated = DFGDifferentiater.differentiate(node.getValue(), variable); ConstantFolding cF = new ConstantFolding(); differentiated.accept(cF); result.add(new AssignmentNode(null, node.getVariable(), cF.getResultExpr())); } return result; }
AssignmentNode newNode = new AssignmentNode(null, new MultivectorComponent(s+"_S", 0), sumOfSquares); myNodes.add(newNode); listInsertBefore(myNodes, newNode, collect.get(s).getFirst());
AssignmentNode node = listIterator.next(); Expression exp = MaximaRoutines.getExpressionFromMaximaOutput(io); result.add(new AssignmentNode(node.getGraph(), new MultivectorComponent(node.getVariable().getName(), 0), exp));
@Override public AssignmentNode copyElements() { AssignmentNode result = new AssignmentNode(getGraph(), variable.copy(), value.copy()); result.setGAPP(copyGAPP()); return result; }
/** * Add an assignment node to the end of this graph. * * @param variable The variable that is assigned to. * @param expression The expression that is assigned to the variable. */ public AssignmentNode handleAssignment(Variable variable, Expression expression) { checkIllegalVariable(variable); CheckGAVisitor gaVisitor = new CheckGAVisitor(); expression.accept(gaVisitor); if (gaVisitor.isGA()) { //gaVisitor.addGAVariable(variable); } AssignmentNode assignment = new AssignmentNode(graph, variable, expression); addNode(assignment); return assignment; }
/** * Add an assignment node to the end of this graph. * * @param variable The variable that is assigned to. * @param expression The expression that is assigned to the variable. */ public AssignmentNode handleAssignment(Variable variable, Expression expression) { checkIllegalVariable(variable); CheckGAVisitor gaVisitor = new CheckGAVisitor(); expression.accept(gaVisitor); if (gaVisitor.isGA()) { gaVisitor.addGAVariable(variable); } AssignmentNode assignment = new AssignmentNode(graph, variable, expression); addNode(assignment); return assignment; }
if (!((arg instanceof Variable) || (arg instanceof FloatConstant))) { Variable newVariable = createNewVariable(); AssignmentNode assignmentNode = new AssignmentNode(graph, newVariable, arg); curNode.insertBefore(assignmentNode); StoreResultNode storeNode = new StoreResultNode(graph, newVariable);
if (!((c instanceof Variable) || (c instanceof FloatConstant))) { Variable newVariable = createNewVariable(); AssignmentNode assignmentNode = new AssignmentNode(graph, newVariable, c); curNode.insertBefore(assignmentNode); StoreResultNode storeNode = new StoreResultNode(graph, newVariable); if (!((c instanceof Variable) || (c instanceof FloatConstant))) { Variable newVariable = createNewVariable(); AssignmentNode assignmentNode = new AssignmentNode(graph, newVariable, c); curNode.insertBefore(assignmentNode); StoreResultNode storeNode = new StoreResultNode(graph, newVariable); if (!((c instanceof Variable) || (c instanceof FloatConstant))) { Variable newVariable = createNewVariable(); AssignmentNode assignmentNode = new AssignmentNode(graph, newVariable, c); curNode.insertBefore(assignmentNode); StoreResultNode storeNode = new StoreResultNode(graph, newVariable); if (!((c instanceof Variable) || (c instanceof FloatConstant))) { Variable newVariable = createNewVariable(); AssignmentNode assignmentNode = new AssignmentNode(graph, newVariable, c); curNode.insertBefore(assignmentNode); StoreResultNode storeNode = new StoreResultNode(graph, newVariable);
graph.addLocalVariable(new Variable(prefix + "POINT")); AssignmentNode pointNode = new AssignmentNode(graph, visualizationPoint, new MacroCall("createPoint", args)); graph.getStartNode().insertAfter(pointNode); for (ExpressionStatement s : statements) { String productName = prefix + "PRODUCT" + i; AssignmentNode renderNode = new AssignmentNode(graph, new Variable(productName), new InnerProduct(s.getExpression(), visualizationPoint)); graph.addLocalVariable(new Variable(productName)); s.insertAfter(renderNode);
AssignmentNode insNode = new AssignmentNode(node.getGraph(), new MultivectorComponent(variable.getName(), i), e);
@Override public void transform(ControlFlowGraph graph) throws OptimizationException { //insert visualizing commands, if needed LinkedList<ExpressionStatement> statements = ExpressionStatementCollector.collectAllStatements(graph); String prefix = "_V_"; //2d HashMap<String, Expression> renderingExpressions = graph.getRenderingExpressions(); int i = 0; for (ExpressionStatement s : statements) { String productName = prefix + "PRODUCT" + i; AssignmentNode renderNode = new AssignmentNode(graph, new Variable(productName), s.getExpression()); graph.addLocalVariable(new Variable(productName)); s.insertAfter(renderNode); StoreResultNode outputRenderNode = new StoreResultNode(graph, new Variable(productName)); graph.addLocalVariable(new Variable(productName)); renderNode.insertAfter(outputRenderNode); renderingExpressions.put(productName, s.getExpression()); i++; } } }
@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); } }