/** Creates a function based on a user function */ public Function(UserFunction f) { String[] names = f.getVarNames(); this.function = f; this.argsNumber = names.length; this.args = new Argument[argsNumber]; this.values = new double[argsNumber]; for (int i = 0; i < argsNumber; i++) { String name = names[i]; args[i] = new Argument(name, f.getVarIndex(name)); } }