PolynomialRingGF2 (Bouncy Castle Library 1.54 API Specification)
Date: 2015-12-29

org.bouncycastle.pqc.math.linearalgebra

## Class PolynomialRingGF2

- java.lang.Object
- - org.bouncycastle.pqc.math.linearalgebra.PolynomialRingGF2

-     public final class PolynomialRingGF2
      extends java.lang.Object

  This class describes operations with polynomials over finite field GF(2), i e polynomial ring R = GF(2)[X]. All operations are defined only for polynomials with degree <=32. For the polynomial representation the map f: R->Z, poly(X)->poly(2) is used, where integers have the binary representation. For example: X^7+X^3+X+1 -> (00...0010001011)=139 Also for polynomials type Integer is used.
  See Also:
    `GF2mField`

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static int` | `add(int p, int q)` Return sum of two polyomials
    `static int` | `degree(int p)` Return the degree of a polynomial
    `static int` | `degree(long p)` Return the degree of a polynomial
    `static int` | `gcd(int p, int q)` Return the greatest common divisor of two polynomials
    `static int` | `getIrreduciblePolynomial(int deg)` Creates irreducible polynomial with degree d
    `static boolean` | `isIrreducible(int p)` Checking polynomial for irreducibility
    `static int` | `modMultiply(int a, int b, int r)` Compute the product of two polynomials modulo a third polynomial.
    `static long` | `multiply(int p, int q)` Return product of two polynomials
    `static int` | `remainder(int p, int q)` Return the remainder of a polynomial division of two polynomials.
    `static int` | `rest(long p, int q)` Return the rest of devision two polynomials

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### add

          public static int add(int p,
                int q)

      Return sum of two polyomials
      Parameters:
        `p` - polynomial
        `q` - polynomial
      Returns:
        p+q

    - #### multiply

          public static long multiply(int p,
                      int q)

      Return product of two polynomials
      Parameters:
        `p` - polynomial
        `q` - polynomial
      Returns:
        p*q

    - #### modMultiply

          public static int modMultiply(int a,
                        int b,
                        int r)

      Compute the product of two polynomials modulo a third polynomial.
      Parameters:
        `a` - the first polynomial
        `b` - the second polynomial
        `r` - the reduction polynomial
      Returns:
        `a * b mod r`

    - #### degree

          public static int degree(int p)

      Return the degree of a polynomial
      Parameters:
        `p` - polynomial p
      Returns:
        degree(p)

    - #### degree

          public static int degree(long p)

      Return the degree of a polynomial
      Parameters:
        `p` - polynomial p
      Returns:
        degree(p)

    - #### remainder

          public static int remainder(int p,
                      int q)

      Return the remainder of a polynomial division of two polynomials.
      Parameters:
        `p` - dividend
        `q` - divisor
      Returns:
        `p mod q`

    - #### rest

          public static int rest(long p,
                 int q)

      Return the rest of devision two polynomials
      Parameters:
        `p` - polinomial
        `q` - polinomial
      Returns:
        p mod q

    - #### gcd

          public static int gcd(int p,
                int q)

      Return the greatest common divisor of two polynomials
      Parameters:
        `p` - polinomial
        `q` - polinomial
      Returns:
        GCD(p, q)

    - #### isIrreducible

          public static boolean isIrreducible(int p)

      Checking polynomial for irreducibility
      Parameters:
        `p` - polinomial
      Returns:
        true if p is irreducible and false otherwise

    - #### getIrreduciblePolynomial

          public static int getIrreduciblePolynomial(int deg)

      Creates irreducible polynomial with degree d
      Parameters:
        `deg` - polynomial degree
      Returns:
        irreducible polynomial p