Trouver la racine carrée d'un nombre donné à l'aide des opérations bit à bit
Est-il un algorithme pour trouver la racine carrée d'un nombre donné à l'aide des opérations bit à bit?
Probablement vous dire: "Est-il un algorithme pour trouver la racine carrée d'un nombre donné à l'aide des opérations bit à bit"?
essayez de regarder cette page - azillionmonkeys.com/qed/sqroot.html#implementations
oui j'ai besoin de l'algorithme pour trouver la racine carrée à l'aide des opérations bit à bit
Êtes-vous intéressé par un entier racine carrée? ou celui qui comprend à virgule flottante?
essayez de regarder cette page - azillionmonkeys.com/qed/sqroot.html#implementations
oui j'ai besoin de l'algorithme pour trouver la racine carrée à l'aide des opérations bit à bit
Êtes-vous intéressé par un entier racine carrée? ou celui qui comprend à virgule flottante?
OriginalL'auteur dato datuashvili | 2010-07-04
Vous devez vous connecter pour publier un commentaire.
Il est ce célèbre morceau de code magique qui calcule inverse racine carrée avec un certains très intelligent peu tourner. C'est à tort attribué à John Carmack - voici une de creuser plus profond dans son origine. C'est peut-être ce que vous demandez?
Je ne dirais pas qu'il l'aide, cependant. Moderne de la CPU, il ne peut pas battre dédié transcendantale instructions. Votre habitude c++ intrinsèque
sqrt()
serait probablement battre des mains vers le bas.[Edit:] L'article cité décrit un général de la méthode de calcul pour ce type d'approximations, et explicitement des états Dériver une méthode similaire pour sqrt(x) comme d'un problème lors de sa dernière lignes. Donc, vous devriez être en mesure de suivre son raisonnement et de concevoir une méthode similaire pour sqrt (sans réciprocité) directement.
OriginalL'auteur Ofek Shilon
Wikipédia a un article sur le sujet et un code de trop. Et un autre article de wikipedia montre un algorithme (même pour les racines de plus de 2) qui peut être facilement mis en œuvre en binaire (donc, impliquant l'opération sur les bits).
Si vous voulez vous en tenir uniquement à de véritables opérateurs au niveau du bit, vous avez à mettre en œuvre
+
à l'aide de l'Ands, Rup, Xors, Démunis... Si vous voulez le faire sur des flotteurs selon IEEE, vous avez besoin de plus de travail (le premier code de wikipédia pourrait être utilisé sur la mantisse "directement", susceptibles, sous certaines restrictions, et d'ajuster l'exposant "en conséquence"... vous devez comprendre comment, cependant!)OriginalL'auteur ShinTakezou
Pas... je suppose que c'est pour le bien de la performance? Si oui, le mieux que vous allez probablement obtenir de l'est à l'aide d'une table de recherche. Si vous avez la possibilité de travailler avec de math entier (ex. en travaillant avec des nombres à multiplier par 10, 100 ou 1000 au lieu de chars), vous pouvez utiliser bit à bit de rotation rapidement jeter hors inutile de précision et de sauter dans une table de recherche.
OriginalL'auteur kasperjj