public synchronized void eval(String op) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
		this.getOutput().clear();
		String res = this.getName() + "(";
		int n = this.getInput().size();
		@SuppressWarnings("rawtypes")
		Class[] types = new Class[n];
		Object[] params = new Object[n];
		int i = 0;
		for(Data d : this.getInput()) {
			types[i] = d.getValue().getClass();
			if(types[i] == Integer.class) types[i] = int.class;
			else if(types[i] == Float.class) types[i] = float.class;
			else if(types[i] == Double.class) types[i] = double.class;
			else if(types[i] == Long.class) types[i] = long.class;
			else if(types[i] == Boolean.class) types[i] = boolean.class;
			params[i] = d.getValue();
			res += params[i];
			i++;
			if(i!=n) res += ", ";
		}
		res += ") = ";
		Method method;
		method = this.exec_method(op, types);
		this.addOutput(new SF(method.invoke(this, params)));
		i = 0;
		n = this.getOutput().size();
		for(Data d : this.getOutput()) {
			res += d.getValue();
			i++;
			if(i!=n) res += ", ";
		}
		System.out.println(res);
	}