Approximations de Pi: Algorithme de Brent-Salamin

Description

L'algorithme de Brent-Salamin (souvent appelé algorithme de Gauss–Legendre) 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 Gauss–Legendre 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 ...

Codes Sources

A voir également

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.