private void ChartAreaValuesView1_AddClicked(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(_expressionTextProvider.Text)) { _errorHandler.DisplayError(Strings.Expression_should_not_be_empty_, Strings.Warning_); return; } if (!AreChartValuesValid) { _errorHandler.DisplayError( $"{Strings.Min_value_needs_to_be_less_than_Max_value}{Environment.NewLine}{Strings.CheckChartAreaValues}: x0, xN, y0, yN.", Strings.Warning_); return; } try { customFunctionsEditor.ClearHighlightedErrors(); CurrentChart.AddFunction(_expressionsEvaluator.Evaluate(_expressionTextProvider.Text, customFunctionsEditor.Text, _calculationsMode)); } catch (Exception ex) { _exceptionsHandler.HandleException(ex); } }
public void HandleException(Exception ex) { HandleCustomFunctionsErrors(ex as CompilationException); var message = ex.Message + Environment.NewLine + (ex.InnerException?.Message ?? ""); _errorHandler.DisplayError(message, Strings.Error); if (!ex.IsInternal()) { _errorHandler.LogError(message, ErrorType.General, ex); } }
private void _view_CalculateClicked(object sender, EventArgs e) { if (_expressionTextProvider.Text != "") { try { _customFunctionsEditor.ClearHighlightedErrors(); var function = _expressionsEvaluator.Evaluate(_expressionTextProvider.Text, _customFunctionsEditor.Text, _calculationsMode); var x = _view.X; var y = _view.Y; var z = new Complex(x, y); dynamic result = function.EvaluateDynamic(x, y); var resultStr = ScriptingExtensions.ToMathString(result); _view.AddResult(_expressionTextProvider.Text, _calculationsMode == CalculationsMode.Complex ? z.ToMathString() : (_calculationsMode == CalculationsMode.Fxy ? $"{x.ToMathString()}, {y.ToMathString()}" : x.ToMathString()), resultStr); } catch (Exception ex) { _exceptionsHandler.HandleException(ex); } } else { _errorHandler.DisplayError(Strings.Expression_should_not_be_empty_, Strings.Warning_); } }
private void _view_ComputeClicked(object sender, EventArgs e) { if (_calculationsMode == CalculationsMode.Real) { try { customFunctionsEditor.ClearHighlightedErrors(); var function = expressionsEvaluator.Evaluate(_expressionTextProvider.Text, customFunctionsEditor.Text, _calculationsMode); Func <double, double> fx = x => function.Evaluate(x); var result = double.NaN; var eps = _view.Epsilon; if (_view.SelectedOperation == Strings.Derivative || _view.SelectedOperation == Strings.Function_root) { if (double.IsNaN(eps)) { _errorHandler.DisplayError(Strings.GivenΕIsNotValid, Strings.Error); return; } if (!(eps > 0.0) || !(eps <= 1)) { _errorHandler.DisplayError( Strings.GivenΕIsNotValidΕShouldBeSmallPositiveNumber, Strings.Error); return; } } var parametersStr = ""; if (_view.SelectedOperation == Strings.Integral) { result = ((dynamic) Convert.ChangeType( NumericalMethodsInfo.Instance._methods[_view.SelectedOperation][_view.SelectedMethod ], _integrationType)) (fx, _view.A, _view.B, _view.N); parametersStr = $"a={_view.A.ToMathString()}; b={_view.B.ToMathString()}; N={_view.N}"; } else if (_view.SelectedOperation == Strings.Derivative) { result = ((dynamic) Convert.ChangeType( NumericalMethodsInfo.Instance._methods[_view.SelectedOperation][_view.SelectedMethod ], _derivationType)) (fx, _view.X, _view.Order, eps); parametersStr = $"n={_view.Order}; x={_view.X.ToMathString()}; ε={eps.ToMathString()}"; } else if (_view.SelectedOperation == Strings.Function_root) { result = ((dynamic) Convert.ChangeType( NumericalMethodsInfo.Instance._methods[_view.SelectedOperation][_view.SelectedMethod ], _functionRootType)) (fx, _view.A, _view.B, eps, _view.N); parametersStr = $"a={_view.A.ToMathString()}; b={_view.B.ToMathString()}; ε={eps.ToMathString()}; N={_view.N}"; } _view.AddResult(_expressionTextProvider.Text, _view.SelectedOperation, _view.SelectedMethod, parametersStr, result.ToMathString()); } catch (Exception ex) { _exceptionsHandler.HandleException(ex); } } else { _errorHandler.DisplayError( Strings .Only_Real_mode_is_supported_in_Numerical_calculations_right_now__more_to_come_in_next_versions_ + Environment.NewLine + Strings.Check__Real___f_x___mode, Strings.Warning_); } }