Search in sources :

Example 11 with ExprPolynomial

use of org.matheclipse.core.polynomials.longexponent.ExprPolynomial in project symja_android_library by axkr.

the class RootsFunctions method rootsOfQuadraticExprPolynomial.

/**
 * Solve a polynomial with degree <= 2.
 *
 * @param expr
 * @param varList
 * @return <code>F.NIL</code> if no evaluation was possible.
 */
private static IAST rootsOfQuadraticExprPolynomial(final IExpr expr, IAST varList) {
    IASTMutable result = F.NIL;
    try {
        // try to generate a common expression polynomial
        ExprPolynomialRing ring = new ExprPolynomialRing(ExprRingFactory.CONST, varList);
        ExprPolynomial ePoly = ring.create(expr, false, false, false);
        ePoly = ePoly.multiplyByMinimumNegativeExponents();
        result = rootsOfQuadraticPolynomial(ePoly);
        if (result.isPresent() && expr.isNumericMode()) {
            for (int i = 1; i < result.size(); i++) {
                result.set(i, F.chopExpr(result.get(i), Config.DEFAULT_ROOTS_CHOP_DELTA));
            }
        }
        result = QuarticSolver.sortASTArguments(result);
        return result;
    } catch (JASConversionException e2) {
        LOGGER.debug("RootsFunctions.rootsOfQuadraticExprPolynomial() failed", e2);
    }
    return result;
}
Also used : ExprPolynomialRing(org.matheclipse.core.polynomials.longexponent.ExprPolynomialRing) IASTMutable(org.matheclipse.core.interfaces.IASTMutable) JASConversionException(org.matheclipse.core.eval.exception.JASConversionException) ExprPolynomial(org.matheclipse.core.polynomials.longexponent.ExprPolynomial)

Aggregations

ExprPolynomial (org.matheclipse.core.polynomials.longexponent.ExprPolynomial)11 ExprPolynomialRing (org.matheclipse.core.polynomials.longexponent.ExprPolynomialRing)11 IAST (org.matheclipse.core.interfaces.IAST)7 IExpr (org.matheclipse.core.interfaces.IExpr)5 JASConversionException (org.matheclipse.core.eval.exception.JASConversionException)4 ExprEvaluator (org.matheclipse.core.eval.ExprEvaluator)2 IASTMutable (org.matheclipse.core.interfaces.IASTMutable)2 ExprMonomial (org.matheclipse.core.polynomials.longexponent.ExprMonomial)2 SyntaxError (org.matheclipse.parser.client.SyntaxError)2 MathException (org.matheclipse.parser.client.math.MathException)2 BigRational (edu.jas.arith.BigRational)1 Complex (edu.jas.poly.Complex)1 ComplexRing (edu.jas.poly.ComplexRing)1 FactorComplex (edu.jas.ufd.FactorComplex)1 JASConvert (org.matheclipse.core.convert.JASConvert)1 JASIExpr (org.matheclipse.core.convert.JASIExpr)1 VariablesSet (org.matheclipse.core.convert.VariablesSet)1 LimitException (org.matheclipse.core.eval.exception.LimitException)1 IASTAppendable (org.matheclipse.core.interfaces.IASTAppendable)1 IComplex (org.matheclipse.core.interfaces.IComplex)1