Bonjour,
Je cherche une fonction en C qui calcul la racine carrée d'un entier de 32bit en un entier de 16 bit. Mon problème c'est qu'il faut avoir une fonction trés rapide.
Merci,
Version imprimable
Bonjour,
Je cherche une fonction en C qui calcul la racine carrée d'un entier de 32bit en un entier de 16 bit. Mon problème c'est qu'il faut avoir une fonction trés rapide.
Merci,
Recherches sur wikipedia il y a un article très bien fourni sur le sujet (en anglais).
Je ne peux moi même te le linker le proxy de mon entreprise me bloquant ce domaine.
J'ai trouvé ce lien : http://forums.futura-sciences.com/ma...ne-carree.html
Le gars veut un truc efficace ....
Pourquoi ne pas utiliser du précalcul?
Tu enregistre toutes tes valeurs dans un tableau (tab[x] = sqrt(x) ) et tu accède à la racine carrée en O(1), je ne connais pas plus rapide.
Bonjour,
Merci pour vos réponce, mais un autre problème que j'ai c'est que la mémoire est limité et les valeurs varients entre 0 et 16769025 (0xFFF^2). j'ai trouvé quelques algorithmes. mais j'ai une autre question. Est ce qu'en ajoutant _inline_ peut accélérer le calcul?
Inline permet d'éviter l'implémentation d'une fonction, le code de la fonctoin est alors directement implémenté dans le code.
Cela est particulièrement utile si la fonction en question est appellé fréquement.
Dans ton cas, cela dépend à quelle fréquence tu désires appeler ta fonction sqrt().
source : http://fr.wikipedia.org/wiki/Optimis...ef_inline_du_C
Meilleures salutations, Livegen.
C'est juste pour une petite question on m'a dit que la plus part des compilateurs le faisait de base pour les petites fonctions... Est-ce vrai?
Ce que je vais dire après demande confirmation aussi :
Attention à l'utilisation du mot clé inline il est à utiliser que si des fonctions qui restent assez petite.
Bref au final tu as plein de mot clé pour l'optimisation.
Mais pour la rapidité de sqrt va voir sur wiki du coté de John Carmack tu lis l'article sur lui et tu verras dans l’anecdote il y a une fonction sqrt plus rapide que l'original mais par contre pour la comprendre c'est pas le même délire. L'approximation est de l'ordre de 10-3 donc je sais pas si cela te convient...
D’ailleurs si quelqu'un se sent de taille pour l'expliquer...?
Si l'optimisation est activé (-o1, -o2, -o3), sa ne me surprendrait pas. En revanche, si tu compiles avec l'option -o0 (aucune optimisation), il n'a aucune raison de le faire.