package org.geogebra.common.kernel.arithmetic;
import org.geogebra.common.kernel.StringTemplate;
/**
* Interface for functions in two variables
*/
public interface Evaluate2Var extends ExpressionValue {
/**
* Evaluate at given point, be smart about y for f(y)=y^2
*
* @param x
* value of x (or first variable)
* @param y
* value of y (or first variable)
* @return function value
*/
public double evaluate(double x, double y);
/**
* @return whether this is defined
*/
public boolean isDefined();
/**
* @return expression
*/
public ExpressionNode getFunctionExpression();
/**
* @return function
*/
public FunctionNVar getFunction();
/**
* @param template
* output template
* @return variable string
*/
public String getVarString(StringTemplate template);
/**
* @param x
* first variable value
* @param y
* second variable
* @param factor
* number of factor if multiple factors are present
* @return evaluation result
*/
// public double evaluate(double x, double y, int factor);
/**
* @param val
* variable values
* @param factor
* number of factor if multiple factors are present
* @return evaluation result
*/
// public double evaluate(double[] val, int factor);
}