001/* 002 * $Id: AbstractPair.java 3416 2010-12-19 15:45:06Z kredel $ 003 */ 004 005package edu.jas.gb; 006 007import java.io.Serializable; 008 009import edu.jas.structure.RingElem; 010 011import edu.jas.poly.ExpVector; 012import 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 */ 020public 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}