System.err.println( e.getMessage() );
System.err.println(e.getMessage()); } catch (Exception e) { e.printStackTrace();
return e.getMessage(); } catch (final Exception e) { if (e instanceof ExceptionContextProvider) {
return e.getMessage();
@Override public IExpr evaluate(final IAST ast, EvalEngine engine) { Validate.checkRange(ast, 2, 3); try { if (ast.size() == 2) { IExpr arg1 = engine.evaluate(ast.arg1()); if (arg1.isString()) { return IQuantity.of(F.C1, IUnit.of(arg1.toString())); } } if (ast.size() == 3) { IExpr arg1 = engine.evaluate(ast.arg1()); IExpr arg2 = engine.evaluate(ast.arg2()); if (arg2.isString()) { return IQuantity.of(arg1, IUnit.of(arg2.toString())); } } } catch (MathException e) { engine.printMessage("Quantity: " + e.getMessage()); if (Config.SHOW_STACKTRACE) { e.printStackTrace(); } } return F.NIL; }
@Override public IExpr evaluate(final IAST ast, EvalEngine engine) { Validate.checkRange(ast, 2, 3); try { if (ast.size() == 2) { IExpr arg1 = engine.evaluate(ast.arg1()); if (arg1.isQuantity()) { return UnitSystem.SI().apply(arg1); } } else if (ast.size() == 3) { IExpr arg1 = engine.evaluate(ast.arg1()); IExpr arg2 = engine.evaluate(ast.arg2()); if (arg1.isQuantity()) { ch.ethz.idsc.tensor.qty.UnitConvert unitConvert = ch.ethz.idsc.tensor.qty.UnitConvert.SI(); IUnit unit = IUnit.of(arg2.toString()); return unitConvert.to(unit).apply(arg1); } } } catch (MathException e) { engine.printMessage("UnitConvert: " + e.getMessage()); if (Config.SHOW_STACKTRACE) { e.printStackTrace(); } } return F.NIL; }
@Override public IExpr evaluate(final IAST ast, EvalEngine engine) { Validate.checkRange(ast, 2, 3); try { if (ast.size() == 2) { IExpr arg1 = engine.evaluate(ast.arg1()); if (arg1.isQuantity()) { return ((IAST) arg1).arg1(); } } else if (ast.size() == 3) { IExpr arg1 = engine.evaluate(ast.arg1()); IExpr arg2 = engine.evaluate(ast.arg2()); if (arg1.isQuantity()) { ch.ethz.idsc.tensor.qty.QuantityMagnitude quantityMagnitude = ch.ethz.idsc.tensor.qty.QuantityMagnitude .SI(); IUnit unit = IUnit.of(arg2.toString()); UnaryOperator<IExpr> suo = quantityMagnitude.in(unit); return suo.apply(arg1); } } } catch (MathException e) { engine.printMessage("QuantityMagnitude: " + e.getMessage()); if (Config.SHOW_STACKTRACE) { e.printStackTrace(); } } return F.NIL; }
public static IExpr evalApply(IExpr f, IExpr expr, IAST evaledAST, int lastIndex, boolean heads, EvalEngine engine) { java.util.function.Function<IExpr, IExpr> af = x -> x.isAST() ? ((IAST) x).setAtCopy(0, f) : F.NIL; try { VisitorLevelSpecification level = null; if (lastIndex == 3) { level = new VisitorLevelSpecification(af, evaledAST.get(lastIndex), heads, engine); } else { level = new VisitorLevelSpecification(af, 0); } if (!expr.isAtom()) { return expr.accept(level).orElse(expr); } else { // arg2 is an Atom to which the head f couldn't be applied if (evaledAST.size() >= 3) { if (f.isFunction()) { return F.unaryAST1(f, expr); } return expr; } } } catch (final MathException e) { engine.printMessage(e.getMessage()); } catch (final ArithmeticException e) { } return F.NIL; }
@Override public IExpr numericEval(final IAST ast, EvalEngine engine) { Validate.checkSize(ast, 4); if (ast.arg1().isList() && ast.arg2().isReal() && ast.arg3().isSymbol()) { int polynomialDegree = ast.arg2().toIntDefault(Integer.MIN_VALUE); if (polynomialDegree > 0) { AbstractCurveFitter fitter = PolynomialCurveFitter.create(polynomialDegree); IAST data = (IAST) ast.arg1(); WeightedObservedPoints obs = new WeightedObservedPoints(); if (addWeightedObservedPoints(data, obs)) { try { return Convert.polynomialFunction2Expr(fitter.fit(obs.toList()), (ISymbol) ast.arg3()); } catch (MathException ex) { engine.printMessage("Fit: " + ex.getMessage()); } } } } return F.NIL; } }
@Override public IExpr evaluate(final IAST ast, EvalEngine engine) { Validate.checkRange(ast, 3, 5); int lastIndex = ast.argSize(); boolean heads = false; final Options options = new Options(ast.topHead(), ast, lastIndex, engine); IExpr option = options.getOption("Heads"); if (option.isPresent()) { lastIndex--; if (option.isTrue()) { heads = true; } } else { Validate.checkRange(ast, 3, 4); } try { IExpr arg1 = ast.arg1(); IExpr arg2 = ast.arg2(); VisitorLevelSpecification level; if (lastIndex == 3) { level = new VisitorLevelSpecification(x -> F.unaryAST1(arg1, x), ast.get(lastIndex), heads, engine); } else { level = new VisitorLevelSpecification(x -> F.unaryAST1(arg1, x), 1, heads); } return arg2.accept(level).orElse(arg2); } catch (final MathException e) { engine.printMessage(e.getMessage()); } return F.NIL; }
@Override public IExpr evaluate(final IAST ast, EvalEngine engine) { Validate.checkRange(ast, 3, 4); int lastIndex = ast.argSize(); boolean heads = false; final Options options = new Options(ast.topHead(), ast, lastIndex, engine); IExpr option = options.getOption("Heads"); if (option.isPresent()) { lastIndex--; if (option.isTrue()) { heads = true; } } try { IExpr arg1 = ast.arg1(); IndexedLevel level; if (lastIndex == 3) { level = new IndexedLevel((x, y) -> F.binaryAST2(arg1, x, y), ast.get(lastIndex), heads, engine); } else { level = new IndexedLevel((x, y) -> F.binaryAST2(arg1, x, y), 1, heads); } IExpr arg2 = ast.arg2(); if (arg2.isAST()) { return level.visitAST(((IAST) arg2), new int[0]).orElse(arg2); } } catch (final MathException e) { engine.printMessage(e.getMessage()); } return F.NIL; }
@Override public IExpr numericEval(final IAST ast, EvalEngine engine) { Validate.checkSize(ast, 5); if (ast.arg1().isList() && ast.arg3().isList() && ast.arg4().isSymbol()) { IAST data = (IAST) ast.arg1(); IExpr function = ast.arg2(); IAST listOfSymbols = (IAST) ast.arg3(); ISymbol x = (ISymbol) ast.arg4(); double[] initialGuess = new double[listOfSymbols.size() - 1]; listOfSymbols = initialGuess(listOfSymbols, initialGuess); if (listOfSymbols.isPresent()) { try { IExpr gradientList = F.Grad.of(engine, function, listOfSymbols); if (gradientList.isList()) { AbstractCurveFitter fitter = SimpleCurveFitter.create(new FindFitParametricFunction( function, (IAST) gradientList, listOfSymbols, x, engine), initialGuess); WeightedObservedPoints obs = new WeightedObservedPoints(); if (addWeightedObservedPoints(data, obs)) { double[] values = fitter.fit(obs.toList()); return convertToRulesList(listOfSymbols, values); } } } catch (MathException ex) { engine.printMessage("FindFit: " + ex.getMessage()); } } } return F.NIL; } }