Le module d'un polynome en par un polynome de même degré peut être obtenu en prenant la représenation des polynomes en bits et en faisant un XOR entre les bits des deux polynomes. Le résultat est un polynome de degré .
Globalement si et sont deux polynomes de degré en , alors le module est donné par où et sont les représentations binaires de et et est le XOR bit par bit.
Concept vient du devoir 2 de LEPL1108 :
PDF du devoir
L'algorithme suivant pour la multiplication dans :
Peut être implémenté en python comme suit :
def multiply(self, x, y, pol):
a = int(x, 2)
b = int(y, 2)
p = int(pol, 2)
product = 0
while b:
if b & 1:
product ^= a
b ^= 1
a <<= 1
if a & 256:
a ^= p
b >>= 1
return self.toBinary(product)
Preuve :
TODO
(Note to self : pour la preuve, il suffit d'utiliser la division euclidienne pour un polynome général et de montrer que le reste est bien donné par XOR)