Note that you can always add new custom functions. Each of the following functions can be applied to objects of the types indicated.
Functions added with addStandardFunctions():Double | Complex | String | Vector | ||
Sine | sin(x) | ![]() |
![]() |
||
Cosine | cos(x) | ![]() |
![]() |
||
Tangent | tan(x) | ![]() |
![]() |
||
Arc Sine | asin(x) | ![]() |
![]() |
||
Arc Cosine | acos(x) | ![]() |
![]() |
||
Arc Tangent | atan(x) | ![]() |
![]() |
||
Arc Tangent (with 2 parameters) | atan2(y, x) | ![]() |
|||
Hyperbolic Sine | sinh(x) | ![]() |
![]() |
||
Hyperbolic Cosine | cosh(x) | ![]() |
![]() |
||
Hyperbolic Tangent | tanh(x) | ![]() |
![]() |
||
Inverse Hyperbolic Sine | asinh(x) | ![]() |
![]() |
||
Inverse Hyperbolic Cosine | acosh(x) | ![]() |
![]() |
||
Inverse Hyperbolic Tangent | atanh(x) | ![]() |
![]() |
||
Natural Logarithm | ln(x) | ![]() |
![]() |
||
Logarithm base 10 | log(x) | ![]() |
![]() |
||
Exponential (e^x) | exp(x) | ![]() |
![]() |
||
Absolute Value / Magnitude | abs(x) | ![]() |
![]() |
||
Random number (between 0 and 1) | rand() | ||||
Modulus | mod(x,y) = x % y | ![]() |
|||
Square Root | sqrt(x) | ![]() |
![]() |
||
Sum | sum(x,y,z) | ![]() |
![]() |
![]() |
|
If | if(cond,trueval,falseval) | ![]() |
|||
Str (number to string) | str(x) | ![]() |
![]() |
![]() |
![]() |
Binomial coefficients | binom(n,i) | Integer values |
Double | Complex | String | Vector | ||
Real Component | re(c) | ![]() |
![]() |
||
Imaginary Component | im(c) | ![]() |
![]() |
||
Complex Modulus (Absolute Value) | cmod(c) | ![]() |
![]() |
||
Argument (Angle of complex value, in radians) | arg(c) | ![]() |
![]() |
||
Complex conjugate | conj(c) | ![]() |
![]() |
||
Complex, constructs a complex number from real and imaginar parts | complex(x,y) | ![]() |
|||
Polar, constructs a complex number from modulus and argument | polar(r,theta) | ![]() |
The following is an example of how a custom function can be added.
Assume you want to add a function "half" to divide a number by two (for demonstration purposes).
public void run(Stack inStack) throws ParseException { // check the stack checkStack(inStack); // get the parameter from the stack Object param = inStack.pop(); // check whether the argument is of the right type
if (param instanceof Double) { // calculate the result
double r = ((Double)param).doubleValue() / 2; // push the result on the inStack
inStack.push(new Double(r));
} else {
throw new ParseException("Invalid parameter type"); } }
parser.addFunction("half", new Half());
Source files