Package com.singularsys.jep.misc
Class MacroFunction
java.lang.Object
com.singularsys.jep.functions.PostfixMathCommand
com.singularsys.jep.misc.MacroFunction
- All Implemented Interfaces:
JepComponent
,PostfixMathCommandI
,Serializable
A function specified by a string.
For example
MacroFunction fact = new MacroFunction( "fact",new String[]{"x"}, "if(x>1,x*fact(x-1),1)"); jep.addFunction("fact",fact); fact.init(jep); Node n = jep.parse("fact(5)");
- Author:
- R Morris.
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionprotected Evaluator
protected final String
protected final int
protected final Node
protected Node
protected final String[]
protected Variable[]
Fields inherited from class com.singularsys.jep.functions.PostfixMathCommand
curNumberOfParameters, name, NaN, numberOfParameters
-
Constructor Summary
ConstructorDescriptionMacroFunction
(Jep jep, String funName, String[] parameters, String expression) Create a macro function with two or more arguments defined by an expression.MacroFunction
(Jep jep, String funName, String parameter, String expression) Create a macro function with a single arguments defined by an expression.MacroFunction
(String funName, String[] parameters, String expression) Create a macro function with two or more arguments defined by an expression.MacroFunction
(String funName, String[] parameters, String expression, Node root) Create a MacroFunction with a node tree. -
Method Summary
Modifier and TypeMethodDescriptionReturns a new copy of the function, uses theMacroFunction(String, String[], String, Node)
constructor.String[]
Variable[]
getVars()
Get the internal variables used, these have specific names like 'fun::x'void
The init method must be called after construction.void
Calculates the value of the expression.toString()
Methods inherited from class com.singularsys.jep.functions.PostfixMathCommand
asArray, asBool, asDouble, asInt, asLong, asStrictInt, asString, checkNumberOfParameters, getName, getNumberOfParameters, setCurNumberOfParameters, setName, toString
-
Field Details
-
nParam
protected final int nParam -
varNames
-
expression
-
preCompiled
-
topNode
-
ev
-
vars
-
-
Constructor Details
-
MacroFunction
Create a macro function with two or more arguments defined by an expression.- Parameters:
jep
- The jep instancefunName
- name of the functionparameters
- an array of the formal parameter names used by the functionexpression
-- Since:
- 3.4.0
-
MacroFunction
Create a macro function with a single arguments defined by an expression.- Parameters:
jep
- The jep instancefunName
- name of the functionparameter
- the name of the formal parameter.expression
-- Since:
- 3.4.0
-
MacroFunction
Create a macro function with two or more arguments defined by an expression. Use this method for recursive functions like factorial. Theinit(Jep)
method must be called after the function is added to the function table, which will recompile the function.- Parameters:
funName
- name of the functionparameters
- an array of the formal parameter names used by the functionexpression
-
-
MacroFunction
Create a MacroFunction with a node tree. The ImportationVisitor is used to convert the tree into context for this object.- Parameters:
funName
- function nameparameters
- list of parametersexpression
- string representation of equationroot
- root of expressions tree.- Since:
- 4.0
-
-
Method Details
-
init
The init method must be called after construction.- Specified by:
init
in interfaceJepComponent
- Parameters:
j
- jep instance- Throws:
RuntimeException
- if errors compiling the expression.
-
run
Calculates the value of the expression.- Specified by:
run
in interfacePostfixMathCommandI
- Overrides:
run
in classPostfixMathCommand
- Parameters:
stack
- arguments for function- Throws:
EvaluationException
- if the calculation cannot be performed
-
getTopNode
-
getParameterNames
-
getVars
Get the internal variables used, these have specific names like 'fun::x'- Returns:
- list of variables
-
toString
- Overrides:
toString
in classPostfixMathCommand
-
getLightWeightInstance
Returns a new copy of the function, uses theMacroFunction(String, String[], String, Node)
constructor.- Specified by:
getLightWeightInstance
in interfaceJepComponent
- Returns:
- either a new instance, null or 'this'.
-