package jscl.math.operator; import jscl.math.Generic; import jscl.math.JsclVector; import jscl.math.Variable; import jscl.math.polynomial.Polynomial; import javax.annotation.Nonnull; public class Coefficient extends Operator { public static final String NAME = "coef"; public Coefficient(Generic expression, Generic variable) { super(NAME, new Generic[]{expression, variable}); } private Coefficient(Generic parameters[]) { super(NAME, parameters); } @Override public int getMinParameters() { return 2; } public Generic selfExpand() { Variable variable = parameters[1].variableValue(); if (parameters[0].isPolynomial(variable)) { return new JsclVector(Polynomial.factory(variable).valueOf(parameters[0]).elements()); } return expressionValue(); } @Nonnull @Override public Operator newInstance(@Nonnull Generic[] parameters) { return new Coefficient(parameters); } @Nonnull public Variable newInstance() { return new Coefficient(null, null); } }