/** * Creates an expression node that negates the given expression. * * @param value The expression that should be negated. A deep copy will be created. * @return A Negation object that negates the given expression. */ public static Negation negate(Expression value) { return new Negation(value.copy()); }
@Override public Expression visitNegation(MaximaParser.NegationContext ctx) { return new Negation(visit(ctx.operand)); }
@Override public Expression visitNegationBracket(MaximaParser.NegationBracketContext ctx) { return new Negation(visit(ctx.operand)); }
@Override public Object visitNegationBracket(CluCalcParser.NegationBracketContext ctx) { return new Negation((Expression) visit(ctx.operand)); }
@Override public Object visitNegation(CluCalcParser.NegationContext ctx) { return new Negation((Expression) visit(ctx.operand)); }
@Override public Object visitNegationFunction(CluCalcParser.NegationFunctionContext ctx) { LinkedList<Expression> args = (ctx.args != null) ? (LinkedList<Expression>) visit(ctx.args) : new LinkedList<Expression>(); return new Negation(graphBuilder.processFunction(ctx.name.getText(), args)); }
@Override public void visit(Negation node) { traverseUnary(node); MvExpressions op = expressions.get(node.getOperand()); MvExpressions result = createNewMvExpressions(); for (int blade = 0; blade < bladeCount; blade++) { if (op.bladeExpressions[blade] != null) { result.bladeExpressions[blade] = new Negation(op.bladeExpressions[blade]); } } expressions.put(node, result); }
@Override //dfg public void visit(Negation node) { node .getOperand().accept(this); // gefixt ...war schrott: nx = node; nx = new Negation(nx); }
@Override public void visit(Negation node) { node.getOperand().accept(this); nx= new Negation(nx); }
@Override public void visit(Negation node) { result = null; node.getOperand().accept(this); if (result != null) result = new Negation(result); }
@Override public void visit(Negation node) { node.getOperand().accept(this); if (result != zero) result = new Negation(result); }
@Override public Expression copy() { return new Negation(getOperand().copy()); }
/** * Returns the reverse of a MvExpressions instance * @param mv The MvExpressions instance to be reversed * @return The reverse */ private MvExpressions getReverse(MvExpressions mv) { MvExpressions result = createNewMvExpressions(); for (int blade = 0; blade < bladeCount; blade++) { if (mv.bladeExpressions[blade] != null) { int k = usedAlgebra.getGrade(blade); if (((k * (k - 1)) / 2) % 2 == 0) { result.bladeExpressions[blade] = mv.bladeExpressions[blade]; } else { result.bladeExpressions[blade] = new Negation(mv.bladeExpressions[blade]); } } } return result; }
@Override public void visit(Subtraction node) { traverseBinary(node); MvExpressions left = expressions.get(node.getLeft()); MvExpressions right = expressions.get(node.getRight()); MvExpressions result = createNewMvExpressions(); for (int blade = 0; blade < bladeCount; blade++) { if (left.bladeExpressions[blade] != null) { if (right.bladeExpressions[blade] != null) { result.bladeExpressions[blade] = new Subtraction(left.bladeExpressions[blade], right.bladeExpressions[blade]); } else { result.bladeExpressions[blade] = left.bladeExpressions[blade]; } } else if (right.bladeExpressions[blade] != null) { result.bladeExpressions[blade] = new Negation(right.bladeExpressions[blade]); } } expressions.put(node, result); }
@Override public void visit(Negation node) { node.getOperand().accept(this); if (node.getOperand() instanceof MultivectorComponent && oneset.containsKey(((MultivectorComponent) node.getOperand()).toString())) { System.out.println("Assignment: "+ currAssignString+ " - Replaceable Negation Operand: " + ((MultivectorComponent) node.getOperand()).toString()+ "with: "+ oneset.get(((MultivectorComponent)node.getOperand()).toString())); resultExpr = new FloatConstant(oneset.get(((MultivectorComponent)node.getOperand()).toString())); replacements++; } resultExpr = new Negation(resultExpr); }
@Override public void visit(Subtraction node) { node.getLeft().accept(this); Expression left = result; node.getRight().accept(this); if (left == zero) { //0-result if (result != zero) { result = new Negation(result); } } else { result = (result == zero) ? left //left-0 : new Subtraction(left, result); } }
@Override public void visit(Negation node) { node.getOperand().accept(this); Expression previousExpr = resultExpr; resultExpr = new Negation(resultExpr); if ((previousExpr instanceof FloatConstant)) { FloatConstant operand = (FloatConstant) previousExpr; if(operand.getValue() == 0.0) { resultExpr = new FloatConstant(0.0f); } else { resultExpr = new FloatConstant(-operand.getValue()); } } else if (previousExpr instanceof Negation) { Negation operand = (Negation) previousExpr; resultExpr = operand.getOperand(); } }
@Override public void visit(Negation node) { node.getOperand().accept(this); Expression operandExpr = resultExpr; resultExpr = new Negation(resultExpr); if (isConstant(operandExpr)) { FloatConstant operand = (FloatConstant) operandExpr; if (doubleEquals(operand.getValue(), 0.0f)) { resultExpr = new FloatConstant(0.0f); } else { resultExpr = new FloatConstant(-operand.getValue()); } setGraphModified(); } else if (DFGNodeTypeGetter.getTypeOfDFGNode(operandExpr) == DFGNodeType.Negation) { Negation operand = (Negation) operandExpr; resultExpr = operand.getOperand(); setGraphModified(); } }
@Override public void visit(Subtraction node) { node.getLeft().accept(this); Expression left = resultExpr; node.getRight().accept(this); Expression right = resultExpr; resultExpr = new Subtraction(left, right); if ((left instanceof FloatConstant) && (right instanceof FloatConstant)) { FloatConstant leftc = (FloatConstant) left; FloatConstant rightc = (FloatConstant) right; resultExpr = new FloatConstant(leftc.getValue() - rightc.getValue()); } else if (right instanceof Negation) { Negation neg = (Negation) right; resultExpr = new Addition(left, neg.getOperand()); } else if (left instanceof FloatConstant) { FloatConstant leftc = (FloatConstant) left; if(leftc.getValue() == 0.0) { resultExpr = new Negation(right); } } else if(right instanceof FloatConstant) { FloatConstant rightc = (FloatConstant) right; if(rightc.getValue() == 0.0) { resultExpr = left; } } }
FloatConstant leftc = (FloatConstant) left; if (doubleEquals(leftc.getValue(), 0.0f)) { resultExpr = new Negation(right); setGraphModified();