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))); }
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()))); }
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)); }