Package jmathexpr

Examples of jmathexpr.Expression


        super(lhs, rhs, Sign.Multiplication);
    }
   
    @Override
    public Expression evaluate() {
        Expression simplified = simplify();
       
        if (!(simplified instanceof Multiplication)) return simplified;
       
        Expression l = ((Multiplication) simplified).lhs;
        Expression r = ((Multiplication) simplified).rhs;
       
        if (l instanceof ANumber && r instanceof ANumber) {
            return ((ANumber) l).multiply((ANumber) r);
        } else if (l instanceof Polynomial) {
            if (r.isConstant()) {
                return ((Polynomial) l).multiply(r);
            }
        }

        return new Multiplication(l, r);
View Full Code Here


            return true;
        }

        @Override
        public Expression apply() {
            Expression dd = p.discriminant();
           
            ExpressionContext.getInstance().addExpression(new Equality(Numbers.constant("D"), dd));
           
            dd = dd.evaluate();
           
            ExpressionContext.getInstance().addExpression(new Equality(Numbers.constant("D"), dd));
           
            Expression a = p.getCoefficient(2);
            Expression b = p.getCoefficient(1);
            Expression c = p.getCoefficient(0);
            NaturalNumber two = Naturals.getInstance().create(2);
           
            if (dd instanceof ANumber) {
                ANumber d = (ANumber) dd;
               
                if (d.isNegative()) {
                    return new EmptySet();
                } else if (d.isZero()) {
                    return new FiniteSet(new Division(new Negation(b),
                            new Multiplication(two, a)).evaluate());
                }
            }
           
            Expression sd = new Sqrt(dd);
            Expression x1 = new Division(
                    new Addition(new Negation(b), sd),
                    new Multiplication(two, a));
            Expression x2 = new Division(
                    new Subtraction(new Negation(b), sd),
                    new Multiplication(two, a));
           
            ExpressionContext.getInstance().addExpression(new Equality(Numbers.variable("x", 1), x1));
            ExpressionContext.getInstance().addExpression(new Equality(Numbers.variable("x", 2), x2));
           
            x1 = x1.evaluate();
            x2 = x2.evaluate();
           
            ExpressionContext.getInstance().addExpression(new Equality(Numbers.variable("x", 1), x1));
            ExpressionContext.getInstance().addExpression(new Equality(Numbers.variable("x", 2), x2));
           
            return new FiniteSet(x1, x2);
View Full Code Here

        return new Multiplication(l, r);
    }
   
    private Expression simplify() {
        Expression l = lhs.evaluate();
        Expression r = rhs.evaluate();
       
        if (l instanceof ANumber && ((ANumber)l).isZero()) {
            return Naturals.zero();
        } else if (r instanceof ANumber && ((ANumber)r).isZero()) {
            return Naturals.zero();
        } else if (l instanceof ANumber && ((ANumber)l).isOne()) {
            return r;
        } else if (r instanceof ANumber && ((ANumber)r).isOne()) {
            return l;
        }
       
        Expression two = Naturals.getInstance().create(2);
       
        if (l instanceof ANumber) {
            ANumber a = (ANumber) l;
           
            if (a.negate().isOne()) {
View Full Code Here

     */
    private class LeftMultiplication extends SubRule {

        @Override
        public boolean matches(Expression expr) {
            Expression atb = new Multiplication(a, b);
           
            return new Multiplication(atb, c).matches(expr);
        }
View Full Code Here

     */
    private class RightMultiplication extends SubRule {

        @Override
        public boolean matches(Expression expr) {
            Expression btc = new Multiplication(b, c);
           
            return new Multiplication(a, btc).matches(expr);
        }
View Full Code Here

    }
   
    @Override
    public boolean isApplicable(Rule rule) {
        boolean isApplicable = false;
        Expression transformed = this;
       
        if (rule.isRecursive()) {
            Expression l = lhs, r = rhs;
           
            if (lhs.isApplicable(rule)) {
                isApplicable = true;
                if (rule.isRecursive()) l = rule.subapply();
            }
View Full Code Here

            }

            @Override
            public Expression apply() {
                Equality eq = (Equality) target;
                Expression lhs = Sum.subtract(eq.lhs(), a.hit());
                Expression rhs = Sum.subtract(eq.rhs(), a.hit());

                return new Equality(lhs, rhs);
            }
View Full Code Here

     * @return a set of equation roots
     * @throws jmathexpr.number.equation.EquationSolveException iff no more matching
     * rule can be found while solving the equation
     */
    public Set execute() throws EquationSolveException {
        Expression result;
       
        actual = equation;
        addToContext(actual);
       
        actual = new Equality(actual.lhs().evaluate(), actual.rhs().evaluate()); // simplify both sides
View Full Code Here

        super(lhs, rhs, RelationSymbol.ElementOf);
    }
   
    @Override
    public Expression evaluate() {
        Expression l = lhs.evaluate();
        Expression r = rhs.evaluate();
       
        if (r instanceof Set) {
            return ((Set) r).contains(l);
        } else {
            return new ElementOf(l, r);
View Full Code Here

    public void exitLet(ExpressionsParser.LetContext ctx) {
        Set domain = (Set) stack.pop();
        Variable tmp = (Variable) stack.pop();
       
        Variable x = new Variable(tmp.name(), domain);
        Expression contains = new ElementOf(x, domain);
       
        statement = new Statement(Command.Let, contains);
       
        ExpressionContext.getInstance().addVariable(x);
        stack.push(contains);
View Full Code Here

TOP

Related Classes of jmathexpr.Expression

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.