示例#1
0
文件: Quotient.java 项目: rjolly/jas
 // JAVA6only: @Override
 public int compareTo(Quotient<C> b) {
   if (b == null || b.isZERO()) {
     return this.signum();
   }
   C r = num.multiply(b.den);
   C s = den.multiply(b.num);
   C x = r.subtract(s);
   return x.signum();
 }
示例#2
0
文件: Quotient.java 项目: rjolly/jas
 /**
  * Quotient subtraction.
  *
  * @param S Quotient.
  * @return this-S.
  */
 public Quotient<C> subtract(Quotient<C> S) {
   if (S == null || S.isZERO()) {
     return this;
   }
   C n = num.multiply(S.den);
   n = n.subtract(den.multiply(S.num));
   C d = den.multiply(S.den);
   return new Quotient<C>(ring, n, d, false);
 }
示例#3
0
  /**
   * Invariant interval for algebraic number magnitude.
   *
   * @param iv root isolating interval for f, with f(left) * f(right) &lt; 0.
   * @param f univariate polynomial, non-zero.
   * @param g univariate polynomial, gcd(f,g) == 1.
   * @param eps length limit for interval length.
   * @return v with v a new interval contained in iv such that |g(a) - g(b)| &lt; eps for a, b in v
   *     in iv.
   */
  public Interval<C> invariantMagnitudeInterval(
      Interval<C> iv, GenPolynomial<C> f, GenPolynomial<C> g, C eps) {
    Interval<C> v = iv;
    if (g == null || g.isZERO()) {
      return v;
    }
    if (g.isConstant()) {
      return v;
    }
    if (f == null || f.isZERO() || f.isConstant()) { // ?
      return v;
    }
    GenPolynomial<C> gp = PolyUtil.<C>baseDeriviative(g);
    // System.out.println("g  = " + g);
    // System.out.println("gp = " + gp);
    C B = magnitudeBound(iv, gp);
    // System.out.println("B = " + B);

    RingFactory<C> cfac = f.ring.coFac;
    C two = cfac.fromInteger(2);

    while (B.multiply(v.length()).compareTo(eps) >= 0) {
      C c = v.left.sum(v.right);
      c = c.divide(two);
      Interval<C> im = new Interval<C>(c, v.right);
      if (signChange(im, f)) {
        v = im;
      } else {
        v = new Interval<C>(v.left, c);
      }
      // System.out.println("v = " + v.toDecimal());
    }
    return v;
  }
示例#4
0
文件: Quotient.java 项目: rjolly/jas
 /**
  * Quotient multiplication.
  *
  * @param S Quotient.
  * @return this*S.
  */
 public Quotient<C> multiply(Quotient<C> S) {
   if (S == null || S.isZERO()) {
     return S;
   }
   if (num.isZERO()) {
     return this;
   }
   if (S.isONE()) {
     return this;
   }
   if (this.isONE()) {
     return S;
   }
   C n = num.multiply(S.num);
   C d = den.multiply(S.den);
   return new Quotient<C>(ring, n, d, false);
 }
 public C eval(C c) {
   return c.multiply(x);
 }