Calcul de la racine carrée d'un nombre

Présentation
Ce code permet de calculer la racine carrée entière d'un nombre entier (>= 1) sans utiliser les flottants, en utilisant la méthode des approximations successives. Cette fonction est plus efficace que sqrt() avec gcc sans optimisations. Par contre, avec les optimisations, sqrt() écrase cette fonction. L'avantage principal est ici d'éviter d'utiliser les flottants et la bibliothèque mathématique et d'assurer une bonne vitesse de calcul sur les machines avec des co-processeurs faibles ou sans co-processeur.
Téléchargement
Compatibilité
Linux Mac Windows
1  0 
Téléchargé 91 fois Voir les 3 commentaires
Détails
Catégories : Mathématiques
Avatar de Paul HAUCHON
Responsable technique
Voir tous les téléchargements de l'auteur
Licence : Autre
Date de mise en ligne : 30 novembre 2010




Avatar de Rhadamante Rhadamante - Membre du Club https://www.developpez.com
le 15/07/2013 à 20:11
Ce programme n'arrondit pas tres bien par ex pour 3 racine apres arrondissement doit donner 2 et non 1!!!!!
Avatar de grim7reaper grim7reaper - Membre éclairé https://www.developpez.com
le 16/07/2013 à 6:56
Non, le résultat est correct :
Citation Envoyé par Wikipédia
In number theory, the integer square root (isqrt) of a positive integer n is the positive integer m which is the greatest integer less than or equal to the square root of n

1*1 = 1 <= 3
2*2 = 4 > 3
Donc le résultat attendu est bien 1.

Sinon, est-il possible de savoir comment la comparaison avec sqrt a été réalisée ?
Il me semble que le livre Hacker's Delight propose aussi une version de isqrt. Elle est semblable à celle-ci (i.e basé sur Newton), mais avec un choix de valeur initiale dépendant de la valeur d’entrée. J’aimerai bien évaluer jusqu’à quel point cela influe sur les performances.
Avatar de kingok kingok - Nouveau Candidat au Club https://www.developpez.com
le 04/11/2013 à 23:16
bonjour
peut tu expliquer ce programme
http://c.developpez.com/telecharger/...ee-d-un-nombre

je sais que la valeur de la racine de N est la limite de ca
rn+1 = (rn + N/ rn)/2

mais j'ai pas compris comment tu a trouver
r1 = (a + 1) / 2;
et aussi la boucle
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.
Contacter le responsable de la rubrique C