001 /*
002 * $Id: AbstractPair.java 3416 2010-12-19 15:45:06Z kredel $
003 */
004
005 package edu.jas.gb;
006
007 import java.io.Serializable;
008
009 import edu.jas.structure.RingElem;
010
011 import edu.jas.poly.ExpVector;
012 import edu.jas.poly.GenPolynomial;
013
014
015 /**
016 * Serializable abstract subclass to hold pairs of polynomials.
017 * @param <C> coefficient type
018 * @author Heinz Kredel.
019 */
020 public abstract class AbstractPair<C extends RingElem<C> >
021 implements Serializable {
022
023 public final ExpVector e;
024 public final GenPolynomial<C> pi;
025 public final GenPolynomial<C> pj;
026 public final int i;
027 public final int j;
028
029
030 /**
031 * AbstractPair constructor.
032 * @param a polynomial i.
033 * @param b polynomial j.
034 * @param i first index.
035 * @param j second index.
036 */
037 public AbstractPair(GenPolynomial<C> a, GenPolynomial<C> b,
038 int i, int j) {
039 this(a.leadingExpVector().lcm(b.leadingExpVector()),a,b,i,j);
040 }
041
042
043 /**
044 * AbstractPair constructor.
045 * @param lcm least common multiple of lt(a) and lt(b).
046 * @param a polynomial i.
047 * @param b polynomial j.
048 * @param i first index.
049 * @param j second index.
050 */
051 public AbstractPair(ExpVector lcm, GenPolynomial<C> a, GenPolynomial<C> b,
052 int i, int j) {
053 e = lcm;
054 pi = a;
055 pj = b;
056 this.i = i;
057 this.j = j;
058 }
059
060
061 /**
062 * toString.
063 */
064 @Override
065 public String toString() {
066 return "pair(" + i + "," + j + "{" + pi.length() + "," + pj.length() + "},"
067 + e + ")";
068 }
069
070 }