L'algorithme de Brent-Salamin (souvent appelé algorithme de GaussLegendre) date de 1976.
Il faut 3 itérations pour la double précision, et selon certaines sources, 19 pour 1'000'000, et 31 pour 3'200'000'000 chiffres après la virgule.
Cet article fait partie de la série CodeS-SourceS:
Approximations de Pi.
Voici un code personnel basé sur
GaussLegendre algorithm.
Il est légèrement plus difficile à programmer:
double Brent_Salamin_A(int n) { // personnel
double a=1.0, b=1.0/sqrt(2.0), u=0.25;
for (int i=1, p=1; i<=n; ++i) {
double aa=(a+b)/2.0;
b = sqrt(a*b);
u -= (a-aa)*(a-aa)*p;
a = aa;
p *= 2;
}
return (a+b)*(a+b)/u/4.0;
}
double Brent_Salamin_B(int n) { // concentré
double a=1.0, aa, b=1.0/sqrt(2.0), u=0.25;
for (int i=1, p=1; i<=n; ++i, a=aa, p<<=1)
{aa = (a+b)/2.0; b = sqrt(a*b); u -= (a-aa)*(a-aa)*p;}
return (a+b)*(a+b)/u/4.0;
}
Cet algorithme hyperrapide ne présente qu'un seul "inconvénient": le calcul d'une racine carrée à chaque itération.
Le
Zip contient le seul fichier source
Brent-Salamin.cpp dont voici l'
Output:
Brent_Salamin_A:
n = 1: pi=3.14057925052217
n = 2: pi=3.14159264621354
n = 3: pi=3.14159265358979
precis: pi=3.14159265358979
Brent_Salamin_B:
n = 1: pi=3.14057925052217
n = 2: pi=3.14159264621354
n = 3: pi=3.14159265358979
precis: pi=3.14159265358979
Voir aussi Wiki:
Formule de Brent-Salamin.
pi314:
L'univers de Pi
The Math Forum:
Calculating Pi - Brent-Salamin Algorithm
Bonne lecture ...
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.