package org.matheclipse.core.eval.interfaces;
import org.matheclipse.core.interfaces.IAST;
import org.matheclipse.core.interfaces.IEvaluator;
import org.matheclipse.core.interfaces.IExpr;
/**
* Common interface for built-in Symja functions.
*
*/
public interface IFunctionEvaluator extends IEvaluator {
/**
* Symbolic evaluation of a function. ast.get(0) contains the head (i.e. the function symbol) of this
* abstract syntax tree (AST). ast.get(1) to ast.get(n) contains the first to n-th argument of the
* function.
* If necessary use the methods from the Validate class to check the number or types of arguments in the evaluate
* method.
* Note: if the symbolic evaluation isn't possible or no result is found the evaluate method returns with a
* null value without throwing an exception!
*
* @param ast
* the abstract syntax tree (AST) which should be evaluated
* @return the evaluated object or null, if evaluation isn't possible
* @see org.matheclipse.core.eval.exception.Validate
*/
public IExpr evaluate(IAST ast);
/**
* Numeric evaluation of a function. ast.get(0) contains the head (i.e. the function symbol) of this
* abstract syntax tree (AST). ast.get(1) to ast.get(n) contains the first to n-th argument of the
* function.
* If necessary use the methods from the Validate class to check the number or types of arguments in the evaluate
* method.
*
* @param ast
* the abstract syntax tree (AST) which should be evaluated
* @return the evaluated object or null, if evaluation isn't possible
* @see org.matheclipse.core.eval.exception.Validate
*/
public IExpr numericEval(IAST ast);
}
Ads help maintain this website.