Flodelarab a écrit:T'auras un gros problème de précision.
Fait par dichotomie comme je t'ai dit. C'est le plus simple.
Bonjour,
Il me semble que la méthode la plus précise et la plus rapide pour extraire une racine en base 2 est celle de Newton (à peu près celle proposée par Mathelot) :
On veut trouver la racine de

où M [1/2;1[
On a
}.lim(x_n))
avec
et

avec a=M ou 2M selon la parité de k.
Appliqué à 2, cela donne xo=1 et a=2. x1 donne déjà 3 bits significatifs et ça double à chaque étape ; avec six itérations, on arrive à 160 bits, soit 50 décimales !
Bien entendu, cela suppose que l'on dispose de l'addition et de la division en binaire avec une précision suffisante.
Dans le cas général pour calculer n'importe quelle racine carrée, c'est très facile à programmer car on peut fixer le nombre d'itérations en fonction de la précision sur les opérations élémentaires :
nb de calculs de
)