Package org.bouncycastle.pqc.math.linearalgebra

## Class GF2nPolynomial

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

-     public class GF2nPolynomial
      extends java.lang.Object

  This class implements polynomials over GF2nElements.
  See Also:
    `GF2nElement`

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `GF2nPolynomial​(int deg, GF2nElement elem)` | Creates a new PolynomialGF2n of size deg and elem as coefficients.
    `GF2nPolynomial​(GF2nPolynomial a)` | Creates a new PolynomialGF2n by cloning the given PolynomialGF2n a.
    `GF2nPolynomial​(GF2Polynomial polynomial, GF2nField B1)` | Creates a new PolynomialGF2n from the given Bitstring polynomial over the GF2nField B1.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `GF2nPolynomial` | `add​(GF2nPolynomial b)` | Adds the PolynomialGF2n `b` to `this` and returns the result in a new `PolynomialGF2n`.
    `void` | `assignZeroToElements()` |
    `GF2nElement` | `at​(int index)` | Returns the coefficient at index.
    `GF2nPolynomial[]` | `divide​(GF2nPolynomial b)` | Divides this by b and stores the result in a new PolynomialGF2n[2], quotient in result[0] and remainder in result[1].
    `void` | `enlarge​(int k)` | Enlarges the size of this PolynomialGF2n to k + 1.
    `boolean` | `equals​(java.lang.Object other)` |
    `GF2nPolynomial` | `gcd​(GF2nPolynomial g)` | Computes the greatest common divisor of this and g and returns the result in a new PolynomialGF2n.
    `int` | `getDegree()` | Returns the degree of this PolynomialGF2n.
    `int` | `hashCode()` |
    `boolean` | `isZero()` | Returns true if all coefficients equal zero.
    `GF2nPolynomial` | `multiply​(GF2nPolynomial b)` | Multiplies this by b and returns the result in a new PolynomialGF2n.
    `GF2nPolynomial` | `multiplyAndReduce​(GF2nPolynomial b, GF2nPolynomial g)` | Multiplies this by b, reduces the result by g and returns it in a new PolynomialGF2n.
    `GF2nPolynomial` | `quotient​(GF2nPolynomial b)` | Divides this by b and stores the quotient in a new PolynomialGF2n.
    `GF2nPolynomial` | `reduce​(GF2nPolynomial g)` | Reduces this by g and returns the result in a new PolynomialGF2n.
    `GF2nPolynomial` | `remainder​(GF2nPolynomial b)` | Divides this by b and stores the remainder in a new PolynomialGF2n.
    `GF2nPolynomial` | `scalarMultiply​(GF2nElement s)` | Multiplies the scalar s to each coefficient of this PolynomialGF2n and returns the result in a new PolynomialGF2n.
    `void` | `set​(int index, GF2nElement elem)` | Sets the coefficient at index to elem.
    `GF2nPolynomial` | `shiftLeft​(int amount)` |
    `void` | `shiftThisLeft​(int amount)` | Shifts left this by amount and stores the result in this PolynomialGF2n.
    `void` | `shrink()` |
    `int` | `size()` | Returns the size (=maximum degree + 1) of this PolynomialGF2n.

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

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

- - ### Constructor Detail

    - #### GF2nPolynomial

          public GF2nPolynomial​(int deg,
                                GF2nElement elem)

      Creates a new PolynomialGF2n of size deg and elem as coefficients.
      Parameters:
        `deg` - - the maximum degree + 1
        `elem` - - a GF2nElement

    - #### GF2nPolynomial

          public GF2nPolynomial​(GF2nPolynomial a)

      Creates a new PolynomialGF2n by cloning the given PolynomialGF2n a.
      Parameters:
        `a` - the PolynomialGF2n to clone

    - #### GF2nPolynomial

          public GF2nPolynomial​(GF2Polynomial polynomial,
                                GF2nField B1)

      Creates a new PolynomialGF2n from the given Bitstring polynomial over the GF2nField B1.
      Parameters:
        `polynomial` - the Bitstring to use
        `B1` - the field

  - ### Method Detail

    - #### assignZeroToElements

          public final void assignZeroToElements()

    - #### size

          public final int size()

      Returns the size (=maximum degree + 1) of this PolynomialGF2n. This is not the degree, use getDegree instead.
      Returns:
        the size (=maximum degree + 1) of this PolynomialGF2n.

    - #### getDegree

          public final int getDegree()

      Returns the degree of this PolynomialGF2n.
      Returns:
        the degree of this PolynomialGF2n.

    - #### enlarge

          public final void enlarge​(int k)

      Enlarges the size of this PolynomialGF2n to k + 1.
      Parameters:
        `k` - the new maximum degree

    - #### shrink

          public final void shrink()

    - #### set

          public final void set​(int index,
                                GF2nElement elem)

      Sets the coefficient at index to elem.
      Parameters:
        `index` - the index
        `elem` - the GF2nElement to store as coefficient index

    - #### at

          public final GF2nElement at​(int index)

      Returns the coefficient at index.
      Parameters:
        `index` - the index
      Returns:
        the GF2nElement stored as coefficient index

    - #### isZero

          public final boolean isZero()

      Returns true if all coefficients equal zero.
      Returns:
        true if all coefficients equal zero.

    - #### equals

          public final boolean equals​(java.lang.Object other)

      Overrides:
        `equals` in class `java.lang.Object`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`
      Returns:
        the hash code of this polynomial

    - #### add

          public final GF2nPolynomial add​(GF2nPolynomial b)

      Adds the PolynomialGF2n `b` to `this` and returns the result in a new `PolynomialGF2n`.
      Parameters:
        `b` - - the `PolynomialGF2n` to add
      Returns:
        `this + b`

    - #### scalarMultiply

          public final GF2nPolynomial scalarMultiply​(GF2nElement s)

      Multiplies the scalar s to each coefficient of this PolynomialGF2n and returns the result in a new PolynomialGF2n.
      Parameters:
        `s` - the scalar to multiply
      Returns:
        this x s

    - #### multiply

          public final GF2nPolynomial multiply​(GF2nPolynomial b)

      Multiplies this by b and returns the result in a new PolynomialGF2n.
      Parameters:
        `b` - the PolynomialGF2n to multiply
      Returns:
        this * b

    - #### multiplyAndReduce

          public final GF2nPolynomial multiplyAndReduce​(GF2nPolynomial b,
                                                        GF2nPolynomial g)

      Multiplies this by b, reduces the result by g and returns it in a new PolynomialGF2n.
      Parameters:
        `b` - the PolynomialGF2n to multiply
        `g` - the modul
      Returns:
        this * b mod g

    - #### reduce

          public final GF2nPolynomial reduce​(GF2nPolynomial g)
                                      throws java.lang.RuntimeException,
                                             java.lang.ArithmeticException

      Reduces this by g and returns the result in a new PolynomialGF2n.
      Parameters:
        `g` - - the modulus
      Returns:
        this % g
      Throws:
        `java.lang.RuntimeException`
        `java.lang.ArithmeticException`

    - #### shiftThisLeft

          public final void shiftThisLeft​(int amount)

      Shifts left this by amount and stores the result in this PolynomialGF2n.
      Parameters:
        `amount` - the amount to shift the coefficients

    - #### shiftLeft

          public final GF2nPolynomial shiftLeft​(int amount)

    - #### divide

          public final GF2nPolynomial[] divide​(GF2nPolynomial b)

      Divides this by b and stores the result in a new PolynomialGF2n[2], quotient in result[0] and remainder in result[1].
      Parameters:
        `b` - the divisor
      Returns:
        the quotient and remainder of this / b

    - #### remainder

          public final GF2nPolynomial remainder​(GF2nPolynomial b)
                                         throws java.lang.RuntimeException,
                                                java.lang.ArithmeticException

      Divides this by b and stores the remainder in a new PolynomialGF2n.
      Parameters:
        `b` - the divisor
      Returns:
        the remainder this % b
      Throws:
        `java.lang.RuntimeException`
        `java.lang.ArithmeticException`

    - #### quotient

          public final GF2nPolynomial quotient​(GF2nPolynomial b)
                                        throws java.lang.RuntimeException,
                                               java.lang.ArithmeticException

      Divides this by b and stores the quotient in a new PolynomialGF2n.
      Parameters:
        `b` - the divisor
      Returns:
        the quotient this / b
      Throws:
        `java.lang.RuntimeException`
        `java.lang.ArithmeticException`

    - #### gcd

          public final GF2nPolynomial gcd​(GF2nPolynomial g)

      Computes the greatest common divisor of this and g and returns the result in a new PolynomialGF2n.
      Parameters:
        `g` - - a GF2nPolynomial
      Returns:
        gcd(this, g)