--- /dev/null
+package de.congrace.exp4j;
+
+import java.util.List;
+
+public class Example {
+
+ public static void main(String[] args) throws UnknownFunctionException, UnparsableExpressionException, InvalidCustomFunctionException {
+
+ // Test 1
+ // ======
+
+ Calculable calc1 = new ExpressionBuilder("x * y - 2").withVariableNames("x", "y").build();
+ calc1.setVariable(new Variable("x", 1.2));
+ calc1.setVariable(new Variable("y", 2.2));
+
+ System.out.println(calc1.calculate().toString());
+ //double result = calc1.calculate().getDoubleValue();
+ //System.out.println(result);
+
+ // Test 2
+ // ======
+
+ // A function which calculates the mean of an array and scales it
+ CustomFunction meanFn = new CustomFunction("mean",2) {
+ public Variable applyFunction(List<Variable> vars) {
+
+ double[] vals;
+ double scale;
+
+ try{
+ vals = vars.get(0).getArrayValue();
+ scale = vars.get(1).getDoubleValue();
+ } catch (Exception e) {
+ return new Variable("Invalid");
+ }
+
+ double subtotal = 0;
+ for (int i = 0; i < vals.length; i++ ){
+ subtotal += vals[i];
+ }
+
+ subtotal = scale * subtotal / vals.length;
+ return new Variable("double MEAN result, ", subtotal);
+
+ }
+ };
+
+ ExpressionBuilder b = new ExpressionBuilder("mean(x,y)");
+ b.withCustomFunction(meanFn);
+ b.withVariable(new Variable("x", new double[] {1.1,2,10,3,2.4,10.2}));
+ b.withVariable(new Variable("y", 2));
+ Calculable calc2 = b.build();
+
+ System.out.println( calc2.calculate().toString() );
+
+ // Test 3
+ // ======
+
+ Calculable calc3 = new ExpressionBuilder("x * y - 2").withVariableNames("x", "y").build();
+ calc3.setVariable(new Variable("x", new double[]{1.2, 10, 20, 15}));
+ calc3.setVariable(new Variable("y", new double[]{2.2, 5.2, 12, 9 }));
+
+ //double result3 = calc3.calculate().getDoubleValue();
+ System.out.println(calc3.calculate().toString());
+
+
+ // Test 4
+ // ======
+
+ Calculable calc4 = new ExpressionBuilder("log10(sqrt(x) * abs(y))").withVariableNames("x", "y").build();
+ calc4.setVariable(new Variable("x", new double[]{1.2, 10, 10, 15}));
+ calc4.setVariable(new Variable("y", new double[]{2.2, -5.2, 5.2, 9 }));
+
+ //double result3 = calc3.calculate().getDoubleValue();
+ System.out.println(calc4.calculate().toString());
+ }
+}