
Dans cette formule la multiplication par 2correspond au décalage à gauche des bits déjà entrés, et
l’addition de a7−i−1correspond à l’insertion du bit suivant à la place laissée libre. Si on décrit la suite
des opérations on calcule successivement :
S0=a7, S1= 2S0+a6,··· , S7= 2S6+a0,
ou encore :
S=S7= 2(2(2(2(2(2(2a7+a6) + a5) + a4) + a3) + a2) + a1) + a0.
L’algorithme est décrit à la figure 2.
entrées : un tableau Ade Nbits
sortie : le nombre S=PN−1
i=0 A[i]2i
début
S←0;
i←N−1;
tant que i≥0faire
S←2∗S+A[i];
i←i−1;
fintq;
retourner S;
fin
FIG. 2 – L’algorithme de Hörner binaire
Cet algorithme effectue Ntours de boucle, chaque boucle coûtant une multiplication par 2et une
addition. Ici, Nreprésente le nombre de bits de S, c’est-à-dire la taille de S. L’algorithme coûte
O(N)opérations élémentaires.
1.3 Généralisation
Cet algorithme s’adapte immédiatement à toute écriture polynomiale de la forme :
S(X) = aN−1XN−1+···+a1X+a0.
Il suffit en effet d’effectuer la suite d’opérations suivantes :
S0(X) = aN−1,
S1(X) = XS0(X) + aN−2,
··· =···
SN−1(X) = XSN−2(X) + a0.
L’algorithme de Hörner intervient dans de nombreuses situations :
1. évaluation d’un polynôme en un point,
2. traduction binaire - décimal,
3. division euclidienne,
4. calcul d’une puissance.
En fait cette liste n’est pas limitative. En effet, dans de nombreuses situations une partie de l’algo-
rithme consiste à reconstituer un nombre à partir de ses bits. Dans cette situation l’algorithme de
Hörner s’applique.
2