@Nonnull @Override public CustomFunction create() { final CustomFunction customFunction = new CustomFunction(name, parameterNames, prepareContent(content), description); customFunction.setSystem(system); if (id != null) { customFunction.setId(id); } return customFunction; }
@Override public Generic selfSimplify() { return expressionValue(); }
public CustomFunctionCalculationException(@Nonnull CustomFunction function, @Nonnull Message message) { super(Messages.msg_19, function.getName(), message); } }
@Override public Generic elementary() { return selfExpand().elementary(); }
@Nonnull @Override public CustomFunction newInstance() { return new CustomFunction(name, parameterNames, content, description); }
@Override public Generic antiDerivative(@Nonnull Variable variable) throws NotIntegrableException { if (getParameterForAntiDerivation(variable) < 0) { throw new NotIntegrableException(this); } else { return this.content.antiDerivative(variable); } }
@Nullable @Override public String getDescription(@Nonnull String functionName) { final Function function = get(functionName); String result = null; if (function instanceof CustomFunction) { result = ((CustomFunction) function).getDescription(); } if (Strings.isEmpty(result)) { result = super.getDescription(functionName); } return result; }
@Override public Generic selfExpand() { Generic localContent = content; try { for (String parameterName : parameterNames) { localContent = localContent.substitute(new Constant(parameterName), Expression.valueOf(new Constant(getParameterNameForConstant(parameterName)))); } for (int i = 0; i < parameterNames.size(); i++) { localContent = localContent.substitute(new Constant(getParameterNameForConstant(parameterNames.get(i))), parameters[i]); } } finally { for (String parameterName : parameterNames) { localContent = localContent.substitute(new Constant(getParameterNameForConstant(parameterName)), Expression.valueOf(new Constant(parameterName))); } } return localContent; }
@Override public Generic numeric() { return selfExpand().numeric(); }
@Override public Generic factorize() { return selfExpand().factorize(); }
@Override public Generic expand() { return selfExpand().expand(); }