@Nonnull public Variable newInstance() { return new Pow(null, null); } }
public Generic antiDerivative(int n) throws NotIntegrableException { if (n == 0) { return new Pow(parameters[0], parameters[1].add(JsclInteger.valueOf(1))).selfExpand().multiply(new Inverse(parameters[1].add(JsclInteger.valueOf(1))).selfExpand()); } else { return new Pow(parameters[0], parameters[1]).selfExpand().multiply(new Inverse(new Ln(parameters[0]).selfExpand()).selfExpand()); } }
static Generic nth(Generic parameter[]) { int degree = parameter.length - 1; Generic a = new Fraction(parameter[0], parameter[degree]).selfSimplify(); return new Pow( a.negate(), new Inverse(JsclInteger.valueOf(degree)).selfSimplify() ).selfSimplify(); }
public static Generic compute(Root root, Variable variable) throws NotIntegrableException { int d = root.degree(); Generic a[] = root.getParameters(); boolean b = d > 0; b = b && a[0].negate().isIdentity(variable); for (int i = 1; i < d; i++) b = b && a[i].signum() == 0; b = b && a[d].compareTo(JsclInteger.valueOf(1)) == 0; if (b) { return new Pow( a[0].negate(), new Inverse(JsclInteger.valueOf(d)).selfExpand() ).antiDerivative(0); } else { throw new NotIntegrableException(); } }
public Generic selfExpand() { if (parameters[0].compareTo(JsclInteger.valueOf(1)) == 0) { return JsclInteger.valueOf(1); } if (parameters[1].signum() < 0) { return new Pow(new Inverse(parameters[0]).selfExpand(), parameters[1].negate()).selfExpand(); } try { int c = parameters[1].integerValue().intValue(); return parameters[0].pow(c); } catch (NotIntegerException e) { } try { Root r = rootValue(); int d = r.degree(); Generic g[] = r.getParameters(); Generic a = g[0].negate(); try { JsclInteger en = a.integerValue(); if (en.signum() < 0) ; else { Generic rt = en.nthrt(d); if (rt.pow(d).compareTo(en) == 0) return rt; } } catch (NotIntegerException e) { } } catch (NotRootException e) { } return expressionValue(); }
else return new Pow( new Exp(n[2]).selfSimplify(), new Fraction(n[0], n[1]).selfSimplify()