1 package customprocessors;
3 import ca.uqac.lif.cep.Context;
4 import ca.uqac.lif.cep.EventTracker;
5 import ca.uqac.lif.cep.functions.Function;
16 public void evaluate(Object[] inputs, Object[] outputs, Context con, EventTracker et)
18 float a = ((Number) inputs[0]).floatValue();
19 float b = ((Number) inputs[1]).floatValue();
20 float c = ((Number) inputs[2]).floatValue();
21 float s = (a + b + c) / 2f;
22 outputs[0] = Math.sqrt(s * (s-a) * (s-b) * (s-c));
26 public boolean evaluatePartial(Object[] inputs,
27 Object[] outputs, Context c)
29 if (inputs[0] != null && ((Number) inputs[0]).floatValue() == 0)
34 if (inputs[1] != null && ((Number) inputs[1]).floatValue() == 0)
39 if (inputs[2] != null && ((Number) inputs[2]).floatValue() == 0)
44 if (inputs[0] != null && inputs[1] != null && inputs[2] != null)
46 evaluate(inputs, outputs);
54 public int getInputArity()
60 public int getOutputArity()
66 public void getInputTypesFor(Set<Class<?>> classes,
int index)
68 classes.add(Number.class);
72 public Class<?> getOutputTypeFor(
int index)
78 public Function duplicate(
boolean with_state)
83 public static void main(String[] args)
87 Object[] out =
new Object[1];
89 b = ta.evaluatePartial(
new Object[] {3, 4, 5}, out, null);
90 System.out.println(
"b: " + b +
", " + out[0]);
91 b = ta.evaluatePartial(
new Object[] {3, null, 5}, out, null);
92 System.out.println(
"b: " + b +
", " + out[0]);
93 b = ta.evaluatePartial(
new Object[] {3, null, 0}, out, null);
94 System.out.println(
"b: " + b +
", " + out[0]);