net.sourceforge.webcompmath.functions
Class WrapperFunction

java.lang.Object
  extended by net.sourceforge.webcompmath.functions.FunctionParserExtension
      extended by net.sourceforge.webcompmath.functions.WrapperFunction
All Implemented Interfaces:
java.io.Serializable, ExpressionCommand, Function, MathObject, ParserExtension
Direct Known Subclasses:
WCMDerivativeBean

public class WrapperFunction
extends FunctionParserExtension

A WrapperFunction contains another function and delegates to it all calls to methods from the Function interface, except for calls to setName() and getName(). (It maintains its own name, which can be different from the name of the wrapped Function.) This has at least two uses: A WrapperFunction is a FunctionParserExtension, so it can be added to a parser and then used in expressions parsed in that parser. Second, the function that is wrapped inside the WrapperFunction object can be changed by a call to the setFunction() method. This makes it possible to have a single function that can be used, for example, in ValueMath objects and Graph1D's, whose definition can be changed at will. Note that it is NOT legal to change the arity of the function when calling the setFunction() method.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class net.sourceforge.webcompmath.functions.FunctionParserExtension
name
 
Constructor Summary
WrapperFunction()
          added py PKHG 050415 to make visible construction possible default constructor
WrapperFunction(Function f)
          Create a WrapperFunction object containing a specified function.
 
Method Summary
 void apply(StackOfDouble stack, Cases cases)
          Evaluate the function applied to argument values popped from the stack, and leave the result on the stack.
 boolean dependsOn(Variable x)
          Return true if the definition of this function depends in some way on the variable x.
 Function derivative(int wrt)
          Return the derivative of the function with repect to argument number wrt, where arguments are numbered starting from 1.
 Function derivative(Variable x)
          Return the derivative of the function with respect to the variable x (where x is NOT one of the parameters of the function).
 int getArity()
          Return the number of arguments of this function.
 Function getFunction()
          Return the function that is currently wrapped in this WrapperFunction.
 double getVal(double[] arguments)
          Find the value of the function at the argument value argument[0], ....
 double getValueWithCases(double[] arguments, Cases cases)
          Find the value of the function at the argument values argument[0],....
 void setFunction(Function f)
          Set the function that is contained in this WrapperFunction.
 java.lang.String toString()
          To display the WrapperFunction as text, just return the wrapped function's text
 
Methods inherited from class net.sourceforge.webcompmath.functions.FunctionParserExtension
appendOutputString, compileDerivative, doParse, extent, getName, setName, setParensCanBeOptional
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

WrapperFunction

public WrapperFunction()
added py PKHG 050415 to make visible construction possible default constructor


WrapperFunction

public WrapperFunction(Function f)
Create a WrapperFunction object containing a specified function.

Parameters:
f - The non-null function that will be contained in the WrapperFunction.
Method Detail

setFunction

public void setFunction(Function f)
Set the function that is contained in this WrapperFunction.

Parameters:
f - The non-null function to be used in this WrapperFunction object. It must have the same arity as the current function.

getFunction

public Function getFunction()
Return the function that is currently wrapped in this WrapperFunction.

Returns:
the inside function

getArity

public int getArity()
Return the number of arguments of this function.

Returns:
number of args.

getVal

public double getVal(double[] arguments)
Find the value of the function at the argument value argument[0], .... The number of arguments should match the arity of the function.

Parameters:
arguments - array of args to use
Returns:
the value

getValueWithCases

public double getValueWithCases(double[] arguments,
                                Cases cases)
Find the value of the function at the argument values argument[0],.... Information about "cases" is stored in the Cases parameter, if it is non-null. See the Cases class for more information.

Parameters:
arguments - array of args to use
cases - cases to use
Returns:
the value

derivative

public Function derivative(int wrt)
Return the derivative of the function with repect to argument number wrt, where arguments are numbered starting from 1.

Parameters:
wrt - index of arg. with respect to
Returns:
the derivative

derivative

public Function derivative(Variable x)
Return the derivative of the function with respect to the variable x (where x is NOT one of the parameters of the function).

Parameters:
x - variable with respect to
Returns:
the derivative

dependsOn

public boolean dependsOn(Variable x)
Return true if the definition of this function depends in some way on the variable x. (Note that the function does NOT depend on the variables that are being used as its parameters!)

Parameters:
x - variable to check
Returns:
true or false

apply

public void apply(StackOfDouble stack,
                  Cases cases)
Evaluate the function applied to argument values popped from the stack, and leave the result on the stack. This is not meant to be called directly.

Specified by:
apply in interface ExpressionCommand
Overrides:
apply in class FunctionParserExtension
Parameters:
stack - stack to use
cases - cases to use

toString

public java.lang.String toString()
To display the WrapperFunction as text, just return the wrapped function's text

Overrides:
toString in class java.lang.Object
See Also:
Object.toString()