/** * {@inheritDoc} */ @Override public void increment(final IExpr d) { value = F.eval(F.Times(value, d)); n++; }
@Override public IExpr evaluateArg1(final IExpr arg1) { if (isNegativeExpression(arg1)) { return Cos(Times(CN1, arg1)); } return null; }
@Override public IExpr evaluateArg1(final IExpr arg1) { if (isNegativeExpression(arg1)) { return Cosh(Times(CN1, arg1)); } return null; }
private IExpr tryToReduceNumericFactor(IAST ast, IExpr temp, IExpr arg1, int i) { IExpr expandedAst = tryTransformations((IAST) temp, F.Times(arg1, temp)); if (expandedAst != null) { IAST result = F.Times(); ast.range(2, ast.size()).toList(result); result.set(i - 1, expandedAst); return result; } return null; } }
@Override public IExpr e2ObjArg(final IExpr o0, final IExpr o1) { if (o0.isList() && o1.isList()) { final IAST v0 = (IAST) o0; final IAST v1 = (IAST) o1; if ((v0.size() == 4) || (v1.size() == 4)) { return List(Plus(Times(v0.get(2), v1.get(3)), Times(F.CN1, v0.get(3), v1.get(2))), Plus(Times(v0.get(3), v1.get(1)), Times( F.CN1, v0.get(1), v1.get(3))), Plus(Times(v0.get(1), v1.get(2)), Times(F.CN1, v0.get(2), v1.get(1)))); } } return null; }
public IExpr evaluate(final IAST ast) { if (ast.size() == 2) { final long begin = System.currentTimeMillis(); final EvalEngine engine = EvalEngine.get(); final IExpr result = engine.evaluate(ast.get(1)); return List(Times(FractionSym.valueOf((System .currentTimeMillis() - begin), 1000L), F.Second), result); } return null; }
private IAST expandTimesPlus(final IExpr expr1, final IAST plusAST) { // expr*(a+b+c) -> expr*a+expr*b+expr*c final IAST pList = Plus(); for (int i = 1; i < plusAST.size(); i++) { pList.add(F.Times(expr1, plusAST.get(i))); } return pList; }
@Override default IExpr subtract(IExpr that) { if (that.isZero()) { return this; } EvalEngine engine = EvalEngine.get(); if (engine.isTogetherMode() && (this.isPlusTimesPower() || that.isPlusTimesPower())) { return engine.evaluate(F.Together(F.Plus(this, F.Times(F.CN1, that)))); } return engine.evaluate(F.Plus(this, F.Times(F.CN1, that))); }
private IAST expandTimesPlus(final IAST plusAST0, final IAST plusAST1) { // (a+b)*(c+d) -> a*c+a*d+b*c+b*d final IAST pList = Plus(); for (int i = 1; i < plusAST0.size(); i++) { plusAST1.args().map(pList, Functors.replace2nd(Times(plusAST0.get(i), F.Null))); } return pList; }
public IExpr minus(final IExpr that) { if (this.isNumber() && that.isNumber()) { return F.eval(F.Plus(this, ((INumber) that).opposite())); } if (that.isNumber()) { return F.Plus(this, ((INumber) that).opposite()); } return F.Plus(this, F.Times(F.CN1, that)); }