Class DenseTernaryPolynomial

java.lang.Object
org.bouncycastle.pqc.legacy.math.ntru.polynomial.IntegerPolynomial
org.bouncycastle.pqc.legacy.math.ntru.polynomial.DenseTernaryPolynomial
All Implemented Interfaces:
Polynomial, TernaryPolynomial

public class DenseTernaryPolynomial extends IntegerPolynomial implements TernaryPolynomial
A TernaryPolynomial with a "high" number of nonzero coefficients.
  • Constructor Details

    • DenseTernaryPolynomial

      public DenseTernaryPolynomial(IntegerPolynomial intPoly)
      Constructs a DenseTernaryPolynomial from a IntegerPolynomial. The two polynomials are independent of each other.
      Parameters:
      intPoly - the original polynomial
    • DenseTernaryPolynomial

      public DenseTernaryPolynomial(int[] coeffs)
      Constructs a new DenseTernaryPolynomial with a given set of coefficients.
      Parameters:
      coeffs - the coefficients
  • Method Details

    • generateRandom

      public static DenseTernaryPolynomial generateRandom(int N, int numOnes, int numNegOnes, SecureRandom random)
      Generates a random polynomial with numOnes coefficients equal to 1, numNegOnes coefficients equal to -1, and the rest equal to 0.
      Parameters:
      N - number of coefficients
      numOnes - number of 1's
      numNegOnes - number of -1's
    • generateRandom

      public static DenseTernaryPolynomial generateRandom(int N, SecureRandom random)
      Generates a polynomial with coefficients randomly selected from {-1, 0, 1}.
      Parameters:
      N - number of coefficients
    • mult

      public IntegerPolynomial mult(IntegerPolynomial poly2, int modulus)
      Description copied from class: IntegerPolynomial
      Multiplies the polynomial with another, taking the values mod modulus and the indices mod N
      Specified by:
      mult in interface Polynomial
      Overrides:
      mult in class IntegerPolynomial
      Parameters:
      poly2 - a polynomial
      modulus - a modulus to apply
      Returns:
      the product of the two polynomials
    • getOnes

      public int[] getOnes()
      Specified by:
      getOnes in interface TernaryPolynomial
    • getNegOnes

      public int[] getNegOnes()
      Specified by:
      getNegOnes in interface TernaryPolynomial
    • size

      public int size()
      Description copied from interface: TernaryPolynomial
      Returns the maximum number of coefficients the polynomial can have
      Specified by:
      size in interface TernaryPolynomial