public void Test_Distributive_9() { //x^2+x^2+x^2 -> (1+1+1)*x^2 var x = new Var('x'); var t1 = new Term(Expression.Power, new List <object>() { x, 2 }); var x2 = new Var('x'); var t2 = new Term(Expression.Power, new List <object>() { x2, 2 }); var x3 = new Var('x'); var t3 = new Term(Expression.Power, new List <object>() { x3, 2 }); var t4 = new Term(Expression.Add, new List <object>() { t1, t2, t3 }); object obj = t4.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("3(x^2)")); }
public void Test_Distributive_10() { //2*x^2+x^2+y -> (2+1)x^2+y var x = new Var('x'); var xTerm = new Term(Expression.Power, new List <object>() { x, 2 }); var t1 = new Term(Expression.Multiply, new List <object>() { 2, xTerm }); var x2 = new Var('x'); var t2 = new Term(Expression.Power, new List <object>() { x2, 2 }); var t3 = new Var('y'); var t4 = new Term(Expression.Add, new List <object>() { t1, t2, t3 }); object obj = t4.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("3(x^2)+y")); }
public void Test_Distributive_0() { //(1+1)*y var term = new Term(Expression.Add, new List <object>() { 1, 1 }); var y = new Var('y'); var term1 = new Term(Expression.Multiply, new List <object>() { term, y }); object obj = term1.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("2y")); Assert.True(term1.Traces.Count == 1); //(1+1+1)*y -> (2+1)*y term = new Term(Expression.Add, new List <object>() { 1, 1, 1 }); term1 = new Term(Expression.Multiply, new List <object>() { term, y }); obj = term1.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("3y")); Assert.True(term1.Traces.Count == 1); }
public void Term_Algebra_Arith_2() { var x = new Var('x'); // 2*5 + x var lst = new List <object>() { 2, 5 }; var term = new Term(Expression.Multiply, lst); var lst1 = new List <object>() { term, x }; var term1 = new Term(Expression.Add, lst1); object obj = term1.Eval(); Assert.NotNull(obj); var gTerm = obj as Term; Assert.NotNull(gTerm); var glst = gTerm.Args as List <object>; Assert.NotNull(glst); Assert.True(glst.Count == 2); Assert.True(term1.Traces.Count == 1); }
public void Test_Line_Match_1() { //3y-(2x-9) var y = new Var('y'); var term1 = new Term(Expression.Multiply, new List <object>() { 3, y }); var x = new Var('x'); var term2 = new Term(Expression.Multiply, new List <object>() { 2, x }); var term3 = new Term(Expression.Add, new List <object>() { term2, -9 }); var term4 = new Term(Expression.Multiply, new List <object>() { -1, term3 }); var term5 = new Term(Expression.Add, new List <object>() { term1, term4 }); object obj = term4.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("-2x+9")); obj = term5.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("-2x+3y+9")); }
public void Term_Algebra_Arith_4() { // //a^2+ 4^2 - 25; //a^2+25+-1*16 var a = new Var('a'); var term1 = new Term(Expression.Power, new List <object>() { a, 2 }); var term2 = new Term(Expression.Power, new List <object>() { 4, 2 }); var term3 = new Term(Expression.Multiply, new List <object>() { -1, 25 }); var term = new Term(Expression.Add, new List <object>() { term1, term2, term3 }); object obj = term.Eval(); Assert.NotNull(obj); }
public void Term_Arith_3() { //Substraction var lst = new List<object>() { 1, -2, -3 }; var term = new Term(Expression.Multiply, lst); object obj = term.Eval(); Assert.NotNull(obj); Assert.True(obj.Equals(6)); Assert.True(term.Traces.Count == 1); }
public void Term_Arith_2() { //1+(-2)+(-3) //Substraction var lst = new List<object>() { 1, -2, -3 }; var term = new Term(Expression.Add, lst); object obj = term.Eval(); Assert.NotNull(obj); Assert.True(obj.Equals(-4)); Assert.True(term.Traces.Count == 1); }
public void Term_Arith_1() { //1+2+3 //Addition var lst = new List<object>() {1, 2, 3}; var term = new Term(Expression.Add, lst); object obj = term.Eval(); Assert.NotNull(obj); Assert.True(obj.Equals(6)); Assert.True(term.Traces.Count == 1); }
public void Term_Arith_6() { //3/2 var term = new Term(Expression.Divide, new List <object>() { 3, 2 }); object obj = term.Eval(); Assert.True(obj.Equals(1.5)); }
public void Term_Arith_7() { //3^2 var term = new Term(Expression.Power, new List <object>() { 3, 2 }); object obj = term.Eval(); Assert.True(obj.Equals(9)); }
public void Term_Arith_8() { //9^0.5, not 9^(1/2) var term = new Term(Expression.Power, new List <object>() { 9, 0.5 }); object obj = term.Eval(); Assert.True(obj.Equals(3)); }
public void Term_Arith_9() { //(-1)*0 var term = new Term(Expression.Multiply, new List <object>() { -1, 0 }); object obj = term.Eval(); Assert.True(obj.Equals(0)); }
public void Term_Arith_5() { //1-2*3 var lst = new List<object>() { 2, 3 }; var term = new Term(Expression.Multiply, lst); var lst1 = new List<object>() { 1, term }; var term1 = new Term(Expression.Subtract, lst1); object obj = term1.Eval(); Assert.NotNull(obj); Assert.True(obj.Equals(-5)); Assert.True(term1.Traces.Count == 1); }
public void Term_Arith_3() { //Substraction var lst = new List <object>() { 1, -2, -3 }; var term = new Term(Expression.Multiply, lst); object obj = term.Eval(); Assert.NotNull(obj); Assert.True(obj.Equals(6)); Assert.True(term.Traces.Count == 1); }
public void Test_Distributive_01() { //3*3*y var y = new Var('y'); var term = new Term(Expression.Multiply, new List <object>() { 3, 3, y }); object obj = term.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("9y")); Assert.True(term.Traces.Count == 1); }
public void Term_Algebra_Arith_3() { // 3 + x + 3 var x = new Var('x'); var lst = new List<object>() { 3, x, 3 }; var term = new Term(Expression.Add, lst); object obj = term.Eval(); Assert.NotNull(obj); var gTerm = obj as Term; Assert.NotNull(gTerm); var glst = gTerm.Args as List<object>; Assert.NotNull(glst); Assert.True(glst.Count == 2); Assert.True(term.Traces.Count == 1); }
public void Test_Zero_2() { //0*x=>0 var x = new Var('x'); var term = new Term(Expression.Multiply, new List <object>() { 0, x }); //Assert.True(term.ToString().Equals("0x")); var result = term.Eval(); Assert.NotNull(result); Assert.True(result.Equals(0)); Assert.True(term.Traces.Count == 1); }
public void Term_Arith_2() { //1+(-2)+(-3) //Substraction var lst = new List <object>() { 1, -2, -3 }; var term = new Term(Expression.Add, lst); object obj = term.Eval(); Assert.NotNull(obj); Assert.True(obj.Equals(-4)); Assert.True(term.Traces.Count == 1); }
public void Test_Distributive_1() { //y+y=> 1*y+1*y=> (1+1)*y => 2*y var y = new Var('y'); var term = new Term(Expression.Add, new List <object>() { y, y }); //Assert.True(term.ToString().Equals("(y+y)")); object obj = term.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("2y")); Assert.True(term.Traces.Count == 1); }
public void Term_Arith_1() { //1+2+3 //Addition var lst = new List <object>() { 1, 2, 3 }; var term = new Term(Expression.Add, lst); object obj = term.Eval(); Assert.NotNull(obj); Assert.True(obj.Equals(6)); Assert.True(term.Traces.Count == 1); }
public void Test_Zero_1() { //x+0=>x var x = new Var('x'); var term = new Term(Expression.Add, new List <object>() { x, 0 }); Assert.True(term.ToString().Equals("x+0")); var result = term.Eval(); Assert.True(result.ToString().Equals("x")); Assert.NotNull(result); Assert.True(term.Traces.Count == 1); }
/// <summary> /// a+1=, 2+3+5= /// </summary> /// <param name="term"></param> /// <param name="obj"></param> /// <returns></returns> public bool ConstraintSatisfy(Term term, out object obj) { var evalObj = term.Eval(); var generatedEq = new Equation(term, evalObj); generatedEq.ImportTrace(term); var evalTerm = evalObj as Term; var evalVar = evalObj as Var; var dict = new Dictionary<object, object>(); var connectLst = new List<GraphNode>(); if (evalTerm != null) { for (var i = 0; i < _nodes.Count; i++) { var goalNode = _nodes[i] as GoalNode; if (goalNode != null) { if (evalTerm.ContainsVar((EqGoal)goalNode.Goal)) { connectLst.Add(goalNode); } } } } if (evalVar != null) { for (var i = 0; i < _nodes.Count; i++) { var goalNode = _nodes[i] as GoalNode; if (goalNode != null) { var eqGoal = goalNode.Goal as EqGoal; Debug.Assert(eqGoal != null); var lhsVar = eqGoal.Lhs as Var; Debug.Assert(lhsVar != null); if (lhsVar.Equals(evalVar)) { connectLst.Add(goalNode); } } } } dict.Add(connectLst, generatedEq); obj = dict; return true; }
public void Test_Distributive_5() { //3*(x+1) -> 3x + 3 var x = new Var('x'); var term = new Term(Expression.Add, new List <object>() { x, 1 }); var term1 = new Term(Expression.Multiply, new List <object> { 3, term }); object obj = term1.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("3x+3")); Assert.True(term1.Traces.Count == 1); }
public void Term_Algebra_Arith_2() { var x = new Var('x'); // 2*5 + x var lst = new List<object>() { 2, 5 }; var term = new Term(Expression.Multiply, lst); var lst1 = new List<object>() { term, x }; var term1 = new Term(Expression.Add, lst1); object obj = term1.Eval(); Assert.NotNull(obj); var gTerm = obj as Term; Assert.NotNull(gTerm); var glst = gTerm.Args as List<object>; Assert.NotNull(glst); Assert.True(glst.Count == 2); Assert.True(term1.Traces.Count == 1); }
public void Test_Associative_1() { //(3*(2*x)) => (3*2)*x var x = new Var('x'); var term = new Term(Expression.Multiply, new List <object>() { 2, x }); var term1 = new Term(Expression.Multiply, new List <object>() { 3, term }); object obj = term1.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("6x")); Assert.True(term1.Traces.Count == 1); }
public void Test_Distributive_2() { // y+2*y -> (1+2)*y var y = new Var('y'); var term1 = new Term(Expression.Multiply, new List <object>() { 2, y }); var term = new Term(Expression.Add, new List <object>() { y, term1 }); object obj = term.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("3y")); Assert.True(term.Traces.Count == 1); }
public void Test_Associative_4() { //(2/3)x -> (2*x)/3 var x = new Var('x'); var term = new Term(Expression.Divide, new List <object>() { 2, 3 }); var term1 = new Term(Expression.Multiply, new List <object>() { term, x }); object obj = term1.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("(2x)/3")); }
public void Test_Distributive_11() { //x/3+9 -> (x+27)/3 var x = new Var('x'); var term1 = new Term(Expression.Divide, new List <object>() { x, 3 }); var term2 = new Term(Expression.Add, new List <object>() { term1, 9 }); object obj = term2.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("(x+27)/3")); }
public void Test_Associative_2() { //(a+1)+1 -> a+(1+1) var a = new Var('a'); var term = new Term(Expression.Add, new List <object>() { a, 1 }); var term1 = new Term(Expression.Add, new List <object>() { term, 1 }); object obj = term1.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("a+2")); Assert.True(term1.Traces.Count == 1); }
public void Term_Arith_5() { //1-2*3 var lst = new List <object>() { 2, 3 }; var term = new Term(Expression.Multiply, lst); var lst1 = new List <object>() { 1, term }; var term1 = new Term(Expression.Subtract, lst1); object obj = term1.Eval(); Assert.NotNull(obj); Assert.True(obj.Equals(-5)); Assert.True(term1.Traces.Count == 1); }
public void Test_Simple_1() { var variable = new Var('x'); var term1 = new Term(Expression.Multiply, new List <object>() { 2, variable }); var term2 = new Term(Expression.Multiply, new List <object>() { -1, variable }); //2x-x -> x var term = new Term(Expression.Add, new List <object>() { term1, term2 }); var obj = term.Eval(); Assert.True(obj.Equals(variable)); }
public void Test_Distributive_4() { //a*y+y+x -> (a+1)*y+x var x = new Var('x'); var y = new Var('y'); var a = new Var('a'); var term1 = new Term(Expression.Multiply, new List <object>() { a, y }); var term = new Term(Expression.Add, new List <object>() { term1, y, x }); object obj = term.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("x+(a+1)y")); Assert.True(term.Traces.Count == 1); }
public void Term_Algebra_Arith_3() { // 3 + x + 3 var x = new Var('x'); var lst = new List <object>() { 3, x, 3 }; var term = new Term(Expression.Add, lst); object obj = term.Eval(); Assert.NotNull(obj); var gTerm = obj as Term; Assert.NotNull(gTerm); var glst = gTerm.Args as List <object>; Assert.NotNull(glst); Assert.True(glst.Count == 2); Assert.True(term.Traces.Count == 1); }
public void Term_Algebra_Arith_5() { var a = new Var('a'); var b = new Var('b'); var term1 = new Term(Expression.Power, new List <object>() { a, 2 }); var term2 = new Term(Expression.Power, new List <object>() { b, 2 }); var term = new Term(Expression.Add, new List <object>() { term1, term2 }); object obj = term.Eval(); Assert.NotNull(obj); Assert.True(obj.Equals(term)); }
public void Test_LinePatternMatch2() { //4*x+y+-1*4 var x = new Var('x'); var y = new Var('y'); var term1 = new Term(Expression.Multiply, new List <object>() { 4, x }); var term3 = new Term(Expression.Multiply, new List <object>() { -1, 4 }); var term = new Term(Expression.Add, new List <object>() { term1, y, term3 }); object obj = term.Eval(); Assert.NotNull(obj); var gTerm = obj as Term; }
public void Test_Associative_3() { //(1/3)x -> (1*x)/3 var x = new Var('x'); var term = new Term(Expression.Divide, new List <object>() { 1, 3 }); var term1 = new Term(Expression.Multiply, new List <object>() { term, x }); object obj = term1.Eval(); Assert.NotNull(obj); var gTerm = obj as Term; Assert.NotNull(gTerm); Assert.True(gTerm.Op.Method.Name.Equals("Divide")); Assert.True(obj.ToString().Equals("x/3")); }
public void Test_Distributive_9() { //x^2+x^2+x^2 -> (1+1+1)*x^2 var x = new Var('x'); var t1 = new Term(Expression.Power, new List<object>() { x, 2 }); var x2 = new Var('x'); var t2 = new Term(Expression.Power, new List<object>() { x2, 2 }); var x3 = new Var('x'); var t3 = new Term(Expression.Power, new List<object>() { x3, 2}); var t4 = new Term(Expression.Add, new List<object>() { t1, t2, t3}); object obj = t4.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("3(x^2)")); }
public void Test_Associative_3() { //(1/3)x -> (1*x)/3 var x = new Var('x'); var term = new Term(Expression.Divide, new List<object>() {1, 3}); var term1 = new Term(Expression.Multiply, new List<object>() {term, x}); object obj = term1.Eval(); Assert.NotNull(obj); var gTerm = obj as Term; Assert.NotNull(gTerm); Assert.True(gTerm.Op.Method.Name.Equals("Divide")); Assert.True(obj.ToString().Equals("x/3")); }
public void Test_LinePatternMatch2() { //4*x+y+-1*4 var x = new Var('x'); var y = new Var('y'); var term1 = new Term(Expression.Multiply, new List<object>() { 4, x }); var term3 = new Term(Expression.Multiply, new List<object>() { -1, 4}); var term = new Term(Expression.Add, new List<object>() { term1, y, term3}); object obj = term.Eval(); Assert.NotNull(obj); var gTerm = obj as Term; }
public void Test_Simple_1() { var variable = new Var('x'); var term1 = new Term(Expression.Multiply, new List<object>() { 2, variable }); var term2 = new Term(Expression.Multiply, new List<object>() { -1, variable}); //2x-x -> x var term = new Term(Expression.Add, new List<object>() { term1, term2 }); var obj = term.Eval(); Assert.True(obj.Equals(variable)); }
public void Test_Distributive_3() { // y+2*y-4*y -> -1*y var y = new Var('y'); var term1 = new Term(Expression.Multiply, new List<object>() { 2, y }); var term2 = new Term(Expression.Multiply, new List<object>() { -4, y }); var term = new Term(Expression.Add, new List<object>() {y, term1, term2}); object obj = term.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("-y")); Assert.True(term.Traces.Count == 1); }
public void Test_Distributive_0() { //(1+1)*y var term = new Term(Expression.Add, new List<object>() { 1, 1 }); var y = new Var('y'); var term1 = new Term(Expression.Multiply, new List<object>() { term, y }); object obj = term1.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("2y")); Assert.True(term1.Traces.Count == 1); //(1+1+1)*y -> (2+1)*y term = new Term(Expression.Add, new List<object>() { 1, 1 ,1}); term1 = new Term(Expression.Multiply, new List<object>() { term, y }); obj = term1.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("3y")); Assert.True(term1.Traces.Count == 1); }
public void Test_Distributive_5() { //3*(x+1) -> 3x + 3 var x = new Var('x'); var term = new Term(Expression.Add, new List<object>() { x, 1 }); var term1 = new Term(Expression.Multiply, new List<object> { 3, term }); object obj = term1.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("3x+3")); Assert.True(term1.Traces.Count == 1); }
private void Calc_General_SlopeIntercept() { if (B == null) { //ax+c=0 //y=mx+b Slope = double.NaN; Intercept = double.NaN; return; } if (A == null) { //by+c=0 Slope = 0.0d; var term31 = new Term(Expression.Multiply, new List<object>() { -1, C }); var term41 = new Term(Expression.Divide, new List<object>() { term31, B }); Intercept = term41.Eval(); return; } Debug.Assert(A != null); Debug.Assert(B != null); var term1 = new Term(Expression.Multiply, new List<object>() { -1, A }); var term2 = new Term(Expression.Divide, new List<object>() { term1, B }); var term3 = new Term(Expression.Multiply, new List<object>() { -1, C }); var term4 = new Term(Expression.Divide, new List<object>() { term3, B }); Slope = term2.Eval(); Intercept = term4.Eval(); }
public void Test_LinePatterMatch() { //(2*y)+(2*x)+(-1*y)+(2*x)+4 var x = new Var('x'); var y = new Var('y'); var term1 = new Term(Expression.Multiply, new List<object>() { 2, y }); var term2 = new Term(Expression.Multiply, new List<object>() { 2, x }); var term3 = new Term(Expression.Multiply, new List<object>() { -1, y }); var term4 = new Term(Expression.Multiply, new List<object>() { 2, x }); var term = new Term(Expression.Add, new List<object>() { term1, term2, term3, term4, 4}); object obj = term.Eval(); Assert.NotNull(obj); var gTerm = obj as Term; Assert.NotNull(gTerm); var lst = gTerm.Args as List<object>; Assert.NotNull(lst); Assert.True(lst.Count == 3); }
public void Test_Associative_5() { // //(x+1)+(y+1) -> x+y+2 var x = new Var('x'); var y = new Var('y'); var term1 = new Term(Expression.Add, new List<object>() {x, 1}); var term2 = new Term(Expression.Add, new List<object>() {y, 1}); var term = new Term(Expression.Add, new List<object>() {term1, term2}); object obj = term.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("x+y+2")); }
public void Test_Associative_4() { //(2/3)x -> (2*x)/3 var x = new Var('x'); var term = new Term(Expression.Divide, new List<object>() { 2, 3 }); var term1 = new Term(Expression.Multiply, new List<object>() { term, x }); object obj = term1.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("(2x)/3")); }
public void Test_Distributive_8() { //1*y^2+2*y^2 -> (1+2)*y^2 var y = new Var('y'); var yTerm = new Term(Expression.Power, new List<object>() { y, 2 }); var t1 = new Term(Expression.Multiply, new List<object>() { 1, yTerm }); Assert.True(t1.QuadraticTerm()); var y2 = new Var('y'); var yTerm2 = new Term(Expression.Power, new List<object>() { y2, 2 }); var t2 = new Term(Expression.Multiply, new List<object>() { 2, yTerm2 }); Assert.True(t2.QuadraticTerm()); var t3 = new Term(Expression.Add, new List<object>() { t1, t2 }); Assert.True(t3.QuadraticTerm()); object obj = t3.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("3(y^2)")); }
public void Test_Associative_2() { //(a+1)+1 -> a+(1+1) var a = new Var('a'); var term = new Term(Expression.Add, new List<object>() { a, 1 }); var term1 = new Term(Expression.Add, new List<object>() { term, 1 }); object obj = term1.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("a+2")); Assert.True(term1.Traces.Count == 1); }
public void Test_Distributive_7() { //quadratic: //3x^2+x^2 -> (3+1)x^2 -> 4x^2 var x = new Var('x'); var xTerm = new Term(Expression.Power, new List<object>() {x,2}); var t1 = new Term(Expression.Multiply, new List<object>() {3, xTerm}); Assert.True(t1.QuadraticTerm()); var x2 = new Var('x'); var t2 = new Term(Expression.Power, new List<object>() {x2, 2}); Assert.True(t2.QuadraticTerm()); var t3 = new Term(Expression.Add, new List<object>() {t1, t2}); Assert.True(t3.QuadraticTerm()); object obj = t3.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("4(x^2)")); }
public void Test_Associative_1() { //(3*(2*x)) => (3*2)*x var x = new Var('x'); var term = new Term(Expression.Multiply, new List<object>() {2, x}); var term1 = new Term(Expression.Multiply, new List<object>() {3, term}); object obj = term1.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("6x")); Assert.True(term1.Traces.Count == 1); }
public void Test_Distributive_4() { //a*y+y+x -> (a+1)*y+x var x = new Var('x'); var y = new Var('y'); var a = new Var('a'); var term1 = new Term(Expression.Multiply, new List<object>() { a, y }); var term = new Term(Expression.Add, new List<object>() {term1, y, x}); object obj = term.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("x+(a+1)y")); Assert.True(term.Traces.Count == 1); }
public void Test_Distributive_12() { //(2/3)x+2 -> (2*x+6)/3 var x = new Var('x'); var term1 = new Term(Expression.Divide, new List<object>() {2, 3}); var term2 = new Term(Expression.Multiply, new List<object>() {term1, x}); var term3 = new Term(Expression.Add, new List<object>(){term2, 2}); object obj = term3.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("(2x+6)/3")); }
public void Test_Distributive_1() { //y+y=> 1*y+1*y=> (1+1)*y => 2*y var y = new Var('y'); var term = new Term(Expression.Add, new List<object>(){y, y}); //Assert.True(term.ToString().Equals("(y+y)")); object obj = term.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("2y")); Assert.True(term.Traces.Count == 1); }
public void Test_Distributive_11() { //x/3+9 -> (x+27)/3 var x = new Var('x'); var term1 = new Term(Expression.Divide, new List<object>() { x, 3 }); var term2 = new Term(Expression.Add, new List<object>() { term1, 9 }); object obj = term2.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("(x+27)/3")); }
public void Test_Distributive_01() { //3*3*y var y = new Var('y'); var term = new Term(Expression.Multiply, new List<object>() { 3, 3, y }); object obj = term.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("9y")); Assert.True(term.Traces.Count == 1); }
public void Test_Distributive_10() { //2*x^2+x^2+y -> (2+1)x^2+y var x = new Var('x'); var xTerm = new Term(Expression.Power, new List<object>() { x, 2 }); var t1 = new Term(Expression.Multiply, new List<object>() {2, xTerm}); var x2 = new Var('x'); var t2 = new Term(Expression.Power, new List<object>() { x2, 2 }); var t3 = new Var('y'); var t4 = new Term(Expression.Add, new List<object>() { t1, t2, t3 }); object obj = t4.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("3(x^2)+y")); }
public void Test_Line_Match_0() { //3y+2x-9 var y = new Var('y'); var term1 = new Term(Expression.Multiply, new List<object>() { 3, y }); var x = new Var('x'); var term2 = new Term(Expression.Multiply, new List<object>() { 2, x }); var term3 = new Term(Expression.Add, new List<object>() { term1, term2,-9 }); var obj = term3.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("2x+3y-9")); }
public void Test_Line_Match_1() { //3y-(2x-9) var y = new Var('y'); var term1 = new Term(Expression.Multiply, new List<object>() {3, y}); var x = new Var('x'); var term2 = new Term(Expression.Multiply, new List<object>() {2, x}); var term3 = new Term(Expression.Add, new List<object>() {term2, -9}); var term4 = new Term(Expression.Multiply, new List<object>() {-1, term3}); var term5 = new Term(Expression.Add, new List<object>() {term1, term4}); object obj = term4.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("-2x+9")); obj = term5.Eval(); Assert.NotNull(obj); Assert.True(obj.ToString().Equals("-2x+3y+9")); }