Sigma(Generic parameter[], int n) { root = new Generic[parameter.length - 1]; for (int i = 0; i < root.length; i++) root[i] = new Root(parameter, i).expressionValue(); place = new boolean[root.length]; this.n = n; }
public Generic factorize() { Root v = (Root) newInstance(); for (int i = 0; i < parameters.length; i++) { v.parameters[i] = parameters[i].factorize(); } v.subscript = subscript; return v.expressionValue(); }
public Generic selfExpand() { if (isZero()) return JsclInteger.valueOf(0); try { int s = subscript.integerValue().intValue(); switch (degree()) { case 1: return new Fraction(parameters[0], parameters[1]).selfExpand().negate(); } } catch (NotIntegerException e) { } return expressionValue(); }
int branch(Generic generic, UnivariatePolynomial polynomial) { int n = polynomial.degree(); Variable t = new TechnicalVariable("t"); linear = true; for (int i = 0; i < n; i++) { constraints.clear(); process(new Constraint(t, t.expressionValue().subtract(generic.subtract(new Root(polynomial, i).expressionValue())), false)); Generic a = polynomial(t).solve(); if (a != null && a.signum() == 0) { return i; } } return n; }
public Generic selfSimplify() { if (isZero()) return JsclInteger.valueOf(0); try { int s = subscript.integerValue().intValue(); switch (degree()) { case 1: return linear(parameters); case 2: return quadratic(parameters, s); case 3: return cubic(parameters, s); case 4: return quartic(parameters, s); default: if (isNth() && s == 0) return nth(parameters); } } catch (NotIntegerException e) { } return expressionValue(); }