public void ConstantTest() { var prog1 = new SubtractionFunction(new Constant(5), new Constant(2)); var prog2 = new Constant(3); var simp = prog1.Simplify(); Console.WriteLine($"{prog1}->{simp}, {prog2}"); Assert.AreEqual(simp, prog2, $"{prog1} simplification ({simp}) should be equal to {prog2}"); }
public void SubtractionByZeroTest() { GetConverter(out var varX, out _); var prog1 = new SubtractionFunction(varX, Constant.Zero); var prog2 = varX; var simp = prog1.Simplify(); Console.WriteLine($"{prog1}->{simp}, {prog2}"); Assert.AreEqual(simp, prog2, $"{prog1} simplification ({simp}) should be equal to {prog2}"); }
public void EqualsButDiffRefsTestProgram() { var const1 = new Constant(0); var const2 = new Constant(1); var const3 = new Constant(3); var addition = new AdditionFunction(const1, const3); var subtr = new SubtractionFunction(const2, addition); var log1 = new LogarithmFunction(subtr, const1); var log2 = new LogarithmFunction(subtr, const1); Console.WriteLine($"{log1}, {log2}"); Assert.AreEqual(log1, log2, $"{log1} should be equal to {log2}."); Assert.AreNotSame(log1, log2, $"{log1} should not be the same as {log2}."); }
public void HashTestProgram() { var const1 = new Constant(0); var const2 = new Constant(1); var variable = new Variable("a"); var sine = new SineFunction(const2); var pow = new PowerFunction(const1, variable); var subtr = new SubtractionFunction(const2, pow); var min = new MinFunction(subtr, const1); var div = new DivisionFunction(pow, variable); var prog = new IfFunction(div, min, subtr, sine); var hashCode = prog.GetHashCode(); Console.WriteLine($"{prog}:{hashCode}"); Assert.AreNotEqual(hashCode, 0, double.Epsilon, $"Hash code of {prog} should not be 0."); }
private static MathProgram CreateProgram() { var a = new Variable("a"); var b = new Variable("b"); var c = new Variable("c"); var d = new Variable("d"); var e = new Variable("e"); var addition = new AdditionFunction(a, a); var subtr = new SubtractionFunction(a, a); var primitives = new PrimitiveSet <MathProgram>( new HashSet <Terminal> { a, b, c, d, e }, new HashSet <MathProgram> { addition, subtr }); var converter = new MathExpressionConverter(primitives); return(converter.FromPrefixNotation("(+ (- a b) (- c (+ d e)))")); }