@Nonnull protected AbstractFunction newElementarizedFunction() { final AbstractFunction function = (AbstractFunction) newInstance(); for (int i = 0; i < parameters.length; i++) { function.parameters[i] = parameters[i].elementary(); } return function; }
@Nonnull protected final AbstractFunction newSimplifiedFunction() { final AbstractFunction function = (AbstractFunction) newInstance(); for (int i = 0; i < parameters.length; i++) { function.parameters[i] = parameters[i].simplify(); } return function; }
@Nonnull protected final AbstractFunction newNumericFunction() { final AbstractFunction result = (AbstractFunction) newInstance(); for (int i = 0; i < parameters.length; i++) { result.parameters[i] = parameters[i].numeric(); } return result; }
@Nonnull protected AbstractFunction newExpandedFunction() { final AbstractFunction function = (AbstractFunction) newInstance(); for (int i = 0; i < parameters.length; i++) { function.parameters[i] = parameters[i].expand(); } return function; }
@Nonnull protected AbstractFunction newFactorizedFunction() { final AbstractFunction function = (AbstractFunction) newInstance(); for (int i = 0; i < parameters.length; i++) { function.parameters[i] = parameters[i].factorize(); } return function; }
public Generic substitute(@Nonnull Variable variable, @Nonnull Generic generic) { final AbstractFunction function = (AbstractFunction) newInstance(); for (int i = 0; i < parameters.length; i++) { function.parameters[i] = parameters[i].substitute(variable, generic); } if (function.isIdentity(variable)) { return generic; } else { return function.selfExpand(); } }