1 package net.bmahe.genetics4j.gp.math;
2
3 import net.bmahe.genetics4j.gp.OperationFactories;
4 import net.bmahe.genetics4j.gp.OperationFactory;
5
6 public final class Functions {
7
8 public static final String NAME_ADD = "Add";
9 public static final String NAME_SUB = "Sub";
10 public static final String NAME_MUL = "Mul";
11 public static final String NAME_DIV = "Div";
12 public static final String NAME_COS = "Cos";
13 public static final String NAME_SIN = "Sin";
14 public static final String NAME_EXP = "Exp";
15 public static final String NAME_POW = "Pow";
16 public static final String NAME_STR_TO_DOUBLE = "StrToDouble";
17
18 public static final OperationFactory COS = OperationFactories
19 .ofUnary(NAME_COS, Double.class, Double.class, Math::cos);
20 public static final OperationFactory SIN = OperationFactories
21 .ofUnary(NAME_SIN, Double.class, Double.class, Math::sin);
22 public static final OperationFactory EXP = OperationFactories
23 .ofUnary(NAME_EXP, Double.class, Double.class, Math::exp);
24
25 public static final OperationFactory STR_TO_DOUBLE = OperationFactories
26 .ofUnary(NAME_STR_TO_DOUBLE, String.class, Double.class, Double::parseDouble);
27
28 public static final OperationFactory ADD = OperationFactories
29 .ofBinary(NAME_ADD, Double.class, Double.class, Double.class, (a, b) -> a + b);
30
31 public static final OperationFactory SUB = OperationFactories
32 .ofBinary(NAME_SUB, Double.class, Double.class, Double.class, (a, b) -> a - b);
33
34 public static final OperationFactory MUL = OperationFactories
35 .ofBinary(NAME_MUL, Double.class, Double.class, Double.class, (a, b) -> a * b);
36
37 public static final OperationFactory DIV = OperationFactories
38 .ofBinary(NAME_DIV, Double.class, Double.class, Double.class, (a, b) -> a / b);
39
40 public static final OperationFactory POW = OperationFactories
41 .ofBinary(NAME_POW, Double.class, Double.class, Double.class, Math::pow);
42
43 }