Class SparseTernaryPolynomial

    • Constructor Detail

      • SparseTernaryPolynomial

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

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

      • fromBinary

        public static SparseTernaryPolynomial fromBinary​(java.io.InputStream is,
                                                         int N,
                                                         int numOnes,
                                                         int numNegOnes)
                                                  throws java.io.IOException
        Decodes a byte array encoded with toBinary() to a ploynomial.
        Parameters:
        is - an input stream containing an encoded polynomial
        N - number of coefficients including zeros
        numOnes - number of coefficients equal to 1
        numNegOnes - number of coefficients equal to -1
        Returns:
        the decoded polynomial
        Throws:
        java.io.IOException
      • generateRandom

        public static SparseTernaryPolynomial generateRandom​(int N,
                                                             int numOnes,
                                                             int numNegOnes,
                                                             java.security.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
      • mult

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

        public BigIntPolynomial mult​(BigIntPolynomial poly2)
        Description copied from interface: Polynomial
        Multiplies the polynomial by a BigIntPolynomial, taking the indices mod N. Does not change this polynomial but returns the result as a new polynomial.
        Both polynomials must have the same number of coefficients.
        Specified by:
        mult in interface Polynomial
        Parameters:
        poly2 - the polynomial to multiply by
        Returns:
        a new polynomial
      • toBinary

        public byte[] toBinary()
        Encodes the polynomial to a byte array writing BITS_PER_INDEX bits for each coefficient.
        Returns:
        the encoded polynomial
      • 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
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object