JEP is a Java library for parsing and evaluating mathematical expressions. Metrology.NET is using JEP for Java version 2-23. Under a GPL license agreement. This package takes formulas as strings, and instantly evaluate them. Many common mathematical functions and constants are built-in and ready to use for the uncertainty calculations.
To learn more about JEP
http://www.singularsys.com/jep/doc/html/index.html
Supported Functions
Trigonometric Functions
All functions accept arguments of the Double
and Complex
type, except atan2
which only accepts Double
arguments.
Description | Function Name | Class Name |
---|---|---|
Sine | sin(x) | Sine |
Cosine | cos(x) | Cosine |
Tangent | tan(x) | Tangent |
Arc Sine2 | asin(x) | ArcSine |
Arc Cosine2 | acos(x) | ArcCosine |
Arc Tangent | atan(x) | ArcTangent |
Arc Tan with 2 parameters | atan2(y, x) | ArcTangent2 |
Secant | sec(x) | Secant |
Cosecant | cosec(x) | Cosecant |
Co-tangent | cot(x) | Cotangent |
Hyperbolic Sine | sinh(x) | SineH |
Hyperbolic Cosine | cosh(x) | CosineH |
Hyperbolic Tangent | tanh(x) | TanH |
Inverse Hyperbolic Sine | asinh(x) | ArcSineH |
Inverse Hyperbolic Cosine1 | acosh(x) | ArcCosineH |
Inverse Hyperbolic Tangent1 | atanh(x) | ArcTanH |
Log and Exponential Functions
All functions accept arguments of the Double and Complex types.
Description | Function Name | Class Name |
---|---|---|
Natural Logarithm1 | ln(x) | NaturalLogarithm |
Logarithm base 101 | log(x) | Logarithm |
Logarithm base 21 | lg(x) | LogBase2 |
Exponential (e^x) | exp(x) | Exp |
Power1 | pow(x) | Power |
Statistical Functions
All functions accept either a vector (e.g. min([1,2,3])
) or a set of numbers (e.g. min(1,2,3)
).
Description | Function Name | Class Name |
---|---|---|
Average | avg(x1,x2,x3,…) | Average |
Minimum | min(x1,x2,x3,…) | MinMax(true) |
Maximum | max(x1,x2,x3,…) | MinMax(false) |
Vector Sum | vsum(x1,x2,x3,…) | VSum |
Rounding Functions
Description | Function Name | Class Name |
---|---|---|
Round | round(x), round(x, p) | Round |
Round to integer | rint(x), rint(x, p) | RInt |
Floor | floor(x) | Floor |
Ceiling | ceil(x) | Ceil |
Miscellaneous Functions
Description | Function Name | Class Name |
---|---|---|
If | if(cond, trueval, falseval) | If |
Str (convert number to string) | str(x) | Str |
Absolute Value / Magnitude | abs(x) | Abs |
Random number (between 0 and 1) |
rand() | Random |
Modulus | mod(x,y) = x % y |
Modulus |
Square Root1 | sqrt(x) | SquareRoot |
Sum | sum(x,y,…) | Sum |
Binomial coefficients | binom(n, i) | Binomial |
Signum (-1,0,1 depending on sign of argument) |
signum(x) | Signum |
Complex Functions
Description | Function Name | Class Name |
---|---|---|
Real Component | re(c) | Real |
Imaginary Component | im(c) | Imaginary |
Complex Modulus (Absolute Value) | cmod(c) | Abs |
Argument (Angle of complex value, in radians) | arg(c) | Arg |
Complex conjugate | conj(c) | Conjugate |
Complex, constructs a complex number from real and imaginary parts | complex(x, y) | ComplexPFMC |
Polar, constructs a complex number from modulus and argument | polar(r, theta) | Polar |
Notes
1 By default functions like sqrt(-1)
will return a complex result. These functions have constructors with a flag to control their behaviour for out of range values, if the flag is true, then the function will return Double.NaN
for out of range real values. If the flag is false they will return the appropriate complex result.
2 By default functions like acos(2)
will return Double.NaN
. A constructor is available which sets a flag to make the function return the appropriate complex result for such cases.
String Functions
The following string functions are not included in the standard configuration. They can however be added by loading the StringFunctionSet component using jep.setComponent(new StringFunctionSet())
before parsing expressions. The individual functions can also be added using jep.addFunction()
.
Description | Function Name | Class Name |
---|---|---|
Left | left(str, len) | Left |
Right | right(str, len) | Right |
Middle | mid(str, start, len) | Mid |
Substring | substr(str, start, [end]) | Substring |
Lower Case | lower(str) | LowerCase |
Upper Case | upper(str) | UpperCase |
Length | len(str) | Length |
Trim | trim(str) | Trim |
Optional Functions
These functions are not included in the standard configuration, but can be added using jep.addFunction()
.
In com.singularsys.jep.misc.functions:
Class | Description |
---|---|
LogTwoArg | Two argument log function where second argument is the base. |
Remainder | Calculates the remainder and quotient the arguments. Constructors allow different conventions for remainder to be used. |
RoundSF | Rounds arguments to a specific number of significant figures. |
ToBase | Converts numbers to a string in a given base. |
FromBase | Converts a string in a given base to numbers. |
Switch | A switch statement. Returns the value of the argument based on the value of the first argument. |
SwitchDefault | A switch statement with a default value as final argument. |
Case | A case statement, first argument is test condition, following arguments are in pairs with a test value and corresponding result. |
IsNull | Tests if the argument is null. |
IsNaN | Tests if the argument is NaN. |
IsInfinite | Tests if the argument is infinite. |
IsType | Test is the argument is of the type specifies in the constructor. E.g. isDouble(x) |
In com.singularsys.jep.functions:
Class | Description |
---|---|
Identity | Returns its argument. |
ConstantFunction | Returns a constant specified in the constructor. E.g. pi() |