Example #1
0
        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}");
        }
Example #2
0
        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}");
        }
Example #3
0
        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}.");
        }
Example #4
0
        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.");
        }
Example #5
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)))"));
        }