public override IResultValue Evaluate()
        {
            IResultValue num1 = First.Evaluate();
            IResultValue num2 = Second.Evaluate();

            double d1 = (double)num1.ToDecimal();
            double d2 = (double)num2.ToDecimal();

            return(new ResultBoolean(!d1.AlmostEqualTo(d2)));
        }
Beispiel #2
0
        public override IResultValue Evaluate()
        {
            IResultValue res = Operand.Evaluate();

            if (!((double)res.ToDecimal()).IsInteger(8))
            {
                throw new EvaluationException(this,
                                              "Cannot use floating-point types in factorial calculation.");
            }

            return(new ResultNumberReal((decimal)MathPlus.Probability.Factorial(res.ToInteger())));
        }
        public override IResultValue Evaluate()
        {
            IResultValue res1 = First.Evaluate();
            IResultValue res2 = Second.Evaluate();

            if (!((double)res1.ToDecimal()).IsInteger(8) || !((double)res2.ToDecimal()).IsInteger(8))
            {
                throw new EvaluationException(this,
                                              "Cannot use floating-point types in modulus calculation.");
            }

            return(new ResultNumberReal((decimal)(res1.ToInteger() % res2.ToInteger())));
        }
Beispiel #4
0
        public override IResultValue Evaluate()
        {
            List <decimal> vals = new List <decimal>();

            foreach (NodeBase node in Children)
            {
                IResultValue res = node.Evaluate();
                if (res.Type != MathType.Real && res.Type != MathType.Integer)
                {
                    throw new EvaluationException(this, "List item must be a number. Found " +
                                                  res.Type + " instead.");
                }
                vals.Add(res.ToDecimal());
            }

            return(new ResultList(vals));
        }