コード例 #1
0
 def base_polynomial(self, p, scalar=1):
     # returns a Polynomial P (of degree p + 1) such that P(x) == scalar * sum(i^p for i in range(1, x + 1))
     if p + 1 > self._max_degree:
         raise ValueError
     # compute p(x) = sum(i^p for i in range(1, n + 1))
     coef = list(repeat(0, p + 2))
     for i in range(p + 1):
         coef[p + 1 - i] = self.mult(self._choose.choose(p + 1, i), self._bn[i])
     poly = Polynomial(coef, modulus=self._modulus, primitive_root=self._primitive_root)
     poly.scalarmult(self.div(scalar, p + 1))
     return poly