Calculateur de Pi

Soyez le premier à donner votre avis sur cette source.

Vue 3 149 fois - Téléchargée 723 fois

Description

Salut, un pt'it code du calcul de pi selon la formule de gregoire(je sais ça date ! XVIème siècle mais bon ...)
J'ai mis une boucle de 24 M d'itérations vous pouvez modifier ce chiffre afin d'augmenter la precision de pie.
Le chronometre est secondaire (pas réussi en TimeMilli alors j'ai le nano happy ;-)
je boss pour une version III sur le calcul de pi plus rapide et avec plus de précision.
A+

Codes Sources

A voir également

Ajouter un commentaire Commentaire
Messages postés
16410
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 octobre 2021
122
Si tu veux une valeur précise de π n'utilises pas des types "double" qui ont une précision de toute façon limitée. Tu devrais plutôt regarder du côté des BigDecimal.

Ensuite au niveau du coeur du calcul il y a des optimisations à faire, par exemple un calcul Math.pow(-1,i) c'est moche ! Un test sur la parité de i serait bien plus efficace, et au lieu de calculer 2*i+1 à chaque fois tu peux le déduire d'une valeur sur l'autre en t'évitant ainsi une multiplication.

for (int i=0, n=1; i<NFOIS ;i++, n+=2)
{
	pix = 1.0 / n;

	if (i % 2 == 0)
		pics += pix;
	else
		pics -= pix;
}
Rien que ça, permet de diviser le temps de calcul par 8 tout en conservant le même algorithme (alors que ce n'est déjà pas le meilleur à la base...). Et on peut faire encore un petit peu mieux, en regroupant les deux calculs (pair et impair) en un seul, pour économiser le if et enlever l'incrémentation de i et calculer le test de fin directement sur le n (qui vaut 2*i+1)

for (int n=1, max=2*NFOIS+1; n<max;)
{
	pics += 1.0 / n;
	n+=2;

	pics -= 1.0 / n;
	n+=2;	
}


Remarque : concernant le chronomètre, si c'est prendre les nanosecondes pour les convertir en millisecondes autant prendre directement les millisecondes avec getTimeMillis...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (democrite41)