public IExpressionNode Simplify()
        {
            LeftOperand  = LeftOperand.Simplify();
            RightOperand = RightOperand.Simplify();
            if (!LeftOperand.ContainsVariable() && !RightOperand.ContainsVariable())
            {
                return(new Constant(this.Evaluate(null)));
            }
            else if (!LeftOperand.ContainsVariable() && RightOperand.ContainsVariable())
            {
                if (LeftOperand.Evaluate(null) == 0)
                {
                    return(new Constant(0));
                }
            }
            else if (LeftOperand.ContainsVariable() && !RightOperand.ContainsVariable())
            {
                if (RightOperand.Evaluate(null) == 0)
                {
                    throw new DivideByZeroException();
                }

                if (RightOperand.Evaluate(null) == 1)
                {
                    return(LeftOperand.DeepCopy());
                }
            }

            return(this);
        }
Esempio n. 2
0
        public IExpressionNode Simplified()
        {
            if (this.IsConstant)
            {
                return(new Constant(this.Evaluate(null)));
            }

            if (condition.IsConstant)
            {
                return((condition.Evaluate(null) >= 0) ? trueNode : falseNode);
            }

            return(this);
        }
        public IExpressionNode Simplified()
        {
            if (indexNode.isConstant)
            {
                double t         = indexNode.Evaluate(null);
                int    leftIndex = leftPointIndex(t);

                if (segmentPoints[leftIndex].isConstant && segmentPoints[leftIndex + 1].isConstant)
                {
                    return(new Constant(this.Evaluate(null)));
                }
            }

            return(this);
        }
Esempio n. 4
0
        public double Evaluate(IDictionary <string, double> variables)
        {
            double leftValue  = leftSide.Evaluate(variables);
            double rightValue = rightSide.Evaluate(variables);

            return(compare(leftValue, rightValue, Math.Abs(leftValue - rightValue) <= tolerance) ? 1 : -1);
        }
        public double Evaluate()
        {
            var rhsVal = _rhs.Evaluate();

            var result = _operation(rhsVal);

            return(result);
        }
Esempio n. 6
0
        public double Evaluate(IDictionary <string, double> variables)
        {
            double x   = argument.Evaluate(variables);
            double min = minNode.Evaluate(variables);
            double max = maxNode.Evaluate(variables);

            return((x < min) ? min : (x > max) ? max : x);
        }
Esempio n. 7
0
        public override IValueNode Evaluate(params IVariable[] variables)
        {
            switch (Operator)
            {
            default:
            case Operators.Add:
                return(Left.Evaluate(variables).Add(Right.Evaluate(variables), variables));

            case Operators.Substract:
                return(Left.Evaluate(variables).Substract(Right.Evaluate(variables), variables));

            case Operators.Multiply:
                return(Left.Evaluate(variables).Multiply(Right.Evaluate(variables), variables));

            case Operators.Divide:
                return(Left.Evaluate(variables).Divide(Right.Evaluate(variables), variables));
            }
        }
Esempio n. 8
0
        public double Evaluate()
        {
            var lhsVal = _leftNode.Evaluate();
            var rhsVal = _rightNode.Evaluate();

            var result = _operation(lhsVal, rhsVal);

            return(result);
        }
Esempio n. 9
0
        //TODO(v0.8) add trivial variable overload or maybe for multiple variables in alphabetical order
        public double Evaluate(IDictionary <string, double> variables)
        {
            try {
                return(Root.Evaluate(variables));
            }
            catch (KeyNotFoundException)
            {
                ErrorReporter.Get.Report(new KeyNotFoundException("Missing vars: " + string.Join(" ", this.Variables.Where(x => !variables.ContainsKey(x)).ToArray())));
            }

            return(double.NaN);
        }
        public ConditionResult Evaluate(IExecutionContext executionContext, IExpressionNode tree, bool hostTracingOnly = false)
        {
            ArgUtil.NotNull(executionContext, nameof(executionContext));
            ArgUtil.NotNull(tree, nameof(tree));

            ConditionResult result          = new ConditionResult();
            var             expressionTrace = new TraceWriter(Trace, hostTracingOnly ? null : executionContext);

            result.Value = tree.Evaluate <bool>(trace: expressionTrace, secretMasker: HostContext.SecretMasker, state: executionContext);
            result.Trace = expressionTrace.Trace;

            return(result);
        }
Esempio n. 11
0
        public double Evaluate(IDictionary <string, double> variables)
        {
#if DEBUG
            try {
#endif
            return(root.Evaluate(variables));

#if DEBUG
        }
        catch (KeyNotFoundException)
        {
            System.Diagnostics.Trace.WriteLine("Missing vars: " + string.Join(" ", this.Variables.Where(x => !variables.ContainsKey(x)).ToArray()));
            throw;
        }
#endif
        }
Esempio n. 12
0
 public double Evaluate()
 {
     return(_leftExpression.Evaluate() - _rightExpression.Evaluate());
 }
Esempio n. 13
0
 public double Evaluate(IDictionary <string, double> variables)
 {
     return(Math.Sign(argument.Evaluate(variables)));
 }
Esempio n. 14
0
 public double Evaluate(IDictionary <string, double> variables)
 {
     return(Math.Round(argument.Evaluate(variables), MidpointRounding.AwayFromZero));
 }
Esempio n. 15
0
 public double Evaluate(Dictionary <string, double> input)
 {
     return(root.Evaluate(input));
 }