def prodmonome(self, k): L = [0] * k + self.coef return Polynome(*L) def __mul__(self , Q): n = max( len(self.coef) , len(Q.coef) ) if n == 1: return Polynome(*[self.coef[0] * Q.coef[0]]) P , Q = self.standardise(Q) k = n // 2 P0 , P1 = Polynome(*P[0:k]) , Polynome(*P[k:n]) Q0 , Q1 = Polynome(*Q[0:k]) , Polynome(*Q[k:n]) return P0*Q0 + ((P0+P1)*(Q0+Q1)-P0*Q0-P1*Q1).prodmonome(k) + (P1*Q1).prodmonome(2*k)