public Polynomial multiply( Polynomial that ) {
		Set< BigInteger > dgrs = createDegreesCollection();
		for ( BigInteger pa : this.degrees ) {
			for ( BigInteger pb : that.degrees ) {
				BigInteger sum = pa.add( pb );
				// xor the result
				if ( dgrs.contains( sum ) )
					dgrs.remove( sum );
				else
					dgrs.add( sum );
			}
		}
		return new Polynomial( dgrs );
	}