public void Differentiate(TextBox eqnTextBox, TextBox limitTxtBox, Label resultLbl) { string eqn = eqnTextBox.Text; MathEvaluator me = new MathEvaluator(); double limit = double.Parse(limitTxtBox.Text); double limitX1 = limit - 0.0001; double limitX2 = limit + 0.0001; string xString1 = eqn.Replace("x", ("(" + limitX1 + ")")); xString1 = xString1.Replace("X", ("(" + limitX1 + ")")); double y1 = me.Evaluate(xString1); string xString2 = eqn.Replace("x", ("(" + limitX2 + ")")); xString2 = xString2.Replace("X", ("(" + limitX2 + ")")); float y2 = (float)me.Evaluate(xString2); resultLbl.Text = (y1 - y2) / (limitX1 - limitX2) + ""; }
public void equals(TextBox equationTxtBox) { MathEvaluator me = new MathEvaluator(); equationTxtBox.Text = me.Evaluate(eqnToEvaluate) + ""; Program.historyController.addEquation(eqnToEvaluate); Program.historyController.addResult((float)me.Evaluate(eqnToEvaluate)); }
private static string RegexMatchEvaluatorResolveMathExpression(Match match) { string value = match.Groups[1].Value; value = VarsRegex.Replace(value, RegexMatchEvaluatorConcatenateZeroIfEmptyCached); return(MathEvaluator.Evaluate(value).ToString()); }
public void Integrate(TextBox eqnTextBox, TextBox fromTxtBox, TextBox toTxtBox, Label resultLbl) { MathEvaluator me = new MathEvaluator(); string eqn = eqnTextBox.Text; double area = 0; double from = double.Parse(fromTxtBox.Text); double to = double.Parse(toTxtBox.Text); double sliceWidth = 0.01; List <double> ys = new List <double>(); while (to >= from) { string xString = eqn.Replace("x", ("(" + from + ")")); xString = xString.Replace("X", ("(" + from + ")")); ys.Add(me.Evaluate(xString)); from = from + sliceWidth; } for (int i = 0; i < ys.Count - 1; i++) { area = area + 0.5 * (ys[i] + ys[i + 1]) * (sliceWidth); } resultLbl.Text = area + ""; }
public char CalculateGrade(Person person) { if (string.IsNullOrEmpty(this.gradeFormula)) { throw new InvalidOperationException("Grade formula must be set"); } var participant = Participants.SingleOrDefault(x => x.pnr == person.pnr); if (participant == null) { throw new ArgumentException("Person not in this course run."); } var evaluator = new MathEvaluator(); foreach (var part in CourseParts) { var resultRegistration = participant.GetResult(part.part); if (resultRegistration.Result.HasValue) { evaluator.Variables.Add(part.part, resultRegistration.Result.Value.FromGrade()); } else { return('?'); } } return(evaluator.Evaluate(this.gradeFormula).ToGrade()); }
public void Test2() { Assert.AreEqual(25, MathEvaluator.Evaluate("(25)")); Assert.AreEqual(-3, MathEvaluator.Evaluate("(-(3))")); Assert.AreEqual(6, MathEvaluator.Evaluate("-(-(+6))")); Assert.Throws <ExpressionEvaluationException>(() => MathEvaluator.Evaluate("((3)")); }
public void Evaluate() { string result = Eval.Evaluate(this.Text).ToString(); this.Value = result; this.Text = result; this.UserEnteredParentheses = false; }
public void SetExpression(string expr) { if (eval == null) { eval = new MathEvaluator(); } expression = expr; try { eval.Evaluate(ReplaceVariableForTest(expression)); evaluable = true; } catch (Exception) { evaluable = false; } }
public void EvaluateTest2() { var expression = "(10 + (-5 * 2))"; var tokens = Tokenizer.Default.GetTokens(expression); var rpn = MathEvaluator.InfixToRPN(tokens); Assert.AreEqual(0, MathEvaluator.Evaluate(rpn)); Assert.AreEqual(0, MathEvaluator.Evaluate(expression)); }
public void EvaluateTest3() { var expression = "max(10 - 4, 2 + 6)"; var tokens = Tokenizer.Default.GetTokens(expression); var rpn = MathEvaluator.InfixToRPN(tokens); Assert.AreEqual(8, MathEvaluator.Evaluate(rpn)); Assert.AreEqual(8, MathEvaluator.Evaluate(expression)); }
public static T Evaluate <T>(RPNExpression expression) { try { var context = new RPNContext(expression); while (context.CanMove) { context.MoveNext(); if (DefaultEvaluator.Evaluate(context)) { continue; } if (BasicEvaluator.Evaluate(context)) { continue; } if (MathEvaluator.Evaluate(context)) { continue; } if (LogicEvaluator.Evaluate(context)) { continue; } if (StringEvaluator.Evaluate(context)) { continue; } if (RegexEvaluator.Evaluate(context)) { continue; } if (DateTimeEvaluator.Evaluate(context)) { continue; } if (ControlEvaluator.Evaluate <T>(context)) { continue; } context.Stack.Push(context.Current); } return(context.GetResult <T>()); } catch (RPNException) { throw; } catch { throw new ParsingException(expression.Expression); } }
public void Test4() { Assert.AreEqual(25, MathEvaluator.Evaluate("(3 plus 2) times 10 divided 2")); Assert.AreEqual(453, MathEvaluator.Evaluate("3 plus (3 times 5) pow 2 times 2")); Assert.AreEqual(121, MathEvaluator.Evaluate("( 5 plus 6 ) pow 2")); Assert.AreEqual(-61, MathEvaluator.Evaluate("56 minus ((-2) times 4) plus (-(5 pow 3))")); Assert.AreEqual(1968.7, MathEvaluator.Evaluate("(3 pow 9 plus 2 times 3 times 4) divided 10.0 minus 2"), Delta); Assert.AreEqual(25.5 * 3.666, MathEvaluator.Evaluate("25.5 times 3.666"), Delta); Assert.AreEqual(21.333, MathEvaluator.Evaluate("0.333 plus (5 pow 2) minus 10 divided 2.5"), Delta); }
public void Test3() { Assert.AreEqual(25, MathEvaluator.Evaluate("(3 + 2) * 10 / 2")); Assert.AreEqual(453, MathEvaluator.Evaluate("3 + (3 * 5)^ 2 * 2")); Assert.AreEqual(121, MathEvaluator.Evaluate("( 5 + 6 )^2")); Assert.AreEqual(-61, MathEvaluator.Evaluate("56 - ((-2) * 4) + (-(5^3))")); Assert.AreEqual(1968.7, MathEvaluator.Evaluate("(3 ^ 9 + 2 * 3 * 4) / 10.0 - 2"), Delta); Assert.AreEqual(25.5 * 3.666, MathEvaluator.Evaluate("25.5 * 3.666"), Delta); Assert.AreEqual(21.333, MathEvaluator.Evaluate("0.333 + (5 ^ 2) - 10 / 2.5"), Delta); }
public static Double?Evaluer(this String Expression) { try { return(_Calcul.Evaluate(Expression)); } catch { } return(null); }
static void Main(string[] args) { MathEvaluator ev = new MathEvaluator(); ev.Variables.Add("TENA", 2); var result = ev.Evaluate("2 * TENA"); Console.WriteLine(result); Console.ReadLine(); }
public void EvaluateTest4() { var expression = "e^2 + 1"; var tokens = Tokenizer.Default.GetTokens(expression); var rpn = MathEvaluator.InfixToRPN(tokens); var result = Math.Exp(2) + 1; var delta = 0.00001; Assert.AreEqual(result, MathEvaluator.Evaluate(rpn), delta); Assert.AreEqual(result, MathEvaluator.Evaluate(expression), delta); }
public void EvaluateTest5() { var expression = "(5 * 2) + 1"; var tokens = Tokenizer.Default.GetTokens(expression); var rpn = MathEvaluator.InfixToRPN(tokens); var expectedRPN = new string[] { "5", "2", "*", "1", "+" }; CollectionAssert.AreEqual(expectedRPN, rpn.ToStringExpression(), rpn.ToStringExpression().AsString()); Assert.AreEqual(11, MathEvaluator.Evaluate(expression)); Assert.AreEqual(11, MathEvaluator.Evaluate(rpn)); }
private void Eval(string input) { string answer; bool hasError = false; watch.Reset(); watch.Start(); try { answer = _eval.Evaluate(input).ToString(); } catch (Exception ex) { answer = ex.Message; hasError = true; } watch.Stop(); timerToolStripStatusLabel.Text = watch.Elapsed.TotalMilliseconds + " ms"; _history.Add(input); _historyIndex = 0; historyRichTextBox.SuspendLayout(); historyRichTextBox.AppendText(input); historyRichTextBox.AppendText(Environment.NewLine); historyRichTextBox.AppendText("\t"); if (hasError) { historyRichTextBox.SelectionColor = Color.Maroon; } else { historyRichTextBox.SelectionColor = Color.Blue; } historyRichTextBox.SelectionFont = new Font(historyRichTextBox.Font, FontStyle.Bold); historyRichTextBox.AppendText(answer); historyRichTextBox.AppendText(Environment.NewLine); historyRichTextBox.ScrollToCaret(); historyRichTextBox.ResumeLayout(); inputTextBox.ResetText(); inputTextBox.Focus(); inputTextBox.Select(); }
/// <summary> /// Calcula a expressão das variaveis calculadas /// </summary> /// <param name="input"></param> private double Eval(string input) { MathEvaluator _eval = new MathEvaluator(); Stopwatch watch = new Stopwatch(); string answer; watch.Reset(); watch.Start(); try { answer = _eval.Evaluate(input).ToString(); } catch (Exception ex) { answer = ex.Message; } watch.Stop(); return(Convert.ToDouble(answer)); }
// Use this for initialization void Start() { CConsole.Log("You can log with different colours", new Color(1, 0.5f, 1)); CConsole.Log("You can log with different colours", Color.green); CConsole.Log("You can log with different colours", Color.blue); CConsole.Log("You can log with different colours", Color.magenta); Debug.Log("CConsole can catches Debug.Log()'s"); Debug.LogWarning("CConsole can catches Debug.LogWarning()'s"); Debug.LogError("CConsole can catches Debug.LogError()'s"); // WithArg Cmd CConsole.ActionsWithArg.Add("math", (s) => { CConsole.Log(MathEvaluator.Evaluate(s)); }); // NoArg Cmd CConsole.ActionsNoArg.Add("math", () => { Debug.Log("Example usage\"math 5+3\""); }); }
//This function responsable for resolving formual and getting the value private static object GetFormulaFieldValue(PropertyInfo propertyInfo, T entity, FormulaField attFormual) { var formualFields = attFormual.Formula.Split(']'); string fieldName = ""; object fieldVal = ""; string formula = ""; PropertyInfo innerPropertyInfo; object formulaValue = null; formula = attFormual.Formula; for (int i = 0; i < formualFields.Length - 1; i++) { fieldName = formualFields[i].Split('[')[1]; innerPropertyInfo = entity.GetType().GetProperty(fieldName); fieldVal = innerPropertyInfo.GetValue(entity, null); if (fieldVal != null) { formula = formula.Replace("[" + fieldName + "]", fieldVal.ToString().Trim()); } } if (propertyInfo.PropertyType == typeof(decimal) || propertyInfo.PropertyType == typeof(int) || propertyInfo.PropertyType == typeof(float)) { formulaValue = MathEvaluator.Evaluate(formula); SetFieldValue(entity, propertyInfo, formulaValue); return(formulaValue); } //This only will be for default values on not numbers fields else { return(formula); } }
public void Test5() { Assert.AreEqual(-50, MathEvaluator.Evaluate("MIN(4, -5) * MAX(10, 3)")); Assert.AreEqual(Math.Log10(256) - (-2), MathEvaluator.Evaluate("Log(256) - (-2)"), Delta); Assert.AreEqual(Math.Round(0.6) * Math.Log10(25), MathEvaluator.Evaluate("Round(0.6) * Log(25)")); }
public void drawGraph(Panel graphPnl, TextBox fromText, TextBox toText, TextBox eqnText) { // Declaring List <float> xs = new List <float>(), ys = new List <float>(); //Getting Range float from = float.Parse(fromText.Text), to = float.Parse(toText.Text); //getting eqn string eqn = eqnText.Text; //Scaling Parameters float PANELX = graphPnl.Size.Width; float PANELY = graphPnl.Size.Height; float fMax = float.MinValue; float fMin = float.MaxValue; // Computing Points MathEvaluator me = new MathEvaluator(); float j = from; while (j < to) { string xString = eqn.Replace("x", ("(" + j + ")")); xString = xString.Replace("X", ("(" + j + ")")); float y = (float)me.Evaluate(xString); float x = j; fMax = (y > fMax) ? y : fMax; fMin = (y < fMin) ? y : fMin; xs.Add(x); ys.Add(-(y)); j += 0.001f; } if (from > 0) { from = 0; } if (to < 0) { to = 0; } if (fMax < 0) { fMax = 0; } if (fMin > 0) { fMin = 0; } // Scaling X values float factorX = PANELX / (to - from); for (int i = 0; i < xs.Count; i++) { xs[i] = xs[i] * factorX; } // Scaling Y values float factorY = PANELY / (fMax - fMin); for (int i = 0; i < ys.Count; i++) { ys[i] = ys[i] * factorY; } // Drawing From Computed Data Pen graphPen = new Pen(Color.Red, 3); Pen axisPen = new Pen(Color.White, 3); Graphics g = graphPnl.CreateGraphics(); g.Clear(graphPnl.BackColor); //Draw X axis g.DrawLine(axisPen, 0, (fMax * factorY), PANELX, (fMax * factorY)); //Drawing Y axix g.DrawLine(axisPen, -(from * factorX), 0, -(from * factorX), PANELY); //Drawing Graph for (int i = 1; i < xs.Count; i++) { g.DrawLine(graphPen, xs[i - 1] - (from * factorX), ys[i - 1] + (fMax * factorY), xs[i] - (from * factorX), ys[i] + (fMax * factorY)); } g.Dispose(); }
public void Test10() { double result = MathEvaluator.Evaluate("Sum(3, (10), Sqrt(25), Max(1, 2, 3))"); Assert.AreEqual(21, result); }
public void Test9() { double result = MathEvaluator.Evaluate("Sum(4, Sqrt(25), Max(1, 2, 3))"); Assert.AreEqual(12, result); }
public void Test8() { double result = MathEvaluator.Evaluate("Sum((5), 2)"); Assert.AreEqual(7, result); }
public void Test7() { Assert.AreEqual(-20, MathEvaluator.Evaluate("10*-2")); Assert.AreEqual(-10, MathEvaluator.Evaluate("50/-5")); }
public virtual bool Parse() { Protocol protocol = ProtocolList.Instance.Find(Packet.ProtocolHeader); if (protocol == null) { return(false); } if (string.IsNullOrWhiteSpace(Packet.Data)) { return(false); } string[] array = Packet.Data.Split(splitter); if (array == null) { return(false); } if (array.Length == 0) { return(false); } ReceivedPacketQuery query = new ReceivedPacketQuery() { TerminalId = Packet.TerminalId, ProtocolHeader = Packet.ProtocolHeader, ReceivedOn = DateTimeHelper.CurrentUniversalTime }; if (protocol.PageNumberIndex != -1) { if (array.Length > protocol.PageNumberIndex) { query.PageNumber = int.Parse(array[protocol.PageNumberIndex]); } } Page page = protocol.FindPage(query.PageNumber); if (page == null) { return(false); } List <string> values = new List <string>(); foreach (Parameter mapping in page.Parameters) { try { values.Clear(); foreach (int index in mapping.ParameterIndexes) { values.Add(array[index]); } string value = string.Format(mapping.Expression, values.ToArray()); if (mapping.ParameterType == ParameterType.Id) { query.Id = value; } else if (mapping.DataType == DataType.DateTime) { DateTime datetime = DateTimeHelper.Parse(value, DateTimeFormat.UK.DateTime); query.Fields.Add(new Field(mapping.Field, datetime)); } else if (mapping.Evaluate) { MathEvaluator evaluator = new MathEvaluator(); double val = Math.Round(evaluator.Evaluate(value), mapping.Precision); query.Fields.Add(new Field(mapping.Field, val)); query.AddField(new Field(mapping.Field, val)); } else { if (mapping.EnableDataType && (mapping.DataType == DataType.Integer || mapping.DataType == DataType.Double)) { if (!ConversionHelper.IsNumeric(value)) { // do stuff here } } //query.Fields.Add(new Field(mapping.Field, value)); query.AddField(new Field(mapping.Field, value)); } } catch (Exception ex) { LoggingManager.Log(ex); return(false); } } try { //QueryExecutor.ExecuteWithLock(query.RealTimeQuery()); //QueryExecutor.Execute(query.SiteQuery()); } catch (Exception ex) { LoggingManager.Log(ex); return(false); } try { //QueryExecutor.Execute(query.SiteQuery()); } catch (Exception ex) { LoggingManager.Log(ex); return(false); } return(true); }
public void EvaluateNegative() { double expected = 2d + -1d; double result = eval.Evaluate("2 + -1"); Assert.AreEqual(expected, result); expected = -2d + 1d; result = eval.Evaluate("-2 + 1"); Assert.AreEqual(expected, result); expected = (2d + -1d) * (-1d + 2d); result = eval.Evaluate("(2 + -1) * (-1 + 2)"); Assert.AreEqual(expected, result); }
public void Test6() { Assert.AreEqual(719, MathEvaluator.Evaluate("1 + 6! - 2")); Assert.AreEqual(729, MathEvaluator.Evaluate("10 + 6! - 1")); }