001 /*
002 * $Id: ExpVectorPair.java 1888 2008-07-12 13:37:34Z kredel $
003 */
004
005 package edu.jas.poly;
006
007 import java.io.Serializable;
008
009
010 /**
011 * ExpVectorPair
012 * implements pairs of exponent vectors for S-polynomials.
013 * Objects of this class are immutable.
014 * @author Heinz Kredel
015 */
016
017
018 public class ExpVectorPair implements Serializable {
019
020 private final ExpVector e1;
021 private final ExpVector e2;
022
023
024 /**
025 * Constructors for ExpVectorPair.
026 * @param e first part.
027 * @param f second part.
028 */
029 public ExpVectorPair(ExpVector e, ExpVector f) {
030 e1 = e;
031 e2 = f;
032 }
033
034
035 /**
036 * @return first part.
037 */
038 public ExpVector getFirst() {
039 return e1;
040 }
041
042
043 /**
044 * @return second part.
045 */
046 public ExpVector getSecond() {
047 return e2;
048 }
049
050
051 /**
052 * toString.
053 */
054 @Override
055 public String toString() {
056 StringBuffer s = new StringBuffer("ExpVectorPair[");
057 s.append(e1.toString());
058 s.append(",");
059 s.append(e2.toString());
060 s.append("]");
061 return s.toString();
062 }
063
064
065 /**
066 * equals.
067 * @param B other.
068 * @return true, if this == b, else false.
069 */
070 @Override
071 public boolean equals(Object B) {
072 if ( ! (B instanceof ExpVectorPair) ) return false;
073 return equals( (ExpVectorPair)B );
074 }
075
076
077 /**
078 * equals.
079 * @param b other.
080 * @return true, if this == b, else false.
081 */
082 public boolean equals(ExpVectorPair b) {
083 boolean t = e1.equals( b.getFirst() );
084 t = t && e2.equals( b.getSecond() );
085 return t;
086 }
087
088
089 /** hash code.
090 * @see java.lang.Object#hashCode()
091 */
092 @Override
093 public int hashCode() {
094 return (e1.hashCode() << 16) + e2.hashCode();
095 }
096
097
098 /**
099 * isMultiple.
100 * @param p other.
101 * @return true, if this is a multiple of b, else false.
102 */
103 public boolean isMultiple(ExpVectorPair p) {
104 boolean w = e1.multipleOf( p.getFirst() );
105 if ( !w ) {
106 return w;
107 }
108 w = e2.multipleOf( p.getSecond() );
109 if ( !w ) {
110 return w;
111 }
112 return true;
113 }
114
115 }