question: GF256Poly addOrSubtract ( GF256Poly other ) { if ( ! field . equals ( other . field ) ) { throw new IllegalArgumentException ( "GF256Polys do not have same GF256 field" ) ; } if ( isZero ( ) ) { return other ; } if ( other . isZero ( ) ) { return this ; } int [ ] smallerCoefficients = this . coefficients ; int [ ] largerCoefficients = other . coefficients ; if ( smallerCoefficients . length > largerCoefficients . length ) { int [ ] temp = smallerCoefficients ; smallerCoefficients = largerCoefficients ; largerCoefficients = temp ; } int [ ] sumDiff = new int [ largerCoefficients . length ] ; int lengthDiff = largerCoefficients . length - smallerCoefficients . length ; System . arraycopy ( largerCoefficients , 0 , sumDiff , 0 , lengthDiff ) ; for ( int i = lengthDiff ; i < largerCoefficients . length ; i ++ ) { sumDiff [ i ] = GF256 . addOrSubtract ( smallerCoefficients [ i - lengthDiff ] , largerCoefficients [ i ] ) ; } return new GF256Poly ( field , sumDiff ) ; }
target:  GF addition or subtraction (they are identical for a GF(2^n)