/** * Instantiates a new complex evaluator. */ public ComplexEvaluator() { this( new ComplexEvalVisitor() ); }
public boolean evaluateFunctionLogical(final FunctionNode functionNode) { if (functionNode.size() > 0 && functionNode.getNode(0) instanceof SymbolNode) { String symbol = functionNode.getNode(0).toString(); if (functionNode.size() == 2) { Object obj = FUNCTION_BOOLEAN_MAP.get(symbol); if (obj instanceof IBooleanBoolean1Function) { return ((IBooleanBoolean1Function) obj).evaluate(evaluateNodeLogical(functionNode.getNode(1))); } } else if (functionNode.size() == 3) { Object obj = FUNCTION_BOOLEAN_MAP.get(symbol); if (obj instanceof IBooleanComplex2Function) { return ((IBooleanComplex2Function) obj).evaluate(evaluateNode(functionNode.getNode(1)), evaluateNode(functionNode.getNode(2))); } else if (obj instanceof IBooleanBoolean2Function) { return ((IBooleanBoolean2Function) obj).evaluate(evaluateNodeLogical(functionNode.getNode(1)), evaluateNodeLogical(functionNode.getNode(2))); } // } else { // Object obj = FUNCTION_BOOLEAN_MAP.get(symbol); // if (obj instanceof IBooleanDoubleFunction) { // return ((IBooleanDoubleFunction) obj).evaluate(this, functionNode); // } } } throw new ArithmeticException("EvalDouble#evaluateFunctionLogical(FunctionNode) not possible for: " + functionNode.toString()); }
functionNode.set(i, new ComplexNode(((NumberNode) functionNode.getNode(i)).doubleValue())); } else if (functionNode.getNode(i) instanceof FunctionNode) { ASTNode optNode = optimizeFunction((FunctionNode) functionNode.getNode(i)); if (!(optNode instanceof ComplexNode)) { complexOnly = false; return new ComplexNode(visit(functionNode)); } catch (Exception e) {
public boolean evaluateNodeLogical(final ASTNode node) { if (node instanceof FunctionNode) { return evaluateFunctionLogical((FunctionNode) node); } if (node instanceof SymbolNode) { BooleanVariable v = fBooleanVariables.get(node.toString()); if (v != null) { return v.getValue(); } Boolean boole = SYMBOL_BOOLEAN_MAP.get(node.toString()); if (boole != null) { return boole.booleanValue(); } } throw new ArithmeticException("EvalDouble#evaluateNodeLogical(ASTNode) not possible for: " + node.toString()); }
Object obj = FUNCTION_BOOLEAN_MAP.get( symbol ); if ( obj instanceof IBooleanBoolean1Function ) { return ((IBooleanBoolean1Function) obj).evaluate( evaluateNodeLogical( functionNode.getNode( 1 ) ) ); Object obj = FUNCTION_BOOLEAN_MAP.get( symbol ); if ( obj instanceof IBooleanComplex2Function ) { return ((IBooleanComplex2Function) obj).evaluate( evaluateNode( functionNode.getNode( 1 ) ), evaluateNode( functionNode.getNode( 2 ) ) ); return ((IBooleanBoolean2Function) obj).evaluate( evaluateNodeLogical( functionNode.getNode( 1 ) ), evaluateNodeLogical( functionNode.getNode( 2 ) ) );
ASTNode optNode = optimizeFunction( (FunctionNode) functionNode.getNode( i ) ); if ( !(optNode instanceof ComplexNode) ) { complexOnly = false; return new ComplexNode( visit( functionNode ) );
/** * Evaluate node logical. * * @param node the node * @return a boolean. */ public boolean evaluateNodeLogical( final ASTNode node ) { if ( node instanceof FunctionNode ) { return evaluateFunctionLogical( (FunctionNode) node ); } if ( node instanceof SymbolNode ) { BooleanVariable v = fBooleanVariables.get( node.toString() ); if ( v != null ) { return v.getValue(); } Boolean boole = SYMBOL_BOOLEAN_MAP.get( node.toString() ); if ( boole != null ) { return boole.booleanValue(); } } throw new ArithmeticException( "EvalDouble#evaluateNodeLogical(ASTNode) not possible for: " + node.toString() ); }
if (symbol.equals("If")) { if (functionNode.size() == 3) { if (evaluateNodeLogical(functionNode.getNode(1))) { return evaluateNode(functionNode.getNode(2)); if (evaluateNodeLogical(functionNode.getNode(1))) { return evaluateNode(functionNode.getNode(2)); } else { return evaluateNode(functionNode.getNode(3)); return ((IComplex1Function) obj).evaluate(evaluateNode(functionNode.getNode(1))); return ((IComplex2Function) obj).evaluate(evaluateNode(functionNode.getNode(1)), evaluateNode(functionNode.getNode(2)));
public ComplexEvaluator() { this(new ComplexEvalVisitor()); }
if ( symbol.equals( "If" ) ) { if ( functionNode.size() == 3 ) { if ( evaluateNodeLogical( functionNode.getNode( 1 ) ) ) { return evaluateNode( functionNode.getNode( 2 ) ); if ( evaluateNodeLogical( functionNode.getNode( 1 ) ) ) { return evaluateNode( functionNode.getNode( 2 ) ); return evaluateNode( functionNode.getNode( 3 ) ); return ((IComplex1Function) obj).evaluate( evaluateNode( functionNode.getNode( 1 ) ) ); return ((IComplex2Function) obj).evaluate( evaluateNode( functionNode.getNode( 1 ) ), evaluateNode( functionNode.getNode( 2 ) ) );