Example #1
0
		private Expression EvaluateExponent(Evaluatable left, Evaluatable right)
		{
			// ln(a ^ b) = b * ln(a)
			return new DualFactorComponent(
				Factorizer.ToFactor(right.Evaluate()),
				Factorizer.ToFactor(new FunctionComponent(Name, new List<Expression> { left.Evaluate() })),
				true).Evaluate();
		}
Example #2
0
		private Expression EvaluateMultiplication(Evaluatable left, Evaluatable right)
		{
			// ln(a * b) = ln(a) + ln(b)
			return new DualComponentExpression(
				Componentizer.ToComponent(new FunctionComponent(Name, new List<Expression> { left.Evaluate() }).Evaluate()),
				Componentizer.ToComponent(new FunctionComponent(Name, new List<Expression> { right.Evaluate() }).Evaluate()),
				true).Evaluate();
		}
Example #3
0
		private Expression EvaluateDivision(Evaluatable left, Evaluatable right)
		{
			// ln(a / b) = ln(a) - ln(b)
			return new DualComponentExpression(
				Componentizer.ToComponent(new FunctionComponent(Name, new List<Expression> { left.Evaluate() }).Evaluate()),
				Componentizer.ToComponent(new FunctionComponent(Name, new List<Expression> { right.Evaluate() }).Evaluate()),
				false).Evaluate();
		}
 public Value Evaluate()
 {
     return(eval.Evaluate(robot, functionArgs.Select(x => x.Evaluate()).ToArray()));
 }