Et malgr¨¦ cette explication :
65536 ¡Ô 15 mod 65521, so 65536x ¡Ô 15x (mod 65521), and the expression
(x & 0xffff) + (x >> 16)*15 reduces x modulo 65521
Je n'arrive pas ¨¤ comprendre comment (a & 0xffff) + (a >> 16) * (65536-
MOD_ADLER) permet d'avoir a modulo (65521) (ou presque puisqu'on peut
peut ¨ºtre amen¨¦ ¨¤ retrancher encore une fois 65521).
l'id¨¦e est qu'on peut exprimer x comme ¨¦tant x mod 65536 + (x /
65536)*65536 (division enti¨¨re)
d'o¨´ la forme de l'expression si dessus. et comme 15x est congruant ¨¤
65536x pour mod 65521
on peut alors remplacer (x/65536)*65536 par (x/65536)*15, ensuite on ¨¦crit
?a '¨¤ la C', (x>>16)*15.
ensuite on se sert du fait que: x1 + (x2 mod y) est congruant ¨¤ (x1+x2) mod
y vis ¨¤ vis de y,
cependant il ne s'agit que d'un modulo 'partiel' puisqu'on s'est content¨¦
jusqu'ici de r¨¦¨¦crrire en d'utiliser la congruance... mais bonne nouvelle
cette nouvelle ¨¦criture r¨¦duit l'intervalle des possibles! en le
r¨¦p¨¦tant ¨¤ nouveau, on est s?r de ne pas d¨¦passer 2*65521 - 1...
il suffit alors de soustraire une fois 65521 si n¨¦cessaire pour obtenir le
modulo voulu
j'esp¨¨re avoir ¨¦t¨¦ clair, et ne pas avoir dit de b¨¦tises...
Armel