fieldPolynomial.setBit(0); fieldPolynomial.setBit(mDegree); for (i = 1; (i <= (mDegree - 3)) && !done; i++) fieldPolynomial.setBit(i); for (j = i + 1; (j <= (mDegree - 2)) && !done; j++) fieldPolynomial.setBit(j); for (k = j + 1; (k <= (mDegree - 1)) && !done; k++) fieldPolynomial.setBit(k); if (((mDegree & 1) != 0) | ((i & 1) != 0) | ((j & 1) != 0) | ((k & 1) != 0))
/** * Tests random polynomials of degree (n+1) until an irreducible is found * and stores the result in <i>field polynomial</i>. This can take very * long for huge degrees. * * @return true */ private boolean testRandom() { int l; boolean done = false; fieldPolynomial = new GF2Polynomial(mDegree + 1); l = 0; while (!done) { l++; fieldPolynomial.randomize(); fieldPolynomial.setBit(mDegree); fieldPolynomial.setBit(0); if (fieldPolynomial.isIrreducible()) { done = true; return done; } } return done; }
fieldPolynomial.setBit(0); fieldPolynomial.setBit(mDegree); for (i = 1; (i <= (mDegree - 3)) && !done; i++) fieldPolynomial.setBit(i); for (j = i + 1; (j <= (mDegree - 2)) && !done; j++) fieldPolynomial.setBit(j); for (k = j + 1; (k <= (mDegree - 1)) && !done; k++) fieldPolynomial.setBit(k); if (((mDegree & 1) != 0) | ((i & 1) != 0) | ((j & 1) != 0) | ((k & 1) != 0))
/** * Tests random polynomials of degree (n+1) until an irreducible is found * and stores the result in <i>field polynomial</i>. This can take very * long for huge degrees. * * @return true */ private boolean testRandom() { int l; boolean done = false; fieldPolynomial = new GF2Polynomial(mDegree + 1); l = 0; while (!done) { l++; fieldPolynomial.randomize(); fieldPolynomial.setBit(mDegree); fieldPolynomial.setBit(0); if (fieldPolynomial.isIrreducible()) { done = true; return done; } } return done; }
/** * Squares this GF2nPolynomialElement using GF2nFields squaring matrix. This * is supposed to be fast when using a polynomial (no tri- or pentanomial) * as fieldpolynomial. Use squarePreCalc when using a tri- or pentanomial as * fieldpolynomial instead. * * @see GF2Polynomial#vectorMult * @see GF2nPolynomialElement#squarePreCalc * @see GF2nPolynomialElement#squareBitwise */ public void squareThisMatrix() { GF2Polynomial result = new GF2Polynomial(mDegree); for (int i = 0; i < mDegree; i++) { if (polynomial .vectorMult(((GF2nPolynomialField)mField).squaringMatrix[mDegree - i - 1])) { result.setBit(i); } } polynomial = result; }
/** * Squares this GF2nPolynomialElement using GF2nFields squaring matrix. This * is supposed to be fast when using a polynomial (no tri- or pentanomial) * as fieldpolynomial. Use squarePreCalc when using a tri- or pentanomial as * fieldpolynomial instead. * * @see GF2Polynomial#vectorMult * @see GF2nPolynomialElement#squarePreCalc * @see GF2nPolynomialElement#squareBitwise */ public void squareThisMatrix() { GF2Polynomial result = new GF2Polynomial(mDegree); for (int i = 0; i < mDegree; i++) { if (polynomial .vectorMult(((GF2nPolynomialField)mField).squaringMatrix[mDegree - i - 1])) { result.setBit(i); } } polynomial = result; }
COBMatrix[mDegree - j - 1].setBit(mDegree - i - 1);
COBMatrix[mDegree - j - 1].setBit(mDegree - i - 1);
inv[i].setBit(mDegree - 1 - i);
result.setBit(mDegree - 1 - i);
result.setBit(mDegree - 1 - i);
inv[i].setBit(mDegree - 1 - i);