public static Parser.Variable sum(Parser.Variable left, Parser.Variable right) { left = GetVariableValue(left); right = GetVariableValue(right); if (left.type == "string" || right.type == "string") { return(new Parser.Variable(left.value + right.value, "string")); } if (left.IsNaN() || right.IsNaN()) { return(new Parser.Variable("NaN", "number")); } if (!left.CanBeConvertedTo("number") || !right.CanBeConvertedTo("number")) { return(new Parser.Variable("NaN", "number")); } left = left.ConvertTo("number"); right = right.ConvertTo("number"); return(new Parser.Variable(Parse(left.value) + Parse(right.value))); }
internal static Parser.Variable res(Parser.Variable left, Parser.Variable right) { left = GetVariableValue(left); right = GetVariableValue(right); if (left.IsNaN() || right.IsNaN()) { return(new Parser.Variable("NaN", "number")); } if (!left.CanBeConvertedTo("number") || !right.CanBeConvertedTo("number")) { return(new Parser.Variable("NaN", "number")); } left = left.ConvertTo("number"); right = right.ConvertTo("number"); return(new Parser.Variable(Parse(left.value) % Parse(right.value))); }
public static Parser.Variable div(Parser.Variable left, Parser.Variable right) { left = GetVariableValue(left); right = GetVariableValue(right); if (left.IsNaN() || right.IsNaN()) { return(new Parser.Variable("NaN", "number")); } if (!left.CanBeConvertedTo("number") || !right.CanBeConvertedTo("number")) { return(new Parser.Variable("NaN", "number")); } left = left.ConvertTo("number"); right = right.ConvertTo("number"); if (Parse(right.value) == 0) { return(new Parser.Variable(0)); } return(new Parser.Variable(Parse(left.value) / Parse(right.value))); }