public IExpression Simplify(IExpression input) { mWasChanged = false; mCalculatedExpression = ExpressionCloner.Clone(input); mCalculatedExpression.Accept(this); return(mCalculatedExpression); }
public IExpression Simplify(IExpression input) { mWasChanged = false; sMovedExpression = ExpressionCloner.Clone(input); MoveAdditionsOrSubtractions(sMovedExpression); return(sMovedExpression); }
public void ExpressionClonerClonesAdditionWithLeftAdditionChainAndRightMultiplicationWithVariableAtTheEnd() { var underTest = new Addition { Left = new Addition { Left = new Addition { Left = new Constant { Value = 1 }, Right = new Constant { Value = 2 } }, Right = new Constant { Value = 3 } }, Right = new Multiplication { Left = new Constant { Value = 4 }, Right = new Variable { Name = "a" } } }; var result = ExpressionCloner.Clone(underTest); var equalityChecker = new ExpressionEqualityChecker(); equalityChecker.IsEqual(result, underTest).Should().BeTrue(); }
public void ExpressionClonerClonesSimpleAddition() { var underTest = new Addition { Left = new Constant { Value = 1 }, Right = new Constant { Value = 2 } }; var result = ExpressionCloner.Clone(underTest); var equalityChecker = new ExpressionEqualityChecker(); equalityChecker.IsEqual(result, underTest).Should().BeTrue(); }
IExpression CreateMultiplicationReplacement(IExpression multiplier, IExpression parenthesed) { mListOfMultipliers = mHelper.GetAllUnderLyingMultipliableExpressions(multiplier); mListOfFactors = mHelper.GetAllUnderLyingMultipliableExpressions(parenthesed); foreach (var factor in mListOfFactors) { var variable = factor as Variable; if (variable?.Parent is Multiplication) { continue; } DistributeMultipliersOverFactors(factor); } var result = (ParenthesedExpression)parenthesed; return(ExpressionCloner.Clone(result.Wrapped)); }
public void ExpressionClonerClonesAdditionWithTwoOperations() { var underTest = new Addition { Left = new Addition { Left = new Constant { Value = 1 }, Right = new Constant { Value = 2 } }, Right = new Addition { Left = new Constant { Value = 3 }, Right = new Constant { Value = 4 } } }; var result = ExpressionCloner.Clone(underTest); result.ShouldBeEquivalentTo(underTest, cfg => cfg.Excluding(e => e.Children)); }
public IExpression Simplify(IExpression input) { mResult = ExpressionCloner.Clone(input); Traverse(mResult); return(mResult); }
public IExpression Simplify(IExpression input) { mExpression = ExpressionCloner.Clone(input); mExpression.Accept(this); return(mExpression); }
protected void UseAsResult(IExpression expression) => mResult = ExpressionCloner.Clone(expression);