protected override Expression VisitBinary(BinaryExpression node) { switch (node.NodeType) { case ExpressionType.Add: case ExpressionType.Subtract: return(Expression.MakeBinary(node.NodeType, Visit(node.Left), Visit(node.Right))); case ExpressionType.Multiply: return(Expression.Add(Expression.Multiply(node.Left, Visit(node.Right)), Expression.Multiply(Visit(node.Left), node.Right))); case ExpressionType.Divide: return(Expression.Divide(Expression.Subtract(Expression.Multiply(Visit(node.Left), node.Right), Expression.Multiply(node.Left, Visit(node.Right))), Expression.Power(node.Right, Expression.Constant(2)))); case ExpressionType.Power: if (node.Right is ConstantExpression) { return(Expression.Multiply(node.Right, Expression.Multiply(Visit(node.Left), Expression.Subtract(node.Right, Expression.Constant(1))))); } else if (node.Left is ConstantExpression) { return(Expression.Multiply(node, MathExpressions.Log(node.Left))); } else { return(Expression.Multiply(node, Expression.Add( Expression.Multiply(Visit(node.Left), Expression.Divide(node.Right, node.Left)), Expression.Multiply(Visit(node.Right), MathExpressions.Log(node.Left)) ))); } default: throw new NotImplementedException(); } }
public void TestBasicMathSentenceWithTwoOrMoreNumbers() { string s = "1+2+3-3-2-1"; MathExpressions m = new MathExpressions(); string sentence = m.BasicMathExpression(s); Assert.AreEqual(sentence, "0"); }
public void TestBasicMathSentenceWithNumberAndTrigonometry() { string s = "2+cos(1)"; MathExpressions m = new MathExpressions(); string sentence = m.BasicMathExpression(s); Assert.AreEqual(sentence, "3"); }
public void TestBasicMathSentenceWithTwoUnknownNumbersOneBeingTrigSin() { string s = "1+3+x+sin(x)"; double x = -1; MathExpressions m = new MathExpressions(); string sentence = m.BasicMathExpressionWithTrigonometry(s, x); Assert.AreEqual(sentence, "2"); }
public void TestBasicMathSentenceWithTwoUnknownNumbers() { string s = "1+3+x+x"; double x = 3; MathExpressions m = new MathExpressions(); string sentence = m.BasicMathExpressionWithOneOrMoreUnknown(s, x); Assert.AreEqual(sentence, "10"); }
public void TestBasicMathSentenceWithTwoUnknownNumbersOneBaeingTrigTanNegative() { string s = "1+3-x-3*2-tan(x)"; double x = -1; MathExpressions m = new MathExpressions(); string sentence = m.BasicMathExpressionWithTrigonometry(s, x); Assert.AreEqual(sentence, "1"); }
public void TestBasicMathSentenceWithNumberUnknownInTrigonometryAndAddition() { string s = "2+2+cos(x)"; double x; x = 1; MathExpressions m = new MathExpressions(); string sentence = m.BasicMathExpressionWithTrigonometry(s, x); Assert.AreEqual(sentence, "5"); }
public void TestBasicMathSentenceWithNumberAndUnknownNumber() { string s = "2+x"; double x; x = 2; MathExpressions m = new MathExpressions(); string sentence = m.BasicMathExpressionWithOneOrMoreUnknown(s, x); Assert.AreEqual(sentence, "4"); }
public ExpressionsViewModel() { _expressions = new MathExpressions(); AddCommand = new RelayCommand(() => _expressions.Add()); }
public void Test_CalculateSlope(int x1, int y1, int x2, int y2, double expected) { var slope = MathExpressions.CalculateSlope(x1, y1, x2, y2); Assert.Equal(expected, slope); }
public void Test_Max(int a, int b, int expected) { var max = MathExpressions.Max(a, b); Assert.Equal(expected, max); }
public void Test_SumNumbers(int a, int b, int expected) { var result = MathExpressions.Sum(a, b); Assert.Equal(expected, result); }
public ExpressionsViewModel() { _expressions = new MathExpressions(); AddCommand = new RelayCommand(() => _expressions.Add()); }