public Polynomial mod( Polynomial that ) {
		BigInteger da = this.degree();
		BigInteger db = that.degree();
		Polynomial register = new Polynomial( this.degrees );
		for ( BigInteger i = da.subtract( db ); i.compareTo( BigInteger.ZERO ) >= 0; i = i.subtract( BigInteger.ONE ) ) {
			if ( register.hasDegree( i.add( db ) ) ) {
				Polynomial shifted = that.shiftLeft( i );
				register = register.xor( shifted );
			}
		}
		return register;
	}