/** * Get the range of elements [start..end[ of the AST * * @return */ public ASTRange range(final int start, final int end) { return new ASTRange(this, start, end); }
/** * {@inheritDoc} */ public ASTRange args() { return new ASTRange(this, 1); }
/** * Get the range of elements [start..sizeOfAST[ of the AST * * @return */ public ASTRange range(final int start) { return new ASTRange(this, start, size()); }
/** * Get the range of elements [0..sizeOfAST[ of the AST * * @return */ public ASTRange range() { return new ASTRange(this, 0, size()); }
/** * {@inheritDoc} */ public IAST filter(IAST filterAST, IAST restAST, Predicate<IExpr> predicate) { return (new ASTRange(this, 1, size())).filter(filterAST, restAST, predicate); }
/** * {@inheritDoc} */ public IAST filter(IAST filterAST, Predicate<IExpr> predicate) { return (new ASTRange(this, 1, size())).filter(filterAST, predicate); }
/** * {@inheritDoc} */ public IAST[] split(final Function<IExpr, IExpr> function) { IAST[] result = new IAST[2]; result[0] = copyHead(); result[1] = copyHead(); new ASTRange(this, 1, size()).filter(result[0], result[1], function); return result; }
/** * {@inheritDoc} */ public IAST[] split(Predicate<IExpr> predicate) { IAST[] result = new IAST[2]; result[0] = copyHead(); result[1] = copyHead(); new ASTRange(this, 1, size()).filter(result[0], result[1], predicate); return result; }
public static boolean polynomialQ(final IExpr polnomialExpr, final IAST variables) { try { IExpr expr = F.evalExpandAll(polnomialExpr); ASTRange r = new ASTRange(variables, 1); JASConvert<IExpr> jas = new JASConvert<IExpr>(r.toList(), new ExprRingFactory()); return jas.expr2IExprJAS(expr) != null; } catch (JASConversionException e) { // exception will be thrown if the expression is not a JAS polynomial } return false; }
IExpr exprNumerator = F.evalExpandAll(parts[0]); IExpr exprDenominator = F.evalExpandAll(parts[1]); ASTRange r = new ASTRange(variableList, 1); List<IExpr> varList = r.toList();
@Override public IExpr evaluate(final IAST ast) { Validate.checkSize(ast, 2); ExprVariables eVar = new ExprVariables(ast.get(1)); if (!eVar.isSize(1)) { throw new WrongArgumentType(ast, ast.get(1), 1, "Factorization only implemented for univariate polynomials"); } try { IExpr expr = F.evalExpandAll(ast.get(1)); ASTRange r = new ASTRange(eVar.getVarList(), 1); List<IExpr> varList = r.toList(); // if (ast.size() == 3) { // return factorWithOption(ast, expr, varList, true); // } return factorList(expr, varList, true); } catch (JASConversionException jce) { // toInt() conversion failed if (Config.DEBUG) { jce.printStackTrace(); } } return null; }
@Override public IExpr evaluate(final IAST ast) { if (ast.size() != 2 && ast.size() != 3) { return null; } ExprVariables eVar = new ExprVariables(ast.get(1)); // if (!eVar.isSize(1)) { // throw new WrongArgumentType(ast, ast.get(1), 1, // "Factorization only implemented for univariate polynomials"); // } try { IExpr expr = F.evalExpandAll(ast.get(1)); ASTRange r = new ASTRange(eVar.getVarList(), 1); List<IExpr> varList = r.toList(); if (ast.size() == 3) { return factorWithOption(ast, expr, varList, false); } return factor(expr, varList, false); } catch (JASConversionException e) { if (Config.DEBUG) { e.printStackTrace(); } } return null; }
@Override public IExpr evaluate(final IAST ast) { Validate.checkRange(ast, 2, 3); ExprVariables eVar = new ExprVariables(ast.get(1)); if (!eVar.isSize(1)) { throw new WrongArgumentType(ast, ast.get(1), 1, "Factorization only implemented for univariate polynomials"); } try { IExpr expr = F.evalExpandAll(ast.get(1)); ASTRange r = new ASTRange(eVar.getVarList(), 1); List<IExpr> varList = r.toList(); if (ast.size() == 3) { return factorWithOption(ast, expr, varList, true); } return factor(expr, varList, true); } catch (JASConversionException jce) { // toInt() conversion failed if (Config.DEBUG) { jce.printStackTrace(); } } return null; }
ASTRange r = new ASTRange(eVar.getVarList(), 1); JASConvert<BigRational> jas = new JASConvert<BigRational>(r.toList(), BigRational.ZERO); GenPolynomial<BigRational> p1 = jas.expr2JAS(poly1);
public static IExpr[] quotientRemainder(final IAST lst) { try { ExprVariables eVar = new ExprVariables(lst.get(1)); eVar.addVarList(lst.get(2)); IExpr expr = F.evalExpandAll(lst.get(1)); ASTRange r = new ASTRange(eVar.getVarList(), 1); JASConvert<BigRational> jas = new JASConvert<BigRational>(r.toList(), BigRational.ZERO); GenPolynomial<BigRational> poly1 = jas.expr2JAS(expr); expr = F.evalExpandAll(lst.get(2)); GenPolynomial<BigRational> poly2 = jas.expr2JAS(expr); GenPolynomial<BigRational>[] divRem = poly1.quotientRemainder(poly2); IExpr[] result = new IExpr[2]; result[0] = jas.rationalPoly2Expr(divRem[0]); result[1] = jas.rationalPoly2Expr(divRem[1]); return result; } catch (JASConversionException e) { if (Config.DEBUG) { e.printStackTrace(); } } return null; }
ASTRange r = new ASTRange(variableList, 1); JASConvert<BigRational> jas = new JASConvert<BigRational>(r.toList(), BigRational.ZERO); GenPolynomial<BigRational> poly = jas.expr2JAS(expr);
ASTRange r = new ASTRange(eVar.getVarList(), 1); List<IExpr> varList = r.toList();
ASTRange r = new ASTRange(variables, 1); List<IExpr> varList = r.toList(); try {
ASTRange r = new ASTRange(eVar.getVarList(), 1); List<IExpr> varList = r.toList();
ASTRange r = new ASTRange(eVar.getVarList(), 1); IExpr expr = F.evalExpandAll(ast.get(1)); if (ast.size() > 3) {