Package jmathexpr

Examples of jmathexpr.Expression


                denominators.add(p.denominator());
            }
        }
       
        if (!denominators.isEmpty()) { // summing fractions
            Expression lcd = new Lcm(denominators).evaluate();
           
            return new Division(multiply(lcd), lcd).evaluate();
        }
       
        return new Sum(evaluated);
View Full Code Here


        super("exp", arg);
    }

    @Override
    public Expression evaluate() {
        Expression x = arg.evaluate();
       
        if (x instanceof ANumber) {
            if (((ANumber) x).isZero()) {
                return Naturals.one();
            } else if (x instanceof RealNumber) {
View Full Code Here

    }
   
    private Expression build(Expression constant, Map<Expression, List<Expression>> expressionMap) {
        Sum sum = null;
        Map<Expression, List<ANumber>> constants;
        Expression coeff;
       
        if (!expressionMap.isEmpty()) {
            sum = new Sum();
           
            for (Expression e : expressionMap.keySet()) {
View Full Code Here

   
    private Expression toSimpleExpression() {
        if (terms.size() == 1) {
            return terms.get(0);
        } else if (terms.size() == 2) {
            Expression a = terms.get(0);
            Expression b = terms.get(1);
           
            if (b instanceof Negation) {
                return new Subtraction(a, ((Negation) b).getChild());
            } else if (b instanceof ANumber && ((ANumber) b).isNegative()) {
                return new Subtraction(a, ((ANumber) b).negate());
View Full Code Here

        }
    }

    private List<Expression> evaluate(List<Expression> unevaluated) {
        List<Expression> result = new ArrayList();
        Expression evaluated;

        for (Expression t : unevaluated) {
            evaluated = t.evaluate();
           
            if (evaluated instanceof Addition) {
View Full Code Here

        if (pattern instanceof Sum) {
            Sum p = (Sum) pattern;
            boolean matches = true;

            if (terms.size() == p.terms.size()) {
                Expression t;

                for (int i = 0; matches && i < terms.size(); i++) {
                    t = terms.get(i);

                    if (!t.contains((ExpressionPattern) p.terms.get(i))) {
                        matches = false;
                    }
                }
            }
           
            if (matches) {
                return true;
            }
        }
       
        for (Expression t : terms) {
            if (t.contains(pattern)) {
                return true;
            }
        }

        return false;
View Full Code Here

    @Override
    public boolean isApplicable(Rule rule) {
        boolean isApplicable = false;
        List<Expression> subs = new ArrayList();
        Expression t;
       
        subs.addAll(terms);
       
        for (int i = 0; i < subs.size(); i++) {
            t = subs.get(i);
           
            if (t.isApplicable(rule)) {
                isApplicable = true;
                if (rule.isRecursive()) {
                    subs.add(i, rule.subapply());
                }
            }
        }
       
        Expression transformed = isApplicable && rule.isRecursive() ? new Sum(subs) : this;
       
        if (rule.matches(transformed)) {
            return true;
        } else if (isApplicable) {
            rule.register(transformed);
View Full Code Here

            if (terms.size() == 2) {
                if (!((ExpressionPattern) p.lhs()).matches(terms.get(0))) {
                    return false;
                }
               
                Expression t1 = terms.get(1);
               
                if (t1 instanceof Negation) {
                    return ((ExpressionPattern) p.rhs()).matches(((Negation) t1).getChild());
                }
            }
View Full Code Here

        super("exp", arg);
    }

    @Override
    public Expression evaluate() {
        Expression x = arg.evaluate();
       
        if (x instanceof ANumber) {
            ANumber a = (ANumber) x;
           
            if (a.isNegative()) {
View Full Code Here

        super("ln", arg);
    }

    @Override
    public Expression evaluate() {
        Expression x = arg.evaluate();
       
        if (x instanceof ANumber) {
            if (x instanceof RealNumber) {
                return Reals.getInstance().functions().ln((RealNumber) x);
            }
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.